This commit is contained in:
@@ -2,6 +2,7 @@ package service
|
||||
|
||||
import (
|
||||
"blazing/cool"
|
||||
configmodel "blazing/modules/config/model"
|
||||
configservice "blazing/modules/config/service"
|
||||
"blazing/modules/player/model"
|
||||
"errors"
|
||||
@@ -44,6 +45,52 @@ func (s *TaskService) ShopRequirementError() error {
|
||||
}
|
||||
}
|
||||
|
||||
if err := s.sptShopRequirementError(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *TaskService) sptShopRequirementError() error {
|
||||
var sptList []configmodel.SptConfig
|
||||
if err := cool.DBM(configmodel.NewSptConfig()).
|
||||
Fields("task_id").
|
||||
Where("is_enable", 1).
|
||||
WhereGT("task_id", 0).
|
||||
Scan(&sptList); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
openedTaskIDs := make(map[uint32]struct{}, len(sptList))
|
||||
for _, spt := range sptList {
|
||||
openedTaskIDs[spt.TaskID] = struct{}{}
|
||||
}
|
||||
|
||||
openedTotal := len(openedTaskIDs)
|
||||
requiredCompleted := openedTotal - 3
|
||||
if requiredCompleted <= 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
var playerInfo *model.Player
|
||||
if err := cool.DBM(model.NewPlayer()).Where("player_id", s.userid).Scan(&playerInfo); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
completedTotal := 0
|
||||
if playerInfo != nil {
|
||||
for taskID := range openedTaskIDs {
|
||||
if playerInfo.Data.GetTask(int(taskID)) == model.Completed {
|
||||
completedTotal++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if completedTotal < requiredCompleted {
|
||||
return fmt.Errorf("请先完成已开启SPT进度:当前%d/%d,需完成%d", completedTotal, openedTotal, requiredCompleted)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user