diff --git a/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java b/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java index 1c4e1480..1775371c 100644 --- a/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java +++ b/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java @@ -153,9 +153,9 @@ public class SecurityRequestFilter extends OncePerRequestFilter { String client = JwtUtils.getClient(token); String redisKey = com.qs.serve.common.util.StringUtils.format(RedisCacheKeys.LOGIN_KEY_APP,client,userId); String cacheToken = redisService.getString(redisKey); - if(!DevEnvironmentConfig.isDev()&&!token.equals(cacheToken)){ - redisService.remove(redisKey); - HttpResponsePrintUtil.print2(response,401,"异地登录,已被系统登出"); + if(cacheToken==null){ + //redisService.remove(redisKey); + HttpResponsePrintUtil.print2(response,401,"已被系统登出"); //return解决:security.access.AccessDeniedException return; } diff --git a/src/main/java/com/qs/serve/common/model/consts/RedisCacheKeys.java b/src/main/java/com/qs/serve/common/model/consts/RedisCacheKeys.java index ebeba580..9db3743d 100644 --- a/src/main/java/com/qs/serve/common/model/consts/RedisCacheKeys.java +++ b/src/main/java/com/qs/serve/common/model/consts/RedisCacheKeys.java @@ -6,6 +6,8 @@ package com.qs.serve.common.model.consts; */ public class RedisCacheKeys { + public final static String SUPPLIER_RELATE_TREE = "supplier_relate_tree"; + /** 租户列表 */ public final static String Tenant_ALL_LIST = "expire_tenant_list"; diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java index 519a2842..9b375893 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java @@ -1,8 +1,11 @@ package com.qs.serve.modules.bms.controller; +import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.pagehelper.PageHelper; +import com.qs.serve.common.framework.redis.RedisService; import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.consts.RedisCacheKeys; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; @@ -53,6 +56,7 @@ public class BmsSupplierController { private SysUserService sysUserService; private BmsSupplierMapper bmsSupplierMapper; private HisUserSupplierService hisUserSupplierService; + private RedisService redisService; /** * 翻页查询 @@ -114,27 +118,24 @@ public class BmsSupplierController { */ @GetMapping("/tree") @PreAuthorize("hasRole('bms:supplier:query')") - public R> getTree(BmsSupplier param){ - Date d = new Date(); - List list = bmsSupplierService.selectSupplierList(param); - Date d2 = new Date(); - initSupplierList(list); - Date d3 = new Date(); - List list2 = list.stream().map(supplier->{ - BmsSupplierTreeVo treeNode = CopierUtil.copy(supplier,new BmsSupplierTreeVo()); - treeNode.setId(supplier.getId()); - treeNode.setParentId(supplier.getPid()); - treeNode.setSort(0); - return treeNode; - }).collect(Collectors.toList()); - Date d4 = new Date(); - list2 = TreeUtil.buildByRecursive(list2,TreeUtil.DEFAULT_PID_STRING); - Date d5 = new Date(); - System.out.println("d2-d"+(d2.getTime()-d.getTime())); - System.out.println("d3-d2"+(d3.getTime()-d2.getTime())); - System.out.println("d4-d3"+(d4.getTime()-d3.getTime())); - System.out.println("d5-d4"+(d5.getTime()-d4.getTime())); - return R.ok(list2); + public R getTree(BmsSupplier param){ + String json = redisService.getString(RedisCacheKeys.SUPPLIER_RELATE_TREE); + if(json==null){ + List list = bmsSupplierService.selectSupplierList(param); + initSupplierList(list); + List list2 = list.stream().map(supplier->{ + BmsSupplierTreeVo treeNode = CopierUtil.copy(supplier,new BmsSupplierTreeVo()); + treeNode.setId(supplier.getId()); + treeNode.setParentId(supplier.getPid()); + treeNode.setSort(0); + return treeNode; + }).collect(Collectors.toList()); + list2 = TreeUtil.buildByRecursive(list2,TreeUtil.DEFAULT_PID_STRING); + String jsonString = JsonUtil.objectToJson(list2); + redisService.set(RedisCacheKeys.SUPPLIER_RELATE_TREE,jsonString); + return R.ok(list2); + } + return R.ok(JSONArray.parseArray(json)); } @@ -236,6 +237,7 @@ public class BmsSupplierController { initSupplierOtherInfo(supplierIds); //清空临时表 hisUserSupplierService.cleanTable(); + redisService.remove(RedisCacheKeys.SUPPLIER_RELATE_TREE); return R.ok(); } @@ -268,6 +270,7 @@ public class BmsSupplierController { initSupplierOtherInfo(Arrays.asList(supplier.getId())); //清空临时表 hisUserSupplierService.cleanTable(); + redisService.remove(RedisCacheKeys.SUPPLIER_RELATE_TREE); return R.ok(); } @@ -410,6 +413,7 @@ public class BmsSupplierController { return R.error("id不能为空"); } bmsSupplierService.edit(param); + redisService.remove(RedisCacheKeys.SUPPLIER_RELATE_TREE); return R.ok(); } @@ -428,11 +432,31 @@ public class BmsSupplierController { supplier.setPid("0"); supplier.setParentCode("0"); }else { + BmsSupplier supplierdb = null; + List childList = null; + if(param.getId()!=null){ + supplierdb = bmsSupplierService.getById(param.getId()); + childList = bmsSupplierService.listChildByPathIds(supplierdb.getPathIds()); + } BmsSupplier parentNode = bmsSupplierService.getById(param.getPid()); supplier.setPid(param.getPid()+""); + String[] pids = parentNode.getPathIds().split("_"); + for (String pid : pids) { + if(pid.equals(supplier.getId())){ + return R.error("数据出现循环递归,保存失败"); + } + } + supplier.setPathIds(parentNode.getPathIds()+"_"+supplier.getId()); supplier.setParentCode(parentNode.getCode()); + for (BmsSupplier bmsSupplier : childList) { + BmsSupplier bmsSupplier2 = new BmsSupplier(); + bmsSupplier2.setPathIds(bmsSupplier.getPathIds().replace(supplierdb.getPathIds(),supplier.getPathIds())); + bmsSupplier2.setId(bmsSupplier.getId()); + bmsSupplierService.updateById(bmsSupplier2); + } } bmsSupplierService.updateById(supplier); + redisService.remove(RedisCacheKeys.SUPPLIER_RELATE_TREE); return R.ok(); } @@ -448,6 +472,7 @@ public class BmsSupplierController { bmsSupplierService.edit(param); //清空临时表 hisUserSupplierService.cleanTable(); + redisService.remove(RedisCacheKeys.SUPPLIER_RELATE_TREE); return R.ok(); } @@ -466,11 +491,12 @@ public class BmsSupplierController { bmsSupplierService.removeById(id); //清空临时表 hisUserSupplierService.cleanTable(); + + redisService.remove(RedisCacheKeys.SUPPLIER_RELATE_TREE); return R.ok(); } - /** * 显示关联 * @param list diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java index f1049106..3e892058 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java @@ -84,6 +84,8 @@ public class BmsSupplier implements Serializable { /** 父级id */ private String pid; + private String pathIds; + private String parentCode; /** 负责人 */ diff --git a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSupplierTreeVo.java b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSupplierTreeVo.java index b3c8885b..6a07e656 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSupplierTreeVo.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSupplierTreeVo.java @@ -79,4 +79,6 @@ public class BmsSupplierTreeVo extends TreeNode { /** 行政标题 */ private String region2Label; + + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java index f9fe19e9..acd526bd 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java @@ -24,6 +24,8 @@ public interface BmsSupplierService extends IService { List listChild(String pid); + List listChildByPathIds(String pathIds); + List listByRegionId(String regionId); List listByRegion2Id(String regionId); diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java index 13d784b3..d7290db7 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java @@ -140,6 +140,13 @@ public class BmsSupplierServiceImpl extends ServiceImpl listChildByPathIds(String pathIds) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.likeRight(BmsSupplier::getPathIds,pathIds+"_"); + return this.list(lqw); + } + @Override public List listByRegionId(String regionId) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); diff --git a/src/main/java/com/qs/serve/modules/oss/service/impl/OssServiceImpl.java b/src/main/java/com/qs/serve/modules/oss/service/impl/OssServiceImpl.java index 15bb4ef6..b1cc8577 100644 --- a/src/main/java/com/qs/serve/modules/oss/service/impl/OssServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oss/service/impl/OssServiceImpl.java @@ -42,7 +42,7 @@ public class OssServiceImpl implements OssService { String dir = prefix + "/" + sdf.format(new Date())+"/"; - long expireTime = 30; + long expireTime = 300; long expireEndTime = System.currentTimeMillis() + expireTime * 1000; Date expiration = new Date(expireEndTime); PolicyConditions policyConds = new PolicyConditions();