|
|
@@ -0,0 +1,109 @@
|
|
|
+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
|
|
|
+ var user mysql.User
|
|
|
+
|
|
|
+ err := c.ShouldBindJSON(&inData)
|
|
|
+ if err != nil {
|
|
|
+ app.Error(c, 400, err, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ user.OpenID = inData.OpenId
|
|
|
+ userInfo, err := user.Get()
|
|
|
+ if err != nil {
|
|
|
+ app.Error(c, 400, err, "提现失败请联系客服")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if userInfo.AliPay == "" && userInfo.WxPay == "" {
|
|
|
+ app.Error(c, 401, err, "请填写提款项目")
|
|
|
+ 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)
|
|
|
+
|
|
|
+}
|