package edu.whut.smilepicturebackend.controller; import cn.hutool.core.util.ObjectUtil; import edu.whut.smilepicturebackend.common.BaseResponse; import edu.whut.smilepicturebackend.common.DeleteRequest; import edu.whut.smilepicturebackend.common.ResultUtils; import edu.whut.smilepicturebackend.exception.BusinessException; import edu.whut.smilepicturebackend.exception.ErrorCode; import edu.whut.smilepicturebackend.exception.ThrowUtils; import edu.whut.smilepicturebackend.model.dto.spaceuser.SpaceUserAddRequest; import edu.whut.smilepicturebackend.model.dto.spaceuser.SpaceUserEditRequest; import edu.whut.smilepicturebackend.model.dto.spaceuser.SpaceUserQueryRequest; import edu.whut.smilepicturebackend.model.entity.SpaceUser; import edu.whut.smilepicturebackend.model.entity.User; import edu.whut.smilepicturebackend.model.vo.SpaceUserVO; import edu.whut.smilepicturebackend.service.SpaceUserService; import edu.whut.smilepicturebackend.service.UserService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import java.util.List; /** * 空间成员管理 */ @RestController @RequiredArgsConstructor @RequestMapping("/spaceUser") @Slf4j public class SpaceUserController { private final SpaceUserService spaceUserService; private final UserService userService; /** * 添加成员到空间 */ @PostMapping("/add") public BaseResponse addSpaceUser(@RequestBody SpaceUserAddRequest spaceUserAddRequest, HttpServletRequest request) { ThrowUtils.throwIf(spaceUserAddRequest == null, ErrorCode.PARAMS_ERROR); long id = spaceUserService.addSpaceUser(spaceUserAddRequest); return ResultUtils.success(id); } /** * 从空间移除成员 */ @PostMapping("/delete") public BaseResponse deleteSpaceUser(@RequestBody DeleteRequest deleteRequest, HttpServletRequest request) { if (deleteRequest == null || deleteRequest.getId() <= 0) { throw new BusinessException(ErrorCode.PARAMS_ERROR); } long id = deleteRequest.getId(); // 判断是否存在 SpaceUser oldSpaceUser = spaceUserService.getById(id); ThrowUtils.throwIf(oldSpaceUser == null, ErrorCode.NOT_FOUND_ERROR); // 操作数据库 boolean result = spaceUserService.removeById(id); ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR); return ResultUtils.success(true); } /** * 查询某个成员在某个空间的信息 */ @PostMapping("/get") public BaseResponse getSpaceUser(@RequestBody SpaceUserQueryRequest spaceUserQueryRequest) { // 参数校验 ThrowUtils.throwIf(spaceUserQueryRequest == null, ErrorCode.PARAMS_ERROR); Long spaceId = spaceUserQueryRequest.getSpaceId(); Long userId = spaceUserQueryRequest.getUserId(); ThrowUtils.throwIf(ObjectUtil.hasEmpty(spaceId, userId), ErrorCode.PARAMS_ERROR); // 查询数据库 SpaceUser spaceUser = spaceUserService.getOne(spaceUserService.getQueryWrapper(spaceUserQueryRequest)); ThrowUtils.throwIf(spaceUser == null, ErrorCode.NOT_FOUND_ERROR); return ResultUtils.success(spaceUser); } /** * 查询成员信息列表 */ @PostMapping("/list") public BaseResponse> listSpaceUser(@RequestBody SpaceUserQueryRequest spaceUserQueryRequest, HttpServletRequest request) { ThrowUtils.throwIf(spaceUserQueryRequest == null, ErrorCode.PARAMS_ERROR); List spaceUserList = spaceUserService.list( spaceUserService.getQueryWrapper(spaceUserQueryRequest) ); return ResultUtils.success(spaceUserService.getSpaceUserVOList(spaceUserList)); } /** * 编辑成员信息(设置权限) */ @PostMapping("/edit") public BaseResponse editSpaceUser(@RequestBody SpaceUserEditRequest spaceUserEditRequest, HttpServletRequest request) { if (spaceUserEditRequest == null || spaceUserEditRequest.getId() <= 0) { throw new BusinessException(ErrorCode.PARAMS_ERROR); } // 将实体类和 DTO 进行转换 SpaceUser spaceUser = new SpaceUser(); BeanUtils.copyProperties(spaceUserEditRequest, spaceUser); // 数据校验 spaceUserService.validSpaceUser(spaceUser, false); // 判断是否存在 long id = spaceUserEditRequest.getId(); SpaceUser oldSpaceUser = spaceUserService.getById(id); ThrowUtils.throwIf(oldSpaceUser == null, ErrorCode.NOT_FOUND_ERROR); // 操作数据库 boolean result = spaceUserService.updateById(spaceUser); ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR); return ResultUtils.success(true); } /** * 查询我加入的团队空间列表 */ @PostMapping("/list/my") public BaseResponse> listMyTeamSpace(HttpServletRequest request) { User loginUser = userService.getLoginUser(request); SpaceUserQueryRequest spaceUserQueryRequest = new SpaceUserQueryRequest(); spaceUserQueryRequest.setUserId(loginUser.getId()); List spaceUserList = spaceUserService.list( spaceUserService.getQueryWrapper(spaceUserQueryRequest) ); return ResultUtils.success(spaceUserService.getSpaceUserVOList(spaceUserList)); } }