diff --git a/im-service/src/main/java/com/xuqm/im/controller/GroupController.java b/im-service/src/main/java/com/xuqm/im/controller/GroupController.java new file mode 100644 index 0000000..dd46c80 --- /dev/null +++ b/im-service/src/main/java/com/xuqm/im/controller/GroupController.java @@ -0,0 +1,55 @@ +package com.xuqm.im.controller; + +import com.xuqm.common.model.ApiResponse; +import com.xuqm.im.entity.ImGroupEntity; +import com.xuqm.im.service.ImGroupService; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/im/groups") +public class GroupController { + + private final ImGroupService groupService; + + public GroupController(ImGroupService groupService) { + this.groupService = groupService; + } + + @PostMapping + public ResponseEntity> create( + @RequestBody CreateGroupRequest req, + @AuthenticationPrincipal String userId, + @RequestParam String appId) { + return ResponseEntity.ok(ApiResponse.success( + groupService.create(appId, req.name(), userId, req.memberIds()))); + } + + @GetMapping + public ResponseEntity>> list( + @RequestParam String appId) { + return ResponseEntity.ok(ApiResponse.success(groupService.listByApp(appId))); + } + + @PostMapping("/{groupId}/members") + public ResponseEntity> addMember( + @PathVariable String groupId, + @RequestBody MemberRequest req, + @AuthenticationPrincipal String userId) { + return ResponseEntity.ok(ApiResponse.success(groupService.addMember(groupId, req.userId()))); + } + + @DeleteMapping("/{groupId}/members/{targetUserId}") + public ResponseEntity> removeMember( + @PathVariable String groupId, + @PathVariable String targetUserId, + @AuthenticationPrincipal String userId) { + return ResponseEntity.ok(ApiResponse.success(groupService.removeMember(groupId, targetUserId, userId))); + } + + public record CreateGroupRequest(String name, List memberIds) {} + public record MemberRequest(String userId) {} +}