Преглед изворни кода

feat: 认证绑卡mq修改

lixuesong пре 3 година
родитељ
комит
594b00fe9b

+ 5 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/CacheConstants.java

@@ -100,4 +100,9 @@ public interface CacheConstants {
 	 */
 	String USER_SIGN_CERT_RESPONSE_KEY = "USER::SIGN::CERT::RESPONSE::KEY::";
 
+	/**
+	 * 绑卡换绑的新银行卡号
+	 */
+	String BIND_CARD_CONFIRM_NEW_BANK_CARD = "BIND::CARD::CONFIRM::NEW::BANK::CARD::";
+
 }

+ 4 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/dto/UserSignCertDTO.java

@@ -3,6 +3,7 @@ package com.qunzhixinxi.hnqz.admin.entity.dto;
 import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
 import lombok.Data;
 
+import java.io.Serializable;
 import java.util.List;
 
 /**
@@ -12,7 +13,9 @@ import java.util.List;
  * @date 2022年03月03日 15:28
  */
 @Data
-public class UserSignCertDTO {
+public class UserSignCertDTO implements Serializable {
+
+	private static final long serialVersionUID = 5494145502730380527L;
 
 	/**
 	 * 用户id

+ 17 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mq/GigSignCertReceiver.java

@@ -11,6 +11,7 @@ import com.qunzhixinxi.hnqz.admin.api.constant.MqConstants;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 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.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
 import com.qunzhixinxi.hnqz.admin.enums.LockEnum;
@@ -83,7 +84,7 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 						subjectTypes.forEach((s, o) -> {
 							GigTypeEnum gigTypeEnum = Enum.valueOf(GigTypeEnum.class, s);
 							JSONObject subjectResult = (JSONObject) o;
-//							String code = subjectResult.getStr("code");
+							String code = subjectResult.getStr("code");
 //							String message = subjectResult.getStr("message");
 							String certStatus = subjectResult.getStr("certStatus");
 							String stageResult = JSONUtil.toJsonStr(subjectResult.getJSONObject("stageResult"));
@@ -96,30 +97,45 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 									.set(SysUserSub::getUpdateTime, now)
 									.set(SysUserSub::getUpdateUser, 0)
 									.set(SysUserSub::getCertRemark, stageResult);
+
+								String cacheKeyPrefix = String.format("%s_%s_", CacheConstants.BIND_CARD_CONFIRM_NEW_BANK_CARD, user.getUserId());
 							switch (gigTypeEnum) {
 								case TAX_HELPOR:
 									TaxHelperCertStatus taxHelperCertStatus = Enum.valueOf(TaxHelperCertStatus.class, certStatus);
 									updateWrapper.eq(SysUserSub::getGigType, GigTypeEnum.TAX_HELPOR);
 									updateWrapper.set(SysUserSub::getCertStatus, taxHelperCertStatus.getCode());
+									cacheKeyPrefix += GigTypeEnum.TAX_HELPOR.name();
 									break;
 								case REN_LI_JIA:
 									// TODO
 									RenlijiaCertStatus renlijiaCertStatus = Enum.valueOf(RenlijiaCertStatus.class, certStatus);
 									updateWrapper.eq(SysUserSub::getGigType, GigTypeEnum.REN_LI_JIA);
 									updateWrapper.set(SysUserSub::getCertStatus, renlijiaCertStatus.getCode());
+									cacheKeyPrefix += GigTypeEnum.REN_LI_JIA.name();
 									break;
 								case OLADING:
 									// TODO
+									cacheKeyPrefix += GigTypeEnum.OLADING.name();
 									break;
 								case YEE:
 									YeeCertStatus yeeCertStatus = Enum.valueOf(YeeCertStatus.class, certStatus);
 									updateWrapper.eq(SysUserSub::getGigType, GigTypeEnum.YEE);
 									updateWrapper.set(SysUserSub::getCertStatus, yeeCertStatus.getCode());
+									cacheKeyPrefix += GigTypeEnum.YEE.name();
 									break;
 								default:
 							}
+							if ("2000".equals(code)) {
+								// 成功并且是换绑卡的情况,则更新银行卡号
+								UserSignCertDTO userSignCertDTO = (UserSignCertDTO) redisTemplate.opsForValue().get(cacheKeyPrefix);
+								if (userSignCertDTO != null && StrUtil.isNotBlank(userSignCertDTO.getBankCardNumber())) {
+									updateWrapper.set(SysUserSub::getBankCardNumber, userSignCertDTO.getBankCardNumber());
+								}
+							}
 							// 更新
 							sysUserSubService.update(updateWrapper);
+							// redis删除银行卡号
+							redisTemplate.delete(cacheKeyPrefix);
 						});
 
 						// 本次结果存入redis

+ 32 - 28
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/impl/SysUserSignCertServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
 import com.qunzhixinxi.hnqz.admin.api.constant.MqConstants;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
@@ -36,6 +37,7 @@ import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import com.qunzhixinxi.hnqz.common.taxhelper.enums.TaxHelperCertStatus;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -66,6 +68,8 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 
 	private final TaxNotifyConfig taxNotifyConfig;
 
+	private final RedisTemplate redisTemplate;
+
 	/**
 	 * 查询用户签约认证信息
 	 *
@@ -312,7 +316,9 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				gigInfo.put(userSub.getGigType().name(), infoModel);
 			});
 			// 发送mq
-			rabbitMqClient.sendMessage(MqConstants.DIRECT_MODE_GIG_SIGN_CERT_QUEUE, JSONUtil.toJsonStr(gigInfo));
+			if (CollUtil.isNotEmpty(gigInfo)) {
+				rabbitMqClient.sendMessage(MqConstants.DIRECT_MODE_GIG_SIGN_CERT_QUEUE, JSONUtil.toJsonStr(gigInfo));
+			}
 			return true;
 		}
 		return false;
@@ -382,30 +388,25 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 		}
 		BaseMap gigInfo = new BaseMap();
 		userSubList.forEach(userSub -> {
-			// 更新银行预留手机号 TODO 改为回调之后更新手机号和银行卡
-//			SysUserSub updateUserSub = new SysUserSub();
-//			updateUserSub.setId(userSub.getId());
-//			updateUserSub.setBankPhone(userSignCertDTO.getBankPhone());
-//			updateUserSub.setBankCardNumber(userSignCertDTO.getBankCardNumber());
-//			sysUserSubService.updateById(updateUserSub);
-//			if (StrUtil.isNotBlank(userSignCertDTO.getBankPhone())) {
-//				userSub.setBankPhone(userSignCertDTO.getBankPhone());
-//			}
-//			if (StrUtil.isNotBlank(userSignCertDTO.getBankCardNumber())) {
-//				userSub.setBankCardNumber(userSignCertDTO.getBankCardNumber());
-//			}
+			// 新银行卡号缓存到redis
+			String cacheKey = String.format("%s_%s_%s", CacheConstants.BIND_CARD_CONFIRM_NEW_BANK_CARD, userSub.getUserId(), userSub.getGigType().name());
+			redisTemplate.opsForValue().set(cacheKey, userSignCertDTO);
+
 			// 查询user
 			SysUser sysUser = sysUserService.getById(userSignCertDTO.getUserId());
 			// 查询dept
 			SysDept dept = sysDeptService.getById(sysUser.getDeptId());
 			// 封装请求数据
 			if (GigTypeEnum.TAX_HELPOR.equals(userSub.getGigType())) {
-				gigInfo.put(userSub.getGigType().name(), this.buildTaxHelperBindCardConfirmModel(sysUser, userSub, dept, userSignCertDTO.getVerifyCode()));
+				gigInfo.put(userSub.getGigType().name(),
+						this.buildTaxHelperBindCardConfirmModel(sysUser, userSub, dept.getTaxCode(), userSignCertDTO.getBankCardNumber(), userSignCertDTO.getVerifyCode()));
 			} else if (GigTypeEnum.YEE.equals(userSub.getGigType())) {
-				gigInfo.put(userSub.getGigType().name(), this.buildYeeBindCardConfirmModel(sysUser, userSub, dept));
+				gigInfo.put(userSub.getGigType().name(),
+						this.buildYeeBindCardConfirmModel(sysUser, userSub, dept.getTaxCode(), userSignCertDTO.getBankCardNumber()));
 			} else if (GigTypeEnum.OLADING.equals(userSub.getGigType())) {
 				// TODO
-				gigInfo.put(userSub.getGigType().name(), this.buildOladingBindCardConfirmModel(sysUser, userSub, dept));
+				gigInfo.put(userSub.getGigType().name(),
+						this.buildOladingBindCardConfirmModel(sysUser, userSub, dept.getTaxCode(), userSignCertDTO.getBankCardNumber()));
 			}
 		});
 
@@ -420,11 +421,12 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 	 *
 	 * @param sysUser
 	 * @param userSub
-	 * @param dept
+	 * @param taxCode
+	 * @param newBankCard
 	 * @param verifyCode
 	 * @return
 	 */
-	private GigInfoModel buildTaxHelperBindCardConfirmModel(SysUser sysUser, SysUserSub userSub, SysDept dept, String verifyCode) {
+	private GigInfoModel buildTaxHelperBindCardConfirmModel(SysUser sysUser, SysUserSub userSub, String taxCode, String newBankCard, String verifyCode) {
 		// 基础信息
 		GigBaseInfoModel baseInfoModel = new GigBaseInfoModel();
 		baseInfoModel.setGigType(userSub.getGigType());
@@ -435,11 +437,11 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 		GigUserInfoModel userInfoModel = new GigUserInfoModel();
 		userInfoModel.setName(sysUser.getRealname());
 		userInfoModel.setUsername(sysUser.getUsername());
-		userInfoModel.setEntCode(dept.getTaxCode());
+		userInfoModel.setEntCode(taxCode);
 		userInfoModel.setIdCard(sysUser.getIdCardNumber());
 		userInfoModel.setBankPhone(userSub.getBankPhone());
 		userInfoModel.setBankCard(userSub.getBankCardNumber());
-		userInfoModel.setNewBankCard(userSub.getBankCardNumber());
+		userInfoModel.setNewBankCard(newBankCard);
 		userInfoModel.setAddress("北京市-房山区-长阳镇");
 
 		GigInfoModel infoModel = new GigInfoModel();
@@ -454,10 +456,11 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 	 *
 	 * @param sysUser
 	 * @param userSub
-	 * @param dept
+	 * @param taxCode
+	 * @param newBankCard
 	 * @return
 	 */
-	private GigInfoModel buildYeeBindCardConfirmModel(SysUser sysUser, SysUserSub userSub, SysDept dept) {
+	private GigInfoModel buildYeeBindCardConfirmModel(SysUser sysUser, SysUserSub userSub, String taxCode, String newBankCard) {
 		// 基础信息
 		GigBaseInfoModel baseInfoModel = new GigBaseInfoModel();
 		baseInfoModel.setGigChannel(userSub.getGigChannel());
@@ -466,11 +469,11 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 		GigUserInfoModel userInfoModel = new GigUserInfoModel();
 		userInfoModel.setName(sysUser.getRealname());
 		userInfoModel.setUsername(sysUser.getUsername());
-		userInfoModel.setEntCode(dept.getTaxCode());
+		userInfoModel.setEntCode(taxCode);
 		userInfoModel.setIdCard(sysUser.getIdCardNumber());
 		userInfoModel.setBankPhone(userSub.getBankPhone());
 		userInfoModel.setBankCard(userSub.getBankCardNumber());
-		userInfoModel.setNewBankCard(userSub.getBankCardNumber());
+		userInfoModel.setNewBankCard(newBankCard);
 		userInfoModel.setAddress("北京市-房山区-长阳镇");
 
 		GigInfoModel infoModel = new GigInfoModel();
@@ -485,10 +488,11 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 	 *
 	 * @param sysUser
 	 * @param userSub
-	 * @param dept
+	 * @param taxCode
+	 * @param newBankCard
 	 * @return
 	 */
-	private GigInfoModel buildOladingBindCardConfirmModel(SysUser sysUser, SysUserSub userSub, SysDept dept) {
+	private GigInfoModel buildOladingBindCardConfirmModel(SysUser sysUser, SysUserSub userSub, String taxCode, String newBankCard) {
 		// 基础信息
 		GigBaseInfoModel baseInfoModel = new GigBaseInfoModel();
 		baseInfoModel.setGigChannel(userSub.getGigChannel());
@@ -497,11 +501,11 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 		GigUserInfoModel userInfoModel = new GigUserInfoModel();
 		userInfoModel.setName(sysUser.getRealname());
 		userInfoModel.setUsername(sysUser.getUsername());
-		userInfoModel.setEntCode(dept.getTaxCode());
+		userInfoModel.setEntCode(taxCode);
 		userInfoModel.setIdCard(sysUser.getIdCardNumber());
 		userInfoModel.setBankPhone(userSub.getBankPhone());
 		userInfoModel.setBankCard(userSub.getBankCardNumber());
-		userInfoModel.setNewBankCard(userSub.getBankCardNumber());
+		userInfoModel.setNewBankCard(newBankCard);
 		userInfoModel.setAddress("北京市-房山区-长阳镇");
 
 		GigInfoModel infoModel = new GigInfoModel();