Browse Source

xiexiang 12/16

xiexiang 9 tháng trước cách đây
mục cha
commit
ecdf02592e

+ 7 - 0
PCS/src/main/java/cn/cslg/permission/common/model/vo/PersonnelVO.java

@@ -6,6 +6,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -225,4 +226,10 @@ public class PersonnelVO extends BaseVO {
      */
     private List<Integer> positionIds;
 
+    private Integer vipTypeId;
+
+    private Date expitrTime;
+
+    private String vipTypeName;
+
 }

+ 18 - 0
PCS/src/main/java/cn/cslg/permission/controller/PersonnelController.java

@@ -76,6 +76,13 @@ public class PersonnelController {
 
     }
 
+    @checkAuth(FunId = "/admin/user/check")
+    @PostMapping("/queryPageList2")
+    @Operation(summary = "分页查询人员")
+    public String queryPageList2(@RequestBody PersonnelVO personnelVO) {
+        return personnelService.queryPageList2(personnelVO);
+    }
+
 
     @PostMapping("/queryPageListNoAdmin")
     @Operation(summary = "分页查询人员")
@@ -137,5 +144,16 @@ public class PersonnelController {
         return Response.success();
     }
 
+    @GetMapping("/updateState")
+    @Operation(summary = "启用、禁用人员")
+    public String updateState(Integer id, Integer state) {
+        Boolean isSuccess = personnelService.updateState(id, state);
+        if (isSuccess) {
+            return Response.success();
+        } else {
+            return Response.error();
+        }
+    }
+
 
 }

+ 146 - 4
PCS/src/main/java/cn/cslg/permission/service/PersonnelService.java

@@ -5,18 +5,17 @@ import cn.cslg.permission.common.core.business.LoginCacheKeyUtil;
 import cn.cslg.permission.common.model.dto.PhoneLoginDTO;
 import cn.cslg.permission.common.model.personnel.UploadPersonnelConfigDTO;
 import cn.cslg.permission.common.model.qiaobi.QiaoBiPersonSignUpDTO;
-import cn.cslg.permission.common.model.vo.LoginRecordVO;
-import cn.cslg.permission.common.model.vo.LoginVO;
-import cn.cslg.permission.common.model.vo.PersonnelVO;
-import cn.cslg.permission.common.model.vo.RoleVO;
+import cn.cslg.permission.common.model.vo.*;
 import cn.cslg.permission.common.utils.*;
 import cn.cslg.permission.common.utils.SecurityUtils.SecurityUtils;
 import cn.cslg.permission.common.utils.message.MessageUtils;
 import cn.cslg.permission.domain.Personnel;
 import cn.cslg.permission.domain.Tenant;
+import cn.cslg.permission.domain.TenantVipType;
 import cn.cslg.permission.domain.associate.AssoDepartPos;
 import cn.cslg.permission.domain.associate.AssoPerDp;
 import cn.cslg.permission.domain.associate.AssoPersonRole;
+import cn.cslg.permission.domain.qiaobi.AssoPersonVipType;
 import cn.cslg.permission.domain.sys.SysDictItem;
 import cn.cslg.permission.exception.ExceptionEnum;
 import cn.cslg.permission.exception.XiaoShiException;
@@ -26,6 +25,8 @@ import cn.cslg.permission.service.associate.DepartPosiService;
 import cn.cslg.permission.service.associate.PerDpService;
 import cn.cslg.permission.service.associate.PersonGroupService;
 import cn.cslg.permission.service.associate.PersonRoleService;
+import cn.cslg.permission.service.impl.TenantVipTypeService;
+import cn.cslg.permission.service.qiaobi.AssoPersonVipTypeService;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.crypto.SecureUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -65,6 +66,8 @@ public class PersonnelService extends ServiceImpl<PersonnelMapper, Personnel> {
     private final LoginRecordService loginRecordService;
     private final LoginService loginService;
     private final SystemService systemService;
+    private final AssoPersonVipTypeService assoPersonVipTypeService;
+    private final TenantVipTypeService tenantVipTypeService;
 
     @Transactional(rollbackFor = Exception.class)
     public Personnel addPersonnel(PersonnelVO personnelVO) {
@@ -822,4 +825,143 @@ public class PersonnelService extends ServiceImpl<PersonnelMapper, Personnel> {
             throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR,"该手机号已被使用");
         }
     }
