Browse Source

优化缓存规则、wrapper结构

test
smallchill 6 years ago
parent
commit
6dab7bcb5b
  1. 45
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/SysCache.java
  2. 32
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java
  3. 17
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java
  4. 20
      blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java
  5. 8
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.java
  6. 13
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml
  7. 16
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.java
  8. 26
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.xml
  9. 8
      blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java
  10. 16
      blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleService.java
  11. 6
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java
  12. 10
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java
  13. 6
      blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java
  14. 40
      blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml
  15. 18
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java
  16. 13
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java
  17. 12
      blade-service/blade-user/src/main/java/org/springblade/system/user/wrapper/UserWrapper.java

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

@ -24,6 +24,8 @@ import org.springblade.system.entity.Menu;
import org.springblade.system.entity.Role;
import org.springblade.system.feign.ISysClient;
import java.util.List;
import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
/**
@ -35,9 +37,12 @@ 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_ID = "deptName:id:";
private static final String DEPT_NAMES_ID = "deptNames:id:";
private static final String ROLE_ID = "role:id:";
private static final String ROLE_NAME_ID = "roleName:id:";
private static final String ROLE_NAMES_ID = "roleNames:id:";
private static final String ROLE_ALIAS_ID = "roleAlias:id:";
private static final String ROLE_ALIASES_ID = "roleAliases:id:";
private static ISysClient sysClient;
@ -123,4 +128,44 @@ public class SysCache {
});
}
/**
* 获取部门名集合
*
* @param deptIds 主键集合
* @return 部门名
*/
public static List<String> getDeptNames(String deptIds) {
return CacheUtil.get(SYS_CACHE, DEPT_NAMES_ID + deptIds, () -> {
R<List<String>> result = sysClient.getDeptNames(deptIds);
return result.getData();
});
}
/**
* 获取角色名集合
*
* @param roleIds 主键集合
* @return 角色名
*/
public static List<String> getRoleNames(String roleIds) {
return CacheUtil.get(SYS_CACHE, ROLE_NAMES_ID + roleIds, () -> {
R<List<String>> result = sysClient.getRoleNames(roleIds);
return result.getData();
});
}
/**
* 获取角色别名集合
*
* @param roleIds 主键集合
* @return 角色别名
*/
public static List<String> getRoleAliases(String roleIds) {
return CacheUtil.get(SYS_CACHE, ROLE_ALIASES_ID + roleIds, () -> {
R<List<String>> result = sysClient.getRoleAliases(roleIds);
return result.getData();
});
}
}

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

@ -25,6 +25,8 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* Feign接口类
*
@ -40,9 +42,12 @@ public interface ISysClient {
String MENU = API_PREFIX + "/menu";
String DEPT = API_PREFIX + "/dept";
String DEPT_NAME = API_PREFIX + "/dept-name";
String DEPT_NAMES = API_PREFIX + "/dept-names";
String ROLE = API_PREFIX + "/role";
String ROLE_NAME = API_PREFIX + "/role-name";
String ROLE_NAMES = API_PREFIX + "/role-names";
String ROLE_ALIAS = API_PREFIX + "/role-alias";
String ROLE_ALIASES = API_PREFIX + "/role-aliases";
/**
* 获取菜单
@ -98,4 +103,31 @@ public interface ISysClient {
@GetMapping(ROLE_ALIAS)
R<String> getRoleAlias(@RequestParam("id") Long id);
/**
* 获取部门名
*
* @param deptIds 主键
* @return
*/
@GetMapping(DEPT_NAMES)
R<List<String>> getDeptNames(@RequestParam("deptIds") String deptIds);
/**
* 获取角色名
*
* @param roleIds 主键
* @return
*/
@GetMapping(ROLE_NAMES)
R<List<String>> getRoleNames(@RequestParam("roleIds") String roleIds);
/**
* 获取角色别名
*
* @param roleIds 主键
* @return 角色别名
*/
@GetMapping(ROLE_ALIASES)
R<List<String>> getRoleAliases(@RequestParam("roleIds") String roleIds);
}

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

@ -22,6 +22,8 @@ import org.springblade.system.entity.Menu;
import org.springblade.system.entity.Role;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* Feign失败配置
*
@ -59,4 +61,19 @@ public class ISysClientFallback implements ISysClient {
public R<String> getRoleAlias(Long id) {
return R.fail("获取数据失败");
}
@Override
public R<List<String>> getDeptNames(String deptIds) {
return R.fail("获取数据失败");
}
@Override
public R<List<String>> getRoleNames(String roleIds) {
return R.fail("获取数据失败");
}
@Override
public R<List<String>> getRoleAliases(String roleIds) {
return R.fail("获取数据失败");
}
}

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

