feat: add club user api
This commit is contained in:
parent
744a32b477
commit
5a0c6f530b
@ -7,7 +7,9 @@ import lombok.RequiredArgsConstructor;
|
||||
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.CreateClubRequest;
|
||||
import org.blue.club.entities.dto.user.User;
|
||||
import org.blue.club.entities.vo.data.ClubVo;
|
||||
import org.blue.club.services.ClubServices;
|
||||
import org.mmga.spring.boot.starter.entities.PagerData;
|
||||
@ -36,8 +38,13 @@ public class ClubController {
|
||||
|
||||
@Operation(description = "向社团添加用户")
|
||||
@PutMapping("/user/add")
|
||||
@Auth(permissions = {@PermissionDescription(3), @PermissionDescription(value = 2, type = DescriptionType.CLUB)})
|
||||
public Result<Boolean> addUserToClub() {
|
||||
return Result.failed();
|
||||
public Result<Boolean> clubAddUser(@Auth(permissions = {@PermissionDescription(3), @PermissionDescription(value = 2, type = DescriptionType.CLUB)}) User user, @RequestBody ClubAddUserRequest request) {
|
||||
return clubServices.clubAddUser(user, request);
|
||||
}
|
||||
|
||||
@Operation(description = "分页列出社团的所有用户")
|
||||
@GetMapping("/user/list")
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
9
src/main/java/org/blue/club/dao/ClubUserAuthDao.java
Normal file
9
src/main/java/org/blue/club/dao/ClubUserAuthDao.java
Normal file
@ -0,0 +1,9 @@
|
||||
package org.blue.club.dao;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.blue.club.entities.vo.data.ClubUserAuthVo;
|
||||
|
||||
@Mapper
|
||||
public interface ClubUserAuthDao extends BaseMapper<ClubUserAuthVo> {
|
||||
}
|
@ -5,20 +5,37 @@ import com.mybatisflex.core.query.QueryCondition;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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.CreateClubRequest;
|
||||
import org.blue.club.entities.dto.user.User;
|
||||
import org.blue.club.entities.vo.data.ClubUserAuthVo;
|
||||
import org.blue.club.entities.vo.data.ClubVo;
|
||||
import org.blue.club.entities.vo.data.UserVo;
|
||||
import org.mmga.spring.boot.starter.entities.PagerData;
|
||||
import org.mmga.spring.boot.starter.entities.Result;
|
||||
import org.mmga.spring.boot.starter.exception.AuthorizationException;
|
||||
import org.mmga.spring.boot.starter.utils.VoUtils;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.mybatisflex.core.query.QueryMethods.select;
|
||||
import static org.blue.club.entities.vo.data.table.ClubUserAuthVoTableDef.CLUB_USER_AUTH_VO;
|
||||
import static org.blue.club.entities.vo.data.table.ClubVoTableDef.CLUB_VO;
|
||||
import static org.blue.club.entities.vo.data.table.UserVoTableDef.USER_VO;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class ClubServices {
|
||||
private final ClubDao clubDao;
|
||||
private final ClubUserAuthDao clubUserAuthDao;
|
||||
private final UserDao userDao;
|
||||
private final VoUtils voUtils;
|
||||
|
||||
public Result<PagerData<ClubVo>> getClubs(Integer page, Integer num) {
|
||||
Page<ClubVo> data = clubDao.paginate(page, num, QueryCondition.createEmpty());
|
||||
@ -32,4 +49,33 @@ public class ClubServices {
|
||||
clubVo.setName(request.name());
|
||||
return Result.success(clubVo);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Result<Boolean> clubAddUser(User user, ClubAddUserRequest request) {
|
||||
long requestClubId = request.clubId();
|
||||
long userClubId = user.getClub().getId();
|
||||
if (userClubId != requestClubId && !user.hasPermission(3))
|
||||
throw new AuthorizationException(Result.failed(HttpStatus.FORBIDDEN, "权限不足!"));
|
||||
long userClubAuthId = user.getClubAuth().getId();
|
||||
long requestClubAuthId = request.clubAuthId();
|
||||
if (requestClubAuthId >= userClubAuthId && !user.hasPermission(3))
|
||||
throw new AuthorizationException(Result.failed(HttpStatus.FORBIDDEN, "权限不足!"));
|
||||
long requestUserId = request.userId();
|
||||
if (clubUserAuthDao.selectCountByCondition(CLUB_USER_AUTH_VO.USER_ID.eq(requestUserId)) > 0)
|
||||
return Result.failed(HttpStatus.CONFLICT, "此用户已在社团中");
|
||||
ClubUserAuthVo clubUserAuthVo = new ClubUserAuthVo();
|
||||
clubUserAuthVo.setClubId(requestClubId);
|
||||
clubUserAuthVo.setUserId(requestUserId);
|
||||
clubUserAuthVo.setAuthId(requestClubAuthId);
|
||||
clubUserAuthDao.insert(clubUserAuthVo);
|
||||
return Result.success(true);
|
||||
}
|
||||
|
||||
public Result<PagerData<User>> clubGetUsers(Integer page, Integer num, Long clubId) {
|
||||
if (clubDao.selectCountByCondition(CLUB_VO.ID.eq(clubId)) == 0)
|
||||
return Result.failed(HttpStatus.NOT_FOUND, "社团不存在!");
|
||||
Page<ClubUserAuthVo> paginate = clubUserAuthDao.paginate(page, num, select(CLUB_USER_AUTH_VO.ALL_COLUMNS).where(CLUB_USER_AUTH_VO.CLUB_ID.eq(clubId)).orderBy(CLUB_USER_AUTH_VO.AUTH_ID.desc(), CLUB_USER_AUTH_VO.USER_ID.desc()));
|
||||
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()));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user