|
@@ -1,5 +1,6 @@
|
|
|
package com.qunzhixinxi.hnqz.admin.controller;
|
|
|
|
|
|
+import cn.hutool.core.date.LocalDateTimeUtil;
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
@@ -9,6 +10,7 @@ import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysSocialDetails;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.UserAgreementSignatureRecord;
|
|
|
import com.qunzhixinxi.hnqz.admin.config.TaxNotifyConfig;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.SysCertResultRecord;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.SysDeptSub;
|
|
@@ -18,10 +20,12 @@ import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.SubjectTypeEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.SysCertResultRecordMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.SysSocialDetailsMapper;
|
|
|
+import com.qunzhixinxi.hnqz.admin.mapper.UserAgreementSignatureRecordMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.*;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.retry.PartyARetryService;
|
|
|
import com.qunzhixinxi.hnqz.common.core.constant.enums.LoginTypeEnum;
|
|
|
import com.qunzhixinxi.hnqz.common.core.util.R;
|
|
|
+import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
|
|
|
import com.qunzhixinxi.hnqz.common.security.annotation.Inner;
|
|
|
import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
|
|
|
import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
|
|
@@ -33,12 +37,16 @@ import com.qunzhixinxi.hnqz.common.taxhelper.entity.model.TaxHelperBindingCardCo
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.model.TaxHelperBindingCardVerificationModel;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.model.TaxHelperECheckModel;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.model.TaxHelperEidTokenModel;
|
|
|
+import com.qunzhixinxi.hnqz.common.taxhelper.entity.model.TaxHelperGetUserAgreementModel;
|
|
|
+import com.qunzhixinxi.hnqz.common.taxhelper.entity.model.TaxHelperUserAgreementAuthorizationModel;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperAddMemberRequest;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperAppletBizTokenRequest;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperBindingCardConfirmRequest;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperBindingCardVerificationRequest;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperECheckRequest;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperEidTokenRequest;
|
|
|
+import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperGetUserAgreementRequest;
|
|
|
+import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperUserAgreementAuthorizationRequest;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.response.TaxHelperResponse;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.vo.TaxHelperAddMemberVo;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.vo.TaxHelperBingCardConfirmVo;
|
|
@@ -96,6 +104,7 @@ public class WmTaxHelperController {
|
|
|
private final WmScorePackageSettleNoteService settleNoteService;
|
|
|
private final SysDeptSubService sysDeptSubService;
|
|
|
private final PartyARetryService partyARetryService;
|
|
|
+ private final UserAgreementSignatureRecordMapper userAgreementSignatureRecordMapper;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -104,7 +113,7 @@ public class WmTaxHelperController {
|
|
|
* @param vo 税邦云增员vo
|
|
|
* @return 返回增员结果
|
|
|
*/
|
|
|
-
|
|
|
+ @SysLog(value = "税邦云增员")
|
|
|
@PostMapping(value = "/addMember")
|
|
|
public R taxHelperAddMember(@RequestBody TaxHelperAddMemberVo vo) {
|
|
|
|
|
@@ -178,11 +187,124 @@ public class WmTaxHelperController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 回传用户协议授权信息
|
|
|
+ *
|
|
|
+ * @return 回传结果
|
|
|
+ */
|
|
|
+ @SysLog(value = "税邦云回传用户协议授权信息")
|
|
|
+ @PostMapping(value = "/agreement-signature")
|
|
|
+ public R<?> userAgreementAuthorization() {
|
|
|
+ HnqzUser hnqzUser = SecurityUtils.getUser();
|
|
|
+
|
|
|
+ // 判断当前用户是否已经存在回调操作,避免同时多次回调
|
|
|
+ String cacheKey = CacheConstants.TAX_HELPER_CHECK_FACE_NOTIFY_KEY + hnqzUser.getId();
|
|
|
+ if (redisTemplate.hasKey(cacheKey)) {
|
|
|
+ log.error("当前用户:{},正在处理回调操作。", hnqzUser.getId());
|
|
|
+ R.failed("系统正在处理,请稍后");
|
|
|
+ } else {
|
|
|
+ // 加锁
|
|
|
+ redisTemplate.opsForValue().set(cacheKey, IdUtil.fastSimpleUUID(), 5, TimeUnit.SECONDS);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取用户
|
|
|
+ SysUser user = userService.getById(hnqzUser.getId());
|
|
|
+
|
|
|
+ // 校验用户是否已经签署了信息
|
|
|
+ if(user.getTaxHelperAgreementSignature() == 0){
|
|
|
+ return R.ok("已经签署");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取结算主体
|
|
|
+ SysDept dept = deptService.getById(user.getDeptId());
|
|
|
+
|
|
|
+ SysDeptSub query = new SysDeptSub();
|
|
|
+ query.setDeptId(user.getDeptId());
|
|
|
+ query.setSubjectType(SubjectTypeEnum.TYPE_SHUIBANGYUN.getCode());
|
|
|
+ query.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
|
|
|
+ SysDeptSub deptSub = sysDeptSubService.getOne(Wrappers.query(query));
|
|
|
+ if (null != deptSub && StringUtils.isNotEmpty(deptSub.getAppId())) {
|
|
|
+ TaxHelperConfig config = new TaxHelperConfig();
|
|
|
+ config.setAppId(deptSub.getAppId());
|
|
|
+ config.setAppSecrete(deptSub.getAppSecret());
|
|
|
+ config.setQueryUrl(deptSub.getQueryUrl());
|
|
|
+
|
|
|
+ // 获取
|
|
|
+ TaxHelperGetUserAgreementModel getUserAgreementModel = new TaxHelperGetUserAgreementModel(config);
|
|
|
+ getUserAgreementModel.setEnterpriseCode(dept.getTaxCode());
|
|
|
+ TaxHelperGetUserAgreementRequest getUserAgreementRequest = new TaxHelperGetUserAgreementRequest(getUserAgreementModel);
|
|
|
+ TaxHelperResponse userAgreement = taxHelperService.getUserAgreement(getUserAgreementRequest);
|
|
|
+
|
|
|
+ // 记录认证结果
|
|
|
+ SysCertResultRecord record = new SysCertResultRecord();
|
|
|
+ record.setCode(userAgreement.getCode());
|
|
|
+ record.setCreateTime(LocalDateTime.now());
|
|
|
+ record.setDeptId(dept.getDeptId());
|
|
|
+ record.setMessage(StringUtils.isNotEmpty(userAgreement.getMessage()) ? userAgreement.getMessage() : "无");
|
|
|
+ record.setStatus(StringUtils.isNotEmpty(userAgreement.getData()) ? userAgreement.getData() : null);
|
|
|
+ record.setSubjectType(1);
|
|
|
+ record.setMethod("税邦云用户协议");
|
|
|
+ record.setUserId(user.getUserId());
|
|
|
+ sysCertResultRecordMapper.insert(record);
|
|
|
+
|
|
|
+
|
|
|
+ if (!userAgreement.success()){
|
|
|
+ return R.failed(userAgreement);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //
|
|
|
+ TaxHelperUserAgreementAuthorizationModel model = new TaxHelperUserAgreementAuthorizationModel(config);
|
|
|
+ model.setEnterpriseCode(dept.getTaxCode());
|
|
|
+ LocalDateTime signTime = LocalDateTime.now();
|
|
|
+ model.setAuthorizationTime(LocalDateTimeUtil.format(signTime, CommonConstants.DEFAULT_DATE_TIME_FORMAT_PATTERN));
|
|
|
+ model.setIdCard(user.getIdCardNumber());
|
|
|
+
|
|
|
+ TaxHelperUserAgreementAuthorizationRequest request = new TaxHelperUserAgreementAuthorizationRequest(model);
|
|
|
+ TaxHelperResponse response = taxHelperService.userAgreementAuthorization(request);
|
|
|
+
|
|
|
+ // 记录认证结果
|
|
|
+ record.setCode(response.getCode());
|
|
|
+ record.setCreateTime(LocalDateTime.now());
|
|
|
+ record.setDeptId(dept.getDeptId());
|
|
|
+ record.setMessage(StringUtils.isNotEmpty(response.getMessage()) ? response.getMessage() : "无");
|
|
|
+ record.setStatus(StringUtils.isNotEmpty(response.getData()) ? response.getData() : null);
|
|
|
+ record.setSubjectType(1);
|
|
|
+ record.setMethod("税邦云回传用户协议授权信息");
|
|
|
+ record.setUserId(user.getUserId());
|
|
|
+ sysCertResultRecordMapper.insert(record);
|
|
|
+
|
|
|
+ if (response.success()) {
|
|
|
+ // 签署协议
|
|
|
+ UserAgreementSignatureRecord uasr = new UserAgreementSignatureRecord();
|
|
|
+ uasr.setAgreement(userAgreement.getData());
|
|
|
+ uasr.setUserId(user.getUserId());
|
|
|
+ uasr.setCreateTime(LocalDateTime.now());
|
|
|
+ uasr.setTarget(1);
|
|
|
+ uasr.setSignTime(signTime);
|
|
|
+ userAgreementSignatureRecordMapper.insert(uasr);
|
|
|
+
|
|
|
+
|
|
|
+ // 修改用户状态
|
|
|
+ user.setUpdateTime(LocalDateTime.now());
|
|
|
+ user.setTaxHelperAgreementSignature(1);
|
|
|
+ userService.updateById(user);
|
|
|
+
|
|
|
+
|
|
|
+ return R.ok(response);
|
|
|
+ }
|
|
|
+ return R.failed(response);
|
|
|
+ }
|
|
|
+ return R.failed("该结算主体信息不全,不支持税邦云操作");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取税邦云E证通认证token
|
|
|
*
|
|
|
* @return 返回获取结果
|
|
|
*/
|
|
|
+ @SysLog(value = "获取税邦云E证通认证token")
|
|
|
@GetMapping(value = "/e-token")
|
|
|
public R taxHelperECheckToken() {
|
|
|
|
|
@@ -272,6 +394,7 @@ public class WmTaxHelperController {
|
|
|
*
|
|
|
* @return 回调结果
|
|
|
*/
|
|
|
+ @SysLog(value = "E证通回调")
|
|
|
@GetMapping(value = "/e-check-result")
|
|
|
public R taxHelperECheckFaceNotify(@RequestParam String eCheckToken) {
|
|
|
|
|
@@ -377,6 +500,7 @@ public class WmTaxHelperController {
|
|
|
*
|
|
|
* @return 返回获取结果
|
|
|
*/
|
|
|
+ @SysLog(value = "获取税邦云认证token")
|
|
|
@GetMapping(value = "/bizToken")
|
|
|
public R taxHelperAppletBizToken() {
|
|
|
|
|
@@ -583,6 +707,7 @@ public class WmTaxHelperController {
|
|
|
* @param phone 手机号
|
|
|
* @return 获取信息
|
|
|
*/
|
|
|
+ @SysLog(value = "获取税邦云绑卡验证码")
|
|
|
@GetMapping(value = "/bindingCardVerification")
|
|
|
public R bindingCardVerification(@RequestParam(value = "payAccount") String payAccount,
|
|
|
@RequestParam(value = "phone") String phone) {
|
|
@@ -643,6 +768,7 @@ public class WmTaxHelperController {
|
|
|
* @param vo 绑卡确认vo
|
|
|
* @return 获取信息
|
|
|
*/
|
|
|
+ @SysLog(value = "绑卡确认")
|
|
|
@PostMapping(value = "/bindingCardConfirm")
|
|
|
public R bindingCardVerification(@RequestBody TaxHelperBingCardConfirmVo vo) {
|
|
|
|