From 3b44a5f728a5ce376a09158a99f940f2a16b6148 Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 28 Apr 2023 08:33:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/BazVisitInstanceServiceImpl.java | 22 ++- .../controller/BmsRegionUserController.java | 19 ++- .../bms/controller/BmsSupplierController.java | 12 +- .../modules/bms/entity/BmsRegionUser.java | 5 + .../service/BmsSupplierAddressService.java | 2 + .../BmsSupplierVisitAddressService.java | 2 + .../impl/BmsChannelPointServiceImpl.java | 21 ++- .../impl/BmsSupplierAddressServiceImpl.java | 7 + .../BmsSupplierVisitAddressServiceImpl.java | 8 ++ .../sys/controller/SysPostController.java | 51 ++++--- .../sys/controller/SysPostUserController.java | 93 ++++++++++++ .../sys/controller/SysUserController.java | 13 +- .../qs/serve/modules/sys/entity/SysPost.java | 41 ++++-- .../serve/modules/sys/entity/SysPostUser.java | 132 ++++++++++++++++++ .../qs/serve/modules/sys/entity/SysUser.java | 39 ------ .../modules/sys/entity/bo/SysPostUserBo.java | 43 ++++++ .../modules/sys/entity/so/SysPostUserSo.java | 86 ++++++++++++ .../modules/sys/entity/vo/SysPostTreeVo.java | 47 +++++++ .../modules/sys/mapper/SysPostUserMapper.java | 14 ++ .../modules/sys/service/SysPostService.java | 2 + .../sys/service/SysPostUserService.java | 21 +++ .../modules/sys/service/SysUserService.java | 9 +- .../sys/service/impl/SysPostServiceImpl.java | 66 +++++++++ .../service/impl/SysPostUserServiceImpl.java | 112 +++++++++++++++ .../sys/service/impl/SysUserServiceImpl.java | 19 ++- 25 files changed, 797 insertions(+), 89 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/sys/controller/SysPostUserController.java create mode 100644 src/main/java/com/qs/serve/modules/sys/entity/SysPostUser.java create mode 100644 src/main/java/com/qs/serve/modules/sys/entity/bo/SysPostUserBo.java create mode 100644 src/main/java/com/qs/serve/modules/sys/entity/so/SysPostUserSo.java create mode 100644 src/main/java/com/qs/serve/modules/sys/entity/vo/SysPostTreeVo.java create mode 100644 src/main/java/com/qs/serve/modules/sys/mapper/SysPostUserMapper.java create mode 100644 src/main/java/com/qs/serve/modules/sys/service/SysPostUserService.java create mode 100644 src/main/java/com/qs/serve/modules/sys/service/impl/SysPostUserServiceImpl.java diff --git a/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java b/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java index c939b18b..dd046719 100644 --- a/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java @@ -17,10 +17,7 @@ import com.qs.serve.modules.baz.mapper.BazVisitMapper; import com.qs.serve.modules.baz.service.BazVisitInfoService; import com.qs.serve.modules.baz.service.BazVisitInstanceFlowService; import com.qs.serve.modules.bms.entity.*; -import com.qs.serve.modules.bms.mapper.BmsChannelPointMapper; -import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; -import com.qs.serve.modules.bms.mapper.BmsSupplierVisitAddressMapper; -import com.qs.serve.modules.bms.mapper.BmsSupplierVisitFormMapper; +import com.qs.serve.modules.bms.mapper.*; import com.qs.serve.modules.bms.service.BmsSupplierVisitAddressService; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.mapper.SysUserMapper; @@ -45,6 +42,7 @@ import java.util.List; @AllArgsConstructor public class BazVisitInstanceServiceImpl extends ServiceImpl implements BazVisitInstanceService { + BmsSupplierContactsMapper bmsSupplierContactsMapper; BmsChannelPointMapper pointMapper; BmsSupplierMapper supplierMapper; SysUserMapper sysUserMapper; @@ -198,6 +196,14 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl contactsLqw = new LambdaQueryWrapper<>(); + contactsLqw.eq(BmsSupplierContacts::getSupplierId,instanceFlowDb.getTargetId()); + if(bmsSupplierContactsMapper.selectCount(contactsLqw)<1){ + return; + } + } BazVisitInstance visitInstance = new BazVisitInstance(); visitInstance.setFinishedTime(LocalDateTime.now()); visitInstance.setVisitState(1); @@ -209,6 +215,14 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl contactsLqw = new LambdaQueryWrapper<>(); + contactsLqw.eq(BmsSupplierContacts::getSupplierId,instanceDb.getTargetId()); + if(bmsSupplierContactsMapper.selectCount(contactsLqw)<1){ + Assert.throwEx("请补充客户联系人"); + } + } if(instanceDb.getVisitState().equals(0)){ LambdaQueryWrapper countLqw = new LambdaQueryWrapper<>(); countLqw.select( diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionUserController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionUserController.java index f8a18b0f..fe7b2cad 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionUserController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionUserController.java @@ -24,6 +24,7 @@ import com.qs.serve.modules.sys.service.SysUserService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import com.qs.serve.modules.bms.entity.BmsRegionUser; @@ -117,6 +118,7 @@ public class BmsRegionUserController { @PostMapping("/save") @SysLog(module = SystemModule.BASE, title = "区域负责人", biz = BizType.UPDATE) @PreAuthorize("hasRole('bms:regionUser:insert')") + @Transactional(rollbackFor = Exception.class) public R save(@RequestBody @Valid BmsRegionUserSaveBo param){ Integer type = param.getType(); List bmsRegionUsers = new ArrayList<>(); @@ -124,15 +126,30 @@ public class BmsRegionUserController { for (String userId : param.getUserIds()) { BmsRegionUser regionUser = bmsRegionUserService.getByParam(type,regionId,userId); if(regionUser==null){ + boolean isSale = type.equals(0); + String pathIds; + String pathName; + if(isSale){ + BmsRegion region = bmsRegionService.getById(regionId); + pathIds = region.getPathIds(); + pathName = region.getPathNames(); + }else { + BmsRegion2 region = bmsRegion2Service.getById(regionId); + pathIds = region.getPathIds(); + pathName = region.getPathNames(); + } regionUser = new BmsRegionUser(); regionUser.setType(type); regionUser.setRegionId(regionId); regionUser.setUserId(userId); + regionUser.setPathIds(pathIds); + regionUser.setPathNames(pathName); bmsRegionUsers.add(regionUser); } } } bmsRegionUserService.saveBatch(bmsRegionUsers); + List userIds = param.getUserIds(); // 类型:0=销售区域;1=行政区域 if(type.equals(0)){ List regionList = bmsRegionService.listByIds(param.getRegionIds()); @@ -145,7 +162,6 @@ public class BmsRegionUserController { List pointIds = pointList.stream().map(BmsChannelPoint::getId) .distinct().collect(Collectors.toList()); String pathIds = region.getPathIds(); - List userIds = param.getUserIds(); hisUserChannelPointService.flushBatchUserRegion(userIds,pointIds,2,pathIds); } }else { @@ -159,7 +175,6 @@ public class BmsRegionUserController { List pointIds = pointList.stream().map(BmsChannelPoint::getId) .distinct().collect(Collectors.toList()); String pathIds = region.getPathIds(); - List userIds = param.getUserIds(); hisUserChannelPointService.flushBatchUserRegion(userIds,pointIds,1,pathIds); } } 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 9e6513cd..17fab2bd 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 @@ -13,12 +13,12 @@ import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.*; import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion2; +import com.qs.serve.modules.bms.entity.BmsSupplierVisitAddress; import com.qs.serve.modules.bms.entity.bo.BmsSupplierBo; import com.qs.serve.modules.bms.entity.bo.BmsSupplierParentBo; import com.qs.serve.modules.bms.entity.vo.BmsSupplierTreeVo; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; -import com.qs.serve.modules.bms.service.BmsRegion2Service; -import com.qs.serve.modules.bms.service.BmsRegionService; +import com.qs.serve.modules.bms.service.*; import com.qs.serve.modules.his.entity.HisUserSupplier; import com.qs.serve.modules.his.service.HisUserSupplierService; import com.qs.serve.modules.sys.entity.SysUser; @@ -33,7 +33,6 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import com.qs.serve.modules.bms.entity.BmsSupplier; -import com.qs.serve.modules.bms.service.BmsSupplierService; import javax.validation.Valid; import java.util.*; @@ -51,6 +50,8 @@ import java.util.stream.Collectors; public class BmsSupplierController { private BmsSupplierService bmsSupplierService; + private BmsSupplierAddressService bmsSupplierAddressService; + private BmsSupplierVisitAddressService bmsSupplierVisitAddressService; private BmsRegionService bmsRegionService; private BmsRegion2Service bmsRegion2Service; private SysUserService sysUserService; @@ -489,13 +490,16 @@ public class BmsSupplierController { @PreAuthorize("hasRole('bms:supplier:delete')") public R deleteById(@PathVariable("id") String id){ if(bmsSupplierService.listChild(id).size()>0){ - return R.error("含有子公司客户无法删除"); + return R.error("含有子客户无法删除"); } bmsSupplierService.removeById(id); //清空临时表 hisUserSupplierService.cleanTable(); redisService.remove(RedisCacheKeys.SUPPLIER_RELATE_TREE); + //删除客户地址 + bmsSupplierAddressService.removeBySupplierId(id); + bmsSupplierVisitAddressService.removeBySupplierId(id); return R.ok(); } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsRegionUser.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsRegionUser.java index ab6e1ea2..8de0900d 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsRegionUser.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsRegionUser.java @@ -77,6 +77,11 @@ public class BmsRegionUser implements Serializable { @JsonProperty private Boolean delFlag; + /** 祖级id */ + private String pathIds; + + /** 祖级id */ + private String pathNames; /** 区域名称 */ @TableField(exist = false) diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierAddressService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierAddressService.java index 9c628407..f7d43385 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierAddressService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierAddressService.java @@ -19,5 +19,7 @@ public interface BmsSupplierAddressService extends IService List selectBmsSupplierAddressList(BmsSupplierAddress query); + void removeBySupplierId(String supplierId); + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierVisitAddressService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierVisitAddressService.java index 9ce193fa..6bf0980e 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierVisitAddressService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierVisitAddressService.java @@ -10,5 +10,7 @@ import com.qs.serve.modules.bms.entity.BmsSupplierVisitAddress; */ public interface BmsSupplierVisitAddressService extends IService { + void removeBySupplierId(String supplierId); + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java index 1ab54535..583537a9 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.bms.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.util.Assert; +import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.modules.bms.common.MasterUserType; import com.qs.serve.modules.bms.entity.*; @@ -13,6 +14,8 @@ import com.qs.serve.modules.bms.service.BmsRegion2Service; import com.qs.serve.modules.bms.service.BmsRegionService; import com.qs.serve.modules.his.service.HisUserChannelPointService; import com.qs.serve.modules.sys.common.enums.BusinessLogType; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.mapper.SysUserMapper; import com.qs.serve.modules.sys.service.SysBusinessLogService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -39,6 +42,7 @@ public class BmsChannelPointServiceImpl extends ServiceImpl selectBmsSupplierAddressList(BmsSupplierAddress query) { return baseMapper.selectBmsSupplierAddressList(query); } + + @Override + public void removeBySupplierId(String supplierId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsSupplierAddress::getSupplierId,supplierId); + this.remove(lqw); + } } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierVisitAddressServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierVisitAddressServiceImpl.java index 8a5b92ea..0d6d8686 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierVisitAddressServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierVisitAddressServiceImpl.java @@ -1,5 +1,6 @@ package com.qs.serve.modules.bms.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -18,5 +19,12 @@ import com.qs.serve.modules.bms.mapper.BmsSupplierVisitAddressMapper; @AllArgsConstructor public class BmsSupplierVisitAddressServiceImpl extends ServiceImpl implements BmsSupplierVisitAddressService { + @Override + public void removeBySupplierId(String supplierId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsSupplierVisitAddress::getSupplierId,supplierId); + this.remove(lqw); + } + } diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysPostController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysPostController.java index 3e0f79e7..d4fd615a 100644 --- a/src/main/java/com/qs/serve/modules/sys/controller/SysPostController.java +++ b/src/main/java/com/qs/serve/modules/sys/controller/SysPostController.java @@ -6,9 +6,12 @@ import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.TreeUtil; import com.qs.serve.modules.sys.entity.SysPost; +import com.qs.serve.modules.sys.entity.vo.SysPostTreeVo; import com.qs.serve.modules.sys.service.SysDeptService; import com.qs.serve.modules.sys.service.SysPostService; +import com.qs.serve.modules.tag.entity.vo.TagCategoryTreeVo; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -16,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.stream.Collectors; /** * 系统:职务 @@ -29,18 +33,30 @@ import java.util.List; public class SysPostController { private SysPostService sysPostService; - private SysDeptService sysDeptService; - /** * 列表查询 * @param param * @return */ - @GetMapping("/list") - public R> getList(@Valid SysPost param){ + @GetMapping("/tree") + public R> getList(SysPost param){ List list = sysPostService.list(new QueryWrapper<>(param)); - return R.ok(list); + List treeVoList = list.stream().map(source->{ + SysPostTreeVo treeVo = new SysPostTreeVo(); + treeVo.setId(source.getId()); + treeVo.setPostName(source.getPostName()); + treeVo.setPostCode(source.getPostCode()); + treeVo.setPathIds(source.getPathIds()); + treeVo.setPathNames(source.getPathNames()); + treeVo.setRemark(source.getRemark()); + treeVo.setId(source.getId()); + treeVo.setParentId(source.getPid()); + treeVo.setSort(0); + return treeVo; + }).collect(Collectors.toList()); + treeVoList = TreeUtil.buildByRecursive(treeVoList,TreeUtil.DEFAULT_PID_STRING); + return R.ok(treeVoList); } /** @@ -53,11 +69,6 @@ public class SysPostController { public R> getPage(SysPost param){ PageUtil.startPage(); List list = sysPostService.list(new QueryWrapper<>(param)); - for (SysPost sysPost : list) { - if(sysPost.getId()!=null&&!sysPost.getId().equals(0L)){ - sysPost.setSysDept(sysDeptService.getById(sysPost.getDeptId())); - } - } return R.byPageHelperList(list); } @@ -68,17 +79,12 @@ public class SysPostController { */ @GetMapping("/getById/{id}") @SysLog(title = "职务",biz = BizType.QUERY) - @PreAuthorize("hasRole('sys:post:query')") public R getById(@PathVariable("id") String id){ SysPost sysPost = sysPostService.getById(id); - if(sysPost.getId()!=null&&!sysPost.getId().equals(0L)){ - sysPost.setSysDept(sysDeptService.getById(sysPost.getDeptId())); - } return R.ok(sysPost); } - /** * 根据ID更新 * @param param @@ -86,10 +92,12 @@ public class SysPostController { */ @SysLog(title = "职务",biz = BizType.UPDATE) @PostMapping("/updateById") - @PreAuthorize("hasRole('sys:post:update')") public R updateById(@RequestBody @Valid SysPost param){ - boolean result = sysPostService.updateById(param); - return R.isTrue(result); + if(param.getId()==null){ + return R.error2(); + } + sysPostService.modify(param); + return R.ok(); } @@ -101,10 +109,10 @@ public class SysPostController { */ @PostMapping("/save") @SysLog(title = "职务",biz = BizType.INSERT) - @PreAuthorize("hasRole('sys:post:insert')") public R save(@RequestBody @Valid SysPost param){ - boolean result = sysPostService.save(param); - return R.isTrue(result); + param.setId(null); + sysPostService.modify(param); + return R.ok(param); } /** @@ -114,7 +122,6 @@ public class SysPostController { */ @SysLog(title = "职务",biz = BizType.DELETE) @DeleteMapping("/deleteById/{id}") - @PreAuthorize("hasRole('sys:post:delete')") public R deleteById(@PathVariable("id") String id){ boolean result = sysPostService.removeById(id); return R.isTrue(result); diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysPostUserController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysPostUserController.java new file mode 100644 index 00000000..b21c3f4a --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/controller/SysPostUserController.java @@ -0,0 +1,93 @@ +package com.qs.serve.modules.sys.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.StringUtils; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import com.qs.serve.modules.sys.entity.so.SysPostUserSo; +import com.qs.serve.modules.sys.entity.bo.SysPostUserBo; +import com.qs.serve.modules.sys.entity.SysPostUser; +import com.qs.serve.modules.sys.service.SysPostUserService; + +import javax.validation.Valid; +import java.util.List; + +/** + * 系统 系统职务 + * @author YenHex + * @since 2023-04-27 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("sys/postUser") +public class SysPostUserController { + + private SysPostUserService sysPostUserService; + + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + public R> getPage(SysPostUserSo param){ + SysPostUser entity = CopierUtil.copy(param,new SysPostUser()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); + PageUtil.startPage(); + List list = sysPostUserService.list(lqw); + return R.byPageHelperList(list); + } + + /** + * ID查询 + * @param id + * @return + */ + //@GetMapping("/getById/{id}") + @SysLog(module = SystemModule.SYSTEM, title = "系统职务", biz = BizType.QUERY) + public R getById(@PathVariable("id") String id){ + SysPostUser sysPostUser = sysPostUserService.getById(id); + return R.ok(sysPostUser); + } + + + /** + * 绑定用户与职务 + * @param param + * @return + */ + @PostMapping("/bind") + @SysLog(module = SystemModule.SYSTEM, title = "系统职务", biz = BizType.INSERT) + public R save(@RequestBody @Valid SysPostUserBo param){ + sysPostUserService.bind(param); + return R.ok(); + } + + /** + * 删除 + * @param ids + * @return + */ + @DeleteMapping("/deleteById/{ids}") + @SysLog(module = SystemModule.SYSTEM, title = "系统职务", biz = BizType.DELETE) + public R deleteById(@PathVariable("ids") String ids){ + List idsLong = StringUtils.splitIdLong(ids); + boolean result = sysPostUserService.removeByIds(idsLong); + return R.isTrue(result); + } + + +} + diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java index 01904461..0a8ddc6c 100644 --- a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java +++ b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java @@ -10,6 +10,7 @@ import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.TreeNode; import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.*; import com.qs.serve.modules.sys.entity.*; import com.qs.serve.modules.sys.entity.bo.*; @@ -46,6 +47,14 @@ public class SysUserController { private WxUserService wxUserService; private SysUserSalesService sysUserSalesService; + + + @GetMapping("/getChildList") + public R> getChildList(){ + List postUsers = sysUserService.listByChildIds(AuthContextUtils.getSysUserId()); + return R.ok(postUsers); + } + /** * 树查询 * @return @@ -95,8 +104,8 @@ public class SysUserController { SysUserVo sysUserVo = sysUser.toSysUserVo(false); SysDept dept = sysDeptService.getById(sysUser.getDeptId()); sysUserVo.setDeptInfo(dept); - SysPost sysPost = sysPostService.getById(sysUser.getPositionId()); - sysUserVo.setPostInfo(sysPost); + //SysPost sysPost = sysPostService.getById(sysUser.getPositionId()); + //sysUserVo.setPostInfo(sysPost); return R.ok(sysUserVo); } diff --git a/src/main/java/com/qs/serve/modules/sys/entity/SysPost.java b/src/main/java/com/qs/serve/modules/sys/entity/SysPost.java index a0a3da60..fffeca90 100644 --- a/src/main/java/com/qs/serve/modules/sys/entity/SysPost.java +++ b/src/main/java/com/qs/serve/modules/sys/entity/SysPost.java @@ -1,20 +1,25 @@ package com.qs.serve.modules.sys.entity; -import java.time.LocalDateTime; +import java.time.LocalDate; import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; +import org.hibernate.validator.constraints.Length; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; /** * 系统职务 实体类 * @author YenHex - * @since 2022-04-01 + * @since 2023-04-27 */ @Data @TableName("sys_post") @@ -23,18 +28,33 @@ public class SysPost implements Serializable { private static final long serialVersionUID = 1L; /** id */ - @TableId(type = IdType.AUTO) - private Long id; + @TableId(type = IdType.ASSIGN_UUID) + private String id; - /** 部门ID */ + /** 名称 */ @NotNull - private String deptId; + @Length(max = 20,message = "名称长度不能超过20字") + @TableField(condition = SqlCondition.LIKE) + private String postName; - /** 名称 */ + /** 编码 */ + @Length(max = 30,message = "编码长度不能超过30字") @TableField(condition = SqlCondition.LIKE) - private String name; + private String postCode; + + private String pid; + + /** id路径 */ + @Length(max = 4255,message = "id路径长度不能超过4255字") + private String pathIds; + + /** 名称路径 */ + @Length(max = 4255,message = "名称路径长度不能超过4255字") + @TableField(condition = SqlCondition.LIKE) + private String pathNames; /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") private String remark; /** 创建时间 */ @@ -58,14 +78,15 @@ public class SysPost implements Serializable { private String updateBy; /** 租户id */ + @JsonIgnore + @JsonProperty private String tenantId; /** 删除标识 */ @JsonIgnore + @JsonProperty private Boolean delFlag; - @TableField(exist = false) - private SysDept sysDept; } diff --git a/src/main/java/com/qs/serve/modules/sys/entity/SysPostUser.java b/src/main/java/com/qs/serve/modules/sys/entity/SysPostUser.java new file mode 100644 index 00000000..96e314a4 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/entity/SysPostUser.java @@ -0,0 +1,132 @@ +package com.qs.serve.modules.sys.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 系统职务 实体类 + * @author YenHex + * @since 2023-04-27 + */ +@Data +@TableName("sys_post_user") +public class SysPostUser implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 用户id */ + @Length(max = 255,message = "用户id长度不能超过255字") + private String userId; + + /** 用户编码 */ + @Length(max = 255,message = "用户编码长度不能超过255字") + @TableField(condition = SqlCondition.LIKE) + private String userCode; + + /** 用户名称 */ + @Length(max = 255,message = "用户名称长度不能超过255字") + @TableField(condition = SqlCondition.LIKE) + private String userName; + + /** 岗位id */ + @Length(max = 64,message = "岗位id长度不能超过64字") + private String postId; + + /** 岗位名称 */ + @Length(max = 20,message = "岗位名称长度不能超过20字") + @TableField(condition = SqlCondition.LIKE) + private String postName; + + /** 岗位编码 */ + @Length(max = 30,message = "岗位编码长度不能超过30字") + @TableField(condition = SqlCondition.LIKE) + private String postCode; + + /** 岗位pid */ + @Length(max = 64,message = "岗位pid长度不能超过64字") + private String pid; + + /** id路径 */ + @Length(max = 4255,message = "id路径长度不能超过4255字") + private String pathIds; + + /** 名称路径 */ + @Length(max = 4255,message = "名称路径长度不能超过4255字") + private String pathNames; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 租户id */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 删除标识 */ + @JsonIgnore + @JsonProperty + private Boolean delFlag; + + + public static SysPostUser toNewObject(SysPostUser source){ + SysPostUser postUser = new SysPostUser(); + postUser.setId(source.getId()); + postUser.setUserId(source.getUserId()); + postUser.setUserCode(source.getUserCode()); + postUser.setUserName(source.getUserName()); + postUser.setPostId(source.getPostId()); + postUser.setPostName(source.getPostName()); + postUser.setPostCode(source.getPostCode()); + postUser.setPid(source.getPid()); + postUser.setPathIds(source.getPathIds()); + postUser.setPathNames(source.getPathNames()); + postUser.setRemark(source.getRemark()); + postUser.setCreateTime(source.getCreateTime()); + postUser.setCreateBy(source.getCreateBy()); + postUser.setUpdateTime(source.getUpdateTime()); + postUser.setUpdateBy(source.getUpdateBy()); + postUser.setTenantId(source.getTenantId()); + postUser.setDelFlag(source.getDelFlag()); + return postUser; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/sys/entity/SysUser.java b/src/main/java/com/qs/serve/modules/sys/entity/SysUser.java index c75675b2..bb0b45d0 100644 --- a/src/main/java/com/qs/serve/modules/sys/entity/SysUser.java +++ b/src/main/java/com/qs/serve/modules/sys/entity/SysUser.java @@ -111,45 +111,6 @@ public class SysUser implements Serializable { /** 致远用户id */ private String syUserId; - /** 一级区域ID */ - @Length(max = 32,message = "一级区域ID长度不能超过32字") - private String regionFirst; - - /** 二级区域ID */ - @Length(max = 32,message = "二级区域ID长度不能超过32字") - private String regionSecond; - - /** 三级区域ID */ - @Length(max = 32,message = "三级区域ID长度不能超过32字") - private String regionThird; - - /** 4级区域ID */ - @Length(max = 32,message = "4级区域ID长度不能超过32字") - private String regionFourthly; - - /** 最子级区域ID */ - @Length(max = 32,message = "最子级区域ID长度不能超过32字") - private String regionLast; - - /** 行政一级区域ID */ - @Length(max = 32,message = "行政一级区域ID长度不能超过32字") - private String region2First; - - /** 行政二级区域ID */ - @Length(max = 32,message = "行政二级区域ID长度不能超过32字") - private String region2Second; - - /** 行政三级区域ID */ - @Length(max = 32,message = "行政三级区域ID长度不能超过32字") - private String region2Third; - - /** 行政最子级区域ID */ - @Length(max = 32,message = "行政最子级区域ID长度不能超过32字") - private String region2Last; - - /** 行政4级区域ID */ - @Length(max = 32,message = "行政4级区域ID长度不能超过32字") - private String region2Fourthly; /** 创建时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/src/main/java/com/qs/serve/modules/sys/entity/bo/SysPostUserBo.java b/src/main/java/com/qs/serve/modules/sys/entity/bo/SysPostUserBo.java new file mode 100644 index 00000000..7cdb9f65 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/entity/bo/SysPostUserBo.java @@ -0,0 +1,43 @@ +package com.qs.serve.modules.sys.entity.bo; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 系统职务 Bo + * @author YenHex + * @since 2023-04-27 + */ +@Data +public class SysPostUserBo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** 用户id */ + private List userIds; + + /** 岗位id */ + private List postIds; + + /** + * 0:添加不进行删除 + * 1:以`用户id`为参照物,删除历史`岗位id`,并重新添加新的`岗位id` + * 2:以`岗位id`为参照物,删除历史`用户id`,并重新添加新的`用户id` + */ + private Integer saveType; + +} + diff --git a/src/main/java/com/qs/serve/modules/sys/entity/so/SysPostUserSo.java b/src/main/java/com/qs/serve/modules/sys/entity/so/SysPostUserSo.java new file mode 100644 index 00000000..9ddac6e5 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/entity/so/SysPostUserSo.java @@ -0,0 +1,86 @@ +package com.qs.serve.modules.sys.entity.so; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 系统职务 查询参数 + * @author YenHex + * @since 2023-04-27 + */ +@Data +public class SysPostUserSo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + private Long id; + + /** 用户id */ + private String userId; + + /** 用户编码 */ + private String userCode; + + /** 用户名称 */ + private String userName; + + /** 岗位id */ + private String postId; + + /** 岗位名称 */ + private String postName; + + /** 岗位编码 */ + private String postCode; + + /** 岗位pid */ + private String pid; + + /** id路径 */ + private String pathIds; + + /** 名称路径 */ + private String pathNames; + + /** 备注 */ + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** 创建人 */ + private String createBy; + + /** 更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + /** 更新人 */ + private String updateBy; + + /** 租户id */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 删除标识 */ + @JsonIgnore + @JsonProperty + private Boolean delFlag; + +} + diff --git a/src/main/java/com/qs/serve/modules/sys/entity/vo/SysPostTreeVo.java b/src/main/java/com/qs/serve/modules/sys/entity/vo/SysPostTreeVo.java new file mode 100644 index 00000000..4aa1764f --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/entity/vo/SysPostTreeVo.java @@ -0,0 +1,47 @@ +package com.qs.serve.modules.sys.entity.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.SqlCondition; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.qs.serve.common.model.dto.TreeNode; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +/** + * @author YenHex + * @since 2023/4/27 + */ +@Data +public class SysPostTreeVo extends TreeNode { + + /** id */ + @TableId(type = IdType.ASSIGN_UUID) + private String id; + + /** 名称 */ + @Length(max = 20,message = "名称长度不能超过20字") + @TableField(condition = SqlCondition.LIKE) + private String postName; + + /** 编码 */ + @Length(max = 30,message = "编码长度不能超过30字") + @TableField(condition = SqlCondition.LIKE) + private String postCode; + + private String pid; + + /** id路径 */ + @Length(max = 4255,message = "id路径长度不能超过4255字") + private String pathIds; + + /** 名称路径 */ + @Length(max = 4255,message = "名称路径长度不能超过4255字") + @TableField(condition = SqlCondition.LIKE) + private String pathNames; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + +} diff --git a/src/main/java/com/qs/serve/modules/sys/mapper/SysPostUserMapper.java b/src/main/java/com/qs/serve/modules/sys/mapper/SysPostUserMapper.java new file mode 100644 index 00000000..6b4536f1 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/mapper/SysPostUserMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.sys.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.sys.entity.SysPostUser; + +/** + * 系统职务 Mapper + * @author YenHex + * @date 2023-04-27 + */ +public interface SysPostUserMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/sys/service/SysPostService.java b/src/main/java/com/qs/serve/modules/sys/service/SysPostService.java index b09e88d7..39c57f5c 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/SysPostService.java +++ b/src/main/java/com/qs/serve/modules/sys/service/SysPostService.java @@ -10,5 +10,7 @@ import com.qs.serve.modules.sys.entity.SysPost; */ public interface SysPostService extends IService { + void modify(SysPost param); + } diff --git a/src/main/java/com/qs/serve/modules/sys/service/SysPostUserService.java b/src/main/java/com/qs/serve/modules/sys/service/SysPostUserService.java new file mode 100644 index 00000000..a384ba41 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/service/SysPostUserService.java @@ -0,0 +1,21 @@ +package com.qs.serve.modules.sys.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.sys.entity.SysPostUser; +import com.qs.serve.modules.sys.entity.bo.SysPostUserBo; +import java.util.List; +/** + * 系统职务 服务接口 + * @author YenHex + * @date 2023-04-27 + */ +public interface SysPostUserService extends IService { + + List listByUserId(String userId); + + void updatePathIds(String orgPathIds,String newPathIds,String orgPathNames,String newPathNames); + + void bind(SysPostUserBo param); + +} + diff --git a/src/main/java/com/qs/serve/modules/sys/service/SysUserService.java b/src/main/java/com/qs/serve/modules/sys/service/SysUserService.java index ff41438d..b6abbe83 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/SysUserService.java +++ b/src/main/java/com/qs/serve/modules/sys/service/SysUserService.java @@ -2,6 +2,7 @@ package com.qs.serve.modules.sys.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.common.framework.security.model.LoginUser; +import com.qs.serve.modules.sys.entity.SysPostUser; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.bo.SysUserLeaveBo; @@ -68,8 +69,12 @@ public interface SysUserService extends IService { */ void reEntry(String userId); - - List listByChildIds(String userId); + /** + * 通过岗位上下级加载下级用户 + * @param userId + * @return + */ + List listByChildIds(String userId); } diff --git a/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostServiceImpl.java b/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostServiceImpl.java index c4e31ab9..cbf1437b 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostServiceImpl.java @@ -1,12 +1,21 @@ package com.qs.serve.modules.sys.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.util.Assert; +import com.qs.serve.common.util.IdUtil; +import com.qs.serve.common.util.StringUtils; import com.qs.serve.modules.sys.entity.SysPost; import com.qs.serve.modules.sys.mapper.SysPostMapper; import com.qs.serve.modules.sys.service.SysPostService; +import com.qs.serve.modules.sys.service.SysPostUserService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; /** * 系统职务 服务实现类 @@ -18,5 +27,62 @@ import org.springframework.stereotype.Service; @AllArgsConstructor public class SysPostServiceImpl extends ServiceImpl implements SysPostService { + SysPostUserService postUserService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void modify(SysPost param) { + SysPost dbData = this.getById(param.getId()); + SysPost parent = null; + if(param.getPid()!=null&&!param.getPid().equals("0")){ + parent = this.getById(param.getPid()); + if(parent==null){ + Assert.throwEx("父级标签不存在"); + } + } + if(param.getId()==null){ + this.save(param); + } + if(parent==null){ + param.setPid("0"); + param.setPostCode(StringUtils.genShortId()+IdUtil.genCode(4)); + param.setPathIds(param.getId()); + }else { + param.setPathIds(parent.getPathIds()+"_"+param.getId()); + } + if(dbData==null){ + this.saveOrUpdate(param); + }else { + param.setPostCode(null); + this.updateById(param); + boolean changePid = !dbData.getPid().equals(param.getPid()); + if(changePid){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.and(v1->{ + v1.eq(SysPost::getPathIds,dbData.getPathIds()) + .or().likeRight(SysPost::getPathIds,dbData.getPathIds()+"_"); + }); + List childList = this.list(lqw); + List childList4Upd = childList.stream().map(obj->{ + SysPost par = new SysPost(); + par.setId(obj.getId()); + par.setPathIds(obj.getPathIds().replace(dbData.getPathIds(),param.getPathIds())); + return par; + }).collect(Collectors.toList()); + this.updateBatchById(childList4Upd); + //更新关联表 + postUserService.updatePathIds(dbData.getPathIds(),param.getPathIds(), + dbData.getPathNames(), param.getPathNames()); + + }else { + //不进行更新 + param.setPathIds(null); + param.setPid(null); + } + this.updateById(param); + } + + } + } diff --git a/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostUserServiceImpl.java b/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostUserServiceImpl.java new file mode 100644 index 00000000..caee2045 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostUserServiceImpl.java @@ -0,0 +1,112 @@ +package com.qs.serve.modules.sys.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.modules.sys.entity.SysPost; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.entity.bo.SysPostUserBo; +import com.qs.serve.modules.sys.mapper.SysPostMapper; +import com.qs.serve.modules.sys.mapper.SysUserMapper; +import com.qs.serve.modules.sys.service.SysPostService; +import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.tag.entity.TagData; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.sys.entity.SysPostUser; +import com.qs.serve.modules.sys.service.SysPostUserService; +import com.qs.serve.modules.sys.mapper.SysPostUserMapper; + +import java.util.ArrayList; +import java.util.List; + +/** + * 系统职务 服务实现类 + * @author YenHex + * @since 2023-04-27 + */ +@Slf4j +@Service +@AllArgsConstructor +public class SysPostUserServiceImpl extends ServiceImpl implements SysPostUserService { + + SysPostMapper postMapper; + SysUserMapper userMapper; + + @Override + public List listByUserId(String userId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SysPostUser::getUserId,userId); + return this.list(lqw); + } + + @Override + public void updatePathIds(String orgPathIds,String newPathIds,String orgPathNames,String newPathNames){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.likeRight(SysPostUser::getPathIds,orgPathIds+"_"); + lqw.select(SysPostUser::getId,SysPostUser::getPathIds,SysPostUser::getPathNames); + List postUserList = this.list(lqw); + if(CollectionUtil.isNotEmpty(postUserList)){ + for (SysPostUser postUser : postUserList) { + postUser.setPathIds(postUser.getPathIds().replace(orgPathIds,newPathIds)); + postUser.setPostName(postUser.getPathNames().replace(orgPathNames,newPathNames)); + } + this.updateBatchById(postUserList); + } + } + + @Override + public void bind(SysPostUserBo param) { + Integer saveType = param.getSaveType()==null?0: param.getSaveType(); + LambdaQueryWrapper postLqw = new LambdaQueryWrapper<>(); + postLqw.in(SysPost::getId,param.getUserIds()); + List postList = postMapper.selectList(postLqw); + LambdaQueryWrapper userLqw = new LambdaQueryWrapper<>(); + userLqw.in(SysUser::getId,param.getUserIds()); + List userList = userMapper.selectList(userLqw); + if(CollectionUtil.isNotEmpty(postList)&&CollectionUtil.isNotEmpty(userList)){ + //移除历史数据 + if (saveType.equals(1)){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(SysPostUser::getUserId,param.getUserIds()); + this.remove(lqw); + }else if (saveType.equals(2)){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(SysPostUser::getPostId,param.getPostIds()); + this.remove(lqw); + } + List resultList = new ArrayList<>(); + for (SysUser sysUser : userList) { + for (SysPost sysPost : postList) { + //避免重复 + if(saveType.equals(0)){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SysPostUser::getPostId,sysPost.getId()); + lqw.eq(SysPostUser::getUserId,sysUser.getId()); + if(this.count(lqw)>0){ + continue; + } + } + SysPostUser postUser = new SysPostUser(); + postUser.setUserId(sysUser.getId()); + postUser.setUserCode(sysUser.getCode()); + postUser.setUserName(sysUser.getName()); + postUser.setPostId(sysPost.getId()); + postUser.setPostName(sysPost.getPostName()); + postUser.setPostCode(sysPost.getPostCode()); + postUser.setPid(sysPost.getPid()); + postUser.setPathIds(sysPost.getPathIds()); + postUser.setPathNames(sysPost.getPathNames()); + resultList.add(postUser); + } + } + if(CollectionUtil.isNotEmpty(resultList)){ + this.saveBatch(resultList); + } + } + + } + +} + diff --git a/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserServiceImpl.java b/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserServiceImpl.java index c411dc8b..59b11fee 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserServiceImpl.java @@ -8,6 +8,7 @@ import com.qs.serve.common.framework.security.model.LoginUser; import com.qs.serve.common.framework.security.model.LoginUserType; import com.qs.serve.common.model.enums.HttpCode; import com.qs.serve.common.util.*; +import com.qs.serve.modules.bms.entity.BmsRegionUser; import com.qs.serve.modules.sys.entity.*; import com.qs.serve.modules.sys.entity.bo.SysUserLeaveBo; import com.qs.serve.modules.sys.mapper.*; @@ -33,6 +34,7 @@ import java.util.stream.Collectors; @AllArgsConstructor public class SysUserServiceImpl extends ServiceImpl implements SysUserService { + private final SysPostUserService sysPostUserService; private final SysUserRoleService sysUserRoleService; private final SysUserLeaveService sysUserLeaveService; private final SysRoleMenuMapper sysRoleMenuMapper; @@ -248,9 +250,20 @@ public class SysUserServiceImpl extends ServiceImpl impl } @Override - public List listByChildIds(String userId) { - - return null; + public List listByChildIds(String userId) { + List postUsers = sysPostUserService.listByUserId(userId); + if(CollectionUtil.isEmpty(postUsers)){ + return new ArrayList<>(); + } + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.ne(SysPostUser::getUserId,userId); + lqw.and(aa->{ + for (SysPostUser postUser : postUsers) { + aa.or().likeRight(SysPostUser::getPathIds,postUser.getPathIds()+"_"); + } + }); + List childPostUsers = sysPostUserService.list(lqw); + return childPostUsers; } }