🎨 新增余额记录功能
This commit is contained in:
@@ -375,6 +375,7 @@ func (u *AppUserService) IsFollowTeacher(userId, teacherId uint) (bool, error) {
|
||||
return count > 0, nil
|
||||
}
|
||||
|
||||
// GetVipTeacherList 获取用户购买的讲师VIP列表
|
||||
func (u *AppUserService) GetVipTeacherList(p common.PageInfo, userId uint) (list []vo.TeacherInfo, total int64, err error) {
|
||||
limit := p.PageSize
|
||||
offset := (p.Page - 1) * p.PageSize
|
||||
@@ -416,3 +417,24 @@ func (u *AppUserService) GetVipTeacherList(p common.PageInfo, userId uint) (list
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// GetBalanceLog 获取用户余额变动日志
|
||||
func (u *AppUserService) GetBalanceLog(id uint, p common.PageInfo) (list []app.BalanceLog, total int64, err error) {
|
||||
limit := p.PageSize
|
||||
offset := (p.Page - 1) * p.PageSize
|
||||
|
||||
db := global.GVA_DB.Model(&app.BalanceLog{}).Where("user_id = ?", id)
|
||||
|
||||
err = db.Count(&total).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("查询余额变动总数失败", zap.Error(err))
|
||||
return nil, 0, err
|
||||
}
|
||||
err = db.Limit(limit).Offset(offset).Order("created_at desc").Find(&list).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("查询余额变动列表失败", zap.Error(err))
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
@@ -93,9 +93,47 @@ func (u *UserService) GetUserList(p request.GetUserListReq) (userList []user.Use
|
||||
|
||||
// SetBalance 设置用户余额
|
||||
func (u *UserService) SetBalance(p request.SetBalanceReq) (err error) {
|
||||
err = global.GVA_DB.Model(&user.User{}).Where("id = ?", p.Id).Update("balance", p.Balance).Error
|
||||
// 1. 查询用户
|
||||
var userInfo user.User
|
||||
err = global.GVA_DB.Model(&userInfo).Where("id = ?", p.Id).First(&userInfo).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("设置用户余额失败", zap.Error(err))
|
||||
global.GVA_LOG.Error("查询用户失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
if p.ChangeType == 1 {
|
||||
// 增加
|
||||
userInfo.Balance += p.Balance
|
||||
err = global.GVA_DB.Save(&userInfo).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("增加用户余额失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
} else {
|
||||
// 减少
|
||||
if userInfo.Balance < p.Balance {
|
||||
// 余额不足
|
||||
err = fmt.Errorf("用户余额不足")
|
||||
return
|
||||
}
|
||||
userInfo.Balance -= p.Balance
|
||||
err = global.GVA_DB.Save(&userInfo).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("减少用户余额失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// 记录日志
|
||||
balanceLog := app.BalanceLog{
|
||||
UserID: uint(p.Id),
|
||||
ChangeType: p.ChangeType,
|
||||
ChangeValue: p.Balance,
|
||||
Balance: userInfo.Balance,
|
||||
}
|
||||
err = global.GVA_DB.Create(&balanceLog).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("记录用户余额变动日志失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
return
|
||||
@@ -165,6 +203,7 @@ func (u *UserService) SetUserStatus(id string) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// GetTeachers 获取教师列表
|
||||
func (u *UserService) GetTeachers(p common.PageInfo) (list []vo.UserInfo, total int64, err error) {
|
||||
limit := p.PageSize
|
||||
offset := p.PageSize * (p.Page - 1)
|
||||
@@ -180,6 +219,7 @@ func (u *UserService) GetTeachers(p common.PageInfo) (list []vo.UserInfo, total
|
||||
return
|
||||
}
|
||||
|
||||
// GetTeacherApplyList 获取教师申请列表
|
||||
func (u *UserService) GetTeacherApplyList(p request.GetTeacherApplyListReq) (list []app.TeacherApply, total int64, err error) {
|
||||
query := global.GVA_DB.Model(&app.TeacherApply{})
|
||||
|
||||
@@ -204,6 +244,7 @@ func (u *UserService) GetTeacherApplyList(p request.GetTeacherApplyListReq) (lis
|
||||
return
|
||||
}
|
||||
|
||||
// UpdateTeacherApplyStatus 更新教师申请状态
|
||||
func (u *UserService) UpdateTeacherApplyStatus(p app.TeacherApply) (err error) {
|
||||
err = global.GVA_DB.Updates(&p).Error
|
||||
if err != nil {
|
||||
@@ -229,6 +270,7 @@ func (u *UserService) UpdateTeacherApplyStatus(p app.TeacherApply) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// SetUserVip 设置用户为VIP
|
||||
func (u *UserService) SetUserVip(p request.SetUserVipReq) error {
|
||||
var user user.User
|
||||
err := global.GVA_DB.Model(&user).Where("id = ?", p.Id).First(&user).Error
|
||||
@@ -249,6 +291,7 @@ func (u *UserService) SetUserVip(p request.SetUserVipReq) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetLoginLog 获取登录日志
|
||||
func (u *UserService) GetLoginLog(p request.GetUserListReq) (list []user.LoginLog, total int64, err error) {
|
||||
limit := p.PageSize
|
||||
offset := (p.Page - 1) * p.PageSize
|
||||
@@ -273,6 +316,7 @@ func (u *UserService) GetLoginLog(p request.GetUserListReq) (list []user.LoginLo
|
||||
return
|
||||
}
|
||||
|
||||
// RemoveUserVip 移除用户VIP
|
||||
func (u *UserService) RemoveUserVip(id int) error {
|
||||
var user user.User
|
||||
err := global.GVA_DB.Model(&user).Where("id = ?", id).First(&user).Error
|
||||
@@ -293,6 +337,7 @@ func (u *UserService) RemoveUserVip(id int) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetUserVipList 获取用户会员列表
|
||||
func (u *UserService) GetUserVipList(p request.GetUserListReq) (list []vo.UserInfo, total int64, err error) {
|
||||
limit := p.PageSize
|
||||
offset := (p.Page - 1) * p.PageSize
|
||||
|
Reference in New Issue
Block a user