diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/SysCache.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/SysCache.java index 3c3f2b69..2a11331b 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/SysCache.java +++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/SysCache.java @@ -38,12 +38,14 @@ public class SysCache { private static final String MENU_ID = "menu:id:"; private static final String DEPT_ID = "dept:id:"; 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_NAMES_ID = "deptNames:id:"; private static final String DEPT_CHILD_ID = "deptChild:id:"; private static final String DEPT_CHILDIDS_ID = "deptChildIds:id:"; private static final String POST_ID = "post:id:"; 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_NAMES_ID = "postNames:id:"; private static final String ROLE_ID = "role:id:"; @@ -68,7 +70,7 @@ public class SysCache { * 获取菜单 * * @param id 主键 - * @return + * @return 菜单 */ public static Menu getMenu(Long id) { return CacheUtil.get(SYS_CACHE, MENU_ID, id, () -> { @@ -81,7 +83,7 @@ public class SysCache { * 获取部门 * * @param id 主键 - * @return + * @return 部门 */ public static Dept getDept(Long id) { return CacheUtil.get(SYS_CACHE, DEPT_ID, id, () -> { @@ -95,7 +97,7 @@ public class SysCache { * * @param tenantId 租户id * @param deptNames 部门名 - * @return + * @return 部门id */ public static String getDeptIds(String tenantId, String 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 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 result = getSysClient().getPostIdsByFuzzy(tenantId, postNames); + return result.getData(); + }); + } + /** * 获取岗位名 * diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java index 507e0485..ad0d28e4 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java +++ b/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 DEPT = API_PREFIX + "/dept"; 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_NAMES = API_PREFIX + "/dept-names"; String DEPT_CHILD = API_PREFIX + "/dept-child"; String POST = API_PREFIX + "/post"; 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_NAMES = API_PREFIX + "/post-names"; String ROLE = API_PREFIX + "/role"; @@ -87,6 +89,16 @@ public interface ISysClient { @GetMapping(DEPT_IDS) R getDeptIds(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames); + /** + * 获取部门id + * + * @param tenantId 租户id + * @param deptNames 部门名 + * @return 部门id + */ + @GetMapping(DEPT_IDS_FUZZY) + R getDeptIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames); + /** * 获取部门名 * @@ -133,6 +145,16 @@ public interface ISysClient { @GetMapping(POST_IDS) R getPostIds(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames); + /** + * 获取岗位id + * + * @param tenantId 租户id + * @param postNames 岗位名 + * @return 岗位id + */ + @GetMapping(POST_IDS_FUZZY) + R getPostIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames); + /** * 获取岗位名 * diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java index 1f8e1309..14ca6730 100644 --- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java +++ b/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("获取数据失败"); } + @Override + public R getDeptIdsByFuzzy(String tenantId, String deptNames) { + return R.fail("获取数据失败"); + } + @Override public R getDeptName(Long id) { return R.fail("获取数据失败"); @@ -70,6 +75,11 @@ public class ISysClientFallback implements ISysClient { return R.fail("获取数据失败"); } + @Override + public R getPostIdsByFuzzy(String tenantId, String postNames) { + return R.fail("获取数据失败"); + } + @Override public R getPostName(Long id) { return R.fail("获取数据失败"); diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java b/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java index e41430a5..f6cac4d0 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java +++ b/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)); } + @Override + public R getDeptIdsByFuzzy(String tenantId, String deptNames) { + return R.data(deptService.getDeptIdsByFuzzy(tenantId, deptNames)); + } + @Override @GetMapping(DEPT_NAME) public R getDeptName(Long id) { @@ -97,6 +102,11 @@ public class SysClient implements ISysClient { return R.data(postService.getPostIds(tenantId, postNames)); } + @Override + public R getPostIdsByFuzzy(String tenantId, String postNames) { + return R.data(postService.getPostIdsByFuzzy(tenantId, postNames)); + } + @Override public R getPostName(Long id) { return R.data(postService.getById(id).getPostName()); diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java index 5b9fd051..105aea1c 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java @@ -66,6 +66,15 @@ public interface IDeptService extends IService { */ String getDeptIds(String tenantId, String deptNames); + /** + * 获取部门ID + * + * @param tenantId + * @param deptNames + * @return + */ + String getDeptIdsByFuzzy(String tenantId, String deptNames); + /** * 获取部门名 * diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/IPostService.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/IPostService.java index c7c19dfc..fc395d52 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/IPostService.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/IPostService.java @@ -48,6 +48,15 @@ public interface IPostService extends BaseService { */ String getPostIds(String tenantId, String postNames); + /** + * 获取岗位ID + * + * @param tenantId + * @param postNames + * @return + */ + String getPostIdsByFuzzy(String tenantId, String postNames); + /** * 获取岗位名 * diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java index 1fcbc66a..68900df3 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java @@ -16,6 +16,7 @@ */ 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.extension.service.impl.ServiceImpl; import org.springblade.core.log.exception.ServiceException; @@ -98,6 +99,20 @@ public class DeptServiceImpl extends ServiceImpl implements ID return null; } + @Override + public String getDeptIdsByFuzzy(String tenantId, String deptNames) { + LambdaQueryWrapper queryWrapper = Wrappers.query().lambda().eq(Dept::getTenantId, tenantId); + queryWrapper.and(wrapper -> { + List names = Func.toStrList(deptNames); + names.forEach(name -> wrapper.like(Dept::getDeptName, name).or()); + }); + List 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 public List getDeptNames(String deptIds) { return baseMapper.getDeptNames(Func.toLongArray(deptIds)); diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/PostServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/PostServiceImpl.java index 916ce2f3..240fd399 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/PostServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/PostServiceImpl.java @@ -16,6 +16,7 @@ */ 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.toolkit.Wrappers; import org.springblade.core.mp.base.BaseServiceImpl; @@ -51,6 +52,20 @@ public class PostServiceImpl extends BaseServiceImpl implement return null; } + @Override + public String getPostIdsByFuzzy(String tenantId, String postNames) { + LambdaQueryWrapper queryWrapper = Wrappers.query().lambda().eq(Post::getTenantId, tenantId); + queryWrapper.and(wrapper -> { + List names = Func.toStrList(postNames); + names.forEach(name -> wrapper.like(Post::getPostName, name).or()); + }); + List 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 public List getPostNames(String postIds) { return baseMapper.getPostNames(Func.toLongArray(postIds)); diff --git a/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java b/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java index d5ebafc2..bd4b71fd 100644 --- a/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java +++ b/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)); } + + /** + * 用户列表查询 + */ + @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> userSearch(@ApiIgnore UserVO user, @ApiIgnore Query query) { + return R.data(userService.selectUserSearch(user, query)); + } + } diff --git a/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java b/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java index aeb994f9..9f0f3de6 100644 --- a/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java +++ b/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.metadata.IPage; 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.UserInfo; import org.springblade.system.user.entity.UserOauth; @@ -71,6 +72,16 @@ public interface IUserService extends BaseService { */ IPage selectUserPage(IPage page, User user, Long deptId, String tenantId); + /** + * 自定义分页 + * + * @param user + * @param query + * @return + */ + IPage selectUserSearch(UserVO user, Query query); + + /** * 用户信息 * diff --git a/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java b/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java index 4b3ba1a4..651b1946 100644 --- a/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java +++ b/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.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.AllArgsConstructor; @@ -26,6 +27,7 @@ import org.springblade.common.constant.TenantConstant; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; 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.tenant.BladeTenantProperties; import org.springblade.core.tool.api.R; @@ -145,6 +147,34 @@ public class UserServiceImpl extends BaseServiceImpl implement return page.setRecords(baseMapper.selectUserPage(page, user, deptIdList, tenantId)); } + @Override + public IPage selectUserSearch(UserVO user, Query query) { + LambdaQueryWrapper queryWrapper = Wrappers.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 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 ids = Func.toStrList(postIds); + ids.forEach(id -> wrapper.like(User::getPostId, id).or()); + }); + } + } + IPage pages = this.page(Condition.getPage(query), queryWrapper); + return UserWrapper.build().pageVO(pages); + } + @Override public User userByAccount(String tenantId, String account) { return baseMapper.selectOne(Wrappers.query().lambda().eq(User::getTenantId, tenantId).eq(User::getAccount, account).eq(User::getIsDeleted, BladeConstant.DB_NOT_DELETED));