+
+
+    public String queryPageList2(PersonnelVO personnelVO) {
+        //获取登陆人信息
+        PersonnelVO personnelVO1 = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
+        LambdaQueryWrapper<Personnel> queryWrapper = new LambdaQueryWrapper<>();
+        //TODO 代码控制若不是超级管理员则只能查看本租户的人员列表
+        if (personnelVO1.getRoleType() == null || personnelVO1.getRoleType() != 1) {
+            queryWrapper.eq(Personnel::getTenantId, personnelVO1.getTenantId());
+        }
+        //根据人员名称或是人员描述模糊查询人员列表
+        if (personnelVO.getName() == null) {
+            personnelVO.setName("");
+        }
+        queryWrapper.and((wrapper) -> wrapper.like(Personnel::getPersonnelName, personnelVO.getName())
+                        .or()
+                        .like(Personnel::getPersonnelDescription, personnelVO.getName())
+                );
+        //根据人员id查询
+        if (personnelVO.getId() != null) {
+            queryWrapper.in(Personnel::getId, Integer.parseInt(personnelVO.getId()));
+        }
+        //若前台有传部门ids,则根据部门ids查询人员列表
+        if (personnelVO.getDepartmentIds() != null && personnelVO.getDepartmentIds().size() != 0) {
+            LambdaQueryWrapper<AssoDepartPos> qw = new LambdaQueryWrapper<>();
+            qw.in(AssoDepartPos::getDepartmentId, personnelVO.getDepartmentIds());
+            List<Integer> dpIds = departPosiService.list(qw).stream().map(AssoDepartPos::getId).collect(Collectors.toList());
+            LambdaQueryWrapper<AssoPerDp> qw2 = new LambdaQueryWrapper<>();
+            qw2.in(AssoPerDp::getDepartPosiId, dpIds);
+            List<Integer> perIds = perDpService.list(qw2).stream().map(AssoPerDp::getPersonnelId).collect(Collectors.toList());
+            queryWrapper.in(Personnel::getId, perIds);
+        }
+        if (personnelVO.getTenant() != null) {
+            queryWrapper.eq(Personnel::getTenantId, personnelVO.getTenant());
+        }
+        //若前台有传职位ids,则根据职位ids查询人员列表
+        if (personnelVO.getPositionIds() != null && personnelVO.getPositionIds().size() != 0) {
+            LambdaQueryWrapper<AssoDepartPos> qw = new LambdaQueryWrapper<>();
+            qw.in(AssoDepartPos::getPositionId, personnelVO.getPositionIds());
+            List<Integer> dpIds = departPosiService.list(qw).stream().map(AssoDepartPos::getId).collect(Collectors.toList());
+            LambdaQueryWrapper<AssoPerDp> qw2 = new LambdaQueryWrapper<>();
+            qw2.in(AssoPerDp::getDepartPosiId, dpIds);
+            List<Integer> perIds = perDpService.list(qw2).stream().map(AssoPerDp::getPersonnelId).collect(Collectors.toList());
+            queryWrapper.in(Personnel::getId, perIds);
+        }
+        SecurityUtils.startDataScope("/admin/user/check");
+        List<Personnel> personnelList = this.page(new Page<>(personnelVO.getCurrent(), personnelVO.getSize()), queryWrapper).getRecords();
+        SecurityUtils.startDataScope("/admin/user/check");
+        long count = this.count(queryWrapper);
+        return Response.success(setPersonnelToVO2(personnelList), DataUtils.setPageColumn(personnelVO.getSize(), personnelVO.getCurrent(), Math.toIntExact(count)));
+    }
+
+    public Object setPersonnelToVO2(List<Personnel> personnelList) {
+        List<PersonnelVO> personnelVOS = new ArrayList<>();
+        for (Personnel personnel : personnelList) {
+            PersonnelVO personnelVO1 = new PersonnelVO();
+            personnelVO1
+                    .setUsername(personnel.getPersonnelUserName())
+                    .setId(personnel.getId().toString())
+                    .setGender(personnel.getPersonnelUserSex())
+                    .setName(personnel.getPersonnelName())
+                    .setEmail(personnel.getPersonnelEmail())
+                    .setMobile(personnel.getPersonnelPhone())
+                    .setState(personnel.getPersonnelStatus())
+                    .setRemark(personnel.getPersonnelDescription())
+                    .setPassword(personnel.getPersonnelPassword())
+                    .setQqNumber(personnel.getPersonnelQQ())
+                    .setPositions(departPosiService.queryAssociate(personnel.getId()))
+                    .setGroup(personGroupService.queryAssociatePerGroup(personnel.getId()))
+                    .setRole(personRoleService.queryAssociatePerRole(personnel.getId()))
+                    .setRoleList(personRoleService.getRoleListByPersonnelId(personnel.getId()))
+                    .setGroupList(personGroupService.getUserGroupListByPersonnelId(personnel.getId()))
+                    .setNail(personnel.getPersonnelDing())
+                    .setTenant(personnel.getTenantId())
+                    .setTenantName(tenantService.getById(personnel.getTenantId()).getTenantName());
+            personnelVOS.add(personnelVO1);
+        }
+        if (personnelVOS != null && !personnelVOS.isEmpty()) {
+            this.loadPersonnelVOS(personnelVOS);
+        }
+        return personnelVOS;
+    }
+
+    public void loadPersonnelVOS(List<PersonnelVO> personnelVOS) {
+        //过滤出所有的人员ids
+        List<Integer> personnelIds = personnelVOS.stream()
+                .map(PersonnelVO::getId)
+                .map(Integer::valueOf)
+                .collect(Collectors.toList());
+        if (personnelIds != null && !personnelIds.isEmpty()) {
+            LambdaQueryWrapper<AssoPersonVipType> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoPersonVipType::getPersonId, personnelIds);
+            List<AssoPersonVipType> assoPersonVipTypes = assoPersonVipTypeService.list(queryWrapper);
+            if (assoPersonVipTypes != null && !assoPersonVipTypes.isEmpty()) {
+                // 过滤出vipTypeIds
+                List<Integer> vipTypeIds = assoPersonVipTypes.stream()
+                        .map(AssoPersonVipType::getVipTypeId)
+                        .collect(Collectors.toList());
+                if (vipTypeIds != null && !vipTypeIds.isEmpty()) {
+                    LambdaQueryWrapper<TenantVipType> queryWrapper1 = new LambdaQueryWrapper<>();
+                    queryWrapper1.in(TenantVipType::getId, vipTypeIds);
+                    List<TenantVipType> tenantVipTypes = tenantVipTypeService.list(queryWrapper1);
+                    if (tenantVipTypes != null && !tenantVipTypes.isEmpty()) {
+                        for (PersonnelVO personnelVO : personnelVOS) {
+                            AssoPersonVipType assoPersonVipType = assoPersonVipTypes
+                                    .stream()
+                                    .filter(item -> item.getPersonId().equals(Integer.valueOf(personnelVO.getId())))
+                                    .findFirst()
+                                    .orElse(null);
+                            if (assoPersonVipType != null) {
+                                personnelVO.setVipTypeId(assoPersonVipType.getVipTypeId());
+                                personnelVO.setExpitrTime(assoPersonVipType.getExpitrTime());
+                                if (assoPersonVipType.getVipTypeId() != null) {
+                                    TenantVipType tenantVipType = tenantVipTypes
+                                            .stream()
+                                            .filter(item -> item.getId().equals(personnelVO.getVipTypeId()))
+                                            .findFirst()
+                                            .orElse(null);
+                                    personnelVO.setVipTypeName(tenantVipType.getTenantVipName());
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+
+    public Boolean updateState(Integer id, Integer state) {
+        Personnel personnel = this.getById(id);
+        if (personnel != null) {
+            personnel.setPersonnelStatus(state);
+            boolean updated = this.updateById(personnel);
+            return updated;
+        } else {
+            return false;
+        }
+    }
 }