2
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful

This commit is contained in:
昔念
2026-04-26 04:57:38 +08:00
parent c07e521e4e
commit 8e28e030c1
6 changed files with 32 additions and 43 deletions

View File

@@ -31,9 +31,9 @@ type CdkSpecialRewardAdder func(itemID uint32, count int64) bool
// GrantConfigReward 按 cdk 配置 ID 发放奖励,不处理兑换码次数和领取资格校验。
// 当传入 specialAdder 时,赛尔豆/累计经验/金豆/学习力会优先走在线玩家加成逻辑。
func (s *CdkService) GrantConfigReward(cdkID uint32, specialAdders ...CdkSpecialRewardAdder) (*CdkRewardResult, error) {
cfg := configservice.NewCdkService().GetByID(cdkID)
cfg := configservice.NewCdkService().GetRewardByIDIncludeDeleted(cdkID)
if cfg == nil {
return nil, fmt.Errorf("绑定的CDK不存在")
return nil, fmt.Errorf("绑定的CDK不存在或不是游戏内奖励类型")
}
if cfg.Type != configservice.CDKTypeReward {
return nil, fmt.Errorf("当前CDK不是游戏内奖励类型")

View File

@@ -11,8 +11,6 @@ import (
"time"
)
const signRecordID uint32 = 1
// SignStageState 表示一个签到阶段的当前状态。
type SignStageState struct {
SignType uint32 `json:"sign_type"`
@@ -54,9 +52,7 @@ type SignClaimResult struct {
// SignResetResult 表示管理端执行的签到重置结果。
type SignResetResult struct {
SignRecordRows int64 `json:"sign_record_rows"`
CdkLogRows int64 `json:"cdk_log_rows"`
ResetCdkIDs []uint32 `json:"reset_cdk_ids"`
SignRecordRows int64 `json:"sign_record_rows"`
}
// SignService 管理玩家签到进度。
@@ -136,32 +132,6 @@ func (s *SignService) ResetAll() (*SignResetResult, error) {
result.SignRecordRows, _ = signRes.RowsAffected()
}
configs := configservice.NewSignInService().GetEnabled()
cdkIDs := make([]uint32, 0, len(configs))
seen := make(map[uint32]struct{}, len(configs))
for _, cfg := range configs {
if cfg.CdkID == 0 {
continue
}
if _, ok := seen[cfg.CdkID]; ok {
continue
}
seen[cfg.CdkID] = struct{}{}
cdkIDs = append(cdkIDs, cfg.CdkID)
}
sort.Slice(cdkIDs, func(i, j int) bool { return cdkIDs[i] < cdkIDs[j] })
result.ResetCdkIDs = cdkIDs
if len(cdkIDs) > 0 {
cdkRes, err := cool.DBM(model.NewCdkLog()).WhereIn("code_id", cdkIDs).Delete()
if err != nil {
return nil, err
}
if cdkRes != nil {
result.CdkLogRows, _ = cdkRes.RowsAffected()
}
}
return result, nil
}
@@ -291,7 +261,7 @@ func stageReachedByDays(signType, stageDays, totalDays, continuousDays uint32) b
func (s *SignService) getRecord() (*model.SignInRecord, error) {
var out *model.SignInRecord
if err := s.dbm(s.Model).Where("sign_in_id", signRecordID).Scan(&out); err != nil {
if err := s.dbm(s.Model).Scan(&out); err != nil {
return nil, err
}
return out, nil
@@ -312,7 +282,6 @@ func (s *SignService) getOrInitRecord() (*model.SignInRecord, bool, error) {
IsVip: cool.Config.ServerInfo.IsVip,
},
PlayerID: s.userid,
SignInID: signRecordID,
IsCompleted: false,
ContinuousDays: 0,
TotalDays: 0,
@@ -324,7 +293,6 @@ func (s *SignService) getOrInitRecord() (*model.SignInRecord, bool, error) {
func (s *SignService) saveRecord(record *model.SignInRecord, isNew bool) error {
data := map[string]any{
"player_id": record.PlayerID,
"sign_in_id": record.SignInID,
"is_completed": false,
"continuous_days": record.ContinuousDays,
"total_days": record.TotalDays,
@@ -336,7 +304,7 @@ func (s *SignService) saveRecord(record *model.SignInRecord, isNew bool) error {
_, err := cool.DBM(s.Model).Data(data).Insert()
return err
}
_, err := s.dbm(s.Model).Where("sign_in_id", signRecordID).Data(data).Update()
_, err := s.dbm(s.Model).Data(data).Update()
return err
}