| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | package reportimport (	"context"	apiShanghu "duoduo/apis/shanghu"	"duoduo/models/shanghu"	"encoding/json"	"fmt"	"github.com/go-pay/gopay"	"time")func CashOut() {	for true {		var cashOut shanghu.CashOut		bm := make(gopay.BodyMap)		cashOut.Status = 1 		cashOutInfo, err := cashOut.GetCashOutByStatus()		if err != nil {			fmt.Println("GetCashOutByStatus err ", err.Error())			break		}		wechatV3, err := apiShanghu.NewWechatServiceV3("")		if err != nil {			break		}		bm.Set("need_query_detail", false)		transferBatch, err := wechatV3.V3TransferMerchantQuery(context.Background(), cashOutInfo.PartnerTradeNo, bm)		if err != nil {			break		}		by, _ := json.Marshal(transferBatch)		fmt.Println(string(by))		if transferBatch.Code != 0 {			break		}		if transferBatch.Response.TransferBatch.FailNum == 0 && transferBatch.Response.TransferBatch.BatchStatus == "FINISHED" { 			cashOut.PartnerTradeNo = transferBatch.Response.TransferBatch.OutBatchNo			cashOut.Status = 3			err = cashOut.UpdateCashOutStatus()			if err != nil {				break			}		} else if transferBatch.Response.TransferBatch.FailNum > 0 { 			cashOut.PartnerTradeNo = transferBatch.Response.TransferBatch.OutBatchNo			cashOut.Status = 2			err = cashOut.UpdateCashOutStatus()			if err != nil {				break			}		} else if transferBatch.Response.TransferBatch.BatchStatus == "CLOSE" {			cashOut.PartnerTradeNo = transferBatch.Response.TransferBatch.OutBatchNo			cashOut.Status = 2			cashOut.FailRes = transferBatch.Response.TransferBatch.CloseReason			err = cashOut.UpdateCashOutStatusClose()			if err != nil {				break			}		} else {			time.Sleep(time.Second * 1)			continue		}	}}func CashOutAccount() {	for true {		var cashOut shanghu.CashOut		cashOut.AccountStatus = 0 		cashOut.Status = 3        		cashOutInfo, err := cashOut.GetCashOutByAccount()		if err != nil {			break		}		cashOut.AccountStatus = 3 		cashOut.ID = cashOutInfo.ID		err = cashOut.UpdateCashOutAccountStatus()		if err != nil {			break		}		if cashOutInfo.AppID == "wxef36f8713d6469b5" { 			var account shanghu.ClientPayTrans			err = account.SettleSubMerchant(cashOutInfo.Amount, cashOutInfo.OpenID, cashOutInfo.ID)			if err != nil {				cashOut.AccountStatus = 2 				cashOut.AccountFailRes = err.Error()				cashOut.ID = cashOutInfo.ID				cashOut.UpdateCashOutAccountStatus()				continue			}		} else if cashOutInfo.AppID == "wx25357518f710b8ce" { 			var account shanghu.ClientPayTrans			err = account.SettleSubClient(cashOutInfo.Amount, cashOutInfo.OpenID, cashOutInfo.ID)			if err != nil {				cashOut.AccountStatus = 2 				cashOut.AccountFailRes = err.Error()				cashOut.ID = cashOutInfo.ID				cashOut.UpdateCashOutAccountStatus()				continue			}		} else {			continue		}	}}
 |