Browse Source

feat: 阿拉丁签约接口

lixuesong 3 years ago
parent
commit
87e41deda7

+ 12 - 2
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/CacheConstants.java

@@ -95,14 +95,24 @@ public interface CacheConstants {
 	 */
 	String TASK_CONTENT_DRAFT = " typeid%s:userid%s";
 
+	/**
+	 * 用户签约认证响应队列key
+	 */
+	String USER_SIGN_CERT_RESPONSE_MQ_KEY = "USER:SIGN:CERT:RESPONSE:KEY:";
+
 	/**
 	 * 用户签约认证响应结果key
 	 */
-	String USER_SIGN_CERT_RESPONSE_KEY = "USER::SIGN::CERT::RESPONSE::KEY::";
+	String USER_SIGN_CERT_RESPONSE_KEY = "USER:SIGN:CERT:RESPONSE:KEY:";
 
 	/**
 	 * 绑卡换绑的新银行卡号
 	 */
-	String BIND_CARD_CONFIRM_NEW_BANK_CARD = "BIND::CARD::CONFIRM::NEW::BANK::CARD::";
+	String BIND_CARD_CONFIRM_NEW_BANK_CARD = "BIND:CARD:CONFIRM:NEW:BANK:CARD:";
+
+	/**
+	 * 自由职家签约结果回调key
+	 */
+	String OLADING_SIGN_UP_NOTIFY_KEY = "OLADING:SIGN_UP:NOTIFY:KEY:";
 
 }

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/GigThirdApiController.java

