feat: add remove user from club controller
This commit is contained in:
parent
7db7cc895d
commit
b38844b82e
@ -8,6 +8,7 @@ import org.blue.club.annotation.Auth;
|
||||
import org.blue.club.annotation.DescriptionType;
|
||||
import org.blue.club.annotation.PermissionDescription;
|
||||
import org.blue.club.entities.dto.club.req.ClubAddUserRequest;
|
||||
import org.blue.club.entities.dto.club.req.ClubChangeUserAuthRequest;
|
||||
import org.blue.club.entities.dto.club.req.CreateClubRequest;
|
||||
import org.blue.club.entities.dto.user.User;
|
||||
import org.blue.club.entities.vo.data.ClubVo;
|
||||
@ -47,4 +48,15 @@ public class ClubController {
|
||||
public Result<PagerData<User>> clubGetUsers(@Schema(description = "分页数据第几页") @RequestParam Integer page, @Schema(description = "分页数据每页数据量") @RequestParam Integer num, @Schema(description = "社团ID") @RequestParam Long clubId) {
|
||||
return clubServices.clubGetUsers(page, num, clubId);
|
||||
}
|
||||
|
||||
@Operation(description = "从社团中删除用户")
|
||||
@DeleteMapping("/user/remove")
|
||||
public Result<Boolean> clubRemoveUser(@Auth(permissions = {@PermissionDescription(3), @PermissionDescription(value = 2, type = DescriptionType.CLUB)}) User user, @Schema(description = "社团ID") @RequestParam long clubId, @Schema(description = "需要删除的用户ID") @RequestParam long userId) {
|
||||
return clubServices.clubRemoveUser(user, clubId, userId);
|
||||
}
|
||||
@Operation(description = "修改社团用户权限")
|
||||
@PutMapping("/user/auth")
|
||||
public Result<Boolean> clubChangeUserAuth(@Auth(permissions = {@PermissionDescription(3), @PermissionDescription(value = 2, type = DescriptionType.CLUB)}) User user, @RequestBody ClubChangeUserAuthRequest request) {
|
||||
return clubServices.clubChangeUserAuth(user, request);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,7 @@
|
||||
package org.blue.club.entities.dto.club.req;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
@Schema(name = "修改社团用户权限组请求体")
|
||||
public record ClubChangeUserAuthRequest(@Schema(description = "修改的用户ID") Long userId,@Schema(description = "社团ID") Long clubId,@Schema(description = "新的AuthID") Long newAuthId) {
|
||||
}
|
@ -8,8 +8,10 @@ import org.blue.club.dao.ClubDao;
|
||||
import org.blue.club.dao.ClubUserAuthDao;
|
||||
import org.blue.club.dao.UserDao;
|
||||
import org.blue.club.entities.dto.club.req.ClubAddUserRequest;
|
||||
import org.blue.club.entities.dto.club.req.ClubChangeUserAuthRequest;
|
||||
import org.blue.club.entities.dto.club.req.CreateClubRequest;
|
||||
import org.blue.club.entities.dto.user.User;
|
||||
import org.blue.club.entities.vo.data.ClubAuthVo;
|
||||
import org.blue.club.entities.vo.data.ClubUserAuthVo;
|
||||
import org.blue.club.entities.vo.data.ClubVo;
|
||||
import org.blue.club.entities.vo.data.UserVo;
|
||||
@ -53,10 +55,18 @@ public class ClubServices {
|
||||
@Transactional
|
||||
public Result<Boolean> clubAddUser(User user, ClubAddUserRequest request) {
|
||||
long requestClubId = request.clubId();
|
||||
long userClubId = user.getClub().getId();
|
||||
long userClubId = -1;
|
||||
ClubVo userClub = user.getClub();
|
||||
if (userClub != null) {
|
||||
userClubId = userClub.getId();
|
||||
}
|
||||
if (userClubId != requestClubId && !user.hasPermission(3))
|
||||
throw new AuthorizationException(Result.failed(HttpStatus.FORBIDDEN, "权限不足!"));
|
||||
long userClubAuthId = user.getClubAuth().getId();
|
||||
long userClubAuthId = -1;
|
||||
ClubAuthVo clubAuth = user.getClubAuth();
|
||||
if (clubAuth != null) {
|
||||
userClubAuthId = clubAuth.getId();
|
||||
}
|
||||
long requestClubAuthId = request.clubAuthId();
|
||||
if (requestClubAuthId >= userClubAuthId && !user.hasPermission(3))
|
||||
throw new AuthorizationException(Result.failed(HttpStatus.FORBIDDEN, "权限不足!"));
|
||||
@ -78,4 +88,31 @@ public class ClubServices {
|
||||
List<UserVo> userVos = userDao.selectListWithRelationsByQuery(select(USER_VO.ALL_COLUMNS).from(USER_VO).where(USER_VO.ID.in(paginate.getRecords().stream().map(ClubUserAuthVo::getUserId).toList())));
|
||||
return Result.success(new PagerData<>(paginate.getTotalRow(), userVos.stream().map(e -> voUtils.vo2DtoSafe(e, User.class)).toList()));
|
||||
}
|
||||
|
||||
public Result<Boolean> clubRemoveUser(User user, long clubId, long userId) {
|
||||
ClubUserAuthVo clubUserAuthVo = clubUserAuthDao.selectOneByCondition(CLUB_USER_AUTH_VO.USER_ID.eq(userId).and(CLUB_USER_AUTH_VO.CLUB_ID.eq(clubId)));
|
||||
if (clubUserAuthVo == null) return Result.failed(HttpStatus.NOT_FOUND, "未知用户");
|
||||
Long authId = clubUserAuthVo.getAuthId();
|
||||
ClubAuthVo clubAuth = user.getClubAuth();
|
||||
long clubAuthId = -1;
|
||||
if (clubAuth != null) {
|
||||
clubAuthId = clubAuth.getId();
|
||||
}
|
||||
if (clubAuthId <= authId && !user.hasPermission(3))
|
||||
throw new AuthorizationException(Result.failed(HttpStatus.FORBIDDEN, "权限不足!"));
|
||||
clubUserAuthDao.delete(clubUserAuthVo);
|
||||
return Result.success(true);
|
||||
}
|
||||
|
||||
public Result<Boolean> clubChangeUserAuth(User user, ClubChangeUserAuthRequest request) {
|
||||
Long userId = request.userId();
|
||||
Long clubId = request.clubId();
|
||||
ClubUserAuthVo clubUserAuthVo = clubUserAuthDao.selectOneByCondition(CLUB_USER_AUTH_VO.USER_ID.eq(userId).and(CLUB_USER_AUTH_VO.CLUB_ID.eq(clubId)));
|
||||
if (clubUserAuthVo == null) return Result.failed(HttpStatus.NOT_FOUND, "未知用户");
|
||||
// TODO
|
||||
// 不能修改原始权限比操作者更高的用户
|
||||
// 当目标权限比操作者更高时不允许修改
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user