package cachecurd import ( "joybuywork/internal/repository/dao" "joybuywork/internal/repository/mtype" "joybuywork/internal/utils/lockdo" "fmt" ) const ( tCoinScene = "coinScene" // 金币池场次数据 ) const ( CoinSceneUserCoin = "user_coin" // 投入金币总数 CoinSceneJoinNum = "join_num" // 投入总次数 CoinSceneJoinUserNum = "join_user_num" // 投入总人数 CoinSceneGetNum = "get_num" // 领奖总人数 CoinSceneGetTotal = "get_total" // 领奖金币数 ) // 激励养成奖品选择人数 func (s *HMap) coinScene(cond *HMapBuild) (err error) { err = lockdo.ExistDo(s.ctx, s.key, func(exist bool) (err error) { if exist { return } m := dao.FissionCoin var total struct { UserCoin int64 `json:"user_coin"` JoinNum int64 `json:"join_num"` JoinUserNum int64 `json:"join_user_num"` } err = m.WithContext(s.ctx). Select( m.UseCoin.Sum().As("user_coin"), m.UseNum.Sum().As("join_num"), m.UserID.Count().As("join_user_num"), ). Where(m.SceneID.Eq(cond.SceneId), m.UseNum.Gt(0)). Scan(&total) if err != nil { return } var getTotal struct { GetNum int64 `json:"get_num"` GetCoin int64 `json:"get_coin"` } err = m.WithContext(s.ctx). Select( m.GetCoin.Sum().As("get_coin"), m.UserID.Count().As("get_num"), ). Where(m.SceneID.Eq(cond.SceneId), m.Status.Eq(mtype.FissionCoinStatusOk)). Scan(&getTotal) if err != nil { return } // 这里初始化一下内存数据 s.data = make(map[string]string, 4) return s.Set( CoinSceneUserCoin, fmt.Sprint(total.UserCoin), CoinSceneJoinNum, fmt.Sprint(total.JoinNum), CoinSceneGetNum, fmt.Sprint(getTotal.GetNum), CoinSceneJoinUserNum, fmt.Sprint(total.JoinUserNum), CoinSceneGetTotal, fmt.Sprint(getTotal.GetCoin), ) }) return }