优化用户列表过滤

This commit is contained in:
none 2023-03-02 16:34:39 +08:00
parent cf10eb779b
commit b77d9ae53e
5 changed files with 89 additions and 36 deletions

View File

@ -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<String, Object> 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<User> result = userService.paginate(page, size, filter);
return JsonResponse.data(result);

View File

@ -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,7 +39,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
public PaginationResult<User> paginate(int page, int size, UserPaginateFilter filter) {
QueryWrapper<User> wrapper = query().getWrapper().eq("1", "1");
if (filter != null) {
if (filter.getEmail() != null) {
wrapper.eq("email", filter.getEmail());
}
@ -66,9 +66,18 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
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.getDepIds() != null && filter.getDepIds().length > 0) {
List<Integer> 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<User> userPage = new Page<>(page, size);

View File

@ -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<UserDepartmentMapper, UserDepartment>
implements UserDepartmentService {
@Override
public List<Integer> getUserIdsByDepIds(Integer[] depIds) {
List<Integer> ids = new ArrayList<>();
List<UserDepartment> userDepartments = list(query().getWrapper().in("dep_id", Arrays.asList(depIds)));
if (userDepartments.size() > 0) {
for (UserDepartment userDepartment : userDepartments) {
ids.add(userDepartment.getUserId());
}
}
return ids;
}
}

View File

@ -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<UserDepartment> {
List<Integer> getUserIdsByDepIds(Integer[] depIds);
}

View File

@ -27,6 +27,8 @@ public class UserPaginateFilter {
// 创建时间范围过滤
private Date[] createdAt;
private Integer[] depIds;
// 排序控制
private String sortField;
private String sortAlgo;