优化管理员列表apic

This commit is contained in:
none 2023-04-04 11:03:07 +08:00
parent ab9e8da4b8
commit e947aab1d7
6 changed files with 51 additions and 8 deletions

View File

@ -20,6 +20,8 @@ import xyz.playedu.api.types.JsonResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@RestController
@Slf4j
@ -38,15 +40,26 @@ public class AdminUserController {
Integer page = MapUtils.getInteger(params, "page", 1);
Integer size = MapUtils.getInteger(params, "size", 10);
String name = MapUtils.getString(params, "name");
Integer roleId = MapUtils.getInteger(params, "role_id");
AdminUserPaginateFilter filter = new AdminUserPaginateFilter();
if (name != null && name.length() > 0) {
filter.setName(name);
}
filter.setName(name);
filter.setRoleId(roleId);
PaginationResult<AdminUser> result = adminUserService.paginate(page, size, filter);
return JsonResponse.data(result);
Map<Integer, List<Integer>> userRoleIds = new HashMap<>();
if (result.getData() != null && result.getData().size() > 0) {
userRoleIds = adminUserService.getAdminUserRoleIds(result.getData().stream().map(AdminUser::getId).toList());
}
HashMap<String, Object> data = new HashMap<>();
data.put("data", result.getData());
data.put("total", result.getTotal());
data.put("user_role_ids", userRoleIds);
data.put("roles", roleService.list().stream().collect(Collectors.groupingBy(AdminRole::getId)));
return JsonResponse.data(data);
}
@BackendPermissionMiddleware(slug = BPermissionConstant.ADMIN_USER_CUD)

View File

@ -8,6 +8,7 @@ import xyz.playedu.api.types.paginate.AdminUserPaginateFilter;
import xyz.playedu.api.types.paginate.PaginationResult;
import java.util.List;
import java.util.Map;
/**
* @author tengteng
@ -44,4 +45,6 @@ public interface AdminUserService extends IService<AdminUser> {
List<AdminUser> chunks(List<Integer> ids);
Long total();
Map<Integer, List<Integer>> getAdminUserRoleIds(List<Integer> userIds);
}

View File

@ -18,9 +18,8 @@ import xyz.playedu.api.types.paginate.AdminUserPaginateFilter;
import xyz.playedu.api.types.paginate.PaginationResult;
import xyz.playedu.api.util.HelperUtil;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser> implements AdminUserService {
@ -31,9 +30,18 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
public PaginationResult<AdminUser> paginate(int page, int size, AdminUserPaginateFilter filter) {
QueryWrapper<AdminUser> wrapper = query().getWrapper().eq("1", "1");
if (filter.getName() != null) {
if (filter.getName() != null && filter.getName().trim().length() > 0) {
wrapper.like("name", "%" + filter.getName() + "%");
}
if (filter.getRoleId() != null) {
List<Integer> userIds = userRoleService.getAdminUserIds(filter.getRoleId());
if (userIds == null || userIds.size() == 0) {
userIds = new ArrayList<>() {{
add(0);
}};
}
wrapper.in("id", userIds);
}
IPage<AdminUser> pageObj = new Page<>(page, size);
pageObj = this.getBaseMapper().selectPage(pageObj, wrapper);
@ -180,6 +188,16 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
public Long total() {
return count();
}
@Override
public Map<Integer, List<Integer>> getAdminUserRoleIds(List<Integer> userIds) {
Map<Integer, List<AdminUserRole>> records = userRoleService.list(userRoleService.query().getWrapper().in("admin_id", userIds)).stream().collect(Collectors.groupingBy(AdminUserRole::getAdminId));
Map<Integer, List<Integer>> data = new HashMap<>();
records.forEach((adminId, record) -> {
data.put(adminId, record.stream().map(AdminUserRole::getRoleId).toList());
});
return data;
}
}

View File

@ -6,6 +6,8 @@ import xyz.playedu.api.service.internal.AdminUserRoleService;
import xyz.playedu.api.mapper.AdminUserRoleMapper;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author tengteng
* @description 针对表admin_user_role的数据库操作Service实现
@ -13,6 +15,10 @@ import org.springframework.stereotype.Service;
*/
@Service
public class AdminUserRoleServiceImpl extends ServiceImpl<AdminUserRoleMapper, AdminUserRole> implements AdminUserRoleService {
@Override
public List<Integer> getAdminUserIds(Integer roleId) {
return list(query().getWrapper().eq("role_id", roleId)).stream().map(AdminUserRole::getAdminId).toList();
}
}

View File

@ -11,4 +11,5 @@ import java.util.List;
* @createDate 2023-02-21 16:25:43
*/
public interface AdminUserRoleService extends IService<AdminUserRole> {
List<Integer> getAdminUserIds(Integer roleId);
}

View File

@ -11,4 +11,6 @@ public class AdminUserPaginateFilter {
private String name;
private Integer roleId;
}