@ -28,6 +28,8 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
/**
* 系统服务Feign实现类
*
@ -80,4 +82,22 @@ public class SysClient implements ISysClient {
return R.data(roleService.getById(id).getRoleAlias());
}
@Override
@GetMapping(DEPT_NAMES)
public R<List<String>> getDeptNames(String deptIds) {
return R.data(deptService.getDeptNames(deptIds));
}
@Override
@GetMapping(ROLE_NAMES)
public R<List<String>> getRoleNames(String roleIds) {
return R.data(roleService.getRoleNames(roleIds));
}
@Override
@GetMapping(ROLE_ALIASES)
public R<List<String>> getRoleAliases(String roleIds) {
return R.data(roleService.getRoleAliases(roleIds));
}
}

8
blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.java

@ -47,4 +47,12 @@ public interface DeptMapper extends BaseMapper<Dept> {
*/
List<DeptVO> tree(String tenantCode);
/**
* 获取部门名
*
* @param ids
* @return
*/
List<String> getDeptNames(String[] ids);
}

13
blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml

@ -38,4 +38,17 @@
</if>
</select>
<select id="getDeptNames" resultType="java.lang.String">
SELECT
dept_name
FROM
blade_dept
WHERE
id IN
<foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
#{ids}
</foreach>
and is_deleted = 0
</select>
</mapper>

16
blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.java

@ -48,4 +48,20 @@ public interface RoleMapper extends BaseMapper<Role> {
*/
List<RoleVO> tree(String tenantCode, String excludeRole);
/**
* 获取角色名
*
* @param ids
* @return
*/
List<String> getRoleNames(String[] ids);
/**
* 获取角色名
*
* @param ids
* @return
*/
List<String> getRoleAliases(String[] ids);
}

26
blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.xml

@ -40,4 +40,30 @@
</if>
</select>
<select id="getRoleNames" resultType="java.lang.String">
SELECT
role_name
FROM
blade_role
WHERE
id IN
<foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
#{ids}
</foreach>
and is_deleted = 0
</select>
<select id="getRoleAliases" resultType="java.lang.String">
SELECT
role_alias
FROM
blade_role
WHERE
id IN
<foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
#{ids}
</foreach>
and is_deleted = 0
</select>
</mapper>

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

@ -47,4 +47,12 @@ public interface IDeptService extends IService<Dept> {
*/
List<DeptVO> tree(String tenantCode);
/**
* 获取部门名
*
* @param deptIds
* @return
*/
List<String> getDeptNames(String deptIds);
}

16
blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleService.java

@ -57,4 +57,20 @@ public interface IRoleService extends IService<Role> {
*/
boolean grant(@NotEmpty List<Long> roleIds, @NotEmpty List<Long> menuIds);
/**
* 获取角色名
*
* @param roleIds
* @return
*/
List<String> getRoleNames(String roleIds);
/**
* 获取角色名
*
* @param roleIds
* @return
*/
List<String> getRoleAliases(String roleIds);
}

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

@ -19,6 +19,7 @@ package org.springblade.system.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.entity.Dept;
import org.springblade.system.mapper.DeptMapper;
import org.springblade.system.service.IDeptService;
@ -45,4 +46,9 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements ID
return ForestNodeMerger.merge(baseMapper.tree(tenantCode));
}
@Override
public List<String> getDeptNames(String deptIds) {
return baseMapper.getDeptNames(Func.toStrArray(deptIds));
}
}

10
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java

@ -81,4 +81,14 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
return roleMenuService.saveBatch(roleMenus);
}
@Override
public List<String> getRoleNames(String roleIds) {
return baseMapper.getRoleNames(Func.toStrArray(roleIds));
}
@Override
public List<String> getRoleAliases(String roleIds) {
return baseMapper.getRoleAliases(Func.toStrArray(roleIds));
}
}

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

