ca 服务升级
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"hospital-admin-api/api/requests"
|
||||
"hospital-admin-api/api/responses"
|
||||
cav2 "hospital-admin-api/extend/ca_v2"
|
||||
"hospital-admin-api/global"
|
||||
"hospital-admin-api/utils"
|
||||
)
|
||||
|
||||
type CaV2 struct{}
|
||||
|
||||
// GetServiceURL 获取云证书生命周期管理界面链接地址
|
||||
func (r *CaV2) GetServiceURL(c *gin.Context) {
|
||||
caRequest := requests.CaV2Request{}
|
||||
req := caRequest.GetServiceURL
|
||||
if err := c.ShouldBind(&req); err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
if err := global.Validate.Struct(req); err != nil {
|
||||
responses.FailWithMessage(utils.Translate(err), c)
|
||||
return
|
||||
}
|
||||
|
||||
if msg := req.ValidateBusinessFields(); msg != "" {
|
||||
responses.FailWithMessage(msg, c)
|
||||
return
|
||||
}
|
||||
|
||||
client := cav2.NewClientFromConfig()
|
||||
result, err := client.GetServiceURL(cav2.GetServiceURLRequest{
|
||||
CertType: req.CertType,
|
||||
Type: req.Type,
|
||||
EntityID: req.EntityID,
|
||||
UserName: req.UserName,
|
||||
UserIDCard: req.UserIDCard,
|
||||
UserPhone: req.UserPhone,
|
||||
Email: req.Email,
|
||||
EnterpriseName: req.EnterpriseName,
|
||||
SocialCreditCode: req.SocialCreditCode,
|
||||
DeptPerson: req.DeptPerson,
|
||||
DeptPersonCode: req.DeptPersonCode,
|
||||
DeptPersonPhone: req.DeptPersonPhone,
|
||||
AgentName: req.AgentName,
|
||||
AgentIDCard: req.AgentIDCard,
|
||||
AuthMethod: req.AuthMethod,
|
||||
})
|
||||
if err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
responses.OkWithData(result, c)
|
||||
}
|
||||
|
||||
// CertSign 云证书签名
|
||||
func (r *CaV2) CertSign(c *gin.Context) {
|
||||
caRequest := requests.CaV2Request{}
|
||||
req := caRequest.CertSign
|
||||
if err := c.ShouldBind(&req); err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
if err := global.Validate.Struct(req); err != nil {
|
||||
responses.FailWithMessage(utils.Translate(err), c)
|
||||
return
|
||||
}
|
||||
|
||||
client := cav2.NewClientFromConfig()
|
||||
result, err := client.CertSign(cav2.CertSignRequest{
|
||||
EntityID: req.EntityID,
|
||||
RequestID: req.RequestID,
|
||||
BusinessType: req.BusinessType,
|
||||
ToSign: req.ToSign,
|
||||
NotifyURL: req.NotifyURL,
|
||||
JumpURL: req.JumpURL,
|
||||
ExtParam: req.ExtParam,
|
||||
})
|
||||
if err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
responses.OkWithData(result, c)
|
||||
}
|
||||
|
||||
// GetCertSignResult 获取云证书签名结果
|
||||
func (r *CaV2) GetCertSignResult(c *gin.Context) {
|
||||
caRequest := requests.CaV2Request{}
|
||||
req := caRequest.GetCertSignResult
|
||||
if err := c.ShouldBind(&req); err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
if err := global.Validate.Struct(req); err != nil {
|
||||
responses.FailWithMessage(utils.Translate(err), c)
|
||||
return
|
||||
}
|
||||
|
||||
client := cav2.NewClientFromConfig()
|
||||
result, err := client.GetCertSignResult(cav2.GetCertSignResultRequest{
|
||||
RequestID: req.RequestID,
|
||||
})
|
||||
if err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
responses.OkWithData(result, c)
|
||||
}
|
||||
|
||||
// PasswordLessSignInfo 云证书免密签署状态查询
|
||||
func (r *CaV2) PasswordLessSignInfo(c *gin.Context) {
|
||||
caRequest := requests.CaV2Request{}
|
||||
req := caRequest.PasswordLessSignInfo
|
||||
if err := c.ShouldBind(&req); err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
if err := global.Validate.Struct(req); err != nil {
|
||||
responses.FailWithMessage(utils.Translate(err), c)
|
||||
return
|
||||
}
|
||||
|
||||
client := cav2.NewClientFromConfig()
|
||||
result, err := client.PasswordLessSignInfo(cav2.PasswordLessSignInfoRequest{
|
||||
EntityID: req.EntityID,
|
||||
})
|
||||
if err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
responses.OkWithData(result, c)
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package requests
|
||||
|
||||
import "strings"
|
||||
|
||||
type CaV2Request struct {
|
||||
GetServiceURL GetCaV2ServiceURL
|
||||
CertSign GetCaV2CertSign
|
||||
GetCertSignResult GetCaV2CertSignResult
|
||||
PasswordLessSignInfo GetCaV2PasswordLessSignInfo
|
||||
}
|
||||
|
||||
type GetCaV2ServiceURL struct {
|
||||
CertType string `json:"certType" form:"certType" validate:"required,oneof=Personal Organizational OrgPerson" label:"证书类型"`
|
||||
Type string `json:"type" form:"type" validate:"required,oneof=BUSINESS_CENTER CERT_APPLY CERT_RENEW CERT_UPDATE CERT_REVOKE" label:"业务类型"`
|
||||
EntityID string `json:"entityId" form:"entityId" validate:"required" label:"用户唯一标识"`
|
||||
UserName string `json:"userName" form:"userName"`
|
||||
UserIDCard string `json:"userIdCard" form:"userIdCard"`
|
||||
UserPhone string `json:"userPhone" form:"userPhone"`
|
||||
Email string `json:"email" form:"email"`
|
||||
EnterpriseName string `json:"enterpriseName" form:"enterpriseName"`
|
||||
SocialCreditCode string `json:"socialCreditCode" form:"socialCreditCode"`
|
||||
DeptPerson string `json:"deptPerson" form:"deptPerson"`
|
||||
DeptPersonCode string `json:"deptPersonCode" form:"deptPersonCode"`
|
||||
DeptPersonPhone string `json:"deptPersonPhone" form:"deptPersonPhone"`
|
||||
AgentName string `json:"agentName" form:"agentName"`
|
||||
AgentIDCard string `json:"agentIdCard" form:"agentIdCard"`
|
||||
AuthMethod string `json:"authMethod" form:"authMethod" validate:"omitempty,oneof=face SMS" label:"认证方式"`
|
||||
}
|
||||
|
||||
func (r GetCaV2ServiceURL) ValidateBusinessFields() string {
|
||||
switch r.CertType {
|
||||
case "Personal":
|
||||
if strings.TrimSpace(r.UserName) == "" || strings.TrimSpace(r.UserIDCard) == "" || strings.TrimSpace(r.UserPhone) == "" {
|
||||
return "个人证书必须填写 userName、userIdCard、userPhone"
|
||||
}
|
||||
case "Organizational":
|
||||
if strings.TrimSpace(r.EnterpriseName) == "" ||
|
||||
strings.TrimSpace(r.SocialCreditCode) == "" ||
|
||||
strings.TrimSpace(r.DeptPerson) == "" ||
|
||||
strings.TrimSpace(r.DeptPersonCode) == "" ||
|
||||
strings.TrimSpace(r.DeptPersonPhone) == "" {
|
||||
return "企业证书必须填写 enterpriseName、socialCreditCode、deptPerson、deptPersonCode、deptPersonPhone"
|
||||
}
|
||||
case "OrgPerson":
|
||||
if strings.TrimSpace(r.UserName) == "" ||
|
||||
strings.TrimSpace(r.UserIDCard) == "" ||
|
||||
strings.TrimSpace(r.UserPhone) == "" {
|
||||
return "企业个人证书必须填写 userName、userIdCard、userPhone"
|
||||
}
|
||||
if strings.TrimSpace(r.EnterpriseName) == "" ||
|
||||
strings.TrimSpace(r.SocialCreditCode) == "" ||
|
||||
strings.TrimSpace(r.DeptPerson) == "" ||
|
||||
strings.TrimSpace(r.DeptPersonCode) == "" ||
|
||||
strings.TrimSpace(r.DeptPersonPhone) == "" {
|
||||
return "企业个人证书必须填写 enterpriseName、socialCreditCode、deptPerson、deptPersonCode、deptPersonPhone"
|
||||
}
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
type GetCaV2CertSign struct {
|
||||
EntityID string `json:"entityId" form:"entityId" validate:"required" label:"用户唯一标识"`
|
||||
RequestID string `json:"requestId" form:"requestId" validate:"required" label:"业务流水号"`
|
||||
BusinessType string `json:"businessType" form:"businessType" validate:"required,oneof=businessCenter certApply certRenewcertRenew certUpdate certRevoke certInfo certSign certUpdatePin" label:"业务类型"`
|
||||
ToSign string `json:"toSign" form:"toSign" validate:"required" label:"签名原文"`
|
||||
NotifyURL string `json:"notifyUrl" form:"notifyUrl"`
|
||||
JumpURL string `json:"jumpUrl" form:"jumpUrl"`
|
||||
ExtParam string `json:"extParam" form:"extParam"`
|
||||
}
|
||||
|
||||
type GetCaV2CertSignResult struct {
|
||||
RequestID string `json:"requestId" form:"requestId" validate:"required" label:"业务流水号"`
|
||||
}
|
||||
|
||||
type GetCaV2PasswordLessSignInfo struct {
|
||||
EntityID string `json:"entityId" form:"entityId" validate:"required" label:"用户唯一标识"`
|
||||
}
|
||||
@@ -98,6 +98,15 @@ func publicRouter(r *gin.Engine, api controller.Api) {
|
||||
}
|
||||
}
|
||||
|
||||
caV2 := controller.CaV2{}
|
||||
caV2Group := r.Group("/open/ca/v2")
|
||||
{
|
||||
caV2Group.POST("/service-url", caV2.GetServiceURL)
|
||||
caV2Group.POST("/cert-sign", caV2.CertSign)
|
||||
caV2Group.POST("/cert-sign/result", caV2.GetCertSignResult)
|
||||
caV2Group.POST("/passwordless-sign-info", caV2.PasswordLessSignInfo)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// adminRouter 公共路由-验证权限
|
||||
|
||||
Reference in New Issue
Block a user