user.trans.update.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package user
  2. import (
  3. "duoduo/models/mysql"
  4. "duoduo/models/user"
  5. "duoduo/tools/app"
  6. "github.com/gin-gonic/gin"
  7. )
  8. //更新状态发放提现
  9. func TransUpdate(c *gin.Context) {
  10. var inData user.TransUpdateInput
  11. var trans mysql.TransRecords
  12. err := c.ShouldBindJSON(&inData)
  13. if err != nil {
  14. app.Error(c, 400, err, err.Error())
  15. return
  16. }
  17. trans.TransStatus = inData.TransStatus
  18. trans.PidStatus = inData.PidStatus
  19. trans.PayName = inData.PayName
  20. trans.UserId = inData.UserId
  21. trans.Pay = inData.Pay
  22. _, err = trans.Update(inData.Id)
  23. if err != nil {
  24. app.Error(c, 400, err, err.Error())
  25. return
  26. }
  27. //已体现总金额 = 提现记录求和
  28. trans.Pid = inData.Pid
  29. trans.OpenID = inData.OpenId
  30. transAmount, err := trans.GetTransStatus()
  31. if err != nil {
  32. app.Error(c, 400, err, err.Error())
  33. return
  34. }
  35. //更新钱包 审核成功更新 已体现金额 审核失败 更新可提现金额
  36. if inData.TransStatus == 3 { //已体现
  37. var wallet mysql.Wallet
  38. wallet.WithdrawalAmount = transAmount.Amount
  39. wallet.OpenID = inData.OpenId
  40. wallet.Pid = inData.Pid
  41. wallet.UpdateWithdrawal()
  42. } else if inData.TransStatus == 2 { //提现失败
  43. //重新计算可提现金额
  44. var orderAmount mysql.Order
  45. var wallet mysql.Wallet
  46. var trans2 mysql.TransRecords
  47. orderAmount.OpenId = inData.OpenId
  48. orderWallet, _ := orderAmount.GetAvailableAmount()
  49. //总金额减去提现金额
  50. trans2.OpenID = inData.OpenId
  51. trans2.Pid = inData.Pid
  52. trans.PidStatus = inData.PidStatus //拼多多 订单
  53. transInfo, err := trans.GetTrans()
  54. if err != nil && err.Error() != "record not found" {
  55. app.Error(c, 400, err, err.Error())
  56. return
  57. }
  58. //更新钱包 钱包总和为 123级总和减去提现总额
  59. wallet.AvailableAmount = orderWallet.Amount.Add(orderWallet.Amount1.Add(orderWallet.Amount2)).Sub(transInfo.Amount)
  60. wallet.OpenID = inData.OpenId
  61. wallet.Pid = inData.Pid
  62. wallet.UpdateAvailable()
  63. }
  64. app.OK(c, nil, app.Success)
  65. }