|
|
@@ -3,16 +3,16 @@ package com.etotem.cfc.controller;
|
|
|
import com.etotem.cfc.common.Result;
|
|
|
import com.etotem.cfc.entity.SocialCircle;
|
|
|
import com.etotem.cfc.service.CircleService;
|
|
|
-import org.springframework.web.bind.annotation.PostMapping;
|
|
|
-import org.springframework.web.bind.annotation.RequestAttribute;
|
|
|
-import org.springframework.web.bind.annotation.RequestBody;
|
|
|
-import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
-import org.springframework.web.bind.annotation.RestController;
|
|
|
+import com.etotem.cfc.service.CirclePostService;
|
|
|
+import io.swagger.v3.oas.annotations.Operation;
|
|
|
+import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
+@Tag(name = "社交圈子", description = "圈子创建/加入/动态/点赞评论")
|
|
|
@RestController
|
|
|
@RequestMapping("/api/circle")
|
|
|
public class CircleController {
|
|
|
@@ -20,9 +20,10 @@ public class CircleController {
|
|
|
@Resource
|
|
|
private CircleService circleService;
|
|
|
|
|
|
- /**
|
|
|
- * 获取用户已加入的圈子列表
|
|
|
- */
|
|
|
+ @Resource
|
|
|
+ private CirclePostService circlePostService;
|
|
|
+
|
|
|
+ @Operation(summary = "获取用户已加入的圈子列表")
|
|
|
@PostMapping("/my-circles")
|
|
|
public Result<List<Map<String, Object>>> myCircles(@RequestBody Map<String, Object> params) {
|
|
|
Object memberIdObj = params.get("memberId");
|
|
|
@@ -33,13 +34,10 @@ public class CircleController {
|
|
|
if (memberId == null) {
|
|
|
return Result.error("memberId不能为空");
|
|
|
}
|
|
|
- List<Map<String, Object>> circles = circleService.getMyCircles(memberId, memberType);
|
|
|
- return Result.success(circles);
|
|
|
+ return Result.success(circleService.getMyCircles(memberId, memberType));
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 发现推荐圈子
|
|
|
- */
|
|
|
+ @Operation(summary = "发现推荐圈子(公开可见)")
|
|
|
@PostMapping("/discover")
|
|
|
public Result<List<Map<String, Object>>> discover(@RequestBody Map<String, Object> params,
|
|
|
@RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
|
|
|
@@ -49,15 +47,12 @@ public class CircleController {
|
|
|
if (memberId == null) {
|
|
|
return Result.error("memberId不能为空");
|
|
|
}
|
|
|
- List<Map<String, Object>> circles = circleService.discoverCircles(memberId);
|
|
|
- return Result.success(circles);
|
|
|
+ return Result.success(circleService.discoverCircles(memberId));
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 加入圈子
|
|
|
- */
|
|
|
+ @Operation(summary = "加入圈子")
|
|
|
@PostMapping("/join")
|
|
|
- public Result<String> join(@RequestBody Map<String, Object> params) {
|
|
|
+ public Result<Map<String, Object>> join(@RequestBody Map<String, Object> params) {
|
|
|
Object circleIdObj = params.get("circleId");
|
|
|
Long circleId = circleIdObj != null && !circleIdObj.toString().trim().isEmpty()
|
|
|
? Long.valueOf(circleIdObj.toString()) : null;
|
|
|
@@ -66,17 +61,12 @@ public class CircleController {
|
|
|
? Long.valueOf(memberIdObj.toString()) : null;
|
|
|
String memberType = params.get("memberType") != null
|
|
|
? params.get("memberType").toString() : "child";
|
|
|
-
|
|
|
if (circleId == null) return Result.error("circleId不能为空");
|
|
|
if (memberId == null) return Result.error("memberId不能为空");
|
|
|
-
|
|
|
- boolean success = circleService.joinCircle(circleId, memberId, memberType);
|
|
|
- return success ? Result.success("加入成功") : Result.error("加入失败");
|
|
|
+ return Result.success(circleService.joinCircle(circleId, memberId, memberType));
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 退出圈子
|
|
|
- */
|
|
|
+ @Operation(summary = "退出圈子")
|
|
|
@PostMapping("/leave")
|
|
|
public Result<String> leave(@RequestBody Map<String, Object> params) {
|
|
|
Object circleIdObj = params.get("circleId");
|
|
|
@@ -87,17 +77,13 @@ public class CircleController {
|
|
|
? Long.valueOf(memberIdObj.toString()) : null;
|
|
|
String memberType = params.get("memberType") != null
|
|
|
? params.get("memberType").toString() : "child";
|
|
|
-
|
|
|
if (circleId == null) return Result.error("circleId不能为空");
|
|
|
if (memberId == null) return Result.error("memberId不能为空");
|
|
|
-
|
|
|
boolean success = circleService.leaveCircle(circleId, memberId, memberType);
|
|
|
return success ? Result.success("退出成功") : Result.error("退出失败");
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 创建圈子
|
|
|
- */
|
|
|
+ @Operation(summary = "创建圈子")
|
|
|
@PostMapping("/create")
|
|
|
public Result<SocialCircle> create(@RequestBody Map<String, Object> params,
|
|
|
@RequestAttribute(value = "userId", required = false) Long userId) {
|
|
|
@@ -112,19 +98,163 @@ public class CircleController {
|
|
|
? Long.valueOf(creatorIdObj.toString()) : null;
|
|
|
String creatorType = params.get("creatorType") != null
|
|
|
? params.get("creatorType").toString() : "child";
|
|
|
+ String description = params.get("description") != null ? params.get("description").toString() : null;
|
|
|
+ Object joinConditionObj = params.get("joinCondition");
|
|
|
+ Integer joinCondition = joinConditionObj != null ? Integer.parseInt(joinConditionObj.toString()) : 0;
|
|
|
+ Object reviewRequiredObj = params.get("reviewRequired");
|
|
|
+ Integer reviewRequired = reviewRequiredObj != null ? Integer.parseInt(reviewRequiredObj.toString()) : 0;
|
|
|
+ Object isPublicObj = params.get("isPublic");
|
|
|
+ Integer isPublic = isPublicObj != null ? Integer.parseInt(isPublicObj.toString()) : 1;
|
|
|
|
|
|
- if (name == null) return Result.error("name不能为空");
|
|
|
- if (type == null) return Result.error("type不能为空");
|
|
|
-
|
|
|
- if (creatorId == null && userId != null) {
|
|
|
- creatorId = userId;
|
|
|
- }
|
|
|
- if (creatorId == null) {
|
|
|
- return Result.error("creatorId不能为空");
|
|
|
- }
|
|
|
+ if (name == null || name.isEmpty()) return Result.error("name不能为空");
|
|
|
+ if (type == null || type.isEmpty()) return Result.error("type不能为空");
|
|
|
+ if (creatorId == null && userId != null) creatorId = userId;
|
|
|
+ if (creatorId == null) return Result.error("creatorId不能为空");
|
|
|
|
|
|
- SocialCircle circle = circleService.createCircle(name, type, matchSource,
|
|
|
- sourceId, creatorId, creatorType);
|
|
|
+ SocialCircle circle = circleService.createCircle(name, type, matchSource, sourceId, creatorId, creatorType,
|
|
|
+ description, joinCondition, reviewRequired, isPublic);
|
|
|
return Result.success(circle);
|
|
|
}
|
|
|
+
|
|
|
+ @Operation(summary = "更新圈子信息")
|
|
|
+ @PostMapping("/update")
|
|
|
+ public Result<SocialCircle> update(@RequestBody Map<String, Object> params,
|
|
|
+ @RequestAttribute(value = "userId", required = false) Long userId) {
|
|
|
+ Object circleIdObj = params.get("circleId");
|
|
|
+ Long circleId = circleIdObj != null && !circleIdObj.toString().trim().isEmpty()
|
|
|
+ ? Long.valueOf(circleIdObj.toString()) : null;
|
|
|
+ if (circleId == null) return Result.error("circleId不能为空");
|
|
|
+ SocialCircle circle = circleService.updateCircle(circleId, params, userId);
|
|
|
+ return circle != null ? Result.success(circle) : Result.error("圈子不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Operation(summary = "获取圈子成员列表")
|
|
|
+ @PostMapping("/members")
|
|
|
+ public Result<List<Map<String, Object>>> members(@RequestBody Map<String, Object> params) {
|
|
|
+ Object circleIdObj = params.get("circleId");
|
|
|
+ Long circleId = circleIdObj != null && !circleIdObj.toString().trim().isEmpty()
|
|
|
+ ? Long.valueOf(circleIdObj.toString()) : null;
|
|
|
+ if (circleId == null) return Result.error("circleId不能为空");
|
|
|
+ return Result.success(circleService.getCircleMembers(circleId));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Operation(summary = "获取圈子动态 Feed")
|
|
|
+ @PostMapping("/feed")
|
|
|
+ public Result<List<Map<String, Object>>> feed(@RequestBody Map<String, Object> params,
|
|
|
+ @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
|
|
|
+ Object circleIdObj = params.get("circleId");
|
|
|
+ Long circleId = circleIdObj != null && !circleIdObj.toString().trim().isEmpty()
|
|
|
+ ? Long.valueOf(circleIdObj.toString()) : null;
|
|
|
+ Object memberIdObj = params.get("memberId");
|
|
|
+ Long memberId = circleId != null && currentMemberId != null ? currentMemberId :
|
|
|
+ (memberIdObj != null ? Long.valueOf(memberIdObj.toString()) : null);
|
|
|
+ String memberType = params.get("memberType") != null ? params.get("memberType").toString() : "child";
|
|
|
+ Integer page = params.get("page") != null ? Integer.parseInt(params.get("page").toString()) : 1;
|
|
|
+ Integer size = params.get("size") != null ? Integer.parseInt(params.get("size").toString()) : 10;
|
|
|
+
|
|
|
+ if (circleId == null) return Result.error("circleId不能为空");
|
|
|
+ if (memberId == null) return Result.error("memberId不能为空");
|
|
|
+ return Result.success(circlePostService.getCircleFeed(circleId, memberId, memberType, page, size));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Operation(summary = "获取多圈 Feed(所有圈子动态合并)")
|
|
|
+ @PostMapping("/feed/multi")
|
|
|
+ public Result<List<Map<String, Object>>> multiFeed(@RequestBody Map<String, Object> params,
|
|
|
+ @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
|
|
|
+ Object memberIdObj = params.get("memberId");
|
|
|
+ Long memberId = currentMemberId != null ? currentMemberId :
|
|
|
+ (memberIdObj != null ? Long.valueOf(memberIdObj.toString()) : null);
|
|
|
+ String memberType = params.get("memberType") != null ? params.get("memberType").toString() : "child";
|
|
|
+ Integer page = params.get("page") != null ? Integer.parseInt(params.get("page").toString()) : 1;
|
|
|
+ Integer size = params.get("size") != null ? Integer.parseInt(params.get("size").toString()) : 20;
|
|
|
+
|
|
|
+ if (memberId == null) return Result.error("memberId不能为空");
|
|
|
+ return Result.success(circlePostService.getMultiCircleFeed(memberId, memberType, page, size));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Operation(summary = "发布圈子动态")
|
|
|
+ @PostMapping("/post/create")
|
|
|
+ public Result<Map<String, Object>> createPost(@RequestBody Map<String, Object> params,
|
|
|
+ @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
|
|
|
+ Object circleIdObj = params.get("circleId");
|
|
|
+ Long circleId = circleIdObj != null && !circleIdObj.toString().trim().isEmpty()
|
|
|
+ ? Long.valueOf(circleIdObj.toString()) : null;
|
|
|
+ Object memberIdObj = params.get("memberId");
|
|
|
+ Long memberId = circleId != null && currentMemberId != null ? currentMemberId :
|
|
|
+ (memberIdObj != null ? Long.valueOf(memberIdObj.toString()) : null);
|
|
|
+ String memberType = params.get("memberType") != null ? params.get("memberType").toString() : "child";
|
|
|
+ String type = params.get("type") != null ? params.get("type").toString() : "text";
|
|
|
+ String content = params.get("content") != null ? params.get("content").toString() : null;
|
|
|
+ String checkinId = params.get("checkinId") != null ? params.get("checkinId").toString() : null;
|
|
|
+ String imageUrls = params.get("imageUrls") != null ? params.get("imageUrls").toString() : null;
|
|
|
+
|
|
|
+ if (circleId == null) return Result.error("circleId不能为空");
|
|
|
+ if (memberId == null) return Result.error("memberId不能为空");
|
|
|
+ Map<String, Object> result = circlePostService.createPost(circleId, memberId, memberType, type, content, checkinId, imageUrls);
|
|
|
+ return result.containsKey("error") ? Result.error(result.get("error").toString()) : Result.success(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Operation(summary = "点赞/取消点赞")
|
|
|
+ @PostMapping("/post/like")
|
|
|
+ public Result<Map<String, Object>> toggleLike(@RequestBody Map<String, Object> params,
|
|
|
+ @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
|
|
|
+ Object circleIdObj = params.get("circleId");
|
|
|
+ Long circleId = circleIdObj != null && !circleIdObj.toString().trim().isEmpty()
|
|
|
+ ? Long.valueOf(circleIdObj.toString()) : null;
|
|
|
+ Object postIdObj = params.get("postId");
|
|
|
+ Long postId = postIdObj != null ? Long.valueOf(postIdObj.toString()) : null;
|
|
|
+ Object memberIdObj = params.get("memberId");
|
|
|
+ Long memberId = circleId != null && currentMemberId != null ? currentMemberId :
|
|
|
+ (memberIdObj != null ? Long.valueOf(memberIdObj.toString()) : null);
|
|
|
+ String memberType = params.get("memberType") != null ? params.get("memberType").toString() : "child";
|
|
|
+
|
|
|
+ if (circleId == null || postId == null || memberId == null) return Result.error("参数不能为空");
|
|
|
+ return Result.success(circlePostService.toggleLike(circleId, postId, memberId, memberType));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Operation(summary = "发表评论")
|
|
|
+ @PostMapping("/comment/add")
|
|
|
+ public Result<Map<String, Object>> addComment(@RequestBody Map<String, Object> params,
|
|
|
+ @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
|
|
|
+ Object circleIdObj = params.get("circleId");
|
|
|
+ Long circleId = circleIdObj != null && !circleIdObj.toString().trim().isEmpty()
|
|
|
+ ? Long.valueOf(circleIdObj.toString()) : null;
|
|
|
+ Object postIdObj = params.get("postId");
|
|
|
+ Long postId = postIdObj != null ? Long.valueOf(postIdObj.toString()) : null;
|
|
|
+ Object memberIdObj = params.get("memberId");
|
|
|
+ Long memberId = circleId != null && currentMemberId != null ? currentMemberId :
|
|
|
+ (memberIdObj != null ? Long.valueOf(memberIdObj.toString()) : null);
|
|
|
+ String memberType = params.get("memberType") != null ? params.get("memberType").toString() : "child";
|
|
|
+ String content = params.get("content") != null ? params.get("content").toString() : null;
|
|
|
+ Object parentIdObj = params.get("parentId");
|
|
|
+ Long parentId = parentIdObj != null ? Long.valueOf(parentIdObj.toString()) : null;
|
|
|
+
|
|
|
+ if (circleId == null || postId == null || memberId == null || content == null) return Result.error("参数不能为空");
|
|
|
+ return Result.success(circlePostService.addComment(circleId, postId, memberId, memberType, content, parentId));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Operation(summary = "获取评论列表")
|
|
|
+ @PostMapping("/comment/list")
|
|
|
+ public Result<List<Map<String, Object>>> listComments(@RequestBody Map<String, Object> params) {
|
|
|
+ Object postIdObj = params.get("postId");
|
|
|
+ Long postId = postIdObj != null ? Long.valueOf(postIdObj.toString()) : null;
|
|
|
+ Integer page = params.get("page") != null ? Integer.parseInt(params.get("page").toString()) : 1;
|
|
|
+ Integer size = params.get("size") != null ? Integer.parseInt(params.get("size").toString()) : 10;
|
|
|
+ if (postId == null) return Result.error("postId不能为空");
|
|
|
+ return Result.success(circlePostService.getComments(postId, page, size));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Operation(summary = "删除帖子")
|
|
|
+ @PostMapping("/post/delete")
|
|
|
+ public Result<String> deletePost(@RequestBody Map<String, Object> params,
|
|
|
+ @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId) {
|
|
|
+ Object postIdObj = params.get("postId");
|
|
|
+ Long postId = postIdObj != null ? Long.valueOf(postIdObj.toString()) : null;
|
|
|
+ Object memberIdObj = params.get("memberId");
|
|
|
+ Long memberId = postId != null && currentMemberId != null ? currentMemberId :
|
|
|
+ (memberIdObj != null ? Long.valueOf(memberIdObj.toString()) : null);
|
|
|
+ if (postId == null || memberId == null) return Result.error("postId和memberId不能为空");
|
|
|
+ boolean success = circlePostService.deletePost(postId, memberId);
|
|
|
+ return success ? Result.success("删除成功") : Result.error("删除失败");
|
|
|
+ }
|
|
|
}
|