• haoyanbin's avatar
    1 · 9bf9e037
    haoyanbin authored
    9bf9e037
eqb.go 5.36 KB
package utils

import (
	"bytes"
	"encoding/json"
	"fmt"
	"gin-vue-admin/global"
	"io/ioutil"
	"net/http"
	"time"
)

var ProjectId = global.GVA_CONFIG.Eqb.ProjectId
var ProjectSecret = global.GVA_CONFIG.Eqb.ProjectSecret
var GetUploadurl = global.GVA_CONFIG.Eqb.ApiHost + "file/uploadurl"                                   //获取文件直传地址
var AddPersonUrl = "account/create/person"                                                            //创建个人账户地址
var SavePersonUrl = global.GVA_CONFIG.Eqb.ApiHost + "account/person/update"                           //更新个人账号地址
var AddOrganizeUrl = global.GVA_CONFIG.Eqb.ApiHost + "account/create/organize/common"                 //创建企业账户地址
var SaveOrganizeUrl = global.GVA_CONFIG.Eqb.ApiHost + "ccount/organize/update"                        //更新企业账户地址
var SilentSignUrl = global.GVA_CONFIG.Eqb.ApiHost + "account/platform/silentsign"                     //设置静默签署授权地址
var RevokeSilentsignUrl = global.GVA_CONFIG.Eqb.ApiHost + "account/platform/revokeSilentsign"         //撤回静默签署
var AddcontractUrl = global.GVA_CONFIG.Eqb.ApiHost + "doc/createbyfilekey"                            //本地文件创建合同地址
var CreatebyfilekeyUrl = global.GVA_CONFIG.Eqb.ApiHost + "template/createbyfilekey"                   //创建模板地址
var CreatebytemplateUrl = global.GVA_CONFIG.Eqb.ApiHost + "doc/createbytemplate"                      //合同模板创建合同地址
var AddProcessUrl = global.GVA_CONFIG.Eqb.ApiHost + "sign/contract/addProcess"                        //创建合同签署流程
var UserSignTaskUrl = global.GVA_CONFIG.Eqb.ApiHost + "sign/contract/userSignTask"                    //发起用户自动签署
var UserSignTasksUrl = global.GVA_CONFIG.Eqb.ApiHost + "sign/contracts/platformSignTask"              //多文档发起用户自动签署
var PlatformSignTaskUrl = global.GVA_CONFIG.Eqb.ApiHost + "sign/contract/platformSignTask"            //发起对接平台自动签署
var FlowGetViewUrl = global.GVA_CONFIG.Eqb.ApiHost + "flow/get/viewurl"                               //获取签署任务查看地址
var ArchiveProcessUrl = global.GVA_CONFIG.Eqb.ApiHost + "sign/contract/archiveProcess"                //归档流程地址
var DetailUrl = global.GVA_CONFIG.Eqb.ApiHost + "sign/contract/detail"                                //查看地址
var DownloadUrl = global.GVA_CONFIG.Eqb.ApiHost + "sign/download"                                     //签署文件下载地址
var OrgAuthUrl = global.GVA_CONFIG.Eqb.AuthApiHost + "realname/rest/external/organ/orgAuth"           //企业验证地址
var InfoAuthUrl = global.GVA_CONFIG.Eqb.AuthApiHost + "realname/rest/external/organ/infoAuth-special" //个体验证地址
var AccessUrl = global.GVA_CONFIG.Eqb.AccessTokenUrl + "?appId=" + global.GVA_CONFIG.Eqb.ProjectId + "&secret=" + global.GVA_CONFIG.Eqb.ProjectSecret + "&grantType=client_credentials"

//创建个人账户
func CreateAccountPerson(req *CreateAccountPersonReq) *CreateAccountPersonReply {

	resp := EqbPost(global.GVA_CONFIG.Eqb.ApiHost+AddPersonUrl, req)

	reply := new(CreateAccountPersonReply)

	UnserislizeJson(resp, reply)

	return reply
}

//信息校验
func RequestOrganiza(data RequestOrganizaReq, Status int) {
	infoAuth := ""
	if Status == 1 {
		infoAuth = OrgAuthUrl
	} else {
		infoAuth = InfoAuthUrl
	}
	if data.Name != "" && data.LegalName != "" && data.LegalIdno != "" {
		resp := EqbAuthPost(infoAuth, data)

		reply := new(interface{})

		UnserislizeJson(resp, reply)

		return
	}
}

// 发送POST请求
// url:         请求地址
// data:        POST请求提交的数据
// contentType: 请求体格式,如:application/json
// content:     请求放回的内容
func EqbPost(url string, data interface{}) string {
	// 超时时间:10秒
	client := &http.Client{Timeout: 10 * time.Second}

	jsonStr, _ := json.Marshal(data)
	fmt.Println(string(jsonStr))

	reqest, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
	reqest.Header.Add("X-Tsign-Open-App-Id", global.GVA_CONFIG.Eqb.ProjectId)
	reqest.Header.Add("X-Tsign-Open-App-Secret", global.GVA_CONFIG.Eqb.ProjectSecret)
	reqest.Header.Add("Content-Type", "application/json")

	if err != nil {
		panic(err)
	}

	resp, _ := client.Do(reqest)
	defer resp.Body.Close()

	result, _ := ioutil.ReadAll(resp.Body)

	sqlStr := "UPDATE api_log SET reply=? WHERE id=?"
	global.GVA_DB.Exec(sqlStr, string(result), 1)
	return string(result)
}

// 发送POST请求
// url:         请求地址
// data:        POST请求提交的数据
// contentType: 请求体格式,如:application/json
// content:     请求放回的内容
func EqbAuthPost(url string, data interface{}) string {
	// 超时时间:10秒
	client := &http.Client{Timeout: 10 * time.Second}

	jsonStr, _ := json.Marshal(data)
	fmt.Println(string(jsonStr))
	signature := ComputeHmacSha256(string(jsonStr), ProjectSecret)

	reqest, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
	reqest.Header.Add("X-timevale-mode", "package")
	reqest.Header.Add("X-timevale-project-id", ProjectId)
	reqest.Header.Add("X-timevale-signature", signature)
	reqest.Header.Add("X-timevale-signature-algorithm", "hmac-sha256")
	reqest.Header.Add("Content-Type", "application/json")

	if err != nil {
		panic(err)
	}

	resp, _ := client.Do(reqest)
	defer resp.Body.Close()

	result, _ := ioutil.ReadAll(resp.Body)
	return string(result)
}