diff --git a/logic/controller/item_buy.go b/logic/controller/item_buy.go index 8cbf65fbf..ca5c98d41 100644 --- a/logic/controller/item_buy.go +++ b/logic/controller/item_buy.go @@ -95,8 +95,14 @@ func (h Controller) BuyGoldItem(data *item.C2S_GOLD_BUY_PRODUCT, player *player. //product, exists := xmlres.GoldProductMap[int(data.ProductID)] pro := service.NewShopService().Get(data.ProductID) if pro == nil { - return nil, errorcode.ErrorCodes.ErrSystemError + return nil, errorcode.ErrorCodes.ErrTooManyProducts } + if pro.QuotaType != 0 { + if player.Service.GoldLog.Cheak(data.ProductID, pro.QuotaType-1)+int(data.Count) > int(pro.QuotaLimit) { + return nil, errorcode.ErrorCodes.ErrExceedStock + } + } + var usegold uint64 var addSuccess bool switch data.Type { diff --git a/modules/player/model/gold_log.go b/modules/player/model/gold_log.go index 02fdc7bfc..07e4c180c 100644 --- a/modules/player/model/gold_log.go +++ b/modules/player/model/gold_log.go @@ -14,7 +14,7 @@ const ( type GoldBeanConsume struct { *cool.Model - PlayerID uint64 `gorm:"not null;uniqueIndex;index:idx_pet_by_player_id;comment:'所属玩家ID'" json:"player_id"` + PlayerID uint64 `gorm:"not null;index:idx_pet_by_player_id;comment:'所属玩家ID'" json:"player_id"` ConsumeNum uint32 `gorm:"not null;default:0;comment:'消费数量'" json:"consume_num" description:"消费数量"` BizID uint32 `gorm:"not null;default:0;comment:'关联业务ID(如道具ID/扭蛋池ID,无则填0)'" json:"biz_id" description:"关联业务ID"` ///消费年份 diff --git a/modules/player/service/gold_log.go b/modules/player/service/gold_log.go index 1fcc7e0f2..3d47d425c 100644 --- a/modules/player/service/gold_log.go +++ b/modules/player/service/gold_log.go @@ -10,13 +10,29 @@ type GoldService struct { BaseService } -func (s *GoldService) Cheak(pid, count uint32) { +// 月 周 日限购检查 +func (s *GoldService) Cheak(pid, ptye uint32) int { + + now := time.Now() + var va int + switch ptye { + case 0: //月限购 + va = int(now.Month()) + case 1: //周限购 + _, va = now.ISOWeek() + case 2: //日限购 + va = now.Day() + + } + ret, _ := s.dbm_fix(s.Model).Where("year", now.Year()).Where("biz_id", pid).Wheref("consume ->> ?::integer = ?", ptye, va).Count() + + return ret } func (s *GoldService) Log(pid, count uint32) { - if cool.Config.ServerInfo.IsVip != 0 { - return - } + // if cool.Config.ServerInfo.IsVip != 0 { + // return + // } // 获取当前时间 now := time.Now()