package service import ( "blazing/common/data" "blazing/common/utils" "blazing/cool" "blazing/modules/config/model" "github.com/gogf/gf/v2/database/gdb" "github.com/gogf/gf/v2/util/grand" ) type ItemService struct { *cool.Service } //实现物品数量的获取 func (s *ItemService) GetItemCount(id uint32) data.ItemInfo { var item model.ItemGift var res data.ItemInfo dbm(s.Model).Where("id", id).Where("is_enabled", 1).Scan(&item) if item.ItemID == 0 { return res } res.ItemId = item.ItemID res.ItemCnt = item.ItemMinCount if item.ItemMaxCount != 0 { res.ItemCnt = uint32(grand.N(int(item.ItemMinCount), int(item.ItemMaxCount))) } return res } func (s *ItemService) GetEgg(count int32) []data.ItemInfo { var item []model.ItemGift cool.DBM(s.Model).Where("is_egg", 1).Where("is_enabled", 1).Cache(gdb.CacheOption{ // Duration: time.Hour, Force: false, }).Scan(&item) rr := utils.RandomSlice(item, int(count)) var res = make([]data.ItemInfo, len(rr)) for _, v := range rr { if v.ItemMaxCount != 0 { v.ItemMinCount = uint32(grand.N(int(v.ItemMinCount), int(v.ItemMaxCount))) } res = append(res, data.ItemInfo{ItemId: v.ItemID, ItemCnt: v.ItemMinCount}) } return res } func NewItemService() *ItemService { return &ItemService{ &cool.Service{ Model: model.NewItemGift(), }, } }