|
@@ -19,10 +19,10 @@ 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.YeeCertStatus;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
|
|
|
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.annotation.RabbitMqComponent;
|
|
|
import com.qunzhixinxi.hnqz.common.rabbitmq.core.BaseRabbiMqHandler;
|
|
|
import com.qunzhixinxi.hnqz.common.rabbitmq.listenter.MqListener;
|
|
@@ -37,8 +37,6 @@ import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.messaging.handler.annotation.Header;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
@@ -58,8 +56,6 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
|
|
|
|
|
|
private final SysUserSubService sysUserSubService;
|
|
|
|
|
|
- private final SysUserSignCertService sysUserSignCertService;
|
|
|
-
|
|
|
private final RedisTemplate redisTemplate;
|
|
|
|
|
|
/**
|
|
@@ -72,9 +68,9 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
|
|
|
*/
|
|
|
private static final String YEE_SUCCESS_CODE = "200";
|
|
|
|
|
|
- @RabbitHandler
|
|
|
- public void onMessage(String jsonStr, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
|
|
|
- super.onMessageAck(jsonStr, deliveryTag, channel, (MqListener<String>) (String result, Channel channel1) -> {
|
|
|
+ @RabbitHandler
|
|
|
+ public void onMessage(String jsonStr, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
|
|
|
+ super.onMessageAck(jsonStr, deliveryTag, channel, (MqListener<String>) (String result, Channel channel1) -> {
|
|
|
|
|
|
log.info("直接队列:接收用户签约认证的结果,手动ACK,接收消息TAG:{},消息内容:{}", deliveryTag, result);
|
|
|
|
|
@@ -105,14 +101,14 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
|
|
|
.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;
|
|
|
+ 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:
|
|
@@ -128,8 +124,10 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
|
|
|
this.oladingHandler(user, dept, subjectResult);
|
|
|
break;
|
|
|
case YEE:
|
|
|
-// yeeHandler(user, dept, subjectResult);
|
|
|
- break;
|
|
|
+ yeeHandler(user, dept, subjectResult);
|
|
|
+ // 本次结果存入redis
|
|
|
+ redisTemplate.opsForValue().set(CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + user.getUserId(),
|
|
|
+ JSONUtil.toJsonStr(subjectTypes), 1, TimeUnit.MINUTES);
|
|
|
default:
|
|
|
}
|
|
|
});
|
|
@@ -143,8 +141,8 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
|
|
|
}
|
|
|
|
|
|
return resMap;
|
|
|
- });
|
|
|
- }
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 税邦云数据处理
|
|
@@ -209,54 +207,35 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
|
|
|
* @param subjectResult
|
|
|
*/
|
|
|
private void yeeHandler(SysUser user, SysDept dept, JSONObject subjectResult) {
|
|
|
+ String code = subjectResult.getStr("code");
|
|
|
String certStatus = subjectResult.getStr("certStatus");
|
|
|
- String uploadTaxPayerAgreementStatus = subjectResult.getStr("uploadTaxPayerAgreementStatus");
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
+ YeeCertStatus yeeCertStatus = Enum.valueOf(YeeCertStatus.class, certStatus);
|
|
|
|
|
|
- // 查询当前认证状态
|
|
|
- SysUserSub userSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
|
|
|
- .eq(SysUserSub::getDeptId, dept.getDeptId())
|
|
|
- .eq(SysUserSub::getUserId, user.getUserId())
|
|
|
- .eq(SysUserSub::getGigType, GigTypeEnum.YEE));
|
|
|
// 拼接更新条件
|
|
|
LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.<SysUserSub>lambdaUpdate()
|
|
|
.eq(SysUserSub::getUserId, user.getUserId())
|
|
|
.eq(SysUserSub::getDeptId, dept.getDeptId())
|
|
|
- .eq(SysUserSub::getGigType, GigTypeEnum.YEE)
|
|
|
+ .set(SysUserSub::getCallbackStatus, GigCallBackStatus.RETURNED)
|
|
|
.set(SysUserSub::getUpdateTime, now)
|
|
|
.set(SysUserSub::getUpdateUser, 0)
|
|
|
.set(SysUserSub::getCertRemark, JSONUtil.toJsonStr(subjectResult));
|
|
|
- // 如果是已签约并且当前不是已认证,则设置一下状态(处理阿拉丁没有回调的情况)
|
|
|
- if (OladingCommonRequest.SignUpStatus.SIGN.name().equals(certStatus)
|
|
|
- && !OladingCertStatus.CERT.getCode().equals(String.valueOf(userSub.getCertStatus()))) {
|
|
|
- // 如果是已上传协议成功,则设置为已认证,否则还是已签约
|
|
|
- SysUser updateUser = new SysUser();
|
|
|
- Map<String, String> subMap = new HashMap<>();
|
|
|
- if (OladingCommonRequest.UploadTaxpayerAgreementStatus.SUCCESS.name().equals(uploadTaxPayerAgreementStatus)) {
|
|
|
- updateWrapper.set(SysUserSub::getCertStatus, Integer.parseInt(OladingCertStatus.CERT.getCode()));
|
|
|
- subMap.put("certStatus", OladingCertStatus.CERT.name());
|
|
|
- } else {
|
|
|
- updateWrapper.set(SysUserSub::getCertStatus, Integer.parseInt(OladingCertStatus.SIGNED.getCode()));
|
|
|
- subMap.put("certStatus", OladingCertStatus.SIGNED.name());
|
|
|
+ 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);
|
|
|
}
|
|
|
- updateWrapper.set(SysUserSub::getCallbackStatus, GigCallBackStatus.RETURNED);
|
|
|
- // 修改步进状态
|
|
|
- updateUser.setUserId(user.getUserId());
|
|
|
- updateUser.setUpdateTime(now);
|
|
|
- sysUserService.updateById(updateUser);
|
|
|
- // 结果放到redis
|
|
|
- String key = CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + userSub.getUserId();
|
|
|
- Map<String, Object> result = MapUtil.newHashMap(1);
|
|
|
- result.put("YEE", subMap);
|
|
|
- redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
|
|
|
- }
|
|
|
- // 已认证,则设置回调状态
|
|
|
- if (OladingCertStatus.CERT.getCode().equals(String.valueOf(userSub.getCertStatus()))) {
|
|
|
- updateWrapper.set(SysUserSub::getCallbackStatus, GigCallBackStatus.RETURNED);
|
|
|
}
|
|
|
-
|
|
|
sysUserSubService.update(updateWrapper);
|
|
|
- // 如果是核身视频回调,则同步该账号的自由职家渠道认证状态 TODO
|
|
|
}
|
|
|
|
|
|
private void renlijiaHandler(SysUser user, SysDept dept, JSONObject subjectResult) {
|
|
@@ -271,111 +250,32 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
|
|
|
* @param subjectResult
|
|
|
*/
|
|
|
private void oladingHandler(SysUser user, SysDept dept, JSONObject subjectResult) {
|
|
|
-
|
|
|
- // 处理阿拉钉-海南飞亿
|
|
|
- Map<String, String> o1Map = this.oladingChannelHandler(user, dept, subjectResult, GigTypeEnum.OLADING);
|
|
|
-
|
|
|
- // 处理阿拉钉-金园数科
|
|
|
- Map<String, String> o2Map = this.oladingChannelHandler(user, dept, subjectResult, GigTypeEnum.JIN_YUAN);
|
|
|
-
|
|
|
- // 结果放到redis
|
|
|
- Map<String, Object> resultMap = new HashMap<>();
|
|
|
- if (o1Map != null) {
|
|
|
- resultMap.put(GigTypeEnum.OLADING.name(), o1Map);
|
|
|
- }
|
|
|
- if (o2Map != null) {
|
|
|
- resultMap.put(GigTypeEnum.JIN_YUAN.name(), o2Map);
|
|
|
- }
|
|
|
- if (CollUtil.isNotEmpty(resultMap)) {
|
|
|
- String key = CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + user.getUserId();
|
|
|
- // key已存在,则追加写入新的渠道的状态
|
|
|
- String qResult = (String) redisTemplate.opsForValue().get(key);
|
|
|
- if (JSONUtil.isJsonObj(qResult)) {
|
|
|
- JSONObject qResultObj = JSONUtil.parseObj(qResult);
|
|
|
- if (o1Map != null) {
|
|
|
- qResultObj.set(GigTypeEnum.OLADING.name(), o1Map);
|
|
|
- }
|
|
|
- if (o2Map != null) {
|
|
|
- qResultObj.set(GigTypeEnum.JIN_YUAN.name(), o2Map);
|
|
|
- }
|
|
|
- redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(qResultObj), 1, TimeUnit.MINUTES);
|
|
|
- } else {
|
|
|
- redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(resultMap), 1, TimeUnit.MINUTES);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- // 处理同时发起时另一个渠道需要的补发情况 TODO
|
|
|
- // 查询requestId
|
|
|
- SysUserSub userSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
|
|
|
- .eq(SysUserSub::getUserId, user.getUserId())
|
|
|
- .eq(SysUserSub::getGigType, GigTypeEnum.OLADING)
|
|
|
- .eq(SysUserSub::getCertStatus, Integer.parseInt(OladingCertStatus.CERT.getCode())));
|
|
|
- if (userSub != null) {
|
|
|
- // 查询redis是否有同时发起的标记
|
|
|
- String redisKey = CacheConstants.OLADING_SEND_BOTH_CHANNEL + userSub.getRequestId();
|
|
|
- Object userId = redisTemplate.opsForValue().get(redisKey);
|
|
|
- if (userId != null) {
|
|
|
- // 如果同一人同时存在海南飞亿、金园数科的渠道,则补发一次(由于阿拉钉同一人不同渠道的回调只有一次,所以这里需要补发)
|
|
|
- log.info("=============================补发阿拉钉另一渠道MQ4==================================");
|
|
|
- UserSignCertDTO reCertDTO = new UserSignCertDTO();
|
|
|
- reCertDTO.setUserId(userSub.getUserId());
|
|
|
- reCertDTO.setGigTypeList(Collections.singletonList(GigTypeEnum.JIN_YUAN));
|
|
|
- sysUserSignCertService.batchChannelCert(reCertDTO);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 自由职家渠道的数据处理
|
|
|
- *
|
|
|
- * @param user
|
|
|
- * @param dept
|
|
|
- * @param subjectResult
|
|
|
- * @param gigType
|
|
|
- * @return
|
|
|
- */
|
|
|
- private Map<String, String> oladingChannelHandler(SysUser user, SysDept dept, JSONObject subjectResult, GigTypeEnum gigType) {
|
|
|
String certStatus = subjectResult.getStr("certStatus");
|
|
|
- String uploadTaxPayerAgreementStatus = subjectResult.getStr("uploadTaxPayerAgreementStatus");
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
- Map<String, String> certStatusMap = new HashMap<>();
|
|
|
|
|
|
// 查询当前认证状态
|
|
|
SysUserSub userSub = sysUserSubService.getOne(Wrappers.<SysUserSub>lambdaQuery()
|
|
|
.eq(SysUserSub::getDeptId, dept.getDeptId())
|
|
|
.eq(SysUserSub::getUserId, user.getUserId())
|
|
|
.eq(SysUserSub::getCallbackStatus, GigCallBackStatus.IN_PROGRESS)
|
|
|
- .eq(SysUserSub::getGigType, gigType));
|
|
|
+ .eq(SysUserSub::getGigType, GigTypeEnum.OLADING));
|
|
|
if (userSub == null) {
|
|
|
- return null;
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
// 拼接更新条件
|
|
|
LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.<SysUserSub>lambdaUpdate()
|
|
|
.eq(SysUserSub::getUserId, user.getUserId())
|
|
|
.eq(SysUserSub::getDeptId, dept.getDeptId())
|
|
|
- .eq(SysUserSub::getGigType, gigType)
|
|
|
+ .eq(SysUserSub::getGigType, GigTypeEnum.OLADING)
|
|
|
.set(SysUserSub::getUpdateTime, now)
|
|
|
.set(SysUserSub::getUpdateUser, 0)
|
|
|
.set(SysUserSub::getCertRemark, JSONUtil.toJsonStr(subjectResult));
|
|
|
+
|
|
|
// 如果是已签约并且当前不是已认证,则设置一下状态(处理阿拉丁没有回调的情况)
|
|
|
if (OladingCommonRequest.SignUpStatus.SIGN.name().equals(certStatus)
|
|
|
&& !OladingCertStatus.CERT.getCode().equals(String.valueOf(userSub.getCertStatus()))) {
|
|
|
- // 如果是已上传协议成功,则设置为已认证,否则还是已签约
|
|
|
- SysUser updateUser = new SysUser();
|
|
|
- if (OladingCommonRequest.UploadTaxpayerAgreementStatus.SUCCESS.name().equals(uploadTaxPayerAgreementStatus)) {
|
|
|
- updateWrapper.set(SysUserSub::getCertStatus, Integer.parseInt(OladingCertStatus.CERT.getCode()));
|
|
|
- certStatusMap.put("certStatus", OladingCertStatus.CERT.name());
|
|
|
- } else {
|
|
|
- updateWrapper.set(SysUserSub::getCertStatus, Integer.parseInt(OladingCertStatus.SIGNED.getCode()));
|
|
|
- certStatusMap.put("certStatus", OladingCertStatus.SIGNED.name());
|
|
|
- }
|
|
|
updateWrapper.set(SysUserSub::getCallbackStatus, GigCallBackStatus.RETURNED);
|
|
|
- // 修改步进状态
|
|
|
- updateUser.setUserId(user.getUserId());
|
|
|
- updateUser.setUpdateTime(now);
|
|
|
- sysUserService.updateById(updateUser);
|
|
|
}
|
|
|
// 如果是签约中,则判断'阿拉丁签约方法'状态
|
|
|
if (OladingCommonRequest.SignUpStatus.SIGNING.name().equals(certStatus)) {
|
|
@@ -391,9 +291,6 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
|
|
|
}
|
|
|
|
|
|
sysUserSubService.update(updateWrapper);
|
|
|
- // 如果是核身视频回调,则同步该账号的易联-金园数科渠道认证状态 TODO
|
|
|
-
|
|
|
- return certStatusMap;
|
|
|
}
|
|
|
|
|
|
}
|