package service import ( "XT_New/models" "XT_New/utils" "bytes" "crypto/hmac" "crypto/sha1" "encoding/base64" "encoding/json" "fmt" "github.com/astaxie/beego" "io/ioutil" "net/http" ) func GetSignNameByPhone(phoneOne string) string { var url string url = "http://demo-open.itruscloud.com/apigate/smsService/sendingSms" var phone string phone = "13318464642" var content string content = "123456" var autograph string autograph = "【天威诚信】" maprequest := make(map[string]interface{}) maprequest["phone"] = phone maprequest["content"] = content maprequest["autograph"] = autograph byterequest, _ := json.Marshal(maprequest) appId := beego.AppConfig.String("sign_appid") serviceKye := beego.AppConfig.String("serviceKye") serviceCode := beego.AppConfig.String("serviceCode") reader := bytes.NewReader(byterequest) signatureStr, _ := generateHMACSHA1SignatureOne(maprequest, serviceKye, serviceCode) fmt.Println(signatureStr) request, err := http.NewRequest("POST", url, reader) if err != nil { fmt.Println(err.Error()) } fmt.Println("请求参数", request) fmt.Println("Content-Signature", signatureStr) fmt.Println("appID", appId) fmt.Println("serviceCode", serviceCode) request.Header.Set("appId", appId) request.Header.Set("serviceCode", serviceCode) request.Header.Set("Content-Type", "application/json;charset=UTF-8") request.Header.Set("Content-Signature", signatureStr) client := http.Client{} resp, err := client.Do(request) if err != nil { fmt.Println(err.Error()) } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err.Error()) } str := string(respBytes) fmt.Println(str) return str } func generateHMACSHA1SignatureOne(data interface{}, key, serviceCode string) (string, error) { // 将数据转换为 JSON 格式的字节数组 jsonData, err := json.Marshal(data) if err != nil { return "", err } // 将密钥和 serviceCode 进行拼接 signingKey := key + serviceCode // 将签名密钥转换为字节数组 keyBytes := []byte(signingKey) // 创建一个新的 HMAC-SHA1 实例 h := hmac.New(sha1.New, keyBytes) // 将 JSON 数据添加到 HMAC 实例中 h.Write(jsonData) signature := base64.StdEncoding.EncodeToString(h.Sum(nil)) // 返回带有前缀的签名字符串 return "HMAC-SHA1 " + signature, nil } func CreateUserName(phone string, disPlayName string) (string, string) { var url string url = "http://demo.itruscloud.com/apigate/contractpaasapi/user/createUserRealName" var phoneOne string phoneOne = "13318464649" var disPlayNameOne string disPlayNameOne = "王老师" var authentication string //测试环境用true authentication = "true" maprequest := make(map[string]interface{}) twAuthReq := make(map[string]interface{}) apiAuthReq := make(map[string]interface{}) customerReq := make(map[string]interface{}) customerReq["idCardType"] = "0" customerReq["idCardNum"] = "430526199408156511" apiAuthReq["realNameType"] = 3 apiAuthReq["idCardType"] = "0" apiAuthReq["idCardNum"] = "430526199408156511" apiAuthReq["bankCard"] = "6225551675364804" //验证码流水号 apiAuthReq["codeNumber"] = "msg202307071510269187701" //验证码 apiAuthReq["verifyCode"] = "123456" twAuthReq["oneLineAuth"] = "false" twAuthReq["apiAuthReq"] = apiAuthReq maprequest["phone"] = phoneOne maprequest["displayName"] = disPlayNameOne maprequest["authentication"] = authentication maprequest["twAuthReq"] = twAuthReq maprequest["customerAuthReq"] = customerReq byterequest, _ := json.Marshal(maprequest) appId := beego.AppConfig.String("sign_appid") serviceKye := beego.AppConfig.String("serviceKye") serviceCode := beego.AppConfig.String("serviceCode") reader := bytes.NewReader(byterequest) signatureStr, _ := generateHMACSHA1SignatureOne(maprequest, serviceKye, serviceCode) fmt.Println(signatureStr) request, err := http.NewRequest("POST", url, reader) if err != nil { fmt.Println(err.Error()) } fmt.Println("请求参数", request) fmt.Println("Content-Signature", signatureStr) fmt.Println("appID", appId) fmt.Println("serviceCode", serviceCode) request.Header.Set("appId", appId) request.Header.Set("serviceCode", serviceCode) request.Header.Set("Content-Type", "application/json;charset=UTF-8") request.Header.Set("Content-Signature", signatureStr) client := http.Client{} resp, err := client.Do(request) if err != nil { fmt.Println(err.Error()) } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err.Error()) } str := string(respBytes) var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(respBytes)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) } var UserId string UserId = respJSON["data"].(map[string]interface{})["userId"].(string) fmt.Println("str", UserId) return str, UserId } func CreatePersionSeal(user_id string, person_seal_type int64, person_seal_name string, person_seal_base string, color int64, alpha int64, width int64, height int64, border int64, font_type int64) (string, string) { maprequest := make(map[string]interface{}) maprequest["userId"] = "DVVZ65G1JTC1BH3AHYY2KYAE" maprequest["personSealType"] = 1 maprequest["personSealName"] = "测试印章" var url string url = "http://demo.itruscloud.com/apigate/contractpaasapi/user/createPersonSeal" appId := beego.AppConfig.String("sign_appid") serviceKye := beego.AppConfig.String("serviceKye") serviceCode := beego.AppConfig.String("serviceCode") byterequest, _ := json.Marshal(maprequest) reader := bytes.NewReader(byterequest) signatureStr, _ := generateHMACSHA1SignatureOne(maprequest, serviceKye, serviceCode) fmt.Println(signatureStr) request, err := http.NewRequest("POST", url, reader) if err != nil { fmt.Println(err.Error()) } request.Header.Set("appId", appId) request.Header.Set("serviceCode", serviceCode) request.Header.Set("Content-Type", "application/json;charset=UTF-8") request.Header.Set("Content-Signature", signatureStr) client := http.Client{} resp, err := client.Do(request) if err != nil { fmt.Println(err.Error()) } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err.Error()) } str := string(respBytes) var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(respBytes)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) } var personSealId string personSealId = respJSON["data"].(map[string]interface{})["personSealId"].(string) fmt.Println("str", personSealId) return str, personSealId } func CreateUploadPact(contractcode string, contractname string, signcount int64, docname string, contractbase string, creator string, enterpriseid string, signvalidays int64, sysncurl string, asyncurl string) string { var url string url = "http://demo.itruscloud.com/apigate/contractpaasapi/contract/createByFile" appId := beego.AppConfig.String("sign_appid") serviceKye := beego.AppConfig.String("serviceKye") serviceCode := beego.AppConfig.String("serviceCode") maprequest := make(map[string]interface{}) //maprequest["contractCode"] = "102020620701056856" maprequest["contractName"] = "汽车购买交易合同" maprequest["signCount"] = 10 maprequest["docName"] = "员工保密协议" file := "C:/Users/28169/Desktop/打印单.pdf" fileBytes, err := ioutil.ReadFile(file) // 读取file contractBase64 := base64.StdEncoding.EncodeToString(fileBytes) // 加密成base64字符串 maprequest["contractBase64"] = contractBase64 //添加企业成员 里面的USERID maprequest["creator"] = "DCBCD8QR2TU6B83XFF3FOHJL" maprequest["enterpriseId"] = "BRWAABXW3RUD4PGCYEQWRRK8" maprequest["signValidDays"] = 90 maprequest["sysnUrl"] = "https://kuyi.shengws.com/chenxuemin1.png" maprequest["asyncUrl"] = "https://kuyi.shengws.com/chenxuemin1.png" byterequest, _ := json.Marshal(maprequest) reader := bytes.NewReader(byterequest) signatureStr, _ := generateHMACSHA1SignatureOne(maprequest, serviceKye, serviceCode) request, err := http.NewRequest("POST", url, reader) if err != nil { fmt.Println(err.Error()) } request.Header.Set("appId", appId) request.Header.Set("serviceCode", serviceCode) request.Header.Set("Content-Type", "application/json;charset=UTF-8") request.Header.Set("Content-Signature", signatureStr) client := http.Client{} resp, err := client.Do(request) if err != nil { fmt.Println(err.Error()) } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err.Error()) } str := string(respBytes) return str } func CreateEnterPriseRealName(enterprisename string) string { var url string url = "http://demo.itruscloud.com/apigate/contractpaasapi/enterprise/createEnterpriseRealName" appId := beego.AppConfig.String("sign_appid") serviceKye := beego.AppConfig.String("serviceKye") serviceCode := beego.AppConfig.String("serviceCode") maprequest := make(map[string]interface{}) customerReq := make(map[string]interface{}) customerReq["idCardType"] = "N" customerReq["idCardNum"] = "430526199408156511" maprequest["enterpriseName"] = "深圳益森科技有限公司" maprequest["authentication"] = true maprequest["customerAuthReq"] = customerReq fmt.Println("maprequest", maprequest) byterequest, _ := json.Marshal(maprequest) reader := bytes.NewReader(byterequest) signatureStr, _ := generateHMACSHA1SignatureOne(maprequest, serviceKye, serviceCode) request, err := http.NewRequest("POST", url, reader) if err != nil { fmt.Println(err.Error()) } request.Header.Set("appId", appId) request.Header.Set("serviceCode", serviceCode) request.Header.Set("Content-Type", "application/json;charset=UTF-8") request.Header.Set("Content-Signature", signatureStr) client := http.Client{} resp, err := client.Do(request) if err != nil { fmt.Println(err.Error()) } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err.Error()) } str := string(respBytes) return str } func CreateUserId(userId string, displayName string) string { var url string url = "http://demo.itruscloud.com/apigate/contractpaasapi/user/joinEnterprise" appId := beego.AppConfig.String("sign_appid") serviceKye := beego.AppConfig.String("serviceKye") serviceCode := beego.AppConfig.String("serviceCode") maprequest := make(map[string]interface{}) maprequest["enterpriseId"] = "BRWAABXW3RUD4PGCYEQWRRK8" maprequest["userId"] = "DCBCD8QR2TU6B83XFF3FOHJL" byterequest, _ := json.Marshal(maprequest) reader := bytes.NewReader(byterequest) signatureStr, _ := generateHMACSHA1SignatureOne(maprequest, serviceKye, serviceCode) request, err := http.NewRequest("POST", url, reader) if err != nil { fmt.Println(err.Error()) } request.Header.Set("appId", appId) request.Header.Set("serviceCode", serviceCode) request.Header.Set("Content-Type", "application/json;charset=UTF-8") request.Header.Set("Content-Signature", signatureStr) client := http.Client{} resp, err := client.Do(request) if err != nil { fmt.Println(err.Error()) } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err.Error()) } str := string(respBytes) return str } //type ResultTwo struct { // ErrMsg string `json:"err_msg"` // InfRefmsgid string `json:"inf_refmsgid"` // Infcode int64 `json:"infcode"` // Output struct { // Baseinfo struct { // Age float64 `json:"age"` // Brdy string `json:"brdy"` // Certno string `json:"certno"` // Gend string `json:"gend"` // Naty string `json:"naty"` // PsnCertType string `json:"psn_cert_type"` // PsnName string `json:"psn_name"` // PsnNo string `json:"psn_no"` // } `json:"baseinfo"` // Idetinfo []interface{} `json:"idetinfo"` // Iinfo []struct { // Balc float64 `json:"balc"` // CvlservFlag string `json:"cvlserv_flag"` // EmpName string `json:"emp_name"` // InsuplcAdmdvs string `json:"insuplc_admdvs"` // Insutype string `json:"insutype"` // PausInsuDansuplcAdmdvs string `json:"paus_insu_dansuplc_admdvs"` // PausInsuDate string `json:"paus_insu_date"` // PsnInsuDate string `json:"psn_insu_date"` // PsnInsuStas string `json:"psn_insu_stas"` // PsnType string `json:"psn_type"` // } `json:"insuinfo"` // } `json:"output"` // RefmsgTime string `json:"refmsg_time"` // RespondTime string `json:"respond_time"` // Signtype interface{} `json:"signtype"` // WarnInfo interface{} `json:"warn_info"` //} func AddContractSignatory(contractId string, signers string, contract models.NewContract) string { var url string url = "http://demo.itruscloud.com/apigate/contractpaasapi/contract/addSignerByFile" appId := beego.AppConfig.String("sign_appid") serviceKye := beego.AppConfig.String("serviceKye") serviceCode := beego.AppConfig.String("serviceCode") maprequest := make(map[string]interface{}) maprequest["contractId"] = "153497878806048027" maprequestOne := make(map[string]interface{}) maprequestTwo := make(map[string]interface{}) var signFiles models.SignFiles signFiles.DocId = 343465645 inputDataArrOne := make([]map[string]interface{}, 0) inputDataArrTwo := make([]map[string]interface{}, 0) for _, item := range signFiles.XySignControls { inputDataThree := make(map[string]interface{}) inputDataThree["key"] = item.Key inputDataThree["type"] = item.Type inputDataThree["pageNum"] = item.PageNum inputDataThree["positionX"] = item.PositionX inputDataThree["positionY"] = item.PositionY inputDataArrOne = append(inputDataArrOne, inputDataThree) } for _, item := range signFiles.KeywordSignControls { inputDataFour := make(map[string]interface{}) inputDataFour["key"] = item.Key inputDataFour["type"] = item.Type inputDataFour["pageNum"] = item.PageNum inputDataFour["keyword"] = item.KeyWord inputDataFour["positionX"] = item.PositionX inputDataFour["positionY"] = item.PositionY inputDataArrTwo = append(inputDataArrTwo, inputDataFour) } maprequestTwo["xySignControls"] = inputDataArrOne maprequestTwo["keywordSignControls"] = inputDataArrTwo maprequestTwo["docId"] = 1234555 maprequestOne["userId"] = "" maprequestOne["signerType"] = "" maprequestOne["enterpriseId"] = "" maprequestOne["sequence"] = "" maprequestOne["sendMsg"] = false maprequestOne["signFiles"] = maprequestTwo maprequestOne["signers"] = maprequestOne maprequest["contractId"] = contract.ContractId maprequest["signers"] = maprequestOne byterequest, _ := json.Marshal(maprequest) reader := bytes.NewReader(byterequest) signatureStr, _ := generateHMACSHA1SignatureOne(maprequest, serviceKye, serviceCode) request, err := http.NewRequest("POST", url, reader) if err != nil { fmt.Println(err.Error()) } request.Header.Set("appId", appId) request.Header.Set("serviceCode", serviceCode) request.Header.Set("Content-Type", "application/json;charset=UTF-8") request.Header.Set("Content-Signature", signatureStr) client := http.Client{} resp, err := client.Do(request) if err != nil { fmt.Println(err.Error()) } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err.Error()) } str := string(respBytes) return str } func GetHisDoctorAdviceInfoList(user_org_id int64) (advice []*models.XtDrugWarehouseInfo, err error) { err = XTReadDB().Where("status= 1 and is_check= 1").Find(&advice).Error return advice, err } func UpdatePatietPrice(id int64, retail_price float64) (models.DrugFlow, error) { flow := models.DrugFlow{} err := XTWriteDB().Model(&flow).Where("warehousing_detail_id = ? and status=1", id).Updates(map[string]interface{}{"price": retail_price}).Error return flow, err }