123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- 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)
- }
|