| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 | 
							- package report
 
- import (
 
- 	"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 == "wxcf8e7dbe7d7e1ebd" { //b端 云联通商户卡
 
- 			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 == "wx8595c589dd736486" { //c端 云联通玩乐卡
 
- 			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
 
- 			}
 
- 			//给
 
- 			var client shanghu.MerchantClientUser
 
- 			client.Code = "7jb6"
 
- 			clientInfo, _ := client.GetUserInfoByCode()
 
- 			if clientInfo.ClientOpenID == account.ClientOpenID { //超级管理员钱已经有了不需要收服务费  暂时无效
 
- 				continue
 
- 			} else { //服务费加到超级管理员账户
 
- 				var accountClient shanghu.ClientPayTrans
 
- 				accountClient.SettleAddCashOutFee(cashOutInfo.Fee, clientInfo.ClientOpenID, cashOutInfo.ID)
 
- 			}
 
- 		} else {
 
- 			continue
 
- 		}
 
- 	}
 
- }
 
 
  |