@ -66,8 +66,7 @@ public class UserController {
@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
public R<UserVO> detail(User user) {
User detail = userService.getOne(Condition.getQueryWrapper(user));
UserWrapper userWrapper = new UserWrapper(userService);
return R.data(userWrapper.entityVO(detail));
return R.data(UserWrapper.build().entityVO(detail));
}
/**
@ -83,8 +82,7 @@ public class UserController {
public R<IPage<UserVO>> list(@ApiIgnore @RequestParam Map<String, Object> user, Query query, BladeUser bladeUser) {
QueryWrapper<User> queryWrapper = Condition.getQueryWrapper(user, User.class);
IPage<User> pages = userService.page(Condition.getPage(query), (!bladeUser.getTenantCode().equals(BladeConstant.ADMIN_TENANT_CODE)) ? queryWrapper.lambda().eq(User::getTenantCode, bladeUser.getTenantCode()) : queryWrapper);
UserWrapper userWrapper = new UserWrapper(userService);
return R.data(userWrapper.pageVO(pages));
return R.data(UserWrapper.build().pageVO(pages));
}
/**

40
blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml

@ -48,44 +48,4 @@
WHERE
tenant_code = #{param1} and account = #{param2} and is_deleted = 0
</select>
<select id="getRoleName" resultType="java.lang.String">
SELECT
role_name
FROM
blade_role
WHERE
id IN
<foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
#{ids}
</foreach>
and is_deleted = 0
</select>
<select id="getRoleAlias" resultType="java.lang.String">
SELECT
role_alias
FROM
blade_role
WHERE
id IN
<foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
#{ids}
</foreach>
and is_deleted = 0
</select>
<select id="getDeptName" resultType="java.lang.String">
SELECT
dept_name
FROM
blade_dept
WHERE
id IN
<foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
#{ids}
</foreach>
and is_deleted = 0
</select>
</mapper>

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

@ -22,8 +22,6 @@ import org.springblade.core.mp.base.BaseService;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.entity.UserInfo;
import java.util.List;
/**
* 服务类
*
@ -72,20 +70,4 @@ public interface IUserService extends BaseService<User> {
* @return
*/
boolean resetPassword(String userIds);
/**
* 获取角色名
*
* @param roleIds
* @return
*/
List<String> getRoleName(String roleIds);
/**
* 获取部门名
*
* @param deptIds
* @return
*/
List<String> getDeptName(String deptIds);
}

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

@ -25,6 +25,7 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.DigestUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.cache.SysCache;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.entity.UserInfo;
import org.springblade.system.user.mapper.UserMapper;
@ -65,7 +66,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
User user = baseMapper.getUser(tenantCode, account);
userInfo.setUser(user);
if (Func.isNotEmpty(user)) {
List<String> roleAlias = baseMapper.getRoleAlias(Func.toStrArray(user.getRoleId()));
List<String> roleAlias = SysCache.getRoleAliases(user.getRoleId());
userInfo.setRoles(roleAlias);
}
return userInfo;
@ -86,14 +87,4 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
return this.update(user, Wrappers.<User>update().lambda().in(User::getId, Func.toLongList(userIds)));
}
@Override
public List<String> getRoleName(String roleIds) {
return baseMapper.getRoleName(Func.toStrArray(roleIds));
}
@Override
public List<String> getDeptName(String deptIds) {
return baseMapper.getDeptName(Func.toStrArray(deptIds));
}
}

12
blade-service/blade-user/src/main/java/org/springblade/system/user/wrapper/UserWrapper.java

@ -16,13 +16,12 @@
*/
package org.springblade.system.user.wrapper;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.cache.DictCache;
import org.springblade.system.cache.SysCache;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.service.IUserService;
import org.springblade.system.user.vo.UserVO;
import java.util.List;
@ -32,17 +31,18 @@ import java.util.List;
*
* @author Chill
*/
@AllArgsConstructor
public class UserWrapper extends BaseEntityWrapper<User, UserVO> {
private IUserService userService;
public static UserWrapper build() {
return new UserWrapper();
}
@Override
public UserVO entityVO(User user) {
UserVO userVO = BeanUtil.copy(user, UserVO.class);
assert userVO != null;
List<String> roleName = userService.getRoleName(user.getRoleId());
List<String> deptName = userService.getDeptName(user.getDeptId());
List<String> roleName = SysCache.getRoleNames(user.getRoleId());
List<String> deptName = SysCache.getDeptNames(user.getDeptId());
userVO.setRoleName(Func.join(roleName));
userVO.setDeptName(Func.join(deptName));
String sex = DictCache.getValue("sex", Func.toInt(user.getSex()));

Loading…
Cancel
Save