fonchain-fiee/pkg/service/approval/chain.go
2025-02-19 14:24:15 +08:00

287 lines
13 KiB
Go

package approval
import (
"context"
"dubbo.apache.org/dubbo-go/v3/common/logger"
"fmt"
account2 "github.com/fonchain_enterprise/fonchain-main/api/account"
"github.com/fonchain_enterprise/fonchain-main/api/approval"
"github.com/fonchain_enterprise/fonchain-main/api/chain"
"github.com/fonchain_enterprise/fonchain-main/pkg/config"
"github.com/fonchain_enterprise/fonchain-main/pkg/e"
"github.com/fonchain_enterprise/fonchain-main/pkg/service"
"github.com/fonchain_enterprise/fonchain-main/pkg/utils"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"time"
)
func StoreBaiduChainApprovalFilePost(c *gin.Context) {
var req approval.DetailRequest
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, e.Error, err)
return
}
res := approval.UpdatePromotionReq{}
detailReq := approval.DetailRequest{ID: req.ID}
detail, err := service.ApprovalProvider.Detail(context.Background(), &detailReq)
if err != nil {
fmt.Println("============= 查询 approval ========== 任命审批 ===============")
fmt.Println("err :", err)
logger.Errorf("查询 approval ========== 任命审批 err %+v\n", err)
fmt.Println("============= 查询 approval ========== 任命审批 ===============")
return
}
if detail.Promotion == nil {
fmt.Println("============= approval Promotion ========== 任命审批 ===============")
fmt.Printf("detail : %+v \n", detail)
logger.Errorf("approval Promotion ========== 任命审批 detail : %+v \n", detail)
fmt.Println("============= approval Promotion ========== 任命审批 ===============")
return
}
if detail.Status != e.ApprovalWorkStatusOk {
fmt.Printf("审批尚未通过 approval is %+v\n", detail)
return
}
// 获取 任命文件
file := utils.Get(detail.Promotion.FileUrl)
fmt.Println("============= Promotion baidu file ========== 任命审批 ===============")
fmt.Printf("file : %+v \n", file)
fmt.Println("============= Promotion baidu file ========== 任命审批 ===============")
fileHash := utils.SHA256V([]byte(file))
fmt.Println("============= Promotion baidu file hash ========== 任命审批 ===============")
fmt.Printf("file hash : %+v \n", fileHash)
fmt.Println("============= Promotion baidu file hash ========== 任命审批 ===============")
baiduReq := &chain.BaiduReq{
FileHash: fileHash,
FileName: detail.Promotion.FileName,
}
baiduRes, err := service.ChainProvider.CoBaiduChain(context.Background(), baiduReq)
if err != nil {
fmt.Println("============= Promotion baidu ========== 任命审批 ===============")
fmt.Printf("err : %+v \n", err)
logger.Errorf("Promotion baidu ========== 任命审批 err %+v\n", err)
fmt.Println("============= Promotion baidu ========== 任命审批 ===============")
return
}
go func(promotionID uint64, requestId string) {
for {
//if requestTimes == 0 {
// return
//}
time.Sleep(30 * time.Second)
queryBaiduChainInfoRes := new(chain.BaiduReqInfoResponse)
baiduReqInfoReq := &chain.BaiduReqInfoRequest{RequestId: requestId}
queryBaiduChainInfoRes, err = service.ChainProvider.BaiduReqInfo(context.Background(), baiduReqInfoReq)
if err != nil {
fmt.Println("============= Promotion baidu res err ========== 任命审批 ===============")
fmt.Printf("err : %+v \n", err)
logger.Errorf("Promotion baidu ========== 任命审批 err %+v\n", err)
fmt.Println("============= Promotion baidu res err ========== 任命审批 ===============")
return
}
//fmt.Println("============= Promotion baidu res 1 ========== 任命审批 ===============")
//fmt.Printf("queryBaiduChainInfores : %+v \n", queryBaiduChainInfoRes)
//logger.Errorf("Promotion baidu res ========== 任命审批 res %+v\n", queryBaiduChainInfoRes)
//fmt.Println("============= Promotion baidu res 1 ========== 任命审批 ===============")
if queryBaiduChainInfoRes.BlockId != "" && queryBaiduChainInfoRes.CertUrl != "" && queryBaiduChainInfoRes.TxId != "" {
fmt.Println("============= Promotion baidu res 2 ========== 任命审批 ===============")
fmt.Printf("queryBaiduChainInfores : %+v \n", queryBaiduChainInfoRes)
logger.Errorf("Promotion baidu res ========== 任命审批 res %+v\n", queryBaiduChainInfoRes)
fmt.Println("============= Promotion baidu res 2 ========== 任命审批 ===============")
updatePromotionReq := &approval.UpdatePromotionReq{
ID: promotionID,
RequestID: requestId,
TxId: queryBaiduChainInfoRes.TxId,
BlockId: queryBaiduChainInfoRes.BlockId,
BaiduCertUrl: queryBaiduChainInfoRes.CertUrl,
}
fmt.Println("============= Promotion updatePromotionReq ========== 任命审批 ===============")
fmt.Printf("updatePromotionReq : %+v \n", updatePromotionReq)
fmt.Println("============= Promotion updatePromotionReq ========== 任命审批 ===============")
_, err = service.ApprovalProvider.UpdatePromotionChainInfo(context.Background(), updatePromotionReq)
if err != nil {
fmt.Println("============= Promotion update ========== 任命审批 ===============")
fmt.Printf("err : %+v \n", err)
logger.Errorf(" Promotion update ========== 任命审批 err %+v\n", err)
fmt.Println("============= Promotion update ========== 任命审批 ===============")
}
userInfReq := &account2.InfoRequest{
ID: detail.Promotion.StaffUID,
}
userInfoRes, err := service.AccountProvider.Info(context.Background(), userInfReq)
if err != nil {
fmt.Println("============= account info ========== 任命审批 ===============")
fmt.Printf("err : %+v \n", err)
logger.Errorf(" account info ========== 任命审批 err %+v\n", err)
fmt.Println("============= account info ========== 任命审批 ===============")
return
}
msgReq := account2.SendCustomMsgRequest{
ID: detail.Promotion.StaffUID,
TelNum: userInfoRes.Info.TelNum,
Url: updatePromotionReq.BaiduCertUrl,
MId: 148561,
SigNo: uint32(config.DefaultSignNo),
}
fmt.Println("发送短信", msgReq)
mres, err := service.AccountProvider.SendCustomMsg(context.Background(), &msgReq)
fmt.Println("发送短信返回", mres, err)
return
}
}
}(detail.Promotion.ID, baiduRes.RequestId)
service.Success(c, res)
}
func SendSmsMsg(c *gin.Context) {
msgReq := account2.SendCustomMsgRequest{
TelNum: "13030633957",
Url: "https://xchain-image-res.bj.bcebos.com/saas_cert/20230830/c9adf6703104c028d78d1b455a2981a6.pdf?authorization=bce-auth-v1%2F162f503d1eaa4d62b5328bf114a62ff6%2F2023-08-30T14%3A08%3A36Z%2F-1%2Fhost%2F7eb2d5c5e8967469e5007fb93e3b1b776408ddf648ecabd3a3914c07a4d0c940",
MId: 148561,
SigNo: uint32(config.DefaultSignNo),
}
fmt.Println("发送短信", msgReq)
mres, err := service.AccountProvider.SendCustomMsg(context.Background(), &msgReq)
fmt.Println("发送短信返回", mres, err)
if err != nil {
msgReq.Url = "https://xchain-image-res.bj.bcebos.com/saas_cert/20230830/c9adf6703104c028d78d1b455a2981a6.pdf"
}
mres, err = service.AccountProvider.SendCustomMsg(context.Background(), &msgReq)
fmt.Println("发送短信返回", mres, err)
}
func StoreBaiduChainApprovalFile(approvalID uint64) {
detailReq := approval.DetailRequest{ID: approvalID}
detail, err := service.ApprovalProvider.Detail(context.Background(), &detailReq)
if err != nil {
fmt.Println("============= 查询 approval ========== 任命审批 ===============")
fmt.Println("err :", err)
logger.Errorf("查询 approval ========== 任命审批 err %+v\n", err)
fmt.Println("============= 查询 approval ========== 任命审批 ===============")
return
}
if detail.Promotion == nil {
fmt.Println("============= approval Promotion ========== 任命审批 ===============")
fmt.Printf("detail : %+v \n", detail)
logger.Errorf("approval Promotion ========== 任命审批 detail : %+v \n", detail)
fmt.Println("============= approval Promotion ========== 任命审批 ===============")
return
}
if detail.Status != e.ApprovalWorkStatusOk {
fmt.Printf("审批尚未通过 approval is %+v\n", detail)
return
}
// 获取 任命文件
file := utils.Get(detail.Promotion.FileUrl)
fileHash := utils.SHA256V([]byte(file))
baiduReq := &chain.BaiduReq{
FileHash: fileHash,
FileName: detail.Promotion.FileName,
}
baiduRes, err := service.ChainProvider.CoBaiduChain(context.Background(), baiduReq)
if err != nil {
fmt.Println("============= Promotion baidu ========== 任命审批 ===============")
fmt.Printf("err : %+v \n", err)
logger.Errorf("Promotion baidu ========== 任命审批 err %+v\n", err)
fmt.Println("============= Promotion baidu ========== 任命审批 ===============")
return
}
go func(promotion *approval.Promotion, requestId string) {
for {
//if requestTimes == 0 {
// return
//}
time.Sleep(30 * time.Second)
queryBaiduChainInfoRes := new(chain.BaiduReqInfoResponse)
baiduReqInfoReq := &chain.BaiduReqInfoRequest{RequestId: requestId}
queryBaiduChainInfoRes, err = service.ChainProvider.BaiduReqInfo(context.Background(), baiduReqInfoReq)
if err != nil {
fmt.Println("============= Promotion baidu res err ========== 任命审批 ===============")
fmt.Printf("err : %+v \n", err)
logger.Errorf("Promotion baidu ========== 任命审批 err %+v\n", err)
fmt.Println("============= Promotion baidu res err ========== 任命审批 ===============")
return
}
//fmt.Println("============= Promotion baidu res 1 ========== 任命审批 ===============")
//fmt.Printf("queryBaiduChainInfores : %+v \n", queryBaiduChainInfoRes)
//logger.Errorf("Promotion baidu res ========== 任命审批 res %+v\n", queryBaiduChainInfoRes)
//fmt.Println("============= Promotion baidu res 1 ========== 任命审批 ===============")
if queryBaiduChainInfoRes.BlockId != "" && queryBaiduChainInfoRes.CertUrl != "" && queryBaiduChainInfoRes.TxId != "" {
fmt.Println("============= Promotion baidu res 2 ========== 任命审批 ===============")
fmt.Printf("queryBaiduChainInfores : %+v \n", queryBaiduChainInfoRes)
logger.Errorf("Promotion baidu res ========== 任命审批 res %+v\n", queryBaiduChainInfoRes)
fmt.Println("============= Promotion baidu res 2 ========== 任命审批 ===============")
updatePromotionReq := &approval.UpdatePromotionReq{
ID: promotion.ID,
RequestID: requestId,
TxId: queryBaiduChainInfoRes.TxId,
BlockId: queryBaiduChainInfoRes.BlockId,
BaiduCertUrl: queryBaiduChainInfoRes.CertUrl,
}
userInfReq := &account2.InfoRequest{
ID: detail.Promotion.StaffUID,
}
userInfoRes, err := service.AccountProvider.Info(context.Background(), userInfReq)
if err != nil {
fmt.Println("============= account info ========== 任命审批 ===============")
fmt.Printf("err : %+v \n", err)
logger.Errorf(" account info ========== 任命审批 err %+v\n", err)
fmt.Println("============= account info ========== 任命审批 ===============")
return
}
effectiveTime, _ := time.ParseInLocation("2006-01-02", promotion.EffectiveTime, time.Local)
nowTime, _ := time.ParseInLocation("2006-01-02", time.Now().Format("2006-01-02"), time.Local)
if !effectiveTime.After(nowTime) {
msgReq := account2.SendCustomMsgRequest{
ID: detail.Promotion.StaffUID,
TelNum: userInfoRes.Info.TelNum,
Url: updatePromotionReq.BaiduCertUrl,
MId: 148561,
SigNo: uint32(config.DefaultSignNo),
}
fmt.Println("发送短信", msgReq)
mres, err := service.AccountProvider.SendCustomMsg(context.Background(), &msgReq)
fmt.Println("发送短信返回", mres, err)
if err == nil { // 短信发送成功
updatePromotionReq.IsSend = e.SendPromotionMsgSuccess
}
}
fmt.Println("============= Promotion updatePromotionReq ========== 任命审批 ===============")
fmt.Printf("updatePromotionReq : %+v \n", updatePromotionReq)
fmt.Println("============= Promotion updatePromotionReq ========== 任命审批 ===============")
_, err = service.ApprovalProvider.UpdatePromotionChainInfo(context.Background(), updatePromotionReq)
if err != nil {
fmt.Println("============= Promotion update ========== 任命审批 ===============")
fmt.Printf("err : %+v \n", err)
logger.Errorf(" Promotion update ========== 任命审批 err %+v\n", err)
fmt.Println("============= Promotion update ========== 任命审批 ===============")
}
return
}
}
}(detail.Promotion, baiduRes.RequestId)
return
}