|
@@ -1,6 +1,7 @@
|
|
package com.qunzhixinxi.hnqz.admin.mq;
|
|
package com.qunzhixinxi.hnqz.admin.mq;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.json.JSONObject;
|
|
import cn.hutool.json.JSONObject;
|
|
import cn.hutool.json.JSONUtil;
|
|
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.GigCallBackStatus;
|
|
import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
|
|
import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
|
|
import com.qunzhixinxi.hnqz.admin.enums.LockEnum;
|
|
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.RenlijiaCertStatus;
|
|
import com.qunzhixinxi.hnqz.admin.enums.YeeCertStatus;
|
|
import com.qunzhixinxi.hnqz.admin.enums.YeeCertStatus;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
|
|
@@ -36,6 +38,7 @@ import org.springframework.messaging.handler.annotation.Header;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -55,109 +58,189 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
|
|
|
|
|
|
private final RedisTemplate redisTemplate;
|
|
private final RedisTemplate redisTemplate;
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 税邦云成功code
|
|
|
|
+ */
|
|
|
|
+ private static final String TAXHELPER_SUCCESS_CODE = "2000";
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 易联成功code
|
|
|
|
+ */
|
|
|
|
+ private static final String YEE_SUCCESS_CODE = "200";
|
|
|
|
+
|
|
@RabbitHandler
|
|
@RabbitHandler
|
|
public void onMessage(String jsonStr, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
|
|
public void onMessage(String jsonStr, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
|
|
super.onMessage(jsonStr, deliveryTag, channel, (MqListener<String>) (String result, Channel channel1) -> {
|
|
super.onMessage(jsonStr, deliveryTag, channel, (MqListener<String>) (String result, Channel channel1) -> {
|
|
|
|
|
|
log.info("直接队列:接收用户签约认证的结果,手动ACK,接收消息TAG:{},消息内容:{}", deliveryTag, result);
|
|
log.info("直接队列:接收用户签约认证的结果,手动ACK,接收消息TAG:{},消息内容:{}", deliveryTag, result);
|
|
|
|
|
|
|
|
+// Map<String, String> resMap = MapUtil.newHashMap(2);
|
|
|
|
+
|
|
JSONObject jsonResult = JSONUtil.parseObj(result);
|
|
JSONObject jsonResult = JSONUtil.parseObj(result);
|
|
String username = jsonResult.getStr("username");
|
|
String username = jsonResult.getStr("username");
|
|
String entpriseCode = jsonResult.getStr("enterpriseCode");
|
|
String entpriseCode = jsonResult.getStr("enterpriseCode");
|
|
-
|
|
|
|
JSONObject subjectTypes = jsonResult.getJSONObject("subjectTypes");
|
|
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
|
|
// 加redis锁 TODO
|
|
// redisTemplate.opsForValue().setIfAbsent()
|
|
// 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;
|
|
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);
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|