diff --git a/src/main/java/xyz/playedu/api/controller/backend/UserController.java b/src/main/java/xyz/playedu/api/controller/backend/UserController.java index ba5fd52..c3db8d7 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/UserController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/UserController.java @@ -1,6 +1,7 @@ package xyz.playedu.api.controller.backend; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.transaction.annotation.Transactional; @@ -22,10 +23,7 @@ import xyz.playedu.api.types.paginate.PaginationResult; import xyz.playedu.api.types.paginate.UserPaginateFilter; import xyz.playedu.api.util.HelperUtil; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; +import java.util.*; /** * @Author 杭州白书科技有限公司 @@ -50,8 +48,27 @@ public class UserController { @BackendPermissionMiddleware(slug = BPermissionConstant.USER_INDEX) @GetMapping("/index") - public JsonResponse index(@RequestParam(name = "page", defaultValue = "1") Integer page, @RequestParam(name = "size", defaultValue = "10") Integer size, @RequestParam(name = "name", required = false) String name, @RequestParam(name = "email", required = false) String email, @RequestParam(name = "nickname", required = false) String nickname, @RequestParam(name = "id_card", required = false) String idCard, @RequestParam(name = "is_active", required = false) Integer isActive, @RequestParam(name = "is_lock", required = false) Integer isLock, @RequestParam(name = "is_verify", required = false) Integer isVerify, @RequestParam(name = "is_set_password", required = false) Integer isSetPassword, @RequestParam(name = "created_at", required = false) Date[] createdAt) { + public JsonResponse index(@RequestParam HashMap params) { + Integer page = MapUtils.getInteger(params, "page", 1); + Integer size = MapUtils.getInteger(params, "size", 10); + String name = MapUtils.getString(params, "name"); + String email = MapUtils.getString(params, "email"); + String nickname = MapUtils.getString(params, "nickname"); + String idCard = MapUtils.getString(params, "id_card"); + Integer isActive = MapUtils.getInteger(params, "is_active"); + Integer isLock = MapUtils.getInteger(params, "is_lock"); + Integer isVerify = MapUtils.getInteger(params, "is_verify"); + Integer isSetPassword = MapUtils.getInteger(params, "is_set_password"); + String createdAtStr = MapUtils.getString(params, "created_at"); + String depIdsStr = MapUtils.getString(params, "dep_ids"); + + String sortField = MapUtils.getString(params, "sort_field", "id"); + String sortAlgo = MapUtils.getString(params, "sort_algo", "desc"); + UserPaginateFilter filter = new UserPaginateFilter(); + filter.setSortAlgo(sortAlgo); + filter.setSortField(sortField); + if (name != null && name.length() > 0) { filter.setName(name); } @@ -76,9 +93,15 @@ public class UserController { if (isSetPassword != null) { filter.setIsSetPassword(isSetPassword); } - if (createdAt != null && createdAt.length == 2) { + if (createdAtStr != null && createdAtStr.length() > 0) { + Date[] createdAt = Arrays.stream(createdAtStr.split(",")).map(Date::new).toArray(Date[]::new); filter.setCreatedAt(createdAt); } + log.info("depIds:" + depIdsStr); + if (depIdsStr != null && depIdsStr.length() > 0) { + Integer[] depIds = Arrays.stream(depIdsStr.split(",")).map(Integer::valueOf).toArray(Integer[]::new); + filter.setDepIds(depIds); + } PaginationResult result = userService.paginate(page, size, filter); return JsonResponse.data(result); diff --git a/src/main/java/xyz/playedu/api/service/impl/UserServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/UserServiceImpl.java index dd5cd14..5f7efdb 100644 --- a/src/main/java/xyz/playedu/api/service/impl/UserServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/UserServiceImpl.java @@ -15,6 +15,7 @@ import xyz.playedu.api.types.paginate.PaginationResult; import xyz.playedu.api.types.paginate.UserPaginateFilter; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -38,37 +39,45 @@ public class UserServiceImpl extends ServiceImpl implements Us public PaginationResult paginate(int page, int size, UserPaginateFilter filter) { QueryWrapper wrapper = query().getWrapper().eq("1", "1"); - if (filter != null) { - if (filter.getEmail() != null) { - wrapper.eq("email", filter.getEmail()); - } - if (filter.getName() != null) { - wrapper.eq("name", filter.getName()); - } - if (filter.getNickname() != null) { - wrapper.eq("nickname", filter.getNickname()); - } - if (filter.getIdCard() != null) { - wrapper.eq("id_card", filter.getIdCard()); - } - if (filter.getIsActive() != null) { - wrapper.eq("is_active", filter.getIsActive()); - } - if (filter.getIsLock() != null) { - wrapper.eq("is_lock", filter.getIsLock()); - } - if (filter.getIsVerify() != null) { - wrapper.eq("is_verify", filter.getIsVerify()); - } - if (filter.getIsSetPassword() != null) { - wrapper.eq("is_set_password", filter.getIsSetPassword()); - } - if (filter.getCreatedAt() != null && filter.getCreatedAt().length == 2) { - wrapper.between("created_at", filter.getCreatedAt()[0], filter.getCreatedAt()[1]); - } - if (filter.getSortField() != null && filter.getSortAlgo() != null) { - wrapper.orderBy(true, filter.getSortAlgo().toUpperCase() == "ASC", filter.getSortField()); + if (filter.getEmail() != null) { + wrapper.eq("email", filter.getEmail()); + } + if (filter.getName() != null) { + wrapper.eq("name", filter.getName()); + } + if (filter.getNickname() != null) { + wrapper.eq("nickname", filter.getNickname()); + } + if (filter.getIdCard() != null) { + wrapper.eq("id_card", filter.getIdCard()); + } + if (filter.getIsActive() != null) { + wrapper.eq("is_active", filter.getIsActive()); + } + if (filter.getIsLock() != null) { + wrapper.eq("is_lock", filter.getIsLock()); + } + if (filter.getIsVerify() != null) { + wrapper.eq("is_verify", filter.getIsVerify()); + } + if (filter.getIsSetPassword() != null) { + wrapper.eq("is_set_password", filter.getIsSetPassword()); + } + if (filter.getCreatedAt() != null && filter.getCreatedAt().length == 2) { + wrapper.between("created_at", filter.getCreatedAt()[0], filter.getCreatedAt()[1]); + } + if (filter.getDepIds() != null && filter.getDepIds().length > 0) { + List userIds = userDepartmentService.getUserIdsByDepIds(filter.getDepIds()); + if (userIds.size() == 0) { + userIds.add(0); } + wrapper.in("id", userIds); + } + + if (filter.getSortAlgo().equals("desc")) { + wrapper.orderByDesc(filter.getSortField()); + } else { + wrapper.orderByAsc(filter.getSortField()); } IPage userPage = new Page<>(page, size); diff --git a/src/main/java/xyz/playedu/api/service/impl/internal/UserDepartmentServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/internal/UserDepartmentServiceImpl.java index f151bf7..666f891 100644 --- a/src/main/java/xyz/playedu/api/service/impl/internal/UserDepartmentServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/internal/UserDepartmentServiceImpl.java @@ -6,6 +6,10 @@ import xyz.playedu.api.service.internal.UserDepartmentService; import xyz.playedu.api.mapper.UserDepartmentMapper; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + /** * @author tengteng * @description 针对表【user_department】的数据库操作Service实现 @@ -14,6 +18,18 @@ import org.springframework.stereotype.Service; @Service public class UserDepartmentServiceImpl extends ServiceImpl implements UserDepartmentService { + + @Override + public List getUserIdsByDepIds(Integer[] depIds) { + List ids = new ArrayList<>(); + List userDepartments = list(query().getWrapper().in("dep_id", Arrays.asList(depIds))); + if (userDepartments.size() > 0) { + for (UserDepartment userDepartment : userDepartments) { + ids.add(userDepartment.getUserId()); + } + } + return ids; + } } diff --git a/src/main/java/xyz/playedu/api/service/internal/UserDepartmentService.java b/src/main/java/xyz/playedu/api/service/internal/UserDepartmentService.java index 2edcead..f7dda74 100644 --- a/src/main/java/xyz/playedu/api/service/internal/UserDepartmentService.java +++ b/src/main/java/xyz/playedu/api/service/internal/UserDepartmentService.java @@ -3,10 +3,13 @@ package xyz.playedu.api.service.internal; import xyz.playedu.api.domain.UserDepartment; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * @author tengteng * @description 针对表【user_department】的数据库操作Service * @createDate 2023-02-23 15:08:38 */ public interface UserDepartmentService extends IService { + List getUserIdsByDepIds(Integer[] depIds); } diff --git a/src/main/java/xyz/playedu/api/types/paginate/UserPaginateFilter.java b/src/main/java/xyz/playedu/api/types/paginate/UserPaginateFilter.java index 3cd10c1..93c6c24 100644 --- a/src/main/java/xyz/playedu/api/types/paginate/UserPaginateFilter.java +++ b/src/main/java/xyz/playedu/api/types/paginate/UserPaginateFilter.java @@ -27,6 +27,8 @@ public class UserPaginateFilter { // 创建时间范围过滤 private Date[] createdAt; + private Integer[] depIds; + // 排序控制 private String sortField; private String sortAlgo;