package cachecurd import ( "joybuywork/internal/repository/dao" "joybuywork/internal/utils/lockdo" "fmt" ) const ( tKeepRewardSelect = "keepRewardSelect" // 激励养成奖品选择人数 ) // 激励养成奖品选择人数 func (s *HMap) keepRewardSelect(cond *HMapBuild) (err error) { err = lockdo.ExistDo(s.ctx, s.key, func(exist bool) (err error) { if exist { return } m := dao.FissionKeep type Num struct { RewardId int64 Num int64 } var nums []*Num err = m.WithContext(s.ctx). Select( m.ID.Count().As("num"), m.RewardID, ). Where(m.CampaignID.Eq(cond.CpnId)).Group(m.RewardID).Scan(&nums) if err != nil { return } var values []string for _, num := range nums { values = append(values, fmt.Sprintf("%d", num.RewardId), fmt.Sprintf("%d", num.Num)) } err = s.Set(values...) if err != nil { return } s.data = make(map[string]string, len(nums)) for i := 0; i < len(values); i += 2 { s.data[values[i]] = values[i+1] } return }) return }