From 405fe91c6502d6870bc634020c416ed6710112aa Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Tue, 1 Jul 2025 15:22:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=BC=81=E4=B8=9A=E7=9A=84=E6=8E=88=E6=9D=83=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sa/admin/extend/fangxinqian/Base.java | 2 +- .../admin/extend/fangxinqian/auth/Auth.java | 43 +++++++++++++++++++ .../auth/GetAuthorizeResponse.java | 28 ++++++++++++ .../controller/ExpertFxqController.java | 17 ++++++++ .../domain/entity/FxqCompanyEntity.java | 12 ++++++ .../app/expert/domain/vo/FxqCompanyVo.java | 8 ++++ .../app/expert/service/ExpertFxqService.java | 33 ++++++++++++++ 7 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/auth/Auth.java create mode 100644 sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/auth/GetAuthorizeResponse.java diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/Base.java b/sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/Base.java index c5182db..0c763f3 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/Base.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/Base.java @@ -45,7 +45,7 @@ public class Base { public String postJson(String url, String jsonData, Map headers) { // 获取token String tokenKey = "fangxinqian:" + clientId; - redisTemplate.delete(tokenKey); +// redisTemplate.delete(tokenKey); String token = redisTemplate.opsForValue().get(tokenKey); if (token == null) { token = getAccessToken(); diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/auth/Auth.java b/sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/auth/Auth.java new file mode 100644 index 0000000..975fe6f --- /dev/null +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/auth/Auth.java @@ -0,0 +1,43 @@ +package net.lab1024.sa.admin.extend.fangxinqian.auth; + +import cn.hutool.json.JSONUtil; +import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.admin.extend.fangxinqian.Base; +import net.lab1024.sa.admin.extend.fangxinqian.company.RegisterPResponse; +import net.lab1024.sa.common.common.exception.BusinessException; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +@Slf4j +@Component +public class Auth extends Base { + /** + * 获取静默签署的授权 + */ + public GetAuthorizeResponse getAuthorize(String unionId){ + // 处理参数 + Map requestData = new HashMap<>(); + requestData.put("signerUnionId", unionId); // 个人/企业主体在放心签平台与接入方关联的唯一性标识 + requestData.put("notifyUrl", "www.baidu.com"); // 授权结果通知地址 + requestData.put("notifyWay", "2"); + + String url = getClientUrl() + "authorize/silent/sign"; + String jsonBody = JSONUtil.toJsonStr(requestData); + log.info("获取app数据参数:{}",jsonBody); + + String response = postJson(url,jsonBody,null); + GetAuthorizeResponse result = JSONUtil.toBean(response, GetAuthorizeResponse.class); + if (result.getCode() != 10000){ + if (!Objects.equals(result.getMessage(), "")){ + throw new BusinessException(result.getMessage()); + }else{ + throw new BusinessException("失败"); + } + } + + return result; + } +} diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/auth/GetAuthorizeResponse.java b/sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/auth/GetAuthorizeResponse.java new file mode 100644 index 0000000..e91446d --- /dev/null +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/extend/fangxinqian/auth/GetAuthorizeResponse.java @@ -0,0 +1,28 @@ +package net.lab1024.sa.admin.extend.fangxinqian.auth; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class GetAuthorizeResponse { + private int code; + + private String message; + + private GetAuthorizeData data; + + private String requestId; + + /** + * 根据统一标签列表 - 详细数据 + */ + @Data + public static class GetAuthorizeData { + private String unionId; + + private String pcUrl; + + private String h5Url; + } +} diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/controller/ExpertFxqController.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/controller/ExpertFxqController.java index 04e5f7d..f597563 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/controller/ExpertFxqController.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/controller/ExpertFxqController.java @@ -9,6 +9,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; +import net.lab1024.sa.admin.extend.fangxinqian.auth.GetAuthorizeResponse; import net.lab1024.sa.admin.extend.fangxinqian.task.GetTaskLinkResponse; import net.lab1024.sa.admin.module.app.expert.admin.*; import net.lab1024.sa.admin.module.app.expert.dao.ExpertDao; @@ -159,4 +160,20 @@ public class ExpertFxqController { return ResponseDTO.app_ok(g); } + + /** + * 获取企业授权地址 + */ + @ApiOperation(value = "获取企业授权地址") + @GetMapping("/expert/auth") + public ResponseDTO getCompanyAuth() { + + return ResponseDTO.app_ok(); + + // 以下暂不开放,过期时解开授权 +// // 获取静默签署的授权 +// GetAuthorizeResponse.GetAuthorizeData auth = expertFxqService.getAuthorize("56447a9865aa488caf6036fd00ddcbed"); +// +// return ResponseDTO.app_ok(auth.getH5Url()); + } } diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/domain/entity/FxqCompanyEntity.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/domain/entity/FxqCompanyEntity.java index 2dbe4e6..7fd5086 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/domain/entity/FxqCompanyEntity.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/domain/entity/FxqCompanyEntity.java @@ -38,6 +38,18 @@ public class FxqCompanyEntity { @TableField("union_id") private String unionId; + /** + * 授权状态(1:已授权 2:未授权) + */ + @TableField("auth_status") + private Integer authStatus; + + /** + * 授权过期日期 + */ + @TableField("auth_expire_date") + private LocalDateTime authExpireDate; + /** * 创建时间 */ diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/domain/vo/FxqCompanyVo.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/domain/vo/FxqCompanyVo.java index 213d746..f345f93 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/domain/vo/FxqCompanyVo.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/domain/vo/FxqCompanyVo.java @@ -1,5 +1,6 @@ package net.lab1024.sa.admin.module.app.expert.domain.vo; +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -23,6 +24,13 @@ public class FxqCompanyVo { @ApiModelProperty(value = "企业主体在放心签平台与接入方关联的唯一性标识") private String unionId; + + @ApiModelProperty(value = "授权状态(1:已授权 2:未授权)") + private Integer authStatus; + + @ApiModelProperty(value = "授权过期日期") + private LocalDateTime authExpireDate; + @ApiModelProperty(value = "创建时间") private LocalDateTime createTime; diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/service/ExpertFxqService.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/service/ExpertFxqService.java index e4d1fc5..81c587d 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/service/ExpertFxqService.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/expert/service/ExpertFxqService.java @@ -1,6 +1,8 @@ package net.lab1024.sa.admin.module.app.expert.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import net.lab1024.sa.admin.extend.fangxinqian.auth.Auth; +import net.lab1024.sa.admin.extend.fangxinqian.auth.GetAuthorizeResponse; import net.lab1024.sa.admin.extend.fangxinqian.company.Company; import net.lab1024.sa.admin.extend.fangxinqian.company.RegisterPResponse; import net.lab1024.sa.admin.extend.fangxinqian.personal.Personal; @@ -51,6 +53,9 @@ public class ExpertFxqService { @Resource private FxqTask fxqTask; + @Resource + private Auth auth; + @Resource private FxqExpertTaskDao fxqExpertTaskDao; @@ -342,6 +347,17 @@ public class ExpertFxqService { throw new BusinessException("操作失败"); } + // 授权处理 + if (company.getAuthStatus() == 1){ + if (company.getAuthExpireDate() != null && company.getAuthExpireDate().isBefore(LocalDateTime.now())) { + // 已授权但已过期 + throw new BusinessException("操作失败:请联系客服人员更换授权"); + } + }else{ + // 未授权 + throw new BusinessException("操作失败:请联系客服人员更换授权"); + } + // 获取签署链接 GetTaskLinkResponse.taskDetailsData fxqLink = getTaskLink(templateTask.getData().getTaskNo(),fxqUser.getUnionId()); if (fxqLink == null) { @@ -473,4 +489,21 @@ public class ExpertFxqService { throw new BusinessException(e.getMessage()); } } + + /** + * 获取静默签署的授权 + */ + public GetAuthorizeResponse.GetAuthorizeData getAuthorize(String unionId){ + GetAuthorizeResponse result = auth.getAuthorize(unionId); + if (result.getData() == null) { + throw new BusinessException("操作失败"); + } + + if (result.getData().getH5Url() == null || result.getData().getH5Url().isEmpty()) { + throw new BusinessException("操作失败"); + } + + return result.getData(); + } + }