🎨 优化支付回调

This commit is contained in:
2025-09-08 20:09:04 +08:00
parent f5948a366b
commit 2bc3eb26fd
3 changed files with 45 additions and 14 deletions

View File

@@ -203,8 +203,30 @@ func NotifyHandle(ctx *gin.Context) error {
}
order.Status = 2 // 设置订单状态为已支付
// 全站vip订单
if order.OrderType == 2 {
switch order.OrderType {
case 1: // 课程订单
err = global.GVA_DB.Save(&order).Error
if err != nil {
global.GVA_LOG.Error("更新订单状态失败", zap.Error(err))
return nil
}
// 计算分成比例,按比例增加讲师余额
teacher := user.User{}
err = global.GVA_DB.Model(&user.User{}).Where("id = ?", order.TeacherId).First(&teacher).Error
if err != nil {
global.GVA_LOG.Error("查询讲师信息失败", zap.Error(err))
return err
}
// 计算分成金额
amount := float64(order.Price) * float64(teacher.ExpectRate) / 100.0
teacher.Balance = teacher.Balance + amount
err = global.GVA_DB.Save(&teacher).Error
if err != nil {
global.GVA_LOG.Error("更新讲师余额失败", zap.Error(err))
return err
}
case 2: // 全站VIP订单
userInfo := user.User{}
err = global.GVA_DB.Model(&user.User{}).Where("id = ?", order.UserId).First(&userInfo).Error
if err != nil {
@@ -239,11 +261,7 @@ func NotifyHandle(ctx *gin.Context) error {
global.GVA_LOG.Error("更新用户会员状态失败", zap.Error(err))
return nil
}
}
// 如果是讲师包月订单,更新讲师的会员状态
if order.OrderType == 3 {
// 逗号分割字符串
case 3: // 讲师包月订单
ids := strings.Split(order.TeacherVipId, ",")
for _, id := range ids {
teacherVip := app.UserTeacherVip{}
@@ -260,13 +278,24 @@ func NotifyHandle(ctx *gin.Context) error {
return err
}
}
// 计算分成比例,按比例增加讲师余额
teacher := user.User{}
err = global.GVA_DB.Model(&user.User{}).Where("id = ?", order.TeacherId).First(&teacher).Error
if err != nil {
global.GVA_LOG.Error("查询讲师信息失败", zap.Error(err))
return err
}
// 计算分成金额
amount := float64(order.Price) * float64(teacher.ExpectRate) / 100.0
teacher.Balance = teacher.Balance + amount
err = global.GVA_DB.Save(&teacher).Error
if err != nil {
global.GVA_LOG.Error("更新讲师余额失败", zap.Error(err))
return err
}
}
err = global.GVA_DB.Save(&order).Error
if err != nil {
global.GVA_LOG.Error("更新订单状态失败", zap.Error(err))
return nil
}
log.Printf("订单号:%s 支付成功", transaction.OutTradeNo)
} else {
// 因为微信这个回调不存在订单号,所以可以告诉微信我还没处理成功,等会它会重新发起通知