You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.0 KiB
Go

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
}