|
@@ -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.dto.PhoneLoginDTO;
|
|
import cn.cslg.permission.common.model.personnel.UploadPersonnelConfigDTO;
|
|
import cn.cslg.permission.common.model.personnel.UploadPersonnelConfigDTO;
|
|
import cn.cslg.permission.common.model.qiaobi.QiaoBiPersonSignUpDTO;
|
|
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.*;
|
|
import cn.cslg.permission.common.utils.SecurityUtils.SecurityUtils;
|
|
import cn.cslg.permission.common.utils.SecurityUtils.SecurityUtils;
|
|
import cn.cslg.permission.common.utils.message.MessageUtils;
|
|
import cn.cslg.permission.common.utils.message.MessageUtils;
|
|
import cn.cslg.permission.domain.Personnel;
|
|
import cn.cslg.permission.domain.Personnel;
|
|
import cn.cslg.permission.domain.Tenant;
|
|
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.AssoDepartPos;
|
|
import cn.cslg.permission.domain.associate.AssoPerDp;
|
|
import cn.cslg.permission.domain.associate.AssoPerDp;
|
|
import cn.cslg.permission.domain.associate.AssoPersonRole;
|
|
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.domain.sys.SysDictItem;
|
|
import cn.cslg.permission.exception.ExceptionEnum;
|
|
import cn.cslg.permission.exception.ExceptionEnum;
|
|
import cn.cslg.permission.exception.XiaoShiException;
|
|
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.PerDpService;
|
|
import cn.cslg.permission.service.associate.PersonGroupService;
|
|
import cn.cslg.permission.service.associate.PersonGroupService;
|
|
import cn.cslg.permission.service.associate.PersonRoleService;
|
|
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.dev33.satoken.stp.StpUtil;
|
|
import cn.hutool.crypto.SecureUtil;
|
|
import cn.hutool.crypto.SecureUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
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 LoginRecordService loginRecordService;
|
|
private final LoginService loginService;
|
|
private final LoginService loginService;
|
|
private final SystemService systemService;
|
|
private final SystemService systemService;
|
|
|
|
+ private final AssoPersonVipTypeService assoPersonVipTypeService;
|
|
|
|
+ private final TenantVipTypeService tenantVipTypeService;
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public Personnel addPersonnel(PersonnelVO personnelVO) {
|
|
public Personnel addPersonnel(PersonnelVO personnelVO) {
|
|
@@ -822,4 +825,143 @@ public class PersonnelService extends ServiceImpl<PersonnelMapper, Personnel> {
|
|
throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR,"该手机号已被使用");
|
|
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;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|