重构优化套餐数据结构,修复提取计数问题
This commit is contained in:
@@ -17,6 +17,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/hibiken/asynq"
|
||||
"gorm.io/gen"
|
||||
"gorm.io/gen/field"
|
||||
)
|
||||
|
||||
@@ -152,44 +153,48 @@ func (s *channelBaiyinService) CreateChannels(source netip.Addr, resourceId int3
|
||||
|
||||
// 保存数据
|
||||
err = q.Q.Transaction(func(q *q.Query) error {
|
||||
var rs gen.ResultInfo
|
||||
|
||||
// 更新套餐用量
|
||||
used := int32(count)
|
||||
if u.IsSameDate(now, resource.DailyLast) {
|
||||
used += resource.DailyUsed
|
||||
}
|
||||
// 根据套餐类型和模式更新使用记录
|
||||
isShortType := resource.Type == m.ResourceTypeShort
|
||||
isLongType := resource.Type == m.ResourceTypeLong
|
||||
|
||||
switch resource.Type {
|
||||
case m.ResourceTypeShort:
|
||||
_, err = q.ResourceShort.
|
||||
switch {
|
||||
case isShortType:
|
||||
rs, err = q.ResourceShort.Debug().
|
||||
Where(
|
||||
q.ResourceShort.ResourceID.Eq(resource.Id),
|
||||
q.ResourceShort.ID.Eq(*resource.ShortId),
|
||||
q.ResourceShort.Used.Eq(resource.Used),
|
||||
q.ResourceShort.DailyUsed.Eq(resource.DailyUsed),
|
||||
q.ResourceShort.DailyLast.Eq(resource.DailyLast),
|
||||
q.ResourceShort.Daily.Eq(resource.Daily),
|
||||
).
|
||||
UpdateSimple(
|
||||
q.ResourceShort.Used.Add(int32(count)),
|
||||
q.ResourceShort.DailyUsed.Value(used),
|
||||
q.ResourceShort.DailyLast.Value(now),
|
||||
q.ResourceShort.Daily.Value(int32(resource.Today+count)),
|
||||
q.ResourceShort.LastAt.Value(now),
|
||||
)
|
||||
case m.ResourceTypeLong:
|
||||
_, err = q.ResourceLong.
|
||||
|
||||
case isLongType:
|
||||
rs, err = q.ResourceLong.Debug().
|
||||
Where(
|
||||
q.ResourceLong.ResourceID.Eq(resource.Id),
|
||||
q.ResourceLong.ID.Eq(*resource.LongId),
|
||||
q.ResourceLong.Used.Eq(resource.Used),
|
||||
q.ResourceLong.DailyUsed.Eq(resource.DailyUsed),
|
||||
q.ResourceLong.DailyLast.Eq(resource.DailyLast),
|
||||
q.ResourceLong.Daily.Eq(resource.Daily),
|
||||
).
|
||||
UpdateSimple(
|
||||
q.ResourceLong.Used.Add(int32(count)),
|
||||
q.ResourceLong.DailyUsed.Value(used),
|
||||
q.ResourceLong.DailyLast.Value(now),
|
||||
q.ResourceLong.Daily.Value(int32(resource.Today+count)),
|
||||
q.ResourceLong.LastAt.Value(now),
|
||||
)
|
||||
|
||||
default:
|
||||
return core.NewServErr("套餐类型不正确,无法更新", nil)
|
||||
}
|
||||
if err != nil {
|
||||
return core.NewServErr("更新套餐使用记录失败", err)
|
||||
}
|
||||
if rs.RowsAffected == 0 {
|
||||
return core.NewServErr("套餐使用记录不存在")
|
||||
}
|
||||
|
||||
// 保存通道
|
||||
err = q.Channel.
|
||||
|
||||
Reference in New Issue
Block a user