@@ -31,7 +31,7 @@ public class GigThirdApiController {
 	private final GigThirdApiService gigThirdApiService;
 
 	/**
-	 * 自由职家签约结果回调
+	 * 自由职家签约结果回调 TODO 需要解密
 	 *
 	 * @param request
 	 * @return

+ 3 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/OladingCertStatus.java

@@ -17,8 +17,10 @@ import lombok.Getter;
 @AllArgsConstructor
 public enum OladingCertStatus {
 
+	// 签约状态
     UN_SIGNED("0", "未签约"),
-    SIGNED("1", "已签约");
+    SIGNED("1", "已签约"),
+	SIGNING("2", "签约中");
 
     private final String code;
 

+ 167 - 84
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mq/GigSignCertReceiver.java

@@ -1,6 +1,7 @@
 package com.qunzhixinxi.hnqz.admin.mq;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
@@ -16,6 +17,7 @@ import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.GigCallBackStatus;
 import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
 import com.qunzhixinxi.hnqz.admin.enums.LockEnum;
+import com.qunzhixinxi.hnqz.admin.enums.OladingCertStatus;
 import com.qunzhixinxi.hnqz.admin.enums.RenlijiaCertStatus;
 import com.qunzhixinxi.hnqz.admin.enums.YeeCertStatus;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
@@ -36,6 +38,7 @@ import org.springframework.messaging.handler.annotation.Header;
 
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -55,109 +58,189 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 
 	private final RedisTemplate redisTemplate;
 
+	/**
+	 * 税邦云成功code
+	 */
+	private static final String TAXHELPER_SUCCESS_CODE = "2000";
+
+	/**
+	 * 易联成功code
+	 */
+	private static final String YEE_SUCCESS_CODE = "200";
+
     @RabbitHandler
     public void onMessage(String jsonStr, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
         super.onMessage(jsonStr, deliveryTag, channel, (MqListener<String>) (String result, Channel channel1) -> {
 
 			log.info("直接队列:接收用户签约认证的结果,手动ACK,接收消息TAG:{},消息内容:{}", deliveryTag, result);
 
+//			Map<String, String> resMap = MapUtil.newHashMap(2);
+
 			JSONObject jsonResult = JSONUtil.parseObj(result);
 			String username = jsonResult.getStr("username");
 			String entpriseCode = jsonResult.getStr("enterpriseCode");
-
 			JSONObject subjectTypes = jsonResult.getJSONObject("subjectTypes");
-			if (StrUtil.isNotBlank(username) && StrUtil.isNotBlank(entpriseCode) && !subjectTypes.isEmpty()) {
+
+			if (StrUtil.isBlank(username) || StrUtil.isBlank(entpriseCode) || subjectTypes.isEmpty()) {
+				log.error("必传参数空!");
+				return null;
+			}
 				// 加redis锁 TODO
 //				redisTemplate.opsForValue().setIfAbsent()
 
-				List<SysDept> deptList = sysDeptService.list(Wrappers.<SysDept>lambdaQuery()
-						.eq(SysDept::getTaxCode, entpriseCode)
-						.eq(SysDept::getDelFlag, DelEnum.NOT_DEL.val())
-						.orderByDesc(SysDept::getCreateTime));
-				if (CollUtil.isNotEmpty(deptList)) {
-					SysDept dept = deptList.get(0);
-					SysUser user = sysUserService.getOne(Wrappers.<SysUser>lambdaQuery()
-							.eq(SysUser::getDeptId, dept.getDeptId())
-							.eq(SysUser::getUsername, username)
-							.eq(SysUser::getDelFlag, DelEnum.NOT_DEL.val())
-							.eq(SysUser::getLockFlag, LockEnum.UN_LOCK.val()));
-					if (user != null) {
-						// 根据不同渠道,更新对应的签约认证状态
-						subjectTypes.forEach((s, o) -> {
-							GigTypeEnum gigTypeEnum = Enum.valueOf(GigTypeEnum.class, s);
-							JSONObject subjectResult = (JSONObject) o;
-							String code = subjectResult.getStr("code");
-//							String message = subjectResult.getStr("message");
-							String certStatus = subjectResult.getStr("certStatus");
-							String stageResult = JSONUtil.toJsonStr(subjectResult.getJSONObject("stageResult"));
-
-							LocalDateTime now = LocalDateTime.now();
-							// 拼接更新条件
-							LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.<SysUserSub>lambdaUpdate()
-									.eq(SysUserSub::getUserId, user.getUserId())
-									.eq(SysUserSub::getDeptId, dept.getDeptId())
-									.set(SysUserSub::getCallbackStatus, GigCallBackStatus.RETURNED)
-									.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());
-							boolean success = false;
-							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();
-									if ("2000".equals(code)) {
-										success = true;
-									}
-									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();
-									if ("200".equals(code)) {
-										success = true;
-									}
-									break;
-								default:
-							}
-							if (success) {
-								// 成功并且是换绑卡的情况,则更新银行卡号
-								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
-						redisTemplate.opsForValue().set(CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + user.getUserId(),
-								JSONUtil.toJsonStr(subjectTypes), 1, TimeUnit.MINUTES);
-					}
+			List<SysDept> deptList = sysDeptService.list(Wrappers.<SysDept>lambdaQuery()
+					.eq(SysDept::getTaxCode, entpriseCode)
+					.eq(SysDept::getDelFlag, DelEnum.NOT_DEL.val())
+					.orderByDesc(SysDept::getCreateTime));
+			if (CollUtil.isNotEmpty(deptList)) {
+				SysDept dept = deptList.get(0);
+				SysUser user = sysUserService.getOne(Wrappers.<SysUser>lambdaQuery()
+						.eq(SysUser::getDeptId, dept.getDeptId())
+						.eq(SysUser::getUsername, username)
+						.eq(SysUser::getDelFlag, DelEnum.NOT_DEL.val())
+						.eq(SysUser::getLockFlag, LockEnum.UN_LOCK.val()));
+				if (user == null) {
+					log.error("用户不存在!");
+					return null;
 				}
+				// 根据不同渠道,更新对应的签约认证状态
+				subjectTypes.forEach((s, o) -> {
+					GigTypeEnum gigTypeEnum = Enum.valueOf(GigTypeEnum.class, s);
+					JSONObject subjectResult = (JSONObject) o;
+
+					switch (gigTypeEnum) {
+						case TAX_HELPOR:
+							taxHelperHandler(user, dept, subjectResult);
+							break;
+						case REN_LI_JIA:
+							// TODO
+							break;
+						case OLADING:
+							// TODO
+							oladingHandler(user, dept, subjectResult);
+							break;
+						case YEE:
+							yeeHandler(user, dept, subjectResult);
+							break;
+						default:
+					}
+				});
+
+				// 本次结果存入redis
+				redisTemplate.opsForValue().set(CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + user.getUserId(),
+						JSONUtil.toJsonStr(subjectTypes), 1, TimeUnit.MINUTES);
 			}
 
+//				resMap.put("key", String.format("%s_%s_%s", CacheConstants.USER_SIGN_CERT_RESPONSE_MQ_KEY, username, entpriseCode));
+//				resMap.put("res", JSONUtil.toJsonStr(subjectTypes));
+
 			return null;
         });
     }
 
+	/**
+	 * 税邦云数据处理
+	 *
+	 * @param user
+	 * @param dept
+	 * @param subjectResult
+	 */
+    private void taxHelperHandler(SysUser user, SysDept dept, JSONObject subjectResult) {
+		String code = subjectResult.getStr("code");
+		String certStatus = subjectResult.getStr("certStatus");
+		LocalDateTime now = LocalDateTime.now();
+		TaxHelperCertStatus taxHelperCertStatus = Enum.valueOf(TaxHelperCertStatus.class, certStatus);
+		// 拼接更新条件
+		LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.<SysUserSub>lambdaUpdate()
+				.eq(SysUserSub::getUserId, user.getUserId())
+				.eq(SysUserSub::getDeptId, dept.getDeptId())
+				.set(SysUserSub::getCallbackStatus, GigCallBackStatus.RETURNED)
+				.set(SysUserSub::getUpdateTime, now)
+				.set(SysUserSub::getUpdateUser, 0)
+				.set(SysUserSub::getCertRemark, JSONUtil.toJsonStr(subjectResult));
+		updateWrapper.eq(SysUserSub::getGigType, GigTypeEnum.TAX_HELPOR);
+		updateWrapper.set(SysUserSub::getCertStatus, taxHelperCertStatus.getCode());
+		if (TAXHELPER_SUCCESS_CODE.equals(code)) {
+			// 成功并且是换绑卡的情况,则更新银行卡号
+			String cacheKeyPrefix = String.format("%s_%s_%s", CacheConstants.BIND_CARD_CONFIRM_NEW_BANK_CARD,
+					user.getUserId(), GigTypeEnum.TAX_HELPOR.name());
+			UserSignCertDTO userSignCertDTO = (UserSignCertDTO) redisTemplate.opsForValue().get(cacheKeyPrefix);
+			if (userSignCertDTO != null) {
+				if (StrUtil.isNotBlank(userSignCertDTO.getBankCardNumber())) {
+					updateWrapper.set(SysUserSub::getBankCardNumber, userSignCertDTO.getBankCardNumber());
+				}
+				// redis删除银行卡号
+				redisTemplate.delete(cacheKeyPrefix);
+			}
+		}
+		sysUserSubService.update(updateWrapper);
+	}
+
+	/**
+	 * 易联数据处理
+	 *
+	 * @param user
+	 * @param dept
+	 * @param subjectResult
+	 */
+	private void yeeHandler(SysUser user, SysDept dept, JSONObject subjectResult) {
+		String code = subjectResult.getStr("code");
+		String certStatus = subjectResult.getStr("certStatus");
+		LocalDateTime now = LocalDateTime.now();
+		YeeCertStatus yeeCertStatus = Enum.valueOf(YeeCertStatus.class, certStatus);
+
+		// 拼接更新条件
+		LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.<SysUserSub>lambdaUpdate()
+				.eq(SysUserSub::getUserId, user.getUserId())
+				.eq(SysUserSub::getDeptId, dept.getDeptId())
+				.set(SysUserSub::getCallbackStatus, GigCallBackStatus.RETURNED)
+				.set(SysUserSub::getUpdateTime, now)
+				.set(SysUserSub::getUpdateUser, 0)
+				.set(SysUserSub::getCertRemark, JSONUtil.toJsonStr(subjectResult));
+		updateWrapper.eq(SysUserSub::getGigType, GigTypeEnum.YEE);
+		updateWrapper.set(SysUserSub::getCertStatus, yeeCertStatus.getCode());
+		if (YEE_SUCCESS_CODE.equals(code)) {
+			// 成功并且是换绑卡的情况,则更新银行卡号
+			String cacheKeyPrefix = String.format("%s_%s_%s", CacheConstants.BIND_CARD_CONFIRM_NEW_BANK_CARD,
+					user.getUserId(), GigTypeEnum.YEE.name());
+			UserSignCertDTO userSignCertDTO = (UserSignCertDTO) redisTemplate.opsForValue().get(cacheKeyPrefix);
+			if (userSignCertDTO != null) {
+				if (StrUtil.isNotBlank(userSignCertDTO.getBankCardNumber())) {
+					updateWrapper.set(SysUserSub::getBankCardNumber, userSignCertDTO.getBankCardNumber());
+				}
+				// redis删除银行卡号
+				redisTemplate.delete(cacheKeyPrefix);
+			}
+		}
+		sysUserSubService.update(updateWrapper);
+	}
+
+	private void renlijiaHandler(SysUser user, SysDept dept, JSONObject subjectResult) {
+		// TODO
+	}
+
+	/**
+	 * 自由职家数据处理
+	 *
+	 * @param user
+	 * @param dept
+	 * @param subjectResult
+	 */
+	private void oladingHandler(SysUser user, SysDept dept, JSONObject subjectResult) {
+		String certStatus = subjectResult.getStr("certStatus");
+		LocalDateTime now = LocalDateTime.now();
+		OladingCertStatus oladingCertStatus = Enum.valueOf(OladingCertStatus.class, certStatus);
+
+		// 拼接更新条件
+		LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.<SysUserSub>lambdaUpdate()
+				.eq(SysUserSub::getUserId, user.getUserId())
+				.eq(SysUserSub::getDeptId, dept.getDeptId())
+				.set(SysUserSub::getUpdateTime, now)
+				.set(SysUserSub::getUpdateUser, 0)
+				.set(SysUserSub::getCertRemark, JSONUtil.toJsonStr(subjectResult));
+		updateWrapper.eq(SysUserSub::getGigType, GigTypeEnum.OLADING);
+		updateWrapper.set(SysUserSub::getCertStatus, oladingCertStatus.getCode());
+		sysUserSubService.update(updateWrapper);
+	}
 
 }

+ 20 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/impl/GigThirdApiServiceImpl.java

@@ -1,17 +1,22 @@
 package com.qunzhixinxi.hnqz.admin.service.gig.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
 import com.qunzhixinxi.hnqz.admin.entity.SysUserSub;
 import com.qunzhixinxi.hnqz.admin.entity.model.GigOladingSignUpRequest;
 import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
+import com.qunzhixinxi.hnqz.admin.enums.OladingCertStatus;
 import com.qunzhixinxi.hnqz.admin.service.SysUserSubService;
 import com.qunzhixinxi.hnqz.admin.service.gig.GigThirdApiService;
 import com.qunzhixinxi.hnqz.common.core.exception.ValidateCodeException;
 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;
 
+import java.util.concurrent.TimeUnit;
+
 /**
  * @author lixuesong
  * @date 2022年04月17日 11:55
@@ -23,6 +28,8 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 
 	private final SysUserSubService sysUserSubService;
 
+	private final RedisTemplate redisTemplate;
+
 	/**
 	 * 自由职家签约结果回调
 	 *
@@ -32,6 +39,12 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void oladingSignUpNotify(String requestId, GigOladingSignUpRequest.CertStatus status) {
+		String redisKey = CacheConstants.OLADING_SIGN_UP_NOTIFY_KEY + requestId;
+		Boolean absent = redisTemplate.opsForValue().setIfAbsent(redisKey, status.getCode(), 5, TimeUnit.SECONDS);
+		if (!absent) {
+			log.error("存在在途操作{}", requestId);
+			throw new ValidateCodeException("存在在途操作");
+		}
 		try {
 			// 先查询requestId是否存在
 			SysUserSub userSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
@@ -40,12 +53,19 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 			if (userSub == null) {
 				throw new ValidateCodeException("requestId不存在");
 			}
+			if (OladingCertStatus.SIGNED.getCode().equals(String.valueOf(userSub.getCertStatus()))) {
+				throw new ValidateCodeException("已回调");
+			}
 			// 更新状态
 			userSub.setCertStatus(status.getCode());
 			sysUserSubService.updateById(userSub);
+
+			// 如果成功,则发送证照上传MQ
 		} catch (Exception e) {
 			log.error("自由职家签约结果回调异常", e);
 			throw new ValidateCodeException("业务处理异常");
+		} finally {
+			redisTemplate.delete(redisKey);
 		}
 	}
 }

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

@@ -337,53 +337,56 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 						}
 						return false;
 					}).forEach(userSub -> {
-				// 基础信息
-				GigBaseInfoModel baseInfoModel = new GigBaseInfoModel();
-				baseInfoModel.setRequestId(IdUtil.fastSimpleUUID());
-				baseInfoModel.setGigType(userSub.getGigType());
-				baseInfoModel.setGigChannel(userSub.getGigChannel());
-				// 用户信息
-				GigUserInfoModel userInfoModel = new GigUserInfoModel();
-				userInfoModel.setUserId(userId);
-				userInfoModel.setName(sysUser.getRealname());
-				userInfoModel.setUsername(sysUser.getUsername());
-				userInfoModel.setEntCode(dept.getTaxCode());
-				userInfoModel.setDeptId(sysUser.getDeptId());
-				userInfoModel.setIdCard(sysUser.getIdCardNumber());
-				userInfoModel.setIdCardType(MemberIDCardType.ID_CARD);
-				userInfoModel.setMemberType(MemberType.YAOYI_EXCLUSIVE_PERSONNEL);
-				userInfoModel.setEmail("gig_service@yaoyi.net"); // TODO
-				userInfoModel.setAddress("北京市-房山区-长阳镇");
-				userInfoModel.setPayChannel(PayChannel.BANK_CARD);
-				userInfoModel.setBankPhone(userSub.getBankPhone());
-				userInfoModel.setBankCard(userSub.getBankCardNumber());
-				userInfoModel.setIdCardFront(StrUtil.isBlank(userSub.getIdCardFrontUrl())
-						? null : userSub.getIdCardFrontUrl().startsWith("https")
-						? userSub.getIdCardFrontUrl() : upmsConfig.getClientUrl() + userSub.getIdCardFrontUrl());
-				userInfoModel.setIdCardBack(StrUtil.isBlank(userSub.getIdCardBackUrl())
-						? null : userSub.getIdCardBackUrl().startsWith("https")
-						? userSub.getIdCardBackUrl() : upmsConfig.getClientUrl() + userSub.getIdCardBackUrl());
-				userInfoModel.setCertVideo1(StrUtil.isBlank(userSub.getCertVideo1Url())
-						? null : userSub.getCertVideo1Url().startsWith("https")
-						? userSub.getCertVideo1Url() : upmsConfig.getClientUrl() + userSub.getCertVideo1Url());
-				userInfoModel.setCertVideo2(StrUtil.isBlank(userSub.getCertVideo2Url())
-						? null : userSub.getCertVideo2Url().startsWith("https")
-						? userSub.getCertVideo2Url() : upmsConfig.getClientUrl() + userSub.getCertVideo2Url());
-				userInfoModel.setSignImageUrl(StrUtil.isBlank(userSub.getAgreementUrl())
-						? null : userSub.getAgreementUrl().startsWith("https")
-						? userSub.getAgreementUrl() : upmsConfig.getClientUrl() + userSub.getAgreementUrl());
-
-				GigInfoModel infoModel = new GigInfoModel();
-				infoModel.setBaseInfo(baseInfoModel);
-				infoModel.setUserInfo(userInfoModel);
-				gigInfo.put(userSub.getGigType().name(), infoModel);
-
-				// 更新为进行中状态
-				SysUserSub updateUserSub = new SysUserSub();
-				updateUserSub.setId(userSub.getId());
-				updateUserSub.setCallbackStatus(GigCallBackStatus.IN_PROGRESS);
-				sysUserSubService.updateById(updateUserSub);
-			});
+						// 请求流水号
+						String requestId = IdUtil.fastSimpleUUID();
+						// 基础信息
+						GigBaseInfoModel baseInfoModel = new GigBaseInfoModel();
+						baseInfoModel.setRequestId(requestId);
+						baseInfoModel.setGigType(userSub.getGigType());
+						baseInfoModel.setGigChannel(userSub.getGigChannel());
+						// 用户信息
+						GigUserInfoModel userInfoModel = new GigUserInfoModel();
+						userInfoModel.setUserId(userId);
+						userInfoModel.setName(sysUser.getRealname());
+						userInfoModel.setUsername(sysUser.getUsername());
+						userInfoModel.setEntCode(dept.getTaxCode());
+						userInfoModel.setDeptId(sysUser.getDeptId());
+						userInfoModel.setIdCard(sysUser.getIdCardNumber());
+						userInfoModel.setIdCardType(MemberIDCardType.ID_CARD);
+						userInfoModel.setMemberType(MemberType.YAOYI_EXCLUSIVE_PERSONNEL);
+						userInfoModel.setEmail("gig_service@yaoyi.net"); // TODO
+						userInfoModel.setAddress("北京市-房山区-长阳镇");
+						userInfoModel.setPayChannel(PayChannel.BANK_CARD);
+						userInfoModel.setBankPhone(userSub.getBankPhone());
+						userInfoModel.setBankCard(userSub.getBankCardNumber());
+						userInfoModel.setIdCardFront(StrUtil.isBlank(userSub.getIdCardFrontUrl())
+								? null : userSub.getIdCardFrontUrl().startsWith("https")
+								? userSub.getIdCardFrontUrl() : upmsConfig.getClientUrl() + userSub.getIdCardFrontUrl());
+						userInfoModel.setIdCardBack(StrUtil.isBlank(userSub.getIdCardBackUrl())
+								? null : userSub.getIdCardBackUrl().startsWith("https")
+								? userSub.getIdCardBackUrl() : upmsConfig.getClientUrl() + userSub.getIdCardBackUrl());
+						userInfoModel.setCertVideo1(StrUtil.isBlank(userSub.getCertVideo1Url())
+								? null : userSub.getCertVideo1Url().startsWith("https")
+								? userSub.getCertVideo1Url() : upmsConfig.getClientUrl() + userSub.getCertVideo1Url());
+						userInfoModel.setCertVideo2(StrUtil.isBlank(userSub.getCertVideo2Url())
+								? null : userSub.getCertVideo2Url().startsWith("https")
+								? userSub.getCertVideo2Url() : upmsConfig.getClientUrl() + userSub.getCertVideo2Url());
+						userInfoModel.setSignImageUrl(StrUtil.isBlank(userSub.getAgreementUrl())
+								? null : userSub.getAgreementUrl().startsWith("https")
+								? userSub.getAgreementUrl() : upmsConfig.getClientUrl() + userSub.getAgreementUrl());
+
+						GigInfoModel infoModel = new GigInfoModel();
+						infoModel.setBaseInfo(baseInfoModel);
+						infoModel.setUserInfo(userInfoModel);
+						gigInfo.put(userSub.getGigType().name(), infoModel);
+
+						// 更新为进行中状态
+						SysUserSub updateUserSub = new SysUserSub();
+						updateUserSub.setId(userSub.getId());
+						updateUserSub.setRequestId(requestId);
+						updateUserSub.setCallbackStatus(GigCallBackStatus.IN_PROGRESS);
+						sysUserSubService.updateById(updateUserSub);
+					});
 			// 发送mq
 			if (CollUtil.isNotEmpty(gigInfo)) {
 				rabbitMqClient.sendMessage(MqConstants.DIRECT_MODE_GIG_SIGN_CERT_QUEUE, JSONUtil.toJsonStr(gigInfo));