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 }