| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | package reportimport (	"duoduo/models/shanghu"	"github.com/shopspring/decimal"	"time")// C端分账// 分账逻辑:// 1.获取待分账、分账失败的数据// 2.根据商户卡id 将 90%分给商家,剩下的 10% 分给用户// 3.一条一条的处理,防止处理数据太多导致重复重复分账 查到数据里面修改成分账中func ClientAccount() {	//	for true {		//查询订单信息		var account shanghu.ClientPayTrans		account.AccountStatus = 1 //未分账		account.Status = 2        //支付成功		clientTrans, err := account.GetPayTransByStatus()		if err != nil {			break		}		data := make(map[string]interface{})		data["account_status"] = 3 //分账中		data["updated_at"] = time.Now()		err = clientTrans.UpdateById(data)		if err != nil {			break		}		//查询卡信息		var cardInfo shanghu.MerchantCard		cardInfo.ID = clientTrans.MerchantCardID		merchantCard, err := cardInfo.GetMerchantCard()		if err != nil {			dataErr := make(map[string]interface{})			dataErr["account_status"] = 2            //分账失败			dataErr["account_err_log"] = err.Error() //分账失败日志			dataErr["updated_at"] = time.Now()			err = clientTrans.UpdateById(dataErr)			if err != nil {				break			}			continue		}		//分账		//按比例商户一部分,分销一部分		//计算金额		clientAmount := account.Amount.Mul(decimal.NewFromInt(merchantCard.RebateRate)).Div(decimal.NewFromInt(100)).Round(2)		//merchantAmount := account.Amount.Sub(clientAmount).Round(2)		account.Amount.Sub(clientAmount).Round(2)	}}
 |