|
|
@@ -1,4 +1,5 @@
|
|
|
package com.ydtech.modules.admin.service.impl;
|
|
|
+import java.util.Date;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
@@ -46,12 +47,19 @@ import com.ydtech.modules.message.constants.MessageTypeConstants;
|
|
|
import com.ydtech.modules.message.entity.SystemMessage;
|
|
|
import com.ydtech.modules.message.service.MessageSecretaryService;
|
|
|
import com.ydtech.modules.message.service.SystemMessageService;
|
|
|
+import com.ydtech.modules.partner.utils.ListComparator;
|
|
|
+import com.ydtech.modules.partner.utils.UpdateRatioUtils;
|
|
|
+import com.ydtech.modules.partner.dao.PartnerUserMapper;
|
|
|
+import com.ydtech.modules.partner.model.PartnerUser;
|
|
|
+import com.ydtech.modules.partner.service.PartnerCommissionService;
|
|
|
+import com.ydtech.modules.partner.service.PartnerUserService;
|
|
|
import com.ydtech.modules.protocol.utils.AssertionUtils;
|
|
|
import com.ydtech.security.utils.PasswordUtils;
|
|
|
import com.ydtech.utils.IDCardUtils;
|
|
|
import com.ydtech.utils.StringUtils;
|
|
|
import com.ydtech.utils.idgen.IdGenerate;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
@@ -151,6 +159,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
@Autowired
|
|
|
private SysUserAccountMapper sysUserAccountMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private PartnerUserService partnerUserService;
|
|
|
+
|
|
|
@Value("${httpUrl}")
|
|
|
private String httpUrl;
|
|
|
//晋掌柜APP: 未注册的手机号登录时创建新账户使用 -deptId -referrerId
|
|
|
@@ -159,6 +170,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
|
|
|
@Value("${jzg.referrerId}")
|
|
|
private String referrerId;
|
|
|
+ @Autowired
|
|
|
+ private PartnerUserMapper partnerUserMapper;
|
|
|
|
|
|
|
|
|
@Override
|
|
|
@@ -1204,6 +1217,424 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
return HttpResult.ok("新增成功", sysUserMapper.selectById(userId));
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public HttpResult newSaveUserInfoByPartner(SysUser2Vo sysUserVo) {
|
|
|
+ // 添加团队长
|
|
|
+ int tdz = sysUserMapper.countTeamLeader(sysUserVo.getSysUser().getMobile(),RoleConstants.R21.getCode());
|
|
|
+ if (tdz > 0){
|
|
|
+ return HttpResult.error("已存在团队长,不允许再添加!!");
|
|
|
+ }
|
|
|
+ int cd = sysUserMapper.countTeamLeader(sysUserVo.getSysUser().getMobile(),RoleConstants.R19.getCode());
|
|
|
+ if (cd > 0){
|
|
|
+ return HttpResult.error("已存在出单员,不允许再添加!!");
|
|
|
+ }
|
|
|
+ int gd = sysUserMapper.countTeamLeader(sysUserVo.getSysUser().getMobile(),RoleConstants.R20.getCode());
|
|
|
+ if (gd > 0){
|
|
|
+ return HttpResult.error("已存在代理人,不允许再添加!!");
|
|
|
+ }
|
|
|
+ SysUser sysUser = sysUserVo.getSysUser();
|
|
|
+ String grade = String.valueOf(sysUser.getGrade() + 1);
|
|
|
+ String deptId = sysUser.getDeptId();
|
|
|
+ if (StringUtils.equals("4",grade) || StringUtils.equals("5",grade)){
|
|
|
+ deptId = addDeptUser(sysUser,grade);
|
|
|
+ }
|
|
|
+ sysUser.setDeptId(deptId);
|
|
|
+
|
|
|
+ //处理密码
|
|
|
+ if (StringUtils.isNotEmpty(sysUser.getPassword())) {
|
|
|
+ String salt = PasswordUtils.getSalt();
|
|
|
+ String pwd = PasswordUtils.encode(sysUser.getPassword(), salt);
|
|
|
+ sysUser.setPassword(pwd);
|
|
|
+ sysUser.setSalt(salt);
|
|
|
+ } else {
|
|
|
+ return HttpResult.error("密码不能为空");
|
|
|
+ }
|
|
|
+ String userId = gainNextUserId(deptId);
|
|
|
+
|
|
|
+ sysUser.setId(userId);
|
|
|
+ save(sysUser);
|
|
|
+
|
|
|
+ //角色配置
|
|
|
+ SysUserRole userRole = new SysUserRole();
|
|
|
+ userRole.setUserId(sysUser.getId());
|
|
|
+ userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
|
|
|
+ sysUserRoleService.save(userRole);
|
|
|
+ if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
|
|
|
+ //推荐人
|
|
|
+ esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
|
|
|
+ } else if ("20".equals(sysUser.getRoleId()) || "21".equals(sysUser.getRoleId())) {
|
|
|
+ //如果是 团队长或代码人 并且没有推荐人 则默认推荐人为自己
|
|
|
+ esmUserReferrerService.addReferrer(sysUser.getId(), userId);
|
|
|
+ }
|
|
|
+ SysUserInfo userInfo = sysUserVo.getSysUserInfo();
|
|
|
+ if (userInfo != null) {
|
|
|
+ if (null != userInfo.getLiveAddressString() && userInfo.getLiveAddressString().length > 0) {
|
|
|
+ sysUserVo.getSysUserInfo()
|
|
|
+ .setLiveAddress(Arrays.stream(userInfo.getLiveAddressString())
|
|
|
+ .map(item -> item.toString())
|
|
|
+ .collect(Collectors.joining(",")));
|
|
|
+ }
|
|
|
+ userInfo.setId(sysUser.getId());
|
|
|
+ } else {
|
|
|
+ userInfo = new SysUserInfo();
|
|
|
+ userInfo.setId(sysUser.getId());
|
|
|
+ }
|
|
|
+ sysUserInfoService.save(userInfo);
|
|
|
+
|
|
|
+
|
|
|
+ List<EsmUserImageVo> esmUserImageVo = sysUserVo.getEsmUserImageVo();
|
|
|
+ String finalUserId = userId;
|
|
|
+ if (!CollectionUtils.isEmpty(esmUserImageVo)) {
|
|
|
+ List<EsmUserImage> esmUserImages = esmUserImageVo.stream()
|
|
|
+ .map(x -> new EsmUserImage(x, finalUserId))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ esmUserImageService.saveBatch(esmUserImages);
|
|
|
+ }
|
|
|
+ String referrerId = sysUserVo.getSysUser().getReferrerId();
|
|
|
+ if (referrerId == null) {
|
|
|
+ SpringUtil.getBean(RecordUserUtils.class).addRecord(userId, "admin");
|
|
|
+ } else {
|
|
|
+ SysUser sysUser1 = sysUserMapper.selectById(sysUserVo.getSysUser().getReferrerId());
|
|
|
+ SpringUtil.getBean(RecordUserUtils.class)
|
|
|
+ .addRecord(userId, Optional.ofNullable(sysUser1.getName()).orElse("admin"));
|
|
|
+ }
|
|
|
+ // 保存新的合伙人数据
|
|
|
+ PartnerUser partnerUser = addNewPartnerRule(sysUser);
|
|
|
+ partnerUserService.save(partnerUser);
|
|
|
+ SpringUtil.getBean(UpdateRatioUtils.class).before(partnerUser.getUserId(),partnerUser.getGrade());
|
|
|
+ return HttpResult.ok("新增成功", sysUserMapper.selectById(userId));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<String> queryInternalNumber() {
|
|
|
+ return baseMapper.queryInternalNumber();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 邀请的是团队长 去创建团队长部门
|
|
|
+ public String addNewTeam(SysUser sysUser) {
|
|
|
+
|
|
|
+ if (4 == sysUser.getGrade()){
|
|
|
+ String maxDeptId = sysDeptService.findMaxDeptId(sysUser.getDeptId());
|
|
|
+ String deptId = addOneWithLeadingZeros(maxDeptId);
|
|
|
+ SysDeptVo dept = new SysDeptVo();
|
|
|
+ dept.setId(sysUser.getDeptId() + "D" + deptId);
|
|
|
+ dept.setName(sysUser.getName() + "团队长");
|
|
|
+ dept.setManagementSource(sysUser.getDeptSource());
|
|
|
+ dept.setDeptType("D");
|
|
|
+ dept.setParentId(sysUser.getDeptId());
|
|
|
+ sysDeptService.addDept(dept);
|
|
|
+ return dept.getId();
|
|
|
+ }
|
|
|
+ return sysUser.getDeptId();
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String addOneWithLeadingZeros(String str) {
|
|
|
+ int num = Integer.parseInt(str);
|
|
|
+ num += 1;
|
|
|
+ return String.format("%0" + str.length() + "d", num);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public PartnerUser addNewPartnerRule(SysUser sysUser) {
|
|
|
+ return getPartnerUser(sysUser,String.valueOf(sysUser.getGrade() + 1) );
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public HttpResult saveByPartner(SysUser2Vo sysUser2Vo) {
|
|
|
+ SysUser sysUser = sysUser2Vo.getSysUser();
|
|
|
+ //1:合伙人 2:工作室管理员
|
|
|
+ Integer type = sysUser.getType();
|
|
|
+ // 手机号
|
|
|
+ List<SysUser> mobileList = lambdaQuery().eq(SysUser::getMobile, sysUser.getMobile())
|
|
|
+ .eq(SysUser::getType, type)
|
|
|
+ .list();
|
|
|
+ if (!mobileList.isEmpty()) {
|
|
|
+ throw new SystemException("手机号已经注册请更换手机号。");
|
|
|
+ }
|
|
|
+ // 身份证号
|
|
|
+ List<SysUser> identityList = lambdaQuery().eq(SysUser::getIdentity, sysUser.getIdentity())
|
|
|
+ .eq(SysUser::getType, type)
|
|
|
+ .list();
|
|
|
+ if (!identityList.isEmpty()) {
|
|
|
+ throw new SystemException("身份证号已经注册请更换身份证号。");
|
|
|
+ }
|
|
|
+
|
|
|
+ //处理密码
|
|
|
+ if (StringUtils.isNotEmpty(sysUser.getPassword())) {
|
|
|
+ String salt = PasswordUtils.getSalt();
|
|
|
+ String pwd = PasswordUtils.encode(sysUser.getPassword(), salt);
|
|
|
+ sysUser.setPassword(pwd);
|
|
|
+ sysUser.setSalt(salt);
|
|
|
+ } else {
|
|
|
+ return HttpResult.error("密码不能为空");
|
|
|
+ }
|
|
|
+ if (sysUser2Vo.getSysUser().getGradeList().size() == 1 && StringUtils.equals(sysUser2Vo.getSysUser().getGradeList().get(0),"4")){
|
|
|
+ String deptId = addDeptUser(sysUser,"4");
|
|
|
+ sysUser.setDeptId(deptId);
|
|
|
+ }
|
|
|
+ String userId = "";
|
|
|
+ //19 出单员 校验机构和业务员机构是否一致
|
|
|
+ if ("19".equals(sysUser.getRoleId())) {
|
|
|
+ // add by hxl 2024-08-20
|
|
|
+ // return checkChuDanUser(sysUser);
|
|
|
+ if (StringUtils.isEmpty(sysUser.getReferrerId())) {
|
|
|
+ return HttpResult.error("业务员工号不能为空");
|
|
|
+ }
|
|
|
+ //归属业务员和出单员部门必须一致
|
|
|
+ SysUser user = getById(sysUser.getReferrerId());
|
|
|
+ if (user == null || !user.getDeptId().equals(sysUser.getDeptId())) {
|
|
|
+ return HttpResult.error("出单员机构必须和归属业务员机构一致");
|
|
|
+ }
|
|
|
+ sysUser.setOperatorCode(sysUser.getReferrerId());
|
|
|
+ if (StringUtils.isEmpty(sysUser.getId())) {
|
|
|
+ userId = gainNextUserId(sysUser.getDeptId());
|
|
|
+ sysUser.setId(userId);
|
|
|
+ save(sysUser);
|
|
|
+ //角色配置
|
|
|
+ SysUserRole userRole = new SysUserRole();
|
|
|
+ userRole.setUserId(sysUser.getId());
|
|
|
+ userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
|
|
|
+ sysUserRoleService.save(userRole);
|
|
|
+ } else {
|
|
|
+ userId = sysUser.getId();
|
|
|
+ updateById(sysUser);
|
|
|
+ }
|
|
|
+ SysUserInfo userInfo = sysUser2Vo.getSysUserInfo();
|
|
|
+ userInfo.setId(sysUser.getId());
|
|
|
+ sysUserInfoService.save(userInfo);
|
|
|
+ } else {
|
|
|
+ userId = gainNextUserId(sysUser.getDeptId());
|
|
|
+
|
|
|
+ if (RoleConstants.R22.getCode().equals(sysUser.getRoleId())) {//22 后线人员
|
|
|
+ if (!SysConstants.isAdministration(userId)) {
|
|
|
+ throw new SystemException("后线人员只能公司部门中");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ sysUser.setId(userId);
|
|
|
+ save(sysUser);
|
|
|
+
|
|
|
+ //角色配置
|
|
|
+ SysUserRole userRole = new SysUserRole();
|
|
|
+ userRole.setUserId(sysUser.getId());
|
|
|
+ userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
|
|
|
+ sysUserRoleService.save(userRole);
|
|
|
+ if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
|
|
|
+ //推荐人
|
|
|
+ esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
|
|
|
+ } else if ("20".equals(sysUser.getRoleId()) || "21".equals(sysUser.getRoleId())) {
|
|
|
+ //如果是 团队长或代码人 并且没有推荐人 则默认推荐人为自己
|
|
|
+ esmUserReferrerService.addReferrer(sysUser.getId(), userId);
|
|
|
+ }
|
|
|
+ SysUserInfo userInfo = sysUser2Vo.getSysUserInfo();
|
|
|
+ if (userInfo != null) {
|
|
|
+ if (null != userInfo.getLiveAddressString() && userInfo.getLiveAddressString().length > 0) {
|
|
|
+ sysUser2Vo.getSysUserInfo()
|
|
|
+ .setLiveAddress(Arrays.stream(userInfo.getLiveAddressString())
|
|
|
+ .map(item -> item.toString())
|
|
|
+ .collect(Collectors.joining(",")));
|
|
|
+ }
|
|
|
+ userInfo.setId(sysUser.getId());
|
|
|
+ } else {
|
|
|
+ userInfo = new SysUserInfo();
|
|
|
+ userInfo.setId(sysUser.getId());
|
|
|
+ }
|
|
|
+ sysUserInfoService.save(userInfo);
|
|
|
+ }
|
|
|
+ List<EsmUserImageVo> esmUserImageVo = sysUser2Vo.getEsmUserImageVo();
|
|
|
+ String finalUserId = userId;
|
|
|
+ if (!CollectionUtils.isEmpty(esmUserImageVo)) {
|
|
|
+ List<EsmUserImage> esmUserImages = esmUserImageVo.stream()
|
|
|
+ .map(x -> new EsmUserImage(x, finalUserId))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ esmUserImageService.saveBatch(esmUserImages);
|
|
|
+ }
|
|
|
+ String referrerId = sysUser2Vo.getSysUser().getReferrerId();
|
|
|
+ if (referrerId == null) {
|
|
|
+ SpringUtil.getBean(RecordUserUtils.class).addRecord(userId, "admin");
|
|
|
+ } else {
|
|
|
+ SysUser sysUser1 = sysUserMapper.selectById(sysUser2Vo.getSysUser().getReferrerId());
|
|
|
+ SpringUtil.getBean(RecordUserUtils.class)
|
|
|
+ .addRecord(userId, Optional.ofNullable(sysUser1.getName()).orElse("admin"));
|
|
|
+ }
|
|
|
+ // 保存新的合伙人数据
|
|
|
+ addPartnerRule(sysUser,sysUser2Vo.getSysUser().getGradeList());
|
|
|
+ return HttpResult.ok("新增成功", sysUserMapper.selectById(userId));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpResult updateByPartner(String userId, SysUser2Vo sysUser2Vo) {
|
|
|
+ SysUser sysUser = sysUser2Vo.getSysUser();
|
|
|
+ int beStatus = sysUser.getStatus();
|
|
|
+ //查找数据库是否存在相同的身份证
|
|
|
+ if (sysUserMapper.selectCount(new LambdaQueryWrapper<SysUser>()
|
|
|
+ .eq(SysUser::getIdentity, sysUser2Vo.getSysUser().getIdentity())
|
|
|
+ .ne(SysUser::getId, sysUser2Vo.getSysUser().getId())) > 0) {
|
|
|
+ return HttpResult.error("已存在身份证号,无法修改");
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果审核驳回则 重新修改为 审核状态
|
|
|
+ if (sysUser2Vo.getSysUser().getStatus().equals(UserWorkStatus.UWS_3.getCode())) {
|
|
|
+ sysUser2Vo.getSysUser().setStatus(UserWorkStatus.UWS_2.getCode());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Objects.equals(sysUser2Vo.getSysUser().getStatus(), UserWorkStatus.UWS_5.getCode())) {
|
|
|
+ sysUser2Vo.getSysUser().setStatus(UserWorkStatus.UWS_4.getCode());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Objects.equals(sysUser2Vo.getSysUser().getStatus(), UserWorkStatus.UWS_7.getCode())
|
|
|
+ || Objects.equals(sysUser2Vo.getSysUser().getStatus(), UserWorkStatus.UWS_1.getCode())) {
|
|
|
+ sysUser2Vo.getSysUser().setStatus(UserWorkStatus.UWS_6.getCode());
|
|
|
+ }
|
|
|
+
|
|
|
+ //修改用户不能修改密码
|
|
|
+ if (StringUtils.isEmpty(sysUser.getPassword())) {
|
|
|
+ return HttpResult.error("密码不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ //删除状态必须有离司时间
|
|
|
+ if (StringUtils.isNotEmpty(sysUser.getStatus().toString())) {
|
|
|
+ if (sysUser.getStatus() == 0 && sysUser.getLogoutTime() == null && !sysUser.getRoleId().equals("19")) {
|
|
|
+ return HttpResult.error("删除状态,离职时间必填");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return HttpResult.error("状态不能为空");
|
|
|
+ }
|
|
|
+ SysUser sysUser_org = findByUserId(sysUser.getId());
|
|
|
+
|
|
|
+ // 修改密码数据库相同不做修改
|
|
|
+ if (!sysUser_org.getPassword().equals(sysUser.getPassword())) {
|
|
|
+ String salt = PasswordUtils.getSalt();
|
|
|
+ String pwd = PasswordUtils.encode(sysUser.getPassword(), salt);
|
|
|
+ sysUser.setPassword(pwd);
|
|
|
+ sysUser.setSalt(salt);
|
|
|
+ } else {
|
|
|
+ sysUser.setPassword(sysUser_org.getPassword());
|
|
|
+ sysUser.setSalt(sysUser_org.getSalt());
|
|
|
+ }
|
|
|
+ if ("19".equals(sysUser.getRoleId())) {//19 出单员 校验机构和业务员机构是否一致
|
|
|
+ // add by hxl 2024-08-20
|
|
|
+ // return checkChuDanUser(sysUser);
|
|
|
+ if (StringUtils.isEmpty(sysUser.getReferrerId())) {
|
|
|
+ return HttpResult.error("业务员工号不能为空");
|
|
|
+ }
|
|
|
+ //归属业务员和出单员部门必须一致
|
|
|
+ SysUser user = getById(sysUser.getReferrerId());
|
|
|
+ if (user == null || !user.getDeptId().equals(sysUser.getDeptId())) {
|
|
|
+ return HttpResult.error("出单员机构必须和归属业务员机构一致");
|
|
|
+ }
|
|
|
+ sysUser.setOperatorCode(sysUser.getReferrerId());
|
|
|
+ if (StringUtils.isEmpty(sysUser.getId())) {
|
|
|
+ userId = gainNextUserId(sysUser.getDeptId());
|
|
|
+ sysUser.setId(userId);
|
|
|
+ save(sysUser);
|
|
|
+ //角色配置
|
|
|
+ SysUserRole userRole = new SysUserRole();
|
|
|
+ userRole.setUserId(sysUser.getId());
|
|
|
+ userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
|
|
|
+ sysUserRoleService.save(userRole);
|
|
|
+ } else {
|
|
|
+ userId = sysUser.getId();
|
|
|
+ updateById(sysUser);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isEmpty(sysUser.getLeaderId())) {
|
|
|
+ SysUser leaderUser = baseMapper.getByRoleIdAndDeptId("21", sysUser.getDeptId());
|
|
|
+ sysUser.setLeaderId(leaderUser.getLeaderId());
|
|
|
+ sysUser.setLeaderName(leaderUser.getLeaderName());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ SysUserInfo sysUserInfo = sysUser2Vo.getSysUserInfo();
|
|
|
+ sysUserInfo.setId(userId);
|
|
|
+ sysUserInfoService.saveOrUpdate(sysUserInfo);
|
|
|
+ } else {
|
|
|
+ sysUser.setStatus(sysUser2Vo.getSysUser().getStatus());
|
|
|
+ updateById(sysUser);
|
|
|
+
|
|
|
+ SysDept sysDept = sysDeptService.getById(sysUser.getDeptId());
|
|
|
+ // 渠道负责人更新数据
|
|
|
+ if (ManagementSource.MS_01.getCode()
|
|
|
+ .equals(sysDept.getManagementSource()) && "21".equals(sysUser.getRoleId())) {
|
|
|
+ boolean update = lambdaUpdate()
|
|
|
+ .set(SysUser::getLeaderId, sysUser.getLeaderId())
|
|
|
+ .set(SysUser::getLeaderName, sysUser.getLeaderName())
|
|
|
+ .eq(SysUser::getDeptId, sysDept.getId())
|
|
|
+ .update();
|
|
|
+ AssertionUtils.isSucceed(update, "出单员数据更新失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ //角色配置
|
|
|
+ SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
|
|
|
+ sysUserRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
|
|
|
+ sysUserRole.setLastUpdateBy(sysUser.getCreateBy());
|
|
|
+ sysUserRole.setLastUpdateTime(new Date());
|
|
|
+ sysUserRoleService.updateById(sysUserRole);
|
|
|
+
|
|
|
+ if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
|
|
|
+ //推荐人
|
|
|
+ esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
|
|
|
+ }
|
|
|
+
|
|
|
+ //用户详情信息
|
|
|
+ SysUserInfo sysUserInfo = sysUser2Vo.getSysUserInfo();
|
|
|
+ if (null != sysUserInfo.getLiveAddressString() && sysUserInfo.getLiveAddressString().length > 0) {
|
|
|
+ sysUser2Vo.getSysUserInfo()
|
|
|
+ .setLiveAddress(Arrays.stream(sysUserInfo.getLiveAddressString())
|
|
|
+ .map(item -> item.toString())
|
|
|
+ .collect(Collectors.joining(",")));
|
|
|
+ }
|
|
|
+ sysUserInfo.setId(userId);
|
|
|
+ if (null == sysUserInfo.getRemark()) {
|
|
|
+ sysUserInfo.setRemark("");
|
|
|
+ }
|
|
|
+ sysUserInfoService.saveOrUpdate(sysUserInfo);
|
|
|
+ }
|
|
|
+ // 影像资料
|
|
|
+ LambdaQueryWrapper<EsmUserImage> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(EsmUserImage::getUserId, userId);
|
|
|
+ esmUserImageService.remove(wrapper);
|
|
|
+
|
|
|
+ List<EsmUserImageVo> esmUserImageVo = sysUser2Vo.getEsmUserImageVo();
|
|
|
+ String finalUserId = userId;
|
|
|
+ List<EsmUserImage> esmUserImages = esmUserImageVo.stream()
|
|
|
+ .map(x -> new EsmUserImage(x, finalUserId))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ esmUserImageService.saveBatch(esmUserImages);
|
|
|
+
|
|
|
+ if (UserWorkStatus.UWS_5.getCode() == beStatus ||
|
|
|
+ UserWorkStatus.UWS_3.getCode() == beStatus ||
|
|
|
+ UserWorkStatus.UWS_7.getCode() == beStatus) {
|
|
|
+ //添加轨迹
|
|
|
+ SysUserTrack sysUserTrack = new SysUserTrack();
|
|
|
+ sysUserTrack.setUserId(sysUser.getId());
|
|
|
+ SysUser user = BaseController.getUser();
|
|
|
+ sysUserTrack.setApproveBy(user.getName());
|
|
|
+ sysUserTrack.setApproveById(user.getId());
|
|
|
+ sysUserTrack.setStatus(sysUser2Vo.getSysUser().getStatus());
|
|
|
+ sysUserTrack.setApproveTime(new Date());
|
|
|
+ sysUserTrackService.save(sysUserTrack);
|
|
|
+ }
|
|
|
+ SpringUtil.getBean(RecordUserUtils.class).recordUser(sysUser2Vo, BaseController.getUserName());
|
|
|
+ return HttpResult.ok("修改成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<SysUserBaseVO> findPartnerUserList(SysUserDto sysUserDto) {
|
|
|
+ Page<SysUserBaseVO> page = new Page<>(sysUserDto.getPageNum(),
|
|
|
+ sysUserDto.getPageSize());
|
|
|
+ Page<SysUserBaseVO> backUserList = sysUserMapper.findPartnerUserList(page, sysUserDto.getDto());
|
|
|
+ return backUserList;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public HttpResult saveUserInfo1(SysUser2Vo sysUserVo) {
|
|
|
@@ -1416,10 +1847,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
public HttpResult updateUserInfo(String userId, SysUser2Vo sysUserVo) {
|
|
|
SysUser sysUser = sysUserVo.getSysUser();
|
|
|
int beStatus = sysUser.getStatus();
|
|
|
+ // 查询当前修改的用户是否是新合伙人多身份用户
|
|
|
+ Long count = partnerUserMapper.selectCount(new LambdaQueryWrapper<PartnerUser>().eq(PartnerUser::getUserId, sysUser.getId()));
|
|
|
//查找数据库是否存在相同的身份证
|
|
|
if (sysUserMapper.selectCount(new LambdaQueryWrapper<SysUser>()
|
|
|
.eq(SysUser::getIdentity, sysUserVo.getSysUser().getIdentity())
|
|
|
- .ne(SysUser::getId, sysUserVo.getSysUser().getId())) > 0) {
|
|
|
+ .ne(SysUser::getId, sysUserVo.getSysUser().getId())) > 0 && count == 0) {
|
|
|
return HttpResult.error("已存在身份证号,无法修改");
|
|
|
}
|
|
|
|
|
|
@@ -1520,12 +1953,16 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
sysUserRole.setLastUpdateBy(sysUser.getCreateBy());
|
|
|
sysUserRole.setLastUpdateTime(new Date());
|
|
|
sysUserRoleService.updateById(sysUserRole);
|
|
|
-
|
|
|
- if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
|
|
|
- //推荐人
|
|
|
- esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
|
|
|
+ if (0 == sysUser.getNewApp()){
|
|
|
+ if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
|
|
|
+ //推荐人
|
|
|
+ esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ updateMultiUsers(sysUser);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
//用户详情信息
|
|
|
SysUserInfo sysUserInfo = sysUserVo.getSysUserInfo();
|
|
|
if (null != sysUserInfo.getLiveAddressString() && sysUserInfo.getLiveAddressString().length > 0) {
|
|
|
@@ -1570,6 +2007,45 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
return HttpResult.ok("修改成功");
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ public void updateMultiUsers(SysUser sysUser){
|
|
|
+ QueryWrapper<PartnerUser> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("user_id", sysUser.getId());
|
|
|
+ List<String> gradeList = sysUser.getGradeList();
|
|
|
+ if (CollectionUtils.isEmpty(gradeList)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<PartnerUser> partnerUsers = partnerUserMapper.selectList(queryWrapper);
|
|
|
+ if (CollectionUtils.isEmpty(partnerUsers)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<String> list = partnerUsers.stream()
|
|
|
+ .map(user -> String.valueOf(user.getGrade()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ boolean listsEqual = ListComparator.areListsEqual(gradeList, list);
|
|
|
+ if (!listsEqual){
|
|
|
+ List<String> sortedAsc = gradeList.stream()
|
|
|
+ .map(Integer::parseInt)
|
|
|
+ .sorted()
|
|
|
+ .map(String::valueOf)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+// partnerUserMapper.deleteByUserId(sysUser.getId());
|
|
|
+// for (String s : sortedAsc) {
|
|
|
+// PartnerUser partnerUser = new PartnerUser();
|
|
|
+// partnerUser.setUserId(sysUser.getId());
|
|
|
+// partnerUser.setName(sysUser.getName());
|
|
|
+// partnerUser.setDeptId(sysUser.getDeptId());
|
|
|
+// partnerUser.setMobile(sysUser.getMobile());
|
|
|
+// partnerUser.setGrade(Integer.valueOf(s));
|
|
|
+// partnerUser.setGrade(Integer.valueOf(s));
|
|
|
+// }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public HttpResult updateUserInfo1(String userId, SysUser2Vo sysUserVo) {
|
|
|
@@ -2788,6 +3264,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
@Transactional
|
|
|
public String agentRegist(AgentUserNewDto dto, SysUser recommender) {
|
|
|
int noCount = 3;
|
|
|
+ SysUser user = sysUserMapper.selectById(dto.getReferrerId());
|
|
|
//根据机构号获取userid最大值,不需要加人员类型判断 从sys_user获取
|
|
|
String maxId = this.findMaxId(recommender.getDeptId());
|
|
|
String nextPK = StringUtils.isNullOrEmpty(maxId) ? recommender.getDeptId() + "001"
|
|
|
@@ -2808,6 +3285,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
sysUser.setFactorVerify(0); // 未认证状态
|
|
|
sysUser.setUpdateTime(new Date());
|
|
|
sysUser.setUpdateBy("admin");
|
|
|
+ sysUser.setNewApp(user.getNewApp());
|
|
|
this.save(sysUser);
|
|
|
//角色配置
|
|
|
SysUserRole userRole = new SysUserRole();
|
|
|
@@ -2824,9 +3302,27 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
SpringUtil.getBean(UserAgentTrackUtils.class).addTrack(
|
|
|
sysUser.getId(), UserAgentStatus.UAS_0.getCode(),
|
|
|
"admin");
|
|
|
+ addPartner(sysUser, dto.getReferrerId(),user.getNewApp());
|
|
|
return sysUser.getId();
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ public void addPartner(SysUser sysUser,String referrerId,Integer newApp){
|
|
|
+ if (1 == newApp){
|
|
|
+ Integer max = partnerUserService.selectByUserIdMax(referrerId);
|
|
|
+ PartnerUser partnerUser = new PartnerUser();
|
|
|
+ partnerUser.setName(sysUser.getName());
|
|
|
+ partnerUser.setMobile(sysUser.getMobile());
|
|
|
+ partnerUser.setUserId(sysUser.getId());
|
|
|
+ partnerUser.setDeptId(sysUser.getDeptId());
|
|
|
+ partnerUser.setDeptName(sysUser.getDeptName());
|
|
|
+ partnerUser.setGrade(max + 1);
|
|
|
+ partnerUser.setReferrerId(referrerId);
|
|
|
+ partnerUser.setCreateTime(new Date());
|
|
|
+ partnerUserService.save(partnerUser);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public SysUserAgentVo agentAuth(SysUser sysUser, AgentAuthDto dto) {
|
|
|
@@ -3206,4 +3702,126 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
return maxId;
|
|
|
}
|
|
|
|
|
|
+ public void addPartnerRule(SysUser sysUser, List<String> gradeList) {
|
|
|
+ if (sysUser == null || sysUser.getType() != 4) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isEmpty(gradeList)) {
|
|
|
+ throw new SystemException("请选择合伙人等级");
|
|
|
+ }
|
|
|
+ List<Integer> sortedGrades = gradeList.stream()
|
|
|
+ .map(Integer::valueOf)
|
|
|
+ .sorted()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ int minGrade = sortedGrades.get(0);
|
|
|
+ boolean hasReferrer = StringUtils.isNotEmpty(sysUser.getReferrerId());
|
|
|
+ boolean hasDept = true;
|
|
|
+ if (gradeList.size() == 1 && StringUtils.equals(gradeList.get(0),"4")){
|
|
|
+ hasDept = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int grade : sortedGrades) {
|
|
|
+ String deptId = sysUser.getDeptId();
|
|
|
+ if (4 == grade && hasDept){
|
|
|
+ deptId = addDeptUser(sysUser,String.valueOf(grade));
|
|
|
+ }
|
|
|
+ PartnerUser partnerUser = createPartnerUser(sysUser, grade, minGrade, hasReferrer,deptId);
|
|
|
+ partnerUserService.save(partnerUser);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private PartnerUser createPartnerUser(SysUser sysUser, int grade, int minGrade, boolean hasReferrer,String deptId) {
|
|
|
+ PartnerUser partnerUser = new PartnerUser();
|
|
|
+ partnerUser.setName(sysUser.getName());
|
|
|
+ partnerUser.setMobile(sysUser.getMobile());
|
|
|
+ partnerUser.setUserId(sysUser.getId());
|
|
|
+ partnerUser.setDeptId(deptId);
|
|
|
+ partnerUser.setDeptName(sysUser.getDeptName());
|
|
|
+ partnerUser.setGrade(grade);
|
|
|
+ partnerUser.setCreateTime(new Date());
|
|
|
+ if (grade != 1) {
|
|
|
+ String referrerId = (grade == minGrade)
|
|
|
+ ? (hasReferrer ? sysUser.getReferrerId() : sysUser.getId())
|
|
|
+ : sysUser.getId();
|
|
|
+ partnerUser.setReferrerId(referrerId);
|
|
|
+ }
|
|
|
+ return partnerUser;
|
|
|
+ }
|
|
|
+
|
|
|
+ private PartnerUser getPartnerUser(SysUser sysUser,String grade) {
|
|
|
+ PartnerUser partnerUser = new PartnerUser();
|
|
|
+ partnerUser.setName(sysUser.getName());
|
|
|
+ partnerUser.setMobile(sysUser.getMobile());
|
|
|
+ partnerUser.setUserId(sysUser.getId());
|
|
|
+ partnerUser.setDeptId(sysUser.getDeptId());
|
|
|
+ partnerUser.setDeptName(sysUser.getDeptName());
|
|
|
+ partnerUser.setGrade(Integer.valueOf(grade));
|
|
|
+ String referrerId = StringUtils.isNotEmpty(sysUser.getReferrerId()) ? sysUser.getReferrerId() : sysUser.getId();
|
|
|
+ if (!StringUtils.equals(grade, "1")){
|
|
|
+ partnerUser.setReferrerId(referrerId);
|
|
|
+ }
|
|
|
+ partnerUser.setCreateTime(new Date());
|
|
|
+ return partnerUser;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String addDeptUser(SysUser sysUser,String grade){
|
|
|
+ SysDept sysDept = sysDeptMapper.selectById(sysUser.getDeptId());
|
|
|
+ SysDeptVo sysDeptVo = new SysDeptVo();
|
|
|
+ sysDeptVo.setParentId(sysDept.getId());
|
|
|
+ sysDeptVo.setComtype(sysUser.getDeptType());
|
|
|
+ sysDeptVo.setAddress(sysDept.getAddress());
|
|
|
+ sysDeptVo.setComattribute("procar"); //机构性质 车险
|
|
|
+ sysDeptVo.setProvince(sysDept.getProvince()); // 默认省与负责人所在机构一样
|
|
|
+ sysDeptVo.setCity(sysDept.getCity()); // 默认市与负责人所在机构一样
|
|
|
+ sysDeptVo.setArea(sysDept.getArea()); // 默认区县与负责人所在机构一样
|
|
|
+ if (StringUtils.equals("4",grade)){
|
|
|
+ sysDeptVo.setDeptType("C"); // 默认为子公司
|
|
|
+ sysDeptVo.setName(sysUser.getName() + "(工作室)");
|
|
|
+ sysDeptVo.setComlevel("5");
|
|
|
+ }
|
|
|
+ if (StringUtils.equals("5",grade)){
|
|
|
+ sysDeptVo.setDeptType("D"); // 默认为子公司
|
|
|
+ sysDeptVo.setName(sysUser.getName() + "团队"); // 以人名设置工作室名称
|
|
|
+ }
|
|
|
+ sysDeptVo.setManagementSource("2");
|
|
|
+
|
|
|
+ String sysDeptVo1 = queryDId(sysDeptVo);
|
|
|
+ sysDeptVo.setId(sysDeptVo1);
|
|
|
+ SysDept sysDept1 = new SysDept();
|
|
|
+ BeanUtils.copyProperties(sysDeptVo,sysDept1);
|
|
|
+ sysDeptMapper.insert(sysDept1);
|
|
|
+ return sysDept1.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ public String queryDId(SysDeptVo sysDeptVo){
|
|
|
+ String deptType = sysDeptVo.getDeptType();
|
|
|
+ String comlevel = sysDeptVo.getComlevel();
|
|
|
+ String parentId = sysDeptVo.getParentId();
|
|
|
+ if ("C".equals(deptType) && comlevel.equals("5")) {
|
|
|
+ sysDeptVo.setDeptType("M");
|
|
|
+ } else if ("D".equals(deptType)) {
|
|
|
+ sysDeptVo.setDeptType("D");
|
|
|
+ deptType = "M";
|
|
|
+ }
|
|
|
+ String number;
|
|
|
+ String maxId = sysDeptMapper.getMaxId(sysDeptVo.getParentId(), deptType, comlevel);
|
|
|
+ if (!maxId.equals("0")) {
|
|
|
+ String substring = maxId.substring(parentId.length() + 1);
|
|
|
+ int i = Integer.parseInt("1" + substring) + 1;
|
|
|
+ number = String.valueOf(i);
|
|
|
+ } else {
|
|
|
+ number = "101";
|
|
|
+ }
|
|
|
+
|
|
|
+ String substring = number.substring(number.length() - 2);
|
|
|
+ String serialNumber;
|
|
|
+ if ("M,D".contains(sysDeptVo.getDeptType())) {
|
|
|
+ serialNumber = parentId + sysDeptVo.getDeptType() + substring;
|
|
|
+ } else {
|
|
|
+ serialNumber = parentId + substring;
|
|
|
+ }
|
|
|
+ return serialNumber;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|