package user import ( "duoduo/models/mysql" "duoduo/models/user" "duoduo/tools" "duoduo/tools/app" "github.com/shopspring/decimal" "github.com/gin-gonic/gin" ) func TransCreate(c *gin.Context) { var inData user.TransCreateInput var trans mysql.TransRecords var pid mysql.Pid var walletInfo mysql.Wallet err := c.ShouldBindJSON(&inData) if err != nil { app.Error(c, 400, err, err.Error()) return } if inData.Amount.Cmp(decimal.NewFromFloat32(0)) <= 0 { app.Error(c, 400, err, "提现金额不能小于等于0") return } pid.OpenID = inData.OpenId pid.PidStatus = inData.PidStatus pidInfo, err := pid.Get() if err != nil { app.Error(c, 400, err, err.Error()) return } walletInfo.Pid = pidInfo.Pid walletInfo.OpenID = inData.OpenId walletVal, err := walletInfo.GetWallet() if err != nil { app.Error(c, 400, err, err.Error()) return } if walletVal.AvailableAmount.Cmp(inData.Amount) < 0 { app.Error(c, 400, err, "提现金额超长可提现金额") return } //只能申请一笔,一笔发完再申请第二笔 trans.OpenID = inData.OpenId trans.TransStatus = 1 //申请提现 transCount := trans.GetTransNum() if transCount != 0 { app.Error(c, 400, err, "已经申请过一笔提现,不能再次申请。") return } trans.PidStatus = inData.PidStatus trans.Amount = inData.Amount trans.Pid = pidInfo.Pid trans.CreateTime = tools.GetCurrntTimeStr() trans.UpdateTime = tools.GetCurrntTimeStr() _, err = trans.Create() if err != nil { app.Error(c, 400, err, err.Error()) return } //重新计算可提现金额 var orderAmount mysql.Order var wallet mysql.Wallet var trans2 mysql.TransRecords orderAmount.OpenId = inData.OpenId orderWallet, _ := orderAmount.GetAvailableAmount() //总金额减去提现金额 trans2.OpenID = inData.OpenId trans2.Pid = pidInfo.Pid trans.PidStatus = inData.PidStatus //拼多多 订单 transInfo, err := trans.GetTrans() if err != nil && err.Error() != "record not found" { app.Error(c, 400, err, err.Error()) return } //更新钱包 钱包总和为 123级总和减去提现总额 wallet.AvailableAmount = orderWallet.Amount.Add(orderWallet.Amount1.Add(orderWallet.Amount2)).Sub(transInfo.Amount) wallet.OpenID = inData.OpenId wallet.Pid = pidInfo.Pid wallet.UpdateAvailable() app.OK(c, nil, app.Success) }