You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

242 lines
9.9 KiB
Go

package logic
import (
"chain-dci/pb/dci"
"chain-dci/pkg/app"
errCommon "chain-dci/pkg/err"
"chain-dci/pkg/msg"
"fmt"
bccrClient "github.com/antchain-openapi-sdk-go/bccr/client"
"github.com/gocolly/colly/v2"
"github.com/jinzhu/copier"
"strings"
"time"
)
type IDciRegistration interface {
CreateDciRegistration(req *dci.CreateDciRegistrationRequest) (res *dci.CreateDciRegistrationResponse, err error)
QueryDciRegistration(req *dci.QueryDciRegistrationRequest) (res *dci.QueryDciRegistrationResponse, err error)
GetDciPayUrl(req *dci.GetDciPayUrlRequest) (res *dci.GetDciPayUrlResponse, err error)
QueryDciPay(req *dci.QueryDciPayRequest) (res *dci.QueryDciPayResponse, err error)
GetDciRegistrationcert(req *dci.GetDciRegistrationcertRequest) (res *dci.GetDciRegistrationcertResponse, err error)
RetryDciRegistration(req *dci.RetryDciRegistrationRequest) (res *dci.RetryDciRegistrationResponse, err error)
CloseDciRegistration(req *dci.CloseDciRegistrationRequest) (res *dci.CloseDciRegistrationResponse, err error)
}
type DciRegistration struct {
}
// CreateDciRegistration 发起数登申请
func (r *DciRegistration) CreateDciRegistration(req *dci.CreateDciRegistrationRequest) (res *dci.CreateDciRegistrationResponse, err error) {
errCommon.NoReturnInfo(req, "发起数登申请 参数信息: ")
res = new(dci.CreateDciRegistrationResponse)
createDciRegistrationRequest := new(bccrClient.CreateDciRegistrationRequest)
_ = copier.CopyWithOption(&createDciRegistrationRequest, req, copier.Option{DeepCopy: false})
fmt.Printf("req : %+v\n", req)
fmt.Println("======================================================= ============== ===========00")
fmt.Printf("createDciRegistrationRequest : %+v\n", createDciRegistrationRequest)
clientToken, err := createToken(time.Now().UnixMilli(), req.DciContentId, app.ModuleClients.SfNode.Generate().Base64())
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrCreateClientToken, "创建clientToken 失败: ")
}
createDciRegistrationRequest.SetClientToken(clientToken)
createDciPreregistrationResponse, err := app.ModuleClients.BccrClient.CreateDciRegistration(createDciRegistrationRequest)
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrCreateDciRegistration, "发起数登申请 失败: ")
}
errCommon.NoReturnInfo(createDciPreregistrationResponse, "发起数登申请 成功: ")
_ = copier.CopyWithOption(&res, createDciPreregistrationResponse, copier.Option{DeepCopy: false})
return
}
// QueryDciRegistration 查询数登申请
func (r *DciRegistration) QueryDciRegistration(req *dci.QueryDciRegistrationRequest) (res *dci.QueryDciRegistrationResponse, err error) {
errCommon.NoReturnInfo(req, "查询数登申请 参数信息: ")
res = new(dci.QueryDciRegistrationResponse)
queryDciRegistrationRequest := new(bccrClient.QueryDciRegistrationRequest)
_ = copier.CopyWithOption(&queryDciRegistrationRequest, req, copier.Option{DeepCopy: false})
queryDciRegistrationResponse, err := app.ModuleClients.BccrClient.QueryDciRegistration(queryDciRegistrationRequest)
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrQueryDciRegistration, "查询数登申请 失败: ")
}
errCommon.NoReturnInfo(queryDciRegistrationResponse, "查询数登申请 成功: ")
_ = copier.CopyWithOption(&res, queryDciRegistrationResponse, copier.Option{DeepCopy: false})
return
}
// GetDciPayUrl 数登支付链接获取
func (r *DciRegistration) GetDciPayUrl(req *dci.GetDciPayUrlRequest) (res *dci.GetDciPayUrlResponse, err error) {
errCommon.NoReturnInfo(req, "数登支付链接获取 参数信息: ")
res = new(dci.GetDciPayUrlResponse)
getDciPayUrlRequest := new(bccrClient.GetDciPayurlRequest)
_ = copier.CopyWithOption(&getDciPayUrlRequest, req, copier.Option{DeepCopy: false})
clientToken, err := createToken(time.Now().UnixMilli(), req.DigitalRegisterId, app.ModuleClients.SfNode.Generate().Base64())
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrCreateClientToken, "创建clientToken 失败: ")
}
getDciPayUrlRequest.SetClientToken(clientToken)
getDciPayUrlResponse, err := app.ModuleClients.BccrClient.GetDciPayurl(getDciPayUrlRequest)
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrGetDciPayurl, "数登支付链接获取 失败: ")
}
errCommon.NoReturnInfo(getDciPayUrlResponse, "数登支付链接获取 成功: ")
_ = copier.CopyWithOption(&res, getDciPayUrlResponse, copier.Option{DeepCopy: false})
c := colly.NewCollector()
var amount string
c.OnHTML(".ft-center.qrcode-header-money", func(e *colly.HTMLElement) {
amount = strings.TrimSpace(e.Text)
})
res.Amount = amount
return
}
func (r *DciRegistration) GetDciPayAmount(req *dci.GetDciPayUrlRequest) (res *dci.GetDciPayUrlResponse, err error) {
errCommon.NoReturnInfo(req, "数登支付链接获取 参数信息: ")
res = new(dci.GetDciPayUrlResponse)
getDciPayUrlRequest := new(bccrClient.GetDciPayurlRequest)
_ = copier.CopyWithOption(&getDciPayUrlRequest, req, copier.Option{DeepCopy: false})
clientToken, err := createToken(time.Now().UnixMilli(), req.DigitalRegisterId, app.ModuleClients.SfNode.Generate().Base64())
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrCreateClientToken, "创建clientToken 失败: ")
}
getDciPayUrlRequest.SetClientToken(clientToken)
getDciPayUrlResponse, err := app.ModuleClients.BccrClient.GetDciPayurl(getDciPayUrlRequest)
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrGetDciPayurl, "数登支付链接获取 失败: ")
}
errCommon.NoReturnInfo(getDciPayUrlResponse, "数登支付链接获取 成功: ")
return
}
// QueryDciPay 数登支付查询
func (r *DciRegistration) QueryDciPay(req *dci.QueryDciPayRequest) (res *dci.QueryDciPayResponse, err error) {
errCommon.NoReturnInfo(req, "数登支付查询 参数信息: ")
res = new(dci.QueryDciPayResponse)
queryDciPayRequest := new(bccrClient.QueryDciPayRequest)
_ = copier.CopyWithOption(&queryDciPayRequest, req, copier.Option{DeepCopy: false})
queryDciPayResponse, err := app.ModuleClients.BccrClient.QueryDciPay(queryDciPayRequest)
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrQueryDciPay, "数登支付查询 失败: ")
}
errCommon.NoReturnInfo(queryDciPayResponse, "数登支付查询 成功: ")
_ = copier.CopyWithOption(&res, queryDciPayResponse, copier.Option{DeepCopy: false})
return
}
// GetDciRegistrationcert 获取数登证书下载
func (r *DciRegistration) GetDciRegistrationcert(req *dci.GetDciRegistrationcertRequest) (res *dci.GetDciRegistrationcertResponse, err error) {
errCommon.NoReturnInfo(req, "获取数登证书下载 参数信息: ")
res = new(dci.GetDciRegistrationcertResponse)
getDciRegistrationcertRequest := new(bccrClient.GetDciRegistrationcertRequest)
_ = copier.CopyWithOption(&getDciRegistrationcertRequest, req, copier.Option{DeepCopy: false})
clientToken, err := createToken(time.Now().UnixMilli(), req.DigitalRegisterId, app.ModuleClients.SfNode.Generate().Base64())
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrCreateClientToken, "创建clientToken 失败: ")
}
getDciRegistrationcertRequest.SetClientToken(clientToken)
getDciRegistrationcertResponse, err := app.ModuleClients.BccrClient.GetDciRegistrationcert(getDciRegistrationcertRequest)
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrGetDciRegistrationcert, "获取数登证书下载 失败: ")
}
errCommon.NoReturnInfo(getDciRegistrationcertResponse, "获取数登证书下载 成功: ")
_ = copier.CopyWithOption(&res, getDciRegistrationcertResponse, copier.Option{DeepCopy: false})
return
}
// RetryDciRegistration 补正申请
func (r *DciRegistration) RetryDciRegistration(req *dci.RetryDciRegistrationRequest) (res *dci.RetryDciRegistrationResponse, err error) {
errCommon.NoReturnInfo(req, "补正申请 参数信息: ")
res = new(dci.RetryDciRegistrationResponse)
retryDciRegistrationRequest := new(bccrClient.RetryDciRegistrationRequest)
_ = copier.CopyWithOption(&retryDciRegistrationRequest, req, copier.Option{DeepCopy: false})
clientToken, err := createToken(time.Now().UnixMilli(), req.DigitalRegisterId, req.DciContentId, app.ModuleClients.SfNode.Generate().Base64())
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrCreateClientToken, "创建clientToken 失败: ")
}
retryDciRegistrationRequest.SetClientToken(clientToken)
retryDciRegistrationResponse, err := app.ModuleClients.BccrClient.RetryDciRegistration(retryDciRegistrationRequest)
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrRetryDciRegistration, "补正申请 失败: ")
}
errCommon.NoReturnInfo(retryDciRegistrationResponse, "补正申请 成功: ")
_ = copier.CopyWithOption(&res, retryDciRegistrationResponse, copier.Option{DeepCopy: false})
return
}
// CloseDciRegistration 数登停止申请
func (r *DciRegistration) CloseDciRegistration(req *dci.CloseDciRegistrationRequest) (res *dci.CloseDciRegistrationResponse, err error) {
errCommon.NoReturnInfo(req, "数登停止申请 参数信息: ")
res = new(dci.CloseDciRegistrationResponse)
closeDciRegistrationRequest := new(bccrClient.CloseDciRegistrationRequest)
_ = copier.CopyWithOption(&closeDciRegistrationRequest, req, copier.Option{DeepCopy: false})
clientToken, err := createToken(time.Now().UnixMilli(), req.DigitalRegisterId, req.Name, req.MobileNo, app.ModuleClients.SfNode.Generate().Base64())
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrCreateClientToken, "创建clientToken 失败: ")
}
closeDciRegistrationRequest.SetClientToken(clientToken)
closeDciRegistrationResponse, err := app.ModuleClients.BccrClient.CloseDciRegistration(closeDciRegistrationRequest)
if err != nil {
return nil, errCommon.ReturnError(err, msg.ErrCloseDciRegistration, "数登停止申请 失败: ")
}
errCommon.NoReturnInfo(closeDciRegistrationResponse, "数登停止申请 成功: ")
_ = copier.CopyWithOption(&res, closeDciRegistrationResponse, copier.Option{DeepCopy: false})
return
}