Browse Source

🥚 新增复杂条件的用户分页查询示例

test
smallchill 4 years ago
parent
commit
7c4012feeb
  1. 36
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/SysCache.java
  2. 22
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java
  3. 10
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java
  4. 10
      blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java
  5. 9
      blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java
  6. 9
      blade-service/blade-system/src/main/java/org/springblade/system/service/IPostService.java
  7. 15
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java
  8. 15
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/PostServiceImpl.java
  9. 18
      blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java
  10. 11
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java
  11. 30
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

36
blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/SysCache.java vendored

@ -38,12 +38,14 @@ public class SysCache {
private static final String MENU_ID = "menu:id:"; private static final String MENU_ID = "menu:id:";
private static final String DEPT_ID = "dept:id:"; private static final String DEPT_ID = "dept:id:";
private static final String DEPT_NAME = "dept:name:"; private static final String DEPT_NAME = "dept:name:";
private static final String DEPT_NAME_FUZZY = "dept:nameFuzzy:";
private static final String DEPT_NAME_ID = "deptName:id:"; private static final String DEPT_NAME_ID = "deptName:id:";
private static final String DEPT_NAMES_ID = "deptNames:id:"; private static final String DEPT_NAMES_ID = "deptNames:id:";
private static final String DEPT_CHILD_ID = "deptChild:id:"; private static final String DEPT_CHILD_ID = "deptChild:id:";
private static final String DEPT_CHILDIDS_ID = "deptChildIds:id:"; private static final String DEPT_CHILDIDS_ID = "deptChildIds:id:";
private static final String POST_ID = "post:id:"; private static final String POST_ID = "post:id:";
private static final String POST_NAME = "post:name:"; private static final String POST_NAME = "post:name:";
private static final String POST_NAME_FUZZY = "post:nameFuzzy:";
private static final String POST_NAME_ID = "postName:id:"; private static final String POST_NAME_ID = "postName:id:";
private static final String POST_NAMES_ID = "postNames:id:"; private static final String POST_NAMES_ID = "postNames:id:";
private static final String ROLE_ID = "role:id:"; private static final String ROLE_ID = "role:id:";
@ -68,7 +70,7 @@ public class SysCache {
* 获取菜单 * 获取菜单
* *
* @param id 主键 * @param id 主键
* @return * @return 菜单
*/ */
public static Menu getMenu(Long id) { public static Menu getMenu(Long id) {
return CacheUtil.get(SYS_CACHE, MENU_ID, id, () -> { return CacheUtil.get(SYS_CACHE, MENU_ID, id, () -> {
@ -81,7 +83,7 @@ public class SysCache {
* 获取部门 * 获取部门
* *
* @param id 主键 * @param id 主键
* @return * @return 部门
*/ */
public static Dept getDept(Long id) { public static Dept getDept(Long id) {
return CacheUtil.get(SYS_CACHE, DEPT_ID, id, () -> { return CacheUtil.get(SYS_CACHE, DEPT_ID, id, () -> {
@ -95,7 +97,7 @@ public class SysCache {
* *
* @param tenantId 租户id * @param tenantId 租户id
* @param deptNames 部门名 * @param deptNames 部门名
* @return * @return 部门id
*/ */
public static String getDeptIds(String tenantId, String deptNames) { public static String getDeptIds(String tenantId, String deptNames) {
return CacheUtil.get(SYS_CACHE, DEPT_NAME, tenantId + StringPool.DASH + deptNames, () -> { return CacheUtil.get(SYS_CACHE, DEPT_NAME, tenantId + StringPool.DASH + deptNames, () -> {
@ -104,6 +106,20 @@ public class SysCache {
}); });
} }
/**
* 获取部门id
*
* @param tenantId 租户id
* @param deptNames 部门名模糊查询
* @return 部门id
*/
public static String getDeptIdsByFuzzy(String tenantId, String deptNames) {
return CacheUtil.get(SYS_CACHE, DEPT_NAME_FUZZY, tenantId + StringPool.DASH + deptNames, () -> {
R<String> result = getSysClient().getDeptIdsByFuzzy(tenantId, deptNames);
return result.getData();
});
}
/** /**
* 获取部门名 * 获取部门名
* *
@ -195,6 +211,20 @@ public class SysCache {
}); });
} }
/**
* 获取岗位id
*
* @param tenantId 租户id
* @param postNames 岗位名模糊查询
* @return
*/
public static String getPostIdsByFuzzy(String tenantId, String postNames) {
return CacheUtil.get(SYS_CACHE, POST_NAME_FUZZY, tenantId + StringPool.DASH + postNames, () -> {
R<String> result = getSysClient().getPostIdsByFuzzy(tenantId, postNames);
return result.getData();
});
}
/** /**
* 获取岗位名 * 获取岗位名
* *

22
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java

@ -40,11 +40,13 @@ public interface ISysClient {
String MENU = API_PREFIX + "/menu"; String MENU = API_PREFIX + "/menu";
String DEPT = API_PREFIX + "/dept"; String DEPT = API_PREFIX + "/dept";
String DEPT_IDS = API_PREFIX + "/dept-ids"; String DEPT_IDS = API_PREFIX + "/dept-ids";
String DEPT_IDS_FUZZY = API_PREFIX + "/dept-ids-fuzzy";
String DEPT_NAME = API_PREFIX + "/dept-name"; String DEPT_NAME = API_PREFIX + "/dept-name";
String DEPT_NAMES = API_PREFIX + "/dept-names"; String DEPT_NAMES = API_PREFIX + "/dept-names";
String DEPT_CHILD = API_PREFIX + "/dept-child"; String DEPT_CHILD = API_PREFIX + "/dept-child";
String POST = API_PREFIX + "/post"; String POST = API_PREFIX + "/post";
String POST_IDS = API_PREFIX + "/post-ids"; String POST_IDS = API_PREFIX + "/post-ids";
String POST_IDS_FUZZY = API_PREFIX + "/post-ids-fuzzy";
String POST_NAME = API_PREFIX + "/post-name"; String POST_NAME = API_PREFIX + "/post-name";
String POST_NAMES = API_PREFIX + "/post-names"; String POST_NAMES = API_PREFIX + "/post-names";
String ROLE = API_PREFIX + "/role"; String ROLE = API_PREFIX + "/role";
@ -87,6 +89,16 @@ public interface ISysClient {
@GetMapping(DEPT_IDS) @GetMapping(DEPT_IDS)
R<String> getDeptIds(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames); R<String> getDeptIds(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames);
/**
* 获取部门id
*
* @param tenantId 租户id
* @param deptNames 部门名
* @return 部门id
*/
@GetMapping(DEPT_IDS_FUZZY)
R<String> getDeptIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames);
/** /**
* 获取部门名 * 获取部门名
* *
@ -133,6 +145,16 @@ public interface ISysClient {
@GetMapping(POST_IDS) @GetMapping(POST_IDS)
R<String> getPostIds(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames); R<String> getPostIds(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames);
/**
* 获取岗位id
*
* @param tenantId 租户id
* @param postNames 岗位名
* @return 岗位id
*/
@GetMapping(POST_IDS_FUZZY)
R<String> getPostIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames);
/** /**
* 获取岗位名 * 获取岗位名
* *

10
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java

@ -45,6 +45,11 @@ public class ISysClientFallback implements ISysClient {
return R.fail("获取数据失败"); return R.fail("获取数据失败");
} }
@Override
public R<String> getDeptIdsByFuzzy(String tenantId, String deptNames) {
return R.fail("获取数据失败");
}
@Override @Override
public R<String> getDeptName(Long id) { public R<String> getDeptName(Long id) {
return R.fail("获取数据失败"); return R.fail("获取数据失败");
@ -70,6 +75,11 @@ public class ISysClientFallback implements ISysClient {
return R.fail("获取数据失败"); return R.fail("获取数据失败");
} }
@Override
public R<String> getPostIdsByFuzzy(String tenantId, String postNames) {
return R.fail("获取数据失败");
}
@Override @Override
public R<String> getPostName(Long id) { public R<String> getPostName(Long id) {
return R.fail("获取数据失败"); return R.fail("获取数据失败");

10
blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java

@ -69,6 +69,11 @@ public class SysClient implements ISysClient {
return R.data(deptService.getDeptIds(tenantId, deptNames)); return R.data(deptService.getDeptIds(tenantId, deptNames));
} }
@Override
public R<String> getDeptIdsByFuzzy(String tenantId, String deptNames) {
return R.data(deptService.getDeptIdsByFuzzy(tenantId, deptNames));
}
@Override @Override
@GetMapping(DEPT_NAME) @GetMapping(DEPT_NAME)
public R<String> getDeptName(Long id) { public R<String> getDeptName(Long id) {
@ -97,6 +102,11 @@ public class SysClient implements ISysClient {
return R.data(postService.getPostIds(tenantId, postNames)); return R.data(postService.getPostIds(tenantId, postNames));
} }
@Override
public R<String> getPostIdsByFuzzy(String tenantId, String postNames) {
return R.data(postService.getPostIdsByFuzzy(tenantId, postNames));
}
@Override @Override
public R<String> getPostName(Long id) { public R<String> getPostName(Long id) {
return R.data(postService.getById(id).getPostName()); return R.data(postService.getById(id).getPostName());

9
blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java

@ -66,6 +66,15 @@ public interface IDeptService extends IService<Dept> {
*/ */
String getDeptIds(String tenantId, String deptNames); String getDeptIds(String tenantId, String deptNames);
/**
* 获取部门ID
*
* @param tenantId
* @param deptNames
* @return
*/
String getDeptIdsByFuzzy(String tenantId, String deptNames);
/** /**
* 获取部门名 * 获取部门名
* *

9
blade-service/blade-system/src/main/java/org/springblade/system/service/IPostService.java

@ -48,6 +48,15 @@ public interface IPostService extends BaseService<Post> {
*/ */
String getPostIds(String tenantId, String postNames); String getPostIds(String tenantId, String postNames);
/**
* 获取岗位ID
*
* @param tenantId
* @param postNames
* @return
*/
String getPostIdsByFuzzy(String tenantId, String postNames);
/** /**
* 获取岗位名 * 获取岗位名
* *

15
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java

@ -16,6 +16,7 @@
*/ */
package org.springblade.system.service.impl; package org.springblade.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.log.exception.ServiceException; import org.springblade.core.log.exception.ServiceException;
@ -98,6 +99,20 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements ID
return null; return null;
} }
@Override
public String getDeptIdsByFuzzy(String tenantId, String deptNames) {
LambdaQueryWrapper<Dept> queryWrapper = Wrappers.<Dept>query().lambda().eq(Dept::getTenantId, tenantId);
queryWrapper.and(wrapper -> {
List<String> names = Func.toStrList(deptNames);
names.forEach(name -> wrapper.like(Dept::getDeptName, name).or());
});
List<Dept> deptList = baseMapper.selectList(queryWrapper);
if (deptList != null && deptList.size() > 0) {
return deptList.stream().map(dept -> Func.toStr(dept.getId())).distinct().collect(Collectors.joining(","));
}
return null;
}
@Override @Override
public List<String> getDeptNames(String deptIds) { public List<String> getDeptNames(String deptIds) {
return baseMapper.getDeptNames(Func.toLongArray(deptIds)); return baseMapper.getDeptNames(Func.toLongArray(deptIds));

15
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/PostServiceImpl.java

@ -16,6 +16,7 @@
*/ */
package org.springblade.system.service.impl; package org.springblade.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
@ -51,6 +52,20 @@ public class PostServiceImpl extends BaseServiceImpl<PostMapper, Post> implement
return null; return null;
} }
@Override
public String getPostIdsByFuzzy(String tenantId, String postNames) {
LambdaQueryWrapper<Post> queryWrapper = Wrappers.<Post>query().lambda().eq(Post::getTenantId, tenantId);
queryWrapper.and(wrapper -> {
List<String> names = Func.toStrList(postNames);
names.forEach(name -> wrapper.like(Post::getPostName, name).or());
});
List<Post> postList = baseMapper.selectList(queryWrapper);
if (postList != null && postList.size() > 0) {
return postList.stream().map(post -> Func.toStr(post.getId())).distinct().collect(Collectors.joining(","));
}
return null;
}
@Override @Override
public List<String> getPostNames(String postIds) { public List<String> getPostNames(String postIds) {
return baseMapper.getPostNames(Func.toLongArray(postIds)); return baseMapper.getPostNames(Func.toLongArray(postIds));

18
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

@ -294,4 +294,22 @@ public class UserController {
return R.data(userService.platformDetail(user)); return R.data(userService.platformDetail(user));
} }
/**
* 用户列表查询
*/
@ApiImplicitParams({
@ApiImplicitParam(name = "name", value = "人员姓名", paramType = "query", dataType = "string"),
@ApiImplicitParam(name = "deptName", value = "部门名称", paramType = "query", dataType = "string"),
@ApiImplicitParam(name = "postName", value = "职位名称", paramType = "query", dataType = "string"),
@ApiImplicitParam(name = "current", value = "当前页数", paramType = "query", dataType = "int"),
@ApiImplicitParam(name = "size", value = "每页数量", paramType = "query", dataType = "int")
})
@ApiOperationSupport(order = 18)
@ApiOperation(value = "用户列表查询", notes = "用户列表查询")
@GetMapping("/user-search")
public R<IPage<UserVO>> userSearch(@ApiIgnore UserVO user, @ApiIgnore Query query) {
return R.data(userService.selectUserSearch(user, query));
}
} }

11
blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java

@ -20,6 +20,7 @@ package org.springblade.system.user.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService; import org.springblade.core.mp.base.BaseService;
import org.springblade.core.mp.support.Query;
import org.springblade.system.user.entity.User; import org.springblade.system.user.entity.User;
import org.springblade.system.user.entity.UserInfo; import org.springblade.system.user.entity.UserInfo;
import org.springblade.system.user.entity.UserOauth; import org.springblade.system.user.entity.UserOauth;
@ -71,6 +72,16 @@ public interface IUserService extends BaseService<User> {
*/ */
IPage<User> selectUserPage(IPage<User> page, User user, Long deptId, String tenantId); IPage<User> selectUserPage(IPage<User> page, User user, Long deptId, String tenantId);
/**
* 自定义分页
*
* @param user
* @param query
* @return
*/
IPage<UserVO> selectUserSearch(UserVO user, Query query);
/** /**
* 用户信息 * 用户信息
* *

30
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@ -18,6 +18,7 @@ package org.springblade.system.user.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -26,6 +27,7 @@ import org.springblade.common.constant.TenantConstant;
import org.springblade.core.log.exception.ServiceException; import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tenant.BladeTenantProperties; import org.springblade.core.tenant.BladeTenantProperties;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
@ -145,6 +147,34 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
return page.setRecords(baseMapper.selectUserPage(page, user, deptIdList, tenantId)); return page.setRecords(baseMapper.selectUserPage(page, user, deptIdList, tenantId));
} }
@Override
public IPage<UserVO> selectUserSearch(UserVO user, Query query) {
LambdaQueryWrapper<User> queryWrapper = Wrappers.<User>query().lambda();
if (StringUtil.isNotBlank(user.getName())) {
queryWrapper.like(User::getName, user.getName());
}
if (StringUtil.isNotBlank(user.getDeptName())) {
String deptIds = SysCache.getDeptIdsByFuzzy(AuthUtil.getTenantId(), user.getDeptName());
if (StringUtil.isNotBlank(deptIds)) {
queryWrapper.and(wrapper -> {
List<String> ids = Func.toStrList(deptIds);
ids.forEach(id -> wrapper.like(User::getDeptId, id).or());
});
}
}
if (StringUtil.isNotBlank(user.getPostName())) {
String postIds = SysCache.getPostIdsByFuzzy(AuthUtil.getTenantId(), user.getPostName());
if (StringUtil.isNotBlank(postIds)) {
queryWrapper.and(wrapper -> {
List<String> ids = Func.toStrList(postIds);
ids.forEach(id -> wrapper.like(User::getPostId, id).or());
});
}
}
IPage<User> pages = this.page(Condition.getPage(query), queryWrapper);
return UserWrapper.build().pageVO(pages);
}
@Override @Override
public User userByAccount(String tenantId, String account) { public User userByAccount(String tenantId, String account) {
return baseMapper.selectOne(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getAccount, account).eq(User::getIsDeleted, BladeConstant.DB_NOT_DELETED)); return baseMapper.selectOne(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getAccount, account).eq(User::getIsDeleted, BladeConstant.DB_NOT_DELETED));

Loading…
Cancel
Save