diff --git a/src/main/java/org/blue/club/controller/UserController.java b/src/main/java/org/blue/club/controller/UserController.java index 786abdb..f3d484a 100644 --- a/src/main/java/org/blue/club/controller/UserController.java +++ b/src/main/java/org/blue/club/controller/UserController.java @@ -48,8 +48,8 @@ public class UserController { @GetMapping("/all") @Operation(description = "获取所有用户信息(分页)") @Auth(permissions = {@PermissionDescription(3), @PermissionDescription(4)}) - public Result> getAllUserInfo(@RequestParam("num") int num, @RequestParam("page") int page) { - return userServices.getAllUserInfo(num, page); + public Result> getAllUserInfo(@RequestParam("num") int num, @RequestParam("page") int page, @RequestParam(value = "onlyNoClub", defaultValue = "false") boolean onlyNoClub) { + return userServices.getAllUserInfo(num, page, onlyNoClub); } @PutMapping("/rename") diff --git a/src/main/java/org/blue/club/services/ClubServices.java b/src/main/java/org/blue/club/services/ClubServices.java index 474c6cd..02430a7 100644 --- a/src/main/java/org/blue/club/services/ClubServices.java +++ b/src/main/java/org/blue/club/services/ClubServices.java @@ -87,8 +87,10 @@ public class ClubServices { if (clubDao.selectCountByCondition(CLUB_VO.ID.eq(clubId)) == 0) return Result.failed(HttpStatus.NOT_FOUND, "社团不存在!"); Page 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.asc(), CLUB_USER_AUTH_VO.USER_ID.asc())); + long totalRow = paginate.getTotalRow(); + if (totalRow == 0) return Result.success(new PagerData<>(0, List.of())); List 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())); + return Result.success(new PagerData<>(totalRow, userVos.stream().map(e -> voUtils.vo2DtoSafe(e, User.class)).toList())); } public Result clubRemoveUser(User user, long clubId, long userId) { diff --git a/src/main/java/org/blue/club/services/UserServices.java b/src/main/java/org/blue/club/services/UserServices.java index 4fc4aca..3f0650d 100644 --- a/src/main/java/org/blue/club/services/UserServices.java +++ b/src/main/java/org/blue/club/services/UserServices.java @@ -1,6 +1,7 @@ package org.blue.club.services; import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.core.query.QueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.blue.club.dao.UserDao; @@ -25,6 +26,7 @@ import java.util.List; import java.util.Optional; 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.UserVoTableDef.USER_VO; @Slf4j @@ -77,8 +79,12 @@ public class UserServices { return Result.success(voUtils.vo2DtoSafe(insertedUserData, User.class)); } - public Result> getAllUserInfo(int num, int page) { - Page userVoPage = userDao.paginateWithRelations(page, num, select(USER_VO.ALL_COLUMNS).from(USER_VO)); + public Result> getAllUserInfo(int num, int page, boolean onlyNoClub) { + QueryWrapper from = select(USER_VO.ALL_COLUMNS).from(USER_VO); + if (onlyNoClub) { + from.leftJoin(CLUB_USER_AUTH_VO).on(CLUB_USER_AUTH_VO.USER_ID.eq(USER_VO.ID)).where(CLUB_USER_AUTH_VO.CLUB_ID.isNull()); + } + Page userVoPage = userDao.paginateWithRelations(page, num, from); long totalRow = userVoPage.getTotalRow(); List records = userVoPage.getRecords(); return Result.success(new PagerData<>(totalRow, records.stream().map(e -> voUtils.vo2DtoSafe(e, User.class)).toList()));