|
@@ -3,6 +3,7 @@ package com.ydtech.modules.admin.service.impl;
|
|
|
import cn.dev33.satoken.session.SaSession;
|
|
import cn.dev33.satoken.session.SaSession;
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -19,8 +20,12 @@ import com.ydtech.core.page.HttpResult;
|
|
|
import com.ydtech.core.page.PageResult;
|
|
import com.ydtech.core.page.PageResult;
|
|
|
import com.ydtech.exception.SystemException;
|
|
import com.ydtech.exception.SystemException;
|
|
|
import com.ydtech.handler.CreateAndUpdateMetaObjectHandler;
|
|
import com.ydtech.handler.CreateAndUpdateMetaObjectHandler;
|
|
|
|
|
+import com.ydtech.modules.admin.components.UnionPayRequestApiComponent;
|
|
|
|
|
+import com.ydtech.modules.admin.components.request.UnionPayRequest;
|
|
|
|
|
+import com.ydtech.modules.admin.components.response.UnionPayResponse;
|
|
|
import com.ydtech.modules.admin.constants.QuMarks;
|
|
import com.ydtech.modules.admin.constants.QuMarks;
|
|
|
import com.ydtech.modules.admin.constants.RoleConstants;
|
|
import com.ydtech.modules.admin.constants.RoleConstants;
|
|
|
|
|
+import com.ydtech.modules.admin.constants.UserAgentStatus;
|
|
|
import com.ydtech.modules.admin.constants.UserWorkStatus;
|
|
import com.ydtech.modules.admin.constants.UserWorkStatus;
|
|
|
import com.ydtech.modules.admin.dao.SysDeptMapper;
|
|
import com.ydtech.modules.admin.dao.SysDeptMapper;
|
|
|
import com.ydtech.modules.admin.dao.SysPartnerMapper;
|
|
import com.ydtech.modules.admin.dao.SysPartnerMapper;
|
|
@@ -28,20 +33,26 @@ import com.ydtech.modules.admin.dao.SysUserLinkAreaMapper;
|
|
|
import com.ydtech.modules.admin.dao.SysUserMapper;
|
|
import com.ydtech.modules.admin.dao.SysUserMapper;
|
|
|
import com.ydtech.modules.admin.model.*;
|
|
import com.ydtech.modules.admin.model.*;
|
|
|
import com.ydtech.modules.admin.model.dto.*;
|
|
import com.ydtech.modules.admin.model.dto.*;
|
|
|
|
|
+import com.ydtech.modules.admin.model.po.SysUserAgentTrack;
|
|
|
import com.ydtech.modules.admin.model.po.SysUserIsDial;
|
|
import com.ydtech.modules.admin.model.po.SysUserIsDial;
|
|
|
import com.ydtech.modules.admin.model.po.SysUserTreeShowLevel;
|
|
import com.ydtech.modules.admin.model.po.SysUserTreeShowLevel;
|
|
|
import com.ydtech.modules.admin.model.vo.*;
|
|
import com.ydtech.modules.admin.model.vo.*;
|
|
|
import com.ydtech.modules.admin.service.*;
|
|
import com.ydtech.modules.admin.service.*;
|
|
|
import com.ydtech.modules.admin.utils.RecordUserUtils;
|
|
import com.ydtech.modules.admin.utils.RecordUserUtils;
|
|
|
|
|
+import com.ydtech.modules.admin.utils.UserAgentTrackUtils;
|
|
|
import com.ydtech.modules.base.controller.BaseController;
|
|
import com.ydtech.modules.base.controller.BaseController;
|
|
|
import com.ydtech.modules.base.model.dto.PageDto;
|
|
import com.ydtech.modules.base.model.dto.PageDto;
|
|
|
import com.ydtech.modules.base.model.vo.PageVo;
|
|
import com.ydtech.modules.base.model.vo.PageVo;
|
|
|
import com.ydtech.modules.esm.model.EsmUserImage;
|
|
import com.ydtech.modules.esm.model.EsmUserImage;
|
|
|
import com.ydtech.modules.esm.model.EsmUserReferrer;
|
|
import com.ydtech.modules.esm.model.EsmUserReferrer;
|
|
|
|
|
+import com.ydtech.modules.esm.model.vo.EsmUserImageQueryVo;
|
|
|
import com.ydtech.modules.esm.model.vo.EsmUserImageVo;
|
|
import com.ydtech.modules.esm.model.vo.EsmUserImageVo;
|
|
|
import com.ydtech.modules.esm.service.EsmUserImageService;
|
|
import com.ydtech.modules.esm.service.EsmUserImageService;
|
|
|
import com.ydtech.modules.esm.service.EsmUserReferrerService;
|
|
import com.ydtech.modules.esm.service.EsmUserReferrerService;
|
|
|
|
|
+import com.ydtech.modules.message.constants.MessageTypeConstants;
|
|
|
|
|
+import com.ydtech.modules.message.service.MessageSecretaryService;
|
|
|
import com.ydtech.security.utils.PasswordUtils;
|
|
import com.ydtech.security.utils.PasswordUtils;
|
|
|
|
|
+import com.ydtech.utils.IDCardUtils;
|
|
|
import com.ydtech.utils.StringUtils;
|
|
import com.ydtech.utils.StringUtils;
|
|
|
import com.ydtech.utils.idgen.IdGenerate;
|
|
import com.ydtech.utils.idgen.IdGenerate;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -128,6 +139,18 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
@Resource
|
|
@Resource
|
|
|
private SysPartnerMapper sysPartnerMapper;
|
|
private SysPartnerMapper sysPartnerMapper;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private MessageSecretaryService messageSecretaryService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private UnionPayRequestApiComponent unionPayRequestApiComponent;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private SysUserAgentTrackService sysUserAgentTrackService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private SysUserBankCardService bankCardService;
|
|
|
|
|
+
|
|
|
@Value("${httpUrl}")
|
|
@Value("${httpUrl}")
|
|
|
private String httpUrl;
|
|
private String httpUrl;
|
|
|
@Override
|
|
@Override
|
|
@@ -2421,4 +2444,184 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional
|
|
|
|
|
+ public String agentRegist(AgentUserNewDto dto, SysUser recommender) {
|
|
|
|
|
+ int noCount = 3;
|
|
|
|
|
+ //根据机构号获取userid最大值,不需要加人员类型判断 从sys_user获取
|
|
|
|
|
+ String maxId = this.findMaxId(recommender.getDeptId());
|
|
|
|
|
+ String nextPK = StringUtils.isNullOrEmpty(maxId)? recommender.getDeptId() + "001"
|
|
|
|
|
+ : IdGenerate.nextCode(maxId, noCount);
|
|
|
|
|
+ SysUser sysUser = new SysUser();
|
|
|
|
|
+ sysUser.setId(nextPK);
|
|
|
|
|
+ sysUser.setName(dto.getName());
|
|
|
|
|
+ sysUser.setMobile(dto.getMobile());
|
|
|
|
|
+ sysUser.setDeptId(recommender.getDeptId());
|
|
|
|
|
+ //密码加密
|
|
|
|
|
+ String salt = PasswordUtils.getSalt();
|
|
|
|
|
+ sysUser.setSalt(salt);
|
|
|
|
|
+ String password = PasswordUtils.encode(dto.getPassword(), salt);
|
|
|
|
|
+ sysUser.setPassword(password);
|
|
|
|
|
+ sysUser.setStatus(UserWorkStatus.UWS_0.getCode());
|
|
|
|
|
+ sysUser.setCreateBy("admin");
|
|
|
|
|
+ sysUser.setCreateTime(new Date());
|
|
|
|
|
+ sysUser.setFactorVerify(0); // 未认证状态
|
|
|
|
|
+ sysUser.setUpdateTime(new Date());
|
|
|
|
|
+ sysUser.setUpdateBy("admin");
|
|
|
|
|
+ this.save(sysUser);
|
|
|
|
|
+ //角色配置
|
|
|
|
|
+ SysUserRole userRole = new SysUserRole();
|
|
|
|
|
+ userRole.setUserId(nextPK);
|
|
|
|
|
+ userRole.setRoleId(20l);
|
|
|
|
|
+ sysUserRoleService.save(userRole);
|
|
|
|
|
+ //添加增员服务消息
|
|
|
|
|
+ //添加订单消息
|
|
|
|
|
+ messageSecretaryService.addMessage(MessageTypeConstants.M_6, dto.getReferrerId(),
|
|
|
|
|
+ dto.getMobile() + "(" + dto.getName() + ")" + "进行注册,请立即认证审核.");
|
|
|
|
|
+ esmUserReferrerService.addReferrer(dto.getReferrerId(), nextPK);
|
|
|
|
|
+
|
|
|
|
|
+ // 保存个代认证轨迹
|
|
|
|
|
+ SpringUtil.getBean(UserAgentTrackUtils.class).addTrack(
|
|
|
|
|
+ sysUser.getId(), UserAgentStatus.UAS_0.getCode(),
|
|
|
|
|
+ "admin");
|
|
|
|
|
+ return sysUser.getId();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional
|
|
|
|
|
+ public SysUserAgentVo agentAuth(SysUser sysUser, AgentAuthDto dto) {
|
|
|
|
|
+ SysUser user = this.getById(sysUser.getId());
|
|
|
|
|
+ String msg;
|
|
|
|
|
+ Integer status;
|
|
|
|
|
+ SysUserAgentVo userAgentVo = new SysUserAgentVo();
|
|
|
|
|
+ // 三要素认证
|
|
|
|
|
+ UnionPayRequest request = new UnionPayRequest();
|
|
|
|
|
+ request.setName(dto.getName());
|
|
|
|
|
+ request.setPhoneNo(dto.getMobile());
|
|
|
|
|
+ request.setCertNo(dto.getIdentity());
|
|
|
|
|
+ UnionPayResponse response = unionPayRequestApiComponent.threeFactorVerifyRequest(request);
|
|
|
|
|
+ if (response != null&&!"00".equals(response.getRespCode())) {
|
|
|
|
|
+ msg = "认证信息不一致:"+response.getDetailRespMsg();
|
|
|
|
|
+ status = UserAgentStatus.UAS_2.getCode();
|
|
|
|
|
+ user.setFactorVerify(2); // 认证失败 即未认证状态
|
|
|
|
|
+ userAgentVo.setStatus(status);
|
|
|
|
|
+ userAgentVo.setDesc(msg);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ msg = "认证成功";
|
|
|
|
|
+ status = UserAgentStatus.UAS_1.getCode();
|
|
|
|
|
+ user.setFactorVerify(1);
|
|
|
|
|
+ user.setStatus(UserWorkStatus.UWS_8.getCode());
|
|
|
|
|
+ userAgentVo.setStatus(status);
|
|
|
|
|
+ }
|
|
|
|
|
+ user.setName(dto.getName());
|
|
|
|
|
+ user.setMobile(dto.getMobile());
|
|
|
|
|
+ user.setIdentity(dto.getIdentity());
|
|
|
|
|
+ user.setIdentityTime(dto.getIdentityTime());
|
|
|
|
|
+ user.setUpdateBy("admin");
|
|
|
|
|
+ user.setUpdateTime(new Date());
|
|
|
|
|
+ this.saveOrUpdate(user);
|
|
|
|
|
+
|
|
|
|
|
+ SysUserInfo sysUserInfo = new SysUserInfo();
|
|
|
|
|
+ sysUserInfo.setId(user.getId());
|
|
|
|
|
+ // 根据身份证获取出生日期和性别
|
|
|
|
|
+ sysUserInfo.setBirthday(LocalDate.parse(IDCardUtils.GetBirthday(dto.getIdentity())));
|
|
|
|
|
+ sysUserInfo.setSex(IDCardUtils.GetSex(dto.getIdentity()).equalsIgnoreCase("FEMALE") ? "F" : "M");
|
|
|
|
|
+ sysUserInfo.setBankName(dto.getBankName());
|
|
|
|
|
+ sysUserInfo.setAccountno(dto.getAccountno());
|
|
|
|
|
+ sysUserInfoService.saveOrUpdate(sysUserInfo);
|
|
|
|
|
+ // 影像资料
|
|
|
|
|
+ LambdaQueryWrapper<EsmUserImage> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ wrapper.eq(EsmUserImage::getUserId, user.getId());
|
|
|
|
|
+ esmUserImageService.remove(wrapper);
|
|
|
|
|
+
|
|
|
|
|
+ List<EsmUserImageVo> esmUserImageVo = dto.getEsmUserImageVo();
|
|
|
|
|
+ String finalUserId = user.getId();
|
|
|
|
|
+ List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, finalUserId)).collect(Collectors.toList());
|
|
|
|
|
+ esmUserImageService.saveBatch(esmUserImages);
|
|
|
|
|
+ // 保存个代认证轨迹
|
|
|
|
|
+ SpringUtil.getBean(UserAgentTrackUtils.class).addTrack(
|
|
|
|
|
+ user.getId(), status,
|
|
|
|
|
+ BaseController.getUserName(),
|
|
|
|
|
+ null, msg);
|
|
|
|
|
+ return userAgentVo;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public SysUserAgentVo getAuthResult(SysUser sysUser, AgentAuthResultDto dto) {
|
|
|
|
|
+ SysUser user = this.getById(sysUser.getId());
|
|
|
|
|
+ SysUserInfo info = sysUserInfoService.getById(sysUser.getId());
|
|
|
|
|
+ SysUserAgentVo userAgentVo = new SysUserAgentVo();
|
|
|
|
|
+ userAgentVo.setSysUser(user);
|
|
|
|
|
+ if (Objects.nonNull(info)){
|
|
|
|
|
+ userAgentVo.setSysUserInfo(info);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (UserWorkStatus.UWS_0.getCode().equals(user.getStatus()) && user.getFactorVerify().equals(2)) {
|
|
|
|
|
+ SysUserAgentTrack track = sysUserAgentTrackService.queryTrack(sysUser.getId(),
|
|
|
|
|
+ UserAgentStatus.UAS_2.getCode());
|
|
|
|
|
+ if (Objects.nonNull(track)) {
|
|
|
|
|
+ userAgentVo.setDesc(track.getApproveMess());
|
|
|
|
|
+ }
|
|
|
|
|
+ } else if(UserWorkStatus.UWS_3.getCode().equals(user.getStatus())){
|
|
|
|
|
+ userAgentVo.setDesc(sysUserTrackService.getApproveMessByUserId(sysUser.getId(),"1"));
|
|
|
|
|
+ }
|
|
|
|
|
+ List<EsmUserImageQueryVo> esmUserImageQueryVo = esmUserImageService.getEsmUserImageQueryVo(sysUser.getId());
|
|
|
|
|
+ if(CollUtil.isNotEmpty(esmUserImageQueryVo)){
|
|
|
|
|
+ userAgentVo.setEsmUserImageVo(esmUserImageQueryVo);
|
|
|
|
|
+ }
|
|
|
|
|
+ return userAgentVo;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional
|
|
|
|
|
+ public void agentSubmit(SysUser user, AgentSubmitDto dto) {
|
|
|
|
|
+ SysUserInfo info = sysUserInfoService.getById(user.getId());
|
|
|
|
|
+ // 银行卡认证
|
|
|
|
|
+ UnionPayRequest request = new UnionPayRequest();
|
|
|
|
|
+ request.setName(user.getName());
|
|
|
|
|
+ request.setPhoneNo(user.getMobile());
|
|
|
|
|
+ request.setCertNo(user.getIdentity());
|
|
|
|
|
+ request.setCardNo(dto.getBankName());
|
|
|
|
|
+ UnionPayResponse response = unionPayRequestApiComponent.bankCardVerifyRequest(request);
|
|
|
|
|
+ String msg;
|
|
|
|
|
+ Integer status;
|
|
|
|
|
+ if (response != null&&!"00".equals(response.getRespCode())) {
|
|
|
|
|
+ msg = "认证信息不一致:"+response.getDetailRespMsg();
|
|
|
|
|
+ status = UserAgentStatus.UAS_4.getCode();
|
|
|
|
|
+ }else{
|
|
|
|
|
+ msg = "银行卡认证成功";
|
|
|
|
|
+ status = UserAgentStatus.UAS_3.getCode();
|
|
|
|
|
+ SysUserBankCardVO sysUserBankCardVO = new SysUserBankCardVO();
|
|
|
|
|
+ sysUserBankCardVO.setUserId(dto.getUserId());
|
|
|
|
|
+ sysUserBankCardVO.setBankNumber(dto.getBankName());
|
|
|
|
|
+ sysUserBankCardVO.setBankAccount(dto.getAccountno());
|
|
|
|
|
+ sysUserBankCardVO.setPhoneNo(user.getMobile());
|
|
|
|
|
+ sysUserBankCardVO.setRealUserName(user.getName());
|
|
|
|
|
+ sysUserBankCardVO.setUserName(user.getName());
|
|
|
|
|
+ bankCardService.insertByBankNumber(sysUserBankCardVO);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 保存个代银行卡认证轨迹
|
|
|
|
|
+ SpringUtil.getBean(UserAgentTrackUtils.class).addTrack(
|
|
|
|
|
+ user.getId(), status,
|
|
|
|
|
+ BaseController.getUserName(),
|
|
|
|
|
+ null, msg);
|
|
|
|
|
+
|
|
|
|
|
+ user.setStatus(UserWorkStatus.UWS_2.getCode());
|
|
|
|
|
+ user.setUpdateBy("admin");
|
|
|
|
|
+ user.setUpdateTime(new Date());
|
|
|
|
|
+ this.saveOrUpdate(user);
|
|
|
|
|
+ info.setBankName(dto.getBankName());
|
|
|
|
|
+ info.setAccountno(dto.getAccountno());
|
|
|
|
|
+ sysUserInfoService.saveOrUpdate(info);
|
|
|
|
|
+ // 影像资料
|
|
|
|
|
+ LambdaQueryWrapper<EsmUserImage> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ wrapper.eq(EsmUserImage::getUserId, user.getId());
|
|
|
|
|
+ esmUserImageService.remove(wrapper);
|
|
|
|
|
+
|
|
|
|
|
+ List<EsmUserImageVo> esmUserImageVo = dto.getEsmUserImageVo();
|
|
|
|
|
+ String finalUserId = user.getId();
|
|
|
|
|
+ List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, finalUserId)).collect(Collectors.toList());
|
|
|
|
|
+ esmUserImageService.saveBatch(esmUserImages);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|