feat: withdraw manage

master
howell 3 years ago
parent b7dc5bfde4
commit 2bb00888c5

@ -60,3 +60,18 @@ func (o Proxy) Reject(c *gin.Context) {
back.Suc(c, "ok", "")
}
}
func (o Proxy) Pass(c *gin.Context) {
var args jyy.ArgsWithdrawalPass
if err := tools.Params(&args, c); err != nil {
back.Fail(c, err.Error())
return
}
mu, _ := common.GetManageUser(c)
args.ManageUserID = int(mu.Id)
if err := jyy.Logic.WithdrawPass(args); err != nil {
back.Fail(c, err.Error())
} else {
back.Suc(c, "ok", "")
}
}

@ -1,12 +1,16 @@
package jyy
import (
"errors"
"fmt"
"recook/internal/libs/bean"
"recook/internal/v2/model/company"
"recook/internal/v2/model/recook/user"
"time"
"git.oa00.com/go/mysql"
"github.com/golangkit/formatime"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
@ -64,3 +68,57 @@ func (o logic) WithdrawalApply(args ArgsWithdrawalApply) error {
Content: args.Content,
}).Error
}
type ArgsWithdrawalPass struct {
ID int `json:"id" validate:"required"`
Proof string `json:"proof"`
ManageUserID int `json:"-"`
}
func (o logic) WithdrawPass(args ArgsWithdrawalPass) error {
now := time.Now()
if err := mysql.Db.Transaction(func(tx *gorm.DB) error {
var record company.Apply
if e := tx.First(&record, "id = ?", args.ID).Error; e != nil {
return e
}
if e := tx.Table((&company.Apply{}).TableName()).
Where("state=2").Where("id = ?", args.ID).Updates(company.Apply{
State: 3,
ProcessUserID: args.ManageUserID,
ProcessTime: &now,
Proof: args.Proof,
}).Error; e != nil {
return e
}
var w user.RecookUserWalletModel
if e := tx.First(&w, "user_id = ?", record.UserID).Error; e != nil {
return e
}
if row := tx.Model(&w).Where("version = ?", w.Version).Updates(map[string]interface{}{
"balance": gorm.Expr("balance - ?", record.Amount),
"version": gorm.Expr("version + 1"),
}).RowsAffected; row != 1 {
return errors.New("更新失败")
}
if e := tx.Create(&user.RecookUserWalletBalanceListModel{
UserId: uint(record.UserID),
IncomeType: user.RecookUserWalletBalanceListIncomeTypeWithdraw,
Amount: record.Amount.Neg(),
Title: fmt.Sprintf("提现%f", record.Amount.BigFloat()),
Comment: "提现",
OrderId: 0,
OrderGoodsId: 0,
OrderTime: formatime.Second{},
CreatedAt: formatime.NewSecondNow(),
ProfitID: 0,
}).Error; e != nil {
return e
}
return nil
}); err != nil {
return err
}
return nil
}

@ -1,9 +1,10 @@
package user
import (
"recook/internal/v2/lib/db"
"github.com/golangkit/formatime"
"github.com/shopspring/decimal"
"recook/internal/v2/lib/db"
)
type RecookUserWalletModel struct {
@ -38,6 +39,7 @@ type RecookUserWalletModel struct {
RewardCount decimal.Decimal `json:"rewardCount"`
RewardSalesVolume decimal.Decimal `json:"rewardSalesVolume"`
SalesVolume decimal.Decimal `json:"salesVolume"`
Version int `json:"version"`
}
// TableName sets the insert table name for this struct type

@ -875,6 +875,7 @@ func routerManage(manageRouter *gin.RouterGroup) {
companyWithdrawal.POST("list", proxy.WithdrawalList)
companyWithdrawal.POST("sure", proxy.Sure)
companyWithdrawal.POST("reject", proxy.Reject)
companyWithdrawal.POST("pass", )
}
}
}

Loading…
Cancel
Save