🎨 新增提现功能
This commit is contained in:
@@ -6,4 +6,5 @@ type ServiceGroup struct {
|
||||
OrderService
|
||||
TeacherVipService
|
||||
RedeemCodeService
|
||||
WithService
|
||||
}
|
||||
|
164
service/app/with.go
Normal file
164
service/app/with.go
Normal file
@@ -0,0 +1,164 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"git.echol.cn/loser/lckt/global"
|
||||
"git.echol.cn/loser/lckt/model/app"
|
||||
"git.echol.cn/loser/lckt/model/app/request"
|
||||
"git.echol.cn/loser/lckt/model/user"
|
||||
"go.uber.org/zap"
|
||||
"gorm.io/gorm"
|
||||
"time"
|
||||
)
|
||||
|
||||
// WithService 提现服务
|
||||
type WithService struct{}
|
||||
|
||||
func (s WithService) Create(p app.With) (err error) {
|
||||
err = global.GVA_DB.Create(&p).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("创建提现请求失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
// 扣除用户余额
|
||||
err = global.GVA_DB.Model(&user.User{}).Where("id = ?", p.UserID).Update("balance", gorm.Expr("balance - ?", p.Amount)).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("扣除用户余额失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (s WithService) GetList(p request.GetWithList) (list []app.With, total int64, err error) {
|
||||
limit := p.PageSize
|
||||
offset := p.PageSize * (p.Page - 1)
|
||||
db := global.GVA_DB.Model(&app.With{})
|
||||
|
||||
if p.UserId != 0 {
|
||||
db = db.Where("user_id = ?", p.UserId)
|
||||
}
|
||||
if p.UserName != "" {
|
||||
db = db.Joins("JOIN app_user ON app_user.id = app_with.user_id").Where("app_user.user_name LIKE ?", "%"+p.UserName+"%")
|
||||
}
|
||||
if p.Status != 0 {
|
||||
db = db.Where("status = ?", p.Status)
|
||||
}
|
||||
if p.StartTime != "" {
|
||||
db = db.Where("created_at >= ?", p.StartTime)
|
||||
}
|
||||
if p.EndTime != "" {
|
||||
db = db.Where("created_at <= ?", p.EndTime)
|
||||
}
|
||||
|
||||
err = db.Count(&total).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("获取提现列表总数失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
err = db.Limit(limit).Offset(offset).Order("created_at DESC").Find(&list).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("获取提现列表失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (s WithService) UpdateStatus(p app.With) (err error) {
|
||||
var userInfo user.User
|
||||
err = global.GVA_DB.Model(&user.User{}).Where("id = ?", p.UserID).First(&userInfo).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("查询用户信息失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
if p.Status == 2 {
|
||||
// 通过申请
|
||||
var with app.With
|
||||
err = global.GVA_DB.Model(&app.With{}).Where("id = ?", p.ID).First(&with).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("查询提现请求失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
if with.Status != 1 {
|
||||
global.GVA_LOG.Error("提现请求状态错误,无法通过", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
with.Status = 2
|
||||
with.ArriveTime = time.Now().Format("2006-01-02 15:04:05")
|
||||
with.RealAmount = p.RealAmount
|
||||
err = global.GVA_DB.Save(&with).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("更新提现请求状态失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
// 增加余额变更记录
|
||||
var record app.BalanceLog
|
||||
record.UserID = with.UserID
|
||||
record.ChangeType = 2 // 提现
|
||||
record.ChangeValue = with.Amount
|
||||
record.Balance = userInfo.Balance
|
||||
|
||||
err = global.GVA_DB.Create(&record).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("创建余额变更记录失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
if p.Status == 3 {
|
||||
// 拒绝申请,退还金额
|
||||
var with app.With
|
||||
err = global.GVA_DB.Model(&app.With{}).Where("id = ?", p.ID).First(&with).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("查询提现请求失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
if with.Status != 1 {
|
||||
global.GVA_LOG.Error("提现请求状态错误,无法拒绝", zap.Error(err))
|
||||
return
|
||||
}
|
||||
with.Status = 3
|
||||
with.Remark = p.Remark
|
||||
// 退还金额
|
||||
err = global.GVA_DB.Model(&user.User{}).Where("id = ?", with.UserID).Update("balance", gorm.Expr("balance + ?", with.Amount)).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("退还用户余额失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
err = global.GVA_DB.Save(&with).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("更新提现请求状态失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
}
|
||||
if p.Status == 4 {
|
||||
// 用户取消申请,退还金额
|
||||
var with app.With
|
||||
err = global.GVA_DB.Model(&app.With{}).Where("id = ?", p.ID).First(&with).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("查询提现请求失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
if with.Status != 1 {
|
||||
global.GVA_LOG.Error("提现请求状态错误,无法取消", zap.Error(err))
|
||||
return
|
||||
}
|
||||
with.Status = 4
|
||||
// 退还金额
|
||||
err = global.GVA_DB.Model(&user.User{}).Where("id = ?", with.UserID).Update("balance", gorm.Expr("balance + ?", with.Amount)).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("退还用户余额失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
err = global.GVA_DB.Save(&with).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("更新提现请求状态失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
Reference in New Issue
Block a user