398 lines
11 KiB
Go
398 lines
11 KiB
Go
package ca
|
|
|
|
import (
|
|
"errors"
|
|
"hospital-admin-api/config"
|
|
"net/url"
|
|
)
|
|
|
|
// EditCloudCert 修改云证书
|
|
func EditCloudCert(d *EditCloudCertRequestData) (*EditCloudCertResponse, error) {
|
|
if d == nil {
|
|
return nil, errors.New("修改云证书失败")
|
|
}
|
|
|
|
// 获取签名
|
|
requestDataMap := make(map[string]interface{})
|
|
requestDataMap["entityId"] = d.EntityId
|
|
requestDataMap["entityType"] = d.EntityType
|
|
requestDataMap["personalPhone"] = d.PersonalPhone
|
|
requestDataMap["personalName"] = d.PersonalName
|
|
requestDataMap["personalIdNumber"] = d.PersonalIdNumber
|
|
requestDataMap["orgName"] = d.OrgName
|
|
requestDataMap["orgNumber"] = d.OrgNumber
|
|
requestDataMap["pin"] = d.Pin
|
|
requestDataMap["orgDept"] = d.OrgDept
|
|
requestDataMap["province"] = d.Province
|
|
requestDataMap["locality"] = d.Locality
|
|
requestDataMap["authType"] = d.AuthType
|
|
requestDataMap["authTime"] = d.AuthTime
|
|
requestDataMap["authResult"] = d.AuthResult
|
|
requestDataMap["authNoticeType"] = d.AuthNoticeType
|
|
|
|
signature := GenerateSignature(requestDataMap)
|
|
if signature == "" {
|
|
return nil, errors.New("云证书签名错误")
|
|
}
|
|
|
|
formData := url.Values{}
|
|
formData.Set("entityId", d.EntityId)
|
|
formData.Set("entityType", d.EntityType)
|
|
formData.Set("personalPhone", d.PersonalPhone)
|
|
formData.Set("personalName", d.PersonalName)
|
|
formData.Set("personalIdNumber", d.PersonalIdNumber)
|
|
formData.Set("orgName", d.OrgName)
|
|
formData.Set("orgNumber", d.OrgNumber)
|
|
formData.Set("pin", d.Pin)
|
|
formData.Set("orgDept", d.OrgDept)
|
|
formData.Set("province", d.Province)
|
|
formData.Set("locality", d.Locality)
|
|
formData.Set("authType", d.AuthType)
|
|
formData.Set("authTime", d.AuthTime)
|
|
formData.Set("authResult", d.AuthResult)
|
|
formData.Set("authNoticeType", d.AuthNoticeType)
|
|
|
|
// 构建请求 URL
|
|
requestUrl := config.C.CaOnline.CaOnlineApiUrl + "/cloud-certificate-service/api/cloudCert/open/v2/cert/certChange"
|
|
|
|
response, err := postRequest(requestUrl, formData, signature)
|
|
if err != nil {
|
|
return nil, errors.New(err.Error())
|
|
}
|
|
|
|
certBase64, ok := response["certBase64"]
|
|
if !ok {
|
|
return nil, errors.New("返回数据错误")
|
|
}
|
|
|
|
certP7, ok := response["certP7"]
|
|
if !ok {
|
|
return nil, errors.New("返回数据错误1")
|
|
}
|
|
|
|
certSerialnumber, ok := response["certSerialnumber"]
|
|
if !ok {
|
|
return nil, errors.New("返回数据错误2")
|
|
}
|
|
|
|
result := &EditCloudCertResponse{
|
|
CertBase64: certBase64.(string),
|
|
CertP7: certP7.(string),
|
|
CertSerialnumber: certSerialnumber.(string),
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// AddCloudCert 新增云证书
|
|
func AddCloudCert(d *AddCloudCertRequest) (*AddCloudCertResponse, error) {
|
|
if d == nil {
|
|
return nil, errors.New("获取云证书失败")
|
|
}
|
|
|
|
// 获取签名
|
|
requestDataMap := make(map[string]interface{})
|
|
requestDataMap["entityId"] = d.EntityId
|
|
requestDataMap["entityType"] = d.EntityType
|
|
requestDataMap["personalPhone"] = d.PersonalPhone
|
|
requestDataMap["personalName"] = d.PersonalName
|
|
requestDataMap["personalIdNumber"] = d.PersonalIdNumber
|
|
requestDataMap["orgName"] = d.OrgName
|
|
requestDataMap["orgNumber"] = d.OrgNumber
|
|
requestDataMap["pin"] = d.Pin
|
|
requestDataMap["orgDept"] = d.OrgDept
|
|
requestDataMap["province"] = d.Province
|
|
requestDataMap["locality"] = d.Locality
|
|
requestDataMap["authType"] = d.AuthType
|
|
requestDataMap["authTime"] = d.AuthTime
|
|
requestDataMap["authResult"] = d.AuthResult
|
|
requestDataMap["authNoticeType"] = d.AuthNoticeType
|
|
|
|
signature := GenerateSignature(requestDataMap)
|
|
if signature == "" {
|
|
return nil, errors.New("云证书签名错误")
|
|
}
|
|
|
|
formData := url.Values{}
|
|
formData.Set("entityId", d.EntityId)
|
|
formData.Set("entityType", d.EntityType)
|
|
formData.Set("personalPhone", d.PersonalPhone)
|
|
formData.Set("personalName", d.PersonalName)
|
|
formData.Set("personalIdNumber", d.PersonalIdNumber)
|
|
formData.Set("orgName", d.OrgName)
|
|
formData.Set("orgNumber", d.OrgNumber)
|
|
formData.Set("pin", d.Pin)
|
|
formData.Set("orgDept", d.OrgDept)
|
|
formData.Set("province", d.Province)
|
|
formData.Set("locality", d.Locality)
|
|
formData.Set("authType", d.AuthType)
|
|
formData.Set("authTime", d.AuthTime)
|
|
formData.Set("authResult", d.AuthResult)
|
|
formData.Set("authNoticeType", d.AuthNoticeType)
|
|
|
|
// 构建请求 URL
|
|
requestUrl := config.C.CaOnline.CaOnlineApiUrl + "/cloud-certificate-service/api/cloudCert/open/v2/cert/certEnroll"
|
|
|
|
response, err := postRequest(requestUrl, formData, signature)
|
|
if err != nil {
|
|
return nil, errors.New(err.Error())
|
|
}
|
|
|
|
certBase64, ok := response["certBase64"]
|
|
if !ok {
|
|
return nil, errors.New("返回数据错误")
|
|
}
|
|
|
|
certP7, ok := response["certP7"]
|
|
if !ok {
|
|
return nil, errors.New("返回数据错误")
|
|
}
|
|
|
|
certSerialnumber, ok := response["certSerialnumber"]
|
|
if !ok {
|
|
return nil, errors.New("返回数据错误")
|
|
}
|
|
|
|
result := &AddCloudCertResponse{
|
|
CertBase64: certBase64.(string),
|
|
CertP7: certP7.(string),
|
|
CertSerialnumber: certSerialnumber.(string),
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// GetUserSignConfig 获取用户签章图片
|
|
func GetUserSignConfig(d *GetUserSignConfigRequestData) (*GetUserSignConfigResponse, error) {
|
|
if d == nil {
|
|
return nil, errors.New("修改云证书失败")
|
|
}
|
|
|
|
// 获取签名
|
|
requestDataMap := make(map[string]interface{})
|
|
requestDataMap["userId"] = d.UserId
|
|
|
|
signature := GenerateSignature(requestDataMap)
|
|
if signature == "" {
|
|
return nil, errors.New("云证书签名错误")
|
|
}
|
|
|
|
formData := url.Values{}
|
|
formData.Set("userId", d.UserId)
|
|
|
|
// 构建请求 URL
|
|
requestUrl := config.C.CaOnline.CaOnlineApiUrl + "/signature-server/api/open/signature/fetchUserSeal"
|
|
|
|
response, err := postRequest(requestUrl, formData, signature)
|
|
if err != nil {
|
|
return nil, errors.New(err.Error())
|
|
}
|
|
|
|
// 返回内容为空,未设置签章图片
|
|
if response == nil {
|
|
return nil, nil
|
|
}
|
|
|
|
sealImg, ok := response["sealImg"]
|
|
if !ok {
|
|
return nil, errors.New("返回数据错误")
|
|
}
|
|
|
|
sealType, ok := response["sealType"]
|
|
if !ok {
|
|
return nil, errors.New("返回数据错误")
|
|
}
|
|
|
|
appId, ok := response["appId"]
|
|
if !ok {
|
|
return nil, errors.New("返回数据错误")
|
|
}
|
|
|
|
id, ok := response["id"]
|
|
if !ok {
|
|
return nil, errors.New("返回数据错误")
|
|
}
|
|
|
|
result := &GetUserSignConfigResponse{
|
|
SealImg: sealImg.(string),
|
|
SealType: sealType.(int),
|
|
AppId: appId.(string),
|
|
Id: id.(string),
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// DeleteUserSignConfig 删除签章配置
|
|
func DeleteUserSignConfig(d *DeleteUserSignConfigRequestData) (bool, error) {
|
|
if d == nil {
|
|
return false, errors.New("修改云证书失败")
|
|
}
|
|
|
|
// 获取签名
|
|
requestDataMap := make(map[string]interface{})
|
|
requestDataMap["userId"] = d.UserId
|
|
requestDataMap["configKey"] = d.ConfigKey
|
|
|
|
signature := GenerateSignature(requestDataMap)
|
|
if signature == "" {
|
|
return false, errors.New("云证书签名错误")
|
|
}
|
|
|
|
formData := url.Values{}
|
|
formData.Set("userId", d.UserId)
|
|
formData.Set("configKey", d.ConfigKey)
|
|
|
|
// 构建请求 URL
|
|
requestUrl := config.C.CaOnline.CaOnlineApiUrl + "/signature-server/api/open/signature/delSignConfig"
|
|
|
|
response, err := postRequest(requestUrl, formData, signature)
|
|
if err != nil {
|
|
return false, errors.New(err.Error())
|
|
}
|
|
|
|
// 返回内容为空
|
|
if response == nil {
|
|
return true, nil
|
|
}
|
|
|
|
return true, nil
|
|
}
|
|
|
|
// RenewCloudCert 更新云证书
|
|
func RenewCloudCert(d *RenewCloudCertRequest) (*RenewCloudCertResponse, error) {
|
|
if d == nil {
|
|
return nil, errors.New("获取云证书失败")
|
|
}
|
|
|
|
// 获取签名
|
|
requestDataMap := make(map[string]interface{})
|
|
requestDataMap["entityId"] = d.EntityId
|
|
requestDataMap["pin"] = d.Pin
|
|
requestDataMap["authType"] = d.AuthType
|
|
requestDataMap["authTime"] = d.AuthTime
|
|
requestDataMap["authResult"] = d.AuthResult
|
|
requestDataMap["authNoticeType"] = d.AuthNoticeType
|
|
signature := GenerateSignature(requestDataMap)
|
|
if signature == "" {
|
|
return nil, errors.New("云证书签名错误")
|
|
}
|
|
|
|
formData := url.Values{}
|
|
formData.Set("entityId", d.EntityId)
|
|
formData.Set("pin", d.Pin)
|
|
formData.Set("authType", d.AuthType)
|
|
formData.Set("authTime", d.AuthTime)
|
|
formData.Set("authResult", d.AuthResult)
|
|
formData.Set("authNoticeType", d.AuthNoticeType)
|
|
|
|
// 构建请求 URL
|
|
requestUrl := config.C.CaOnline.CaOnlineApiUrl + "/cloud-certificate-service/api/cloudCert/open/v2/cert/certRenew"
|
|
|
|
response, err := postRequest(requestUrl, formData, signature)
|
|
if err != nil {
|
|
return nil, errors.New(err.Error())
|
|
}
|
|
|
|
certBase64, ok := response["certBase64"]
|
|
if !ok {
|
|
return nil, errors.New("返回数据错误")
|
|
}
|
|
|
|
certP7, ok := response["certP7"]
|
|
if !ok {
|
|
return nil, errors.New("返回数据错误")
|
|
}
|
|
|
|
certSerialnumber, ok := response["certSerialnumber"]
|
|
if !ok {
|
|
return nil, errors.New("返回数据错误")
|
|
}
|
|
|
|
result := &RenewCloudCertResponse{
|
|
CertBase64: certBase64.(string),
|
|
CertP7: certP7.(string),
|
|
CertSerialnumber: certSerialnumber.(string),
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// RemoveCloudCert 注销云证书
|
|
func RemoveCloudCert(d *RemoveCloudCertRequest) (bool, error) {
|
|
if d == nil {
|
|
return false, errors.New("获取云证书失败")
|
|
}
|
|
|
|
// 获取签名
|
|
requestDataMap := make(map[string]interface{})
|
|
requestDataMap["entityId"] = d.EntityId
|
|
requestDataMap["pin"] = d.Pin
|
|
requestDataMap["authType"] = d.AuthType
|
|
requestDataMap["authTime"] = d.AuthTime
|
|
requestDataMap["authResult"] = d.AuthResult
|
|
requestDataMap["authNoticeType"] = d.AuthNoticeType
|
|
signature := GenerateSignature(requestDataMap)
|
|
if signature == "" {
|
|
return false, errors.New("云证书签名错误")
|
|
}
|
|
|
|
formData := url.Values{}
|
|
formData.Set("entityId", d.EntityId)
|
|
formData.Set("pin", d.Pin)
|
|
formData.Set("authType", d.AuthType)
|
|
formData.Set("authTime", d.AuthTime)
|
|
formData.Set("authResult", d.AuthResult)
|
|
formData.Set("authNoticeType", d.AuthNoticeType)
|
|
|
|
// 构建请求 URL
|
|
requestUrl := config.C.CaOnline.CaOnlineApiUrl + "/cloud-certificate-service/api/cloudCert/open/v2/cert/certRevoke"
|
|
|
|
_, err := postRequest(requestUrl, formData, signature)
|
|
if err != nil {
|
|
return false, errors.New(err.Error())
|
|
}
|
|
|
|
return true, nil
|
|
}
|
|
|
|
// AddUserSignConfig 添加用户签章配置
|
|
func AddUserSignConfig(d *AddUserSignConfigRequest) (bool, error) {
|
|
if d == nil {
|
|
return false, errors.New("获取云证书失败")
|
|
}
|
|
|
|
// 获取签名
|
|
requestDataMap := make(map[string]interface{})
|
|
requestDataMap["userId"] = d.UserId
|
|
requestDataMap["configKey"] = d.UserId
|
|
requestDataMap["keypairType"] = "3"
|
|
requestDataMap["certSn"] = d.CertSn
|
|
requestDataMap["signType"] = "4"
|
|
requestDataMap["signParam"] = d.SignParam
|
|
requestDataMap["sealImg"] = d.SealImg
|
|
requestDataMap["sealType"] = "4"
|
|
requestDataMap["signTemplate"] = "0"
|
|
signature := GenerateSignature(requestDataMap)
|
|
if signature == "" {
|
|
return false, errors.New("云证书签名错误")
|
|
}
|
|
|
|
formData := url.Values{}
|
|
formData.Set("userId", d.UserId)
|
|
formData.Set("configKey", d.UserId)
|
|
formData.Set("keypairType", "3")
|
|
formData.Set("certSn", d.CertSn)
|
|
formData.Set("signType", "4")
|
|
formData.Set("signParam", d.SignParam)
|
|
formData.Set("sealImg", d.SealImg)
|
|
formData.Set("sealType", "4")
|
|
formData.Set("signTemplate", "0")
|
|
|
|
// 构建请求 URL
|
|
requestUrl := config.C.CaOnline.CaOnlineApiUrl + "/signature-server/api/open/signature/userSignConfig"
|
|
|
|
_, err := postRequest(requestUrl, formData, signature)
|
|
if err != nil {
|
|
return false, errors.New(err.Error())
|
|
}
|
|
|
|
return true, nil
|
|
}
|