|
@@ -1,6 +1,7 @@
|
|
|
package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.date.LocalDateTimeUtil;
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -10,6 +11,7 @@ import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysUserRole;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.UserAgreementSignatureRecord;
|
|
|
import com.qunzhixinxi.hnqz.admin.config.TaxNotifyConfig;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.MonitoringIndicator;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.SysCertResultRecord;
|
|
@@ -28,6 +30,7 @@ import com.qunzhixinxi.hnqz.admin.entity.dto.ScorePackageSettleNoteDTO;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.dto.SettlementDTO;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.dto.TaxHelperAckBindingCardDTO;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.dto.TaxHelperAddMemberDTO;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.dto.TaxHelperAgreementSignatureDTO;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.dto.TaxHelperBindingCardCodeDTO;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.dto.TaxHelperTokenDTO;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.input.Record;
|
|
@@ -42,6 +45,7 @@ import com.qunzhixinxi.hnqz.admin.enums.PackageFinishStatusEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.ScorePackageStatusEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.SubjectTypeEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.SysCertResultRecordMapper;
|
|
|
+import com.qunzhixinxi.hnqz.admin.mapper.UserAgreementSignatureRecordMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.MonitoringIndicatorService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.PartyAService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
|
|
@@ -61,13 +65,17 @@ import com.qunzhixinxi.hnqz.common.taxhelper.config.TaxHelperConfig;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.model.TaxHelperAddMemberModel;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.model.TaxHelperBindingCardConfirmModel;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.model.TaxHelperBindingCardVerificationModel;
|
|
|
+import com.qunzhixinxi.hnqz.common.taxhelper.entity.model.TaxHelperGetUserAgreementModel;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.model.TaxHelperH5BizTokenModel;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.model.TaxHelperSettlementModel;
|
|
|
+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.TaxHelperBindingCardConfirmRequest;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperBindingCardVerificationRequest;
|
|
|
+import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperGetUserAgreementRequest;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperH5BizTokenRequest;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperSettlementRequest;
|
|
|
+import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperUserAgreementAuthorizationRequest;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.entity.response.TaxHelperResponse;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.enums.TaxHelperCertStatus;
|
|
|
import com.qunzhixinxi.hnqz.common.taxhelper.service.TaxHelperService;
|
|
@@ -178,6 +186,8 @@ public class PartyAServiceImpl implements PartyAService {
|
|
|
|
|
|
private final RedisTemplate redisTemplate;
|
|
|
|
|
|
+ private final UserAgreementSignatureRecordMapper userAgreementSignatureRecordMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 税邦云增员
|
|
|
*
|
|
@@ -254,6 +264,121 @@ public class PartyAServiceImpl implements PartyAService {
|
|
|
return getResultMap(CommonConstants.CLIENT_ERROR_CODE + "", response.getMessage());
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 回传用户协议授权信息
|
|
|
+ *
|
|
|
+ * @return 回传结果
|
|
|
+ */
|
|
|
+ public Map<String, String> userAgreementAuthorization(TaxHelperAgreementSignatureDTO taxHelperAgreementSignatureDTO) {
|
|
|
+
|
|
|
+ // 获取用户并校验
|
|
|
+ SysUser member = userService.getOne(Wrappers.<SysUser>query()
|
|
|
+ .eq("username", taxHelperAgreementSignatureDTO.getUsername())
|
|
|
+ .eq("dept_id", taxHelperAgreementSignatureDTO.getDeptId()));
|
|
|
+ String info = checkoutMemberInfo(member, CommonConstants.USER_AGREEMENT_SIGNATURE_METHOD);
|
|
|
+ if (StringUtils.isNotEmpty(info)) {
|
|
|
+ return getResultMap("4000", info);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验用户是否已经签署了信息
|
|
|
+ if (member.getTaxHelperAgreementSignature() == 1) {
|
|
|
+ return getResultMap("2000", "协议已签署");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取部门并校验
|
|
|
+ SysDept dept = deptService.getById(taxHelperAgreementSignatureDTO.getDeptId());
|
|
|
+ info = checkoutDeptInfo(dept);
|
|
|
+ if (StringUtils.isNotEmpty(info)) {
|
|
|
+ return getResultMap("4000", info);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验结算信息
|
|
|
+ SysDeptSub query = new SysDeptSub();
|
|
|
+ query.setDeptId(dept.getDeptId());
|
|
|
+ query.setSubjectType(SubjectTypeEnum.TYPE_SHUIBANGYUN.getCode());
|
|
|
+ query.setEnableFlag(SubjectTypeEnum.ENABLE_FLAG_TRUE.getCode());
|
|
|
+ SysDeptSub deptSub = sysDeptSubService.getOne(Wrappers.query(query));
|
|
|
+ info = checkoutDeptSubInfo(deptSub, ChannelEnum.TAX_HELPER, null);
|
|
|
+ if (StringUtils.isNotEmpty(info)) {
|
|
|
+ return getResultMap("4000", info);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 签约开始
|
|
|
+ log.info("【{}({})】,获取签约信息", member.getRealname(), member.getUsername());
|
|
|
+ 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(null);
|
|
|
+ record.setSubjectType(1);
|
|
|
+ record.setMethod("税邦云用户协议");
|
|
|
+ record.setUserId(member.getUserId());
|
|
|
+ sysCertResultRecordMapper.insert(record);
|
|
|
+
|
|
|
+
|
|
|
+ if (!userAgreement.success()) {
|
|
|
+ return getResultMap("4000", userAgreement.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 签约
|
|
|
+ log.info("【{}({})】,签约开始", member.getRealname(), member.getUsername());
|
|
|
+ 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(member.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(null);
|
|
|
+ record.setSubjectType(1);
|
|
|
+ record.setMethod("税邦云回传用户协议授权信息");
|
|
|
+ record.setUserId(member.getUserId());
|
|
|
+ sysCertResultRecordMapper.insert(record);
|
|
|
+
|
|
|
+ if (response.success()) {
|
|
|
+ // 签署协议
|
|
|
+ UserAgreementSignatureRecord uasr = new UserAgreementSignatureRecord();
|
|
|
+ uasr.setAgreement(userAgreement.getData());
|
|
|
+ uasr.setUserId(member.getUserId());
|
|
|
+ uasr.setCreateTime(LocalDateTime.now());
|
|
|
+ uasr.setTarget(1);
|
|
|
+ uasr.setSignTime(signTime);
|
|
|
+ userAgreementSignatureRecordMapper.insert(uasr);
|
|
|
+
|
|
|
+
|
|
|
+ // 修改用户状态
|
|
|
+ member.setUpdateTime(LocalDateTime.now());
|
|
|
+ member.setTaxHelperAgreementSignature(1);
|
|
|
+ userService.updateById(member);
|
|
|
+
|
|
|
+
|
|
|
+ return getResultMap("2000", response.getMessage());
|
|
|
+ }
|
|
|
+ return getResultMap("4000", response.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 获取税邦云H5 token
|
|
|
*
|
|
@@ -1117,7 +1242,7 @@ public class PartyAServiceImpl implements PartyAService {
|
|
|
for (WmScorePackageSettleNote note : noteList) {
|
|
|
tmp = tmp.add(note.getSettleAmount());
|
|
|
}
|
|
|
- String errInfo = checkoutSettleLimit(member,noteList.stream().mapToInt(WmScorePackageSettleNote::getId).boxed()
|
|
|
+ String errInfo = checkoutSettleLimit(member, noteList.stream().mapToInt(WmScorePackageSettleNote::getId).boxed()
|
|
|
.collect(Collectors.toList()), deptSub.getLimitAmount(), tmp);
|
|
|
if (StringUtils.isNotEmpty(errInfo)) {
|
|
|
log.error(errInfo);
|
|
@@ -1150,12 +1275,12 @@ public class PartyAServiceImpl implements PartyAService {
|
|
|
* 校验结算限制
|
|
|
*
|
|
|
* @param user 被校验者
|
|
|
- * @param noteIds 结算记录id
|
|
|
+ * @param noteIds 结算记录id
|
|
|
* @param limitAmount 限制金额
|
|
|
* @param settleAmount 本次上传证据链累计金额
|
|
|
* @return 校验错误信息,如果没有错误返回{@code null}
|
|
|
*/
|
|
|
- private String checkoutSettleLimit(SysUser user, List<Integer> noteIds ,BigDecimal limitAmount, BigDecimal settleAmount) {
|
|
|
+ private String checkoutSettleLimit(SysUser user, List<Integer> noteIds, BigDecimal limitAmount, BigDecimal settleAmount) {
|
|
|
|
|
|
String info = null;
|
|
|
|
|
@@ -1371,6 +1496,8 @@ public class PartyAServiceImpl implements PartyAService {
|
|
|
List<Integer> taxHelperCertStatusList = new ArrayList<>();
|
|
|
if (CommonConstants.ADD_MEMBER_METHOD.equals(methodName)) {
|
|
|
taxHelperCertStatusList.add(TaxHelperCertStatus.UN_CERT.getCode());
|
|
|
+ } else if (CommonConstants.USER_AGREEMENT_SIGNATURE_METHOD.equals(methodName)){
|
|
|
+ taxHelperCertStatusList.add(TaxHelperCertStatus.ADD_MEMBER.getCode());
|
|
|
} else if (CommonConstants.H5_TOKEN_METHOD.equals(methodName)) {
|
|
|
taxHelperCertStatusList.add(TaxHelperCertStatus.ADD_MEMBER.getCode());
|
|
|
taxHelperCertStatusList.add(TaxHelperCertStatus.UNCHECKED_BIND.getCode());
|