|
@@ -0,0 +1,170 @@
|
|
|
+package com.qunzhixinxi.hnqz.admin.service.gig.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.constant.MqConstants;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.SysUserSub;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.dto.UserSignCertDTO;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.model.GigBaseInfoModel;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.model.GigInfoModel;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.model.GigSignCertRequest;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.model.GigUserInfoModel;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.GigChannelEnum;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.SysUserService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.SysUserSubService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.gig.SysUserSignCertService;
|
|
|
+import com.qunzhixinxi.hnqz.common.rabbitmq.client.RabbitMqClient;
|
|
|
+import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 用户签约认证服务
|
|
|
+ *
|
|
|
+ * @author lixuesong
|
|
|
+ * @date 2022年03月03日 14:38
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+public class SysUserSignCertServiceImpl implements SysUserSignCertService {
|
|
|
+
|
|
|
+ private final SysUserService sysUserService;
|
|
|
+
|
|
|
+ private final SysUserSubService sysUserSubService;
|
|
|
+
|
|
|
+ private final RabbitMqClient rabbitMqClient;
|
|
|
+
|
|
|
+ private final RedisTemplate redisTemplate;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存用户基础信息
|
|
|
+ *
|
|
|
+ * @param userSignCertDTO
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void saveBaseInfo(UserSignCertDTO userSignCertDTO) {
|
|
|
+ // 更新用户信息
|
|
|
+ SysUser updateUser = new SysUser();
|
|
|
+ updateUser.setUserId(userSignCertDTO.getUserId());
|
|
|
+ updateUser.setIdCardNumber(userSignCertDTO.getIdCardNumber());
|
|
|
+ updateUser.setBankCardNumber(userSignCertDTO.getBankCardNumber());
|
|
|
+ sysUserService.updateById(updateUser);
|
|
|
+ // 更新用户签约认证主体信息
|
|
|
+ userSignCertDTO.getGigTypeList().forEach(gigType -> {
|
|
|
+ SysUserSub userSub = new SysUserSub();
|
|
|
+ userSub.setUserId(userSignCertDTO.getUserId());
|
|
|
+ userSub.setGigType(gigType);
|
|
|
+ userSub.setCreateUser(SecurityUtils.getUser().getId());
|
|
|
+ userSub.setCreateTime(LocalDateTime.now());
|
|
|
+ // 税邦云单独设置渠道类型
|
|
|
+ if (GigTypeEnum.TAX_HELPOR.equals(gigType)) {
|
|
|
+ if (StrUtil.isNotEmpty(userSignCertDTO.getBankCardNumber())) {
|
|
|
+ userSub.setGigChannel(GigChannelEnum.PINGAN);
|
|
|
+ } else {
|
|
|
+ userSub.setGigChannel(GigChannelEnum.CICC);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ userSub.setGigChannel(GigChannelEnum.DEFAULT);
|
|
|
+ }
|
|
|
+ sysUserSubService.save(userSub);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 签协议
|
|
|
+ *
|
|
|
+ * @param userSignCertDTO
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void signAgreement(UserSignCertDTO userSignCertDTO) {
|
|
|
+ LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.lambdaUpdate();
|
|
|
+ updateWrapper.eq(SysUserSub::getUserId, userSignCertDTO.getUserId());
|
|
|
+ if (CollUtil.isNotEmpty(userSignCertDTO.getGigTypeList())) {
|
|
|
+ updateWrapper.in(SysUserSub::getGigType, userSignCertDTO.getGigTypeList());
|
|
|
+ }
|
|
|
+ updateWrapper.set(SysUserSub::getAgreementUrl, userSignCertDTO.getAgreementUrl());
|
|
|
+ updateWrapper.set(SysUserSub::getUpdateUser, SecurityUtils.getUser().getId());
|
|
|
+ updateWrapper.set(SysUserSub::getUpdateTime, LocalDateTime.now());
|
|
|
+
|
|
|
+ sysUserSubService.update(updateWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人身验证
|
|
|
+ *
|
|
|
+ * @param userSignCertDTO
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void personalIdentityVerification(UserSignCertDTO userSignCertDTO) {
|
|
|
+ LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.lambdaUpdate();
|
|
|
+ updateWrapper.eq(SysUserSub::getUserId, userSignCertDTO.getUserId());
|
|
|
+ if (CollUtil.isNotEmpty(userSignCertDTO.getGigTypeList())) {
|
|
|
+ updateWrapper.in(SysUserSub::getGigType, userSignCertDTO.getGigTypeList());
|
|
|
+ }
|
|
|
+ updateWrapper.set(SysUserSub::getIdCardFrontUrl, userSignCertDTO.getIdCardFrontUrl());
|
|
|
+ updateWrapper.set(SysUserSub::getIdCardBackUrl, userSignCertDTO.getIdCardBackUrl());
|
|
|
+ updateWrapper.set(SysUserSub::getCertVideo1Url, userSignCertDTO.getCertVideo1Url());
|
|
|
+ updateWrapper.set(SysUserSub::getCertVideo2Url, userSignCertDTO.getCertVideo2Url());
|
|
|
+ updateWrapper.set(SysUserSub::getUpdateUser, SecurityUtils.getUser().getId());
|
|
|
+ updateWrapper.set(SysUserSub::getUpdateTime, LocalDateTime.now());
|
|
|
+
|
|
|
+ sysUserSubService.update(updateWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量发起用户签约认证
|
|
|
+ *
|
|
|
+ * @param userSignCertDTO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public boolean batchChannelCert(UserSignCertDTO userSignCertDTO) {
|
|
|
+ // 根据用户id查询用户信息、认证信息
|
|
|
+ Integer userId = userSignCertDTO.getUserId();
|
|
|
+ SysUser sysUser = sysUserService.getById(userId);
|
|
|
+ List<SysUserSub> userSubList = sysUserSubService.list(Wrappers.<SysUserSub>lambdaQuery()
|
|
|
+ .eq(SysUserSub::getUserId, userId));
|
|
|
+ if (CollUtil.isNotEmpty(userSubList)) {
|
|
|
+ // 封装请求数据
|
|
|
+ GigSignCertRequest request = new GigSignCertRequest();
|
|
|
+ Map<GigTypeEnum, GigInfoModel> gigInfo = MapUtil.newHashMap(4);
|
|
|
+ userSubList.forEach(userSub -> {
|
|
|
+ // 基础信息
|
|
|
+ GigBaseInfoModel baseInfoModel = new GigBaseInfoModel();
|
|
|
+ baseInfoModel.setGigType(userSub.getGigType());
|
|
|
+ baseInfoModel.setGigChannel(userSub.getGigChannel());
|
|
|
+ baseInfoModel.setAgreement(userSub.getAgreementUrl());
|
|
|
+ // 用户信息
|
|
|
+ GigUserInfoModel userInfoModel = new GigUserInfoModel();
|
|
|
+ userInfoModel.setUserId(userId);
|
|
|
+ userInfoModel.setName(sysUser.getRealname());
|
|
|
+ userInfoModel.setPhone(sysUser.getUsername());
|
|
|
+ userInfoModel.setBankPhone(userSub.getBankPhone());
|
|
|
+ userInfoModel.setBankCard(userSub.getBankCardNumber());
|
|
|
+
|
|
|
+ GigInfoModel infoModel = new GigInfoModel();
|
|
|
+ infoModel.setBaseInfo(baseInfoModel);
|
|
|
+ infoModel.setUserInfo(userInfoModel);
|
|
|
+ gigInfo.put(userSub.getGigType(), infoModel);
|
|
|
+ request.setInfo(gigInfo);
|
|
|
+ });
|
|
|
+ // 发送mq
|
|
|
+ rabbitMqClient.sendMessage(MqConstants.DIRECT_MODE_GIG_SIGN_CERT_QUEUE, JSONUtil.toJsonStr(request));
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+}
|