From b7983ffcab5d3a1b566188d720d0ae2f306677e5 Mon Sep 17 00:00:00 2001 From: zhora Date: Thu, 11 Sep 2025 10:33:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=91=A8=E5=8D=A1=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- call/config.go | 28 +++++++--- call/pay.go | 45 ++++++++-------- call/reload.go | 18 +++---- common/activity.go | 33 +++++++----- common/config.go | 6 +-- common/share.go | 21 ++++---- modules/backend/migrate.go | 2 +- modules/backend/values/gm.go | 4 +- modules/web/handler/activity.go | 68 +++++++++++++------------ modules/web/routers/routers.go | 1 + modules/web/routers/routers_weekCard.go | 11 ++++ 11 files changed, 138 insertions(+), 99 deletions(-) create mode 100644 modules/web/routers/routers_weekCard.go diff --git a/call/config.go b/call/config.go index 3a38299..4b5fd4b 100644 --- a/call/config.go +++ b/call/config.go @@ -57,7 +57,6 @@ var ( configActivitySign []*common.ConfigActivitySign configActivityBreakGift []*common.ConfigActivityBreakGift configShareRobot []*common.ConfigShareRobot - configActivityWeekCard *common.ConfigActivityWeekCard configActivitySlots []*common.ConfigActivitySlots configActivityLuckyShop []*common.ConfigActivityLuckyShop configServerFlag []*common.ConfigServerFlag @@ -97,6 +96,8 @@ var ( configShareMu sync.Mutex configShareMap map[int]*common.ConfigShare + + configWeekCard *common.ConfigWeekCard ) var ( @@ -1676,17 +1677,30 @@ func GetConfigShareRobotByID(robotID int) *common.ConfigShareRobot { return nil } -func LoadConfigActivityWeekCard() (err error) { - one := new(common.ConfigActivityWeekCard) - if err := db.Mysql().Get(one); err != nil { +func LoadConfigWeekCard() (err error) { + one := new(common.ConfigWeekCard) + if _, err = db.Mysql().QueryAll("switch = 1", "", &common.ConfigWeekCard{}, &one); err != nil { + log.Error("err:%v", err) return err } - configActivityWeekCard = one + if one.AwardData != "" { + var awardData []common.WeekCardDay + err = json.Unmarshal([]byte(one.AwardData), &awardData) + if err != nil { + log.Error("unmarshal err, %s", err.Error()) + return + } + one.AwardDetails = make(map[int]common.WeekCardDay) + for _, v := range awardData { + one.AwardDetails[v.Day] = v + } + } + configWeekCard = one return nil } -func GetConfigActivityWeekCard() *common.ConfigActivityWeekCard { - return configActivityWeekCard +func GetConfigWeekCard() *common.ConfigWeekCard { + return configWeekCard } func LoadConfigActivitySlots() (err error) { diff --git a/call/pay.go b/call/pay.go index f43b09f..f4dbb3b 100644 --- a/call/pay.go +++ b/call/pay.go @@ -16,7 +16,6 @@ import ( "server/pb" "server/util" "sort" - "strings" "time" "github.com/gogo/protobuf/proto" @@ -645,7 +644,7 @@ func ActivityBreakGift(r *common.RechargeOrder, product *common.ConfigPayProduct } func ActivityWeekCard(r *common.RechargeOrder, product *common.ConfigPayProduct) { - con := GetConfigActivityWeekCard() + con := GetConfigWeekCard() if con == nil { return } @@ -669,28 +668,30 @@ func ActivityWeekCard(r *common.RechargeOrder, product *common.ConfigPayProduct) }) UploadActivityData(r.UID, common.ActivityIDWeekCard, common.ActivityDataJoin, product.Value) // 自动领第一天的 - cons := GetConfigActivityWeekCard() + cons := GetConfigWeekCard() cardInfo := GetUserWeekCard(r.UID) var rewardList []int64 - rewardList, err = util.GenerateRandomSequence(cons.RewardAmount, cons.MiniLimit, 5) - if err != nil { - log.Error("err:%v", err) - } - rewardList = append([]int64{cons.DayOneReward}, rewardList...) - rewardList = append(rewardList, 0) - if cardInfo.ID <= 0 || len(cardInfo.Rewards) == 0 { - cardInfo.Day = 0 - rewardList, err = util.GenerateRandomSequence(cons.RewardAmount, cons.MiniLimit, 5) - if err != nil { - log.Error("err:%v", err) - } - rewardList = append([]int64{cons.DayOneReward}, rewardList...) - rewardList = append(rewardList, 0) - cardInfo.Rewards = strings.Join(util.Int64SliceToStringSlice(rewardList), ",") - db.Mysql().Update(&common.ActivityWeekCardData{UID: r.UID}, map[string]interface{}{ - "rewards": cardInfo.Rewards, - }) - } + _ = rewardList + _ = cons + //rewardList, err = util.GenerateRandomSequence(cons.RewardAmount, cons.MiniLimit, 5) + //if err != nil { + // log.Error("err:%v", err) + //} + //rewardList = append([]int64{cons.DayOneReward}, rewardList...) + //rewardList = append(rewardList, 0) + //if cardInfo.ID <= 0 || len(cardInfo.Rewards) == 0 { + // cardInfo.Day = 0 + // rewardList, err = util.GenerateRandomSequence(cons.RewardAmount, cons.MiniLimit, 5) + // if err != nil { + // log.Error("err:%v", err) + // } + // rewardList = append([]int64{cons.DayOneReward}, rewardList...) + // rewardList = append(rewardList, 0) + // cardInfo.Rewards = strings.Join(util.Int64SliceToStringSlice(rewardList), ",") + // db.Mysql().Update(&common.ActivityWeekCardData{UID: r.UID}, map[string]interface{}{ + // "rewards": cardInfo.Rewards, + // }) + //} rewards, _ := util.StringToInt64Slice(cardInfo.Rewards, ",") if cardInfo.Day >= len(rewards) { log.Error("The weekly card has been collected") diff --git a/call/reload.go b/call/reload.go index 6feb97c..e062754 100644 --- a/call/reload.go +++ b/call/reload.go @@ -385,15 +385,6 @@ func CommonReload(c map[int][]func(*pb.ReloadGameConfig) error) { return nil }} } - //if _, ok := c[common.ReloadConfigActivityWeekCard]; !ok { - // c[common.ReloadConfigActivityWeekCard] = []func(*pb.ReloadGameConfig) error{func(rgc *pb.ReloadGameConfig) error { - // if err := LoadConfigActivityWeekCard(); err != nil { - // log.Error("error : [%s]", err.Error()) - // return err - // } - // return nil - // }} - //} if _, ok := c[common.ReloadConfigActivitySlots]; !ok { c[common.ReloadConfigActivitySlots] = []func(*pb.ReloadGameConfig) error{func(rgc *pb.ReloadGameConfig) error { if err := LoadConfigActivitySlots(); err != nil { @@ -632,4 +623,13 @@ func CommonReload(c map[int][]func(*pb.ReloadGameConfig) error) { return nil }} } + if _, ok := c[common.ReloadConfigWeekCard]; !ok { + c[common.ReloadConfigWeekCard] = []func(*pb.ReloadGameConfig) error{func(rgc *pb.ReloadGameConfig) error { + if err := LoadConfigWeekCard(); err != nil { + log.Error("error : [%s]", err.Error()) + return err + } + return nil + }} + } } diff --git a/common/activity.go b/common/activity.go index 1c137fa..aa75ccc 100644 --- a/common/activity.go +++ b/common/activity.go @@ -297,18 +297,6 @@ func (c *ConfigActivityBreakGift) TableName() string { return "config_activity_break_gift" } -type ConfigActivityWeekCard struct { - ID int `gorm:"primarykey"` - DayOneReward int64 `gorm:"column:day_one_reward;type:bigint(20);default:0;comment:第一天奖励" web:"day_one_reward"` // 下限 - MiniLimit int64 `gorm:"column:mini_limit;type:bigint(20);default:0;comment:下限" web:"mini_limit"` // 下限 - RewardAmount int64 `gorm:"column:reward_amount;type:bigint(20);default:0;comment:第二到第6天奖励金额" web:"reward_amount"` // 第二到第6天奖励金额 - Discount int64 `gorm:"column:discount;type:bigint(20);default:0;comment:第二到第6天奖励金额" web:"discount"` // 满减券折扣 -} - -func (c *ConfigActivityWeekCard) TableName() string { - return "config_activity_week_card" -} - const ( ActivityWeekCardTicketExpireTime = 48 * 3600 // 两个小时 ) @@ -675,3 +663,24 @@ type PddLotteryHistory struct { func (m *PddLotteryHistory) TableName() string { return "pdd_lottery_history" } + +type WeekCardDay struct { + Day int // 天数 + AwardUpper int // 奖励上限 + AwardLower int // 奖励下限 +} + +type ConfigWeekCard struct { + ID int `gorm:"primarykey"` + Switch int `gorm:"column:switch;type:int(11);default:0;comment:开关(1开2关)" json:"Switch" web:"switch"` + Amount int64 `gorm:"column:amount;type:int(20);default:50000;comment:周卡价格" json:"Amount" web:"amount"` + // []WeekCardDay json + AwardData string `gorm:"column:award_data;type:varchar(512);default:'';comment:奖励数据" json:"awardData" web:"award_data"` + + AwardDetails map[int]WeekCardDay `gorm:"-"` + UpdatedBase +} + +func (c *ConfigWeekCard) TableName() string { + return "config_week_card" +} diff --git a/common/config.go b/common/config.go index 01f6603..fa4a977 100644 --- a/common/config.go +++ b/common/config.go @@ -43,7 +43,6 @@ const ( ReloadConfigActivitySign // 签到配置 ReloadConfigActivityBreakGift // 破产礼包 ReloadConfigShareRobot // 分享机器人 - ReloadConfigActivityWeekCard // 周卡 ReloadConfigActivitySlots // slots奖池活动 ReloadConfigActivityLuckyShop // 幸运商店活动 ReloadConfigServerFlag // 服务器配置 @@ -73,6 +72,7 @@ const ( ReloadConfigShareBanner ReloadTypeConfigWithdrawWeight ReloadTypeConfigShareRankAward + ReloadConfigWeekCard // 周卡 ReloadTypeExcel ) @@ -148,8 +148,6 @@ func GetConfigStructByType(t int) (interface{}, interface{}) { return &ConfigActivityBreakGift{}, &[]ConfigActivityBreakGift{} case ReloadConfigShareRobot: return &ConfigShareRobot{}, &[]ConfigShareRobot{} - case ReloadConfigActivityWeekCard: - return &ConfigActivityWeekCard{}, &[]ConfigActivityWeekCard{} case ReloadConfigActivitySlots: return &ConfigActivitySlots{}, &[]ConfigActivitySlots{} case ReloadConfigActivityLuckyShop: @@ -202,6 +200,8 @@ func GetConfigStructByType(t int) (interface{}, interface{}) { return &ConfigWithdrawChannels{}, &[]ConfigWithdrawChannels{} case ReloadTypeConfigShareRankAward: return &ConfigShareRankAward{}, &[]ConfigShareRankAward{} + case ReloadConfigWeekCard: + return &ConfigWeekCard{}, &[]ConfigWeekCard{} default: return nil, nil } diff --git a/common/share.go b/common/share.go index 5b3dc5d..f8cf75e 100644 --- a/common/share.go +++ b/common/share.go @@ -255,6 +255,7 @@ type ConfigShare struct { BetRebate int64 `gorm:"column:bet_rebate;type:int(11);default:0;comment:客损返利(*1万)" web:"bet_rebate"` RechargeRebate int64 `gorm:"column:recharge_rebate;type:int(11);default:0;comment:充值返利(*1万)" web:"recharge_rebate"` InviteRebate int64 `gorm:"column:invite_rebate;type:int(11);default:0;comment:拉人奖励" web:"invite_rebate"` + InviteRebateTotal int64 `gorm:"column:invite_rebate_total;type:int(11);default:80500;comment:拉人总奖励" web:"invite_rebate_total"` BeInviteRebate int64 `gorm:"column:be_invite_rebate;type:int(11);default:10;comment:被拉人奖励" web:"be_invite_rebate"` RewardTiers string `gorm:"column:reward_tiers;type:varchar(256);default:'[]';comment:返利层级配置" web:"reward_tiers"` SubRewardTiers []ConfigShareTiers `gorm:"-"` @@ -518,20 +519,20 @@ func (c *ConfigShareRankAward) TableName() string { type ShareRankData struct { ID int64 `gorm:"column:id;type:bigint(20);primaryKey;autoIncrement:true" json:"id"` - UID int `gorm:"column:uid;type:bigint(11);not null;uniqueIndex:rank_idx,priority:3;comment:玩家id" json:"uid"` // 玩家id + UID int `gorm:"column:uid;type:bigint(11);not null;uniqueIndex:rank_idx,priority:3;comment:玩家id" json:"uid"` // 玩家id RankCycle int `gorm:"column:rank_cycle;type:int(11);default:0;uniqueIndex:rank_idx,priority:1;comment:排行榜周期(1:日,2:周,3:月)" json:"rank_cycle"` // 排行榜周期(1:日,2:周,3:月) - RankAt int64 `gorm:"column:rank_at;type:bigint(20);not null;uniqueIndex:rank_idx,priority:2;comment:排行榜开始日期" json:"rank_at"` // 排行榜开始日期 - RankValue int64 `gorm:"column:rank_value;type:bigint(20);not null;comment:玩家数值" json:"rank_value"` // 玩家数值 - IsRobot int `gorm:"column:is_robot;type:int(11);not null;comment:是不是机器人(0:不是,1:是)" json:"is_robot"` // 是不是机器人(0:不是,1:是) - UserAward int `gorm:"column:user_award;type:int(11);not null;comment:玩家奖励比例(*10000)" json:"user_award"` // 玩家奖励比例(*10000) - UserAwardCount int64 `gorm:"column:user_award_count;type:bigint(20);not null;comment:玩家奖励数量" json:"user_award_count"` // 玩家奖励数量 - Rank int `gorm:"column:rank;type:int(11);default:0;comment:排名" json:"rank"` // 玩家奖励比例(*10000) - UpdatedAt int64 `gorm:"column:updated_at;type:bigint(20);not null;comment:更新时间" json:"updated_at"` // 更新时间 + RankAt int64 `gorm:"column:rank_at;type:bigint(20);not null;uniqueIndex:rank_idx,priority:2;comment:排行榜开始日期" json:"rank_at"` // 排行榜开始日期 + RankValue int64 `gorm:"column:rank_value;type:bigint(20);not null;comment:玩家数值" json:"rank_value"` // 玩家数值 + IsRobot int `gorm:"column:is_robot;type:int(11);not null;comment:是不是机器人(0:不是,1:是)" json:"is_robot"` // 是不是机器人(0:不是,1:是) + UserAward int `gorm:"column:user_award;type:int(11);not null;comment:玩家奖励比例(*10000)" json:"user_award"` // 玩家奖励比例(*10000) + UserAwardCount int64 `gorm:"column:user_award_count;type:bigint(20);not null;comment:玩家奖励数量" json:"user_award_count"` // 玩家奖励数量 + Rank int `gorm:"column:rank;type:int(11);default:0;comment:排名" json:"rank"` // 玩家奖励比例(*10000) + UpdatedAt int64 `gorm:"column:updated_at;type:bigint(20);not null;comment:更新时间" json:"updated_at"` // 更新时间 } type ShareRankDataWithUser struct { - ShareRankData `gorm:"embedded"` // RankData的所有字段会展开到表中 - UserInfo PlayerDBInfo `gorm:"embedded"` // UserInfo的所有字段也会展开到同一张表中 + ShareRankData `gorm:"embedded"` // RankData的所有字段会展开到表中 + UserInfo PlayerDBInfo `gorm:"embedded"` // UserInfo的所有字段也会展开到同一张表中 } func (c *ShareRankData) TableName() string { diff --git a/modules/backend/migrate.go b/modules/backend/migrate.go index 43d333e..2d0de3b 100644 --- a/modules/backend/migrate.go +++ b/modules/backend/migrate.go @@ -96,7 +96,6 @@ func MigrateDB() { new(common.ActivitySignData), new(common.ConfigActivityBreakGift), new(common.ConfigShareRobot), - new(common.ConfigActivityWeekCard), new(common.ActivityWeekCardData), new(common.ConfigActivitySlots), new(common.ActivitySlotsData), @@ -150,6 +149,7 @@ func MigrateDB() { new(common.ConfigShareRankAward), new(common.ShareRankData), new(common.LuckyWheelReward), + new(common.ConfigWeekCard), ) if err != nil { panic("Migrate db fail") diff --git a/modules/backend/values/gm.go b/modules/backend/values/gm.go index be811c3..c4b9102 100644 --- a/modules/backend/values/gm.go +++ b/modules/backend/values/gm.go @@ -145,8 +145,6 @@ func GetControlType(path string) int { return common.ReloadConfigActivityBreakGift case "shareRobot": return common.ReloadConfigShareRobot - case "weekCard": - return common.ReloadConfigActivityWeekCard case "slots": return common.ReloadConfigActivitySlots case "luckyShop": @@ -206,6 +204,8 @@ func GetControlType(path string) int { return common.ReloadConfigShareBanner case "shareRankAward": return common.ReloadTypeConfigShareRankAward + case "weekCard": + return common.ReloadConfigWeekCard default: return 0 } diff --git a/modules/web/handler/activity.go b/modules/web/handler/activity.go index 9b065da..579dcac 100644 --- a/modules/web/handler/activity.go +++ b/modules/web/handler/activity.go @@ -13,7 +13,6 @@ import ( "server/util" "sort" "strconv" - "strings" "time" "github.com/gin-gonic/gin" @@ -1335,39 +1334,41 @@ func ActivityWeekCardInfo(c *gin.Context) { } resp := &values.ActivityWeekCardInfoResp{} a.Data = resp - cons := call.GetConfigActivityWeekCard() + cons := call.GetConfigWeekCard() + _ = cons cardInfo := new(common.ActivityWeekCardData) if a.UID > 0 { cardInfo = call.GetUserWeekCard(a.UID) } var rewardList []int64 var err error - rewardList, err = util.GenerateRandomSequence(cons.RewardAmount, cons.MiniLimit, 5) - if err != nil { - log.Error("err:%v", err) - } - rewardList = append([]int64{cons.DayOneReward}, rewardList...) - rewardList = append(rewardList, 0) - if cardInfo.ID <= 0 || len(cardInfo.Rewards) == 0 { - cardInfo.Day = 0 - rewardList, err = util.GenerateRandomSequence(cons.RewardAmount, cons.MiniLimit, 5) - if err != nil { - log.Error("err:%v", err) - } - rewardList = append([]int64{cons.DayOneReward}, rewardList...) - rewardList = append(rewardList, 0) - if cardInfo.ID <= 0 { - cardInfo.Rewards = strings.Join(util.Int64SliceToStringSlice(rewardList), ",") - if a.UID > 0 { - db.Mysql().Create(cardInfo) - } - } else { - cardInfo.Rewards = strings.Join(util.Int64SliceToStringSlice(rewardList), ",") - db.Mysql().Update(&common.ActivityWeekCardData{UID: a.UID}, map[string]interface{}{ - "rewards": cardInfo.Rewards, - }) - } - } + _ = err + //rewardList, err = util.GenerateRandomSequence(cons.RewardAmount, cons.MiniLimit, 5) + //if err != nil { + // log.Error("err:%v", err) + //} + //rewardList = append([]int64{cons.DayOneReward}, rewardList...) + //rewardList = append(rewardList, 0) + //if cardInfo.ID <= 0 || len(cardInfo.Rewards) == 0 { + // cardInfo.Day = 0 + // rewardList, err = util.GenerateRandomSequence(cons.RewardAmount, cons.MiniLimit, 5) + // if err != nil { + // log.Error("err:%v", err) + // } + // rewardList = append([]int64{cons.DayOneReward}, rewardList...) + // rewardList = append(rewardList, 0) + // if cardInfo.ID <= 0 { + // cardInfo.Rewards = strings.Join(util.Int64SliceToStringSlice(rewardList), ",") + // if a.UID > 0 { + // db.Mysql().Create(cardInfo) + // } + // } else { + // cardInfo.Rewards = strings.Join(util.Int64SliceToStringSlice(rewardList), ",") + // db.Mysql().Update(&common.ActivityWeekCardData{UID: a.UID}, map[string]interface{}{ + // "rewards": cardInfo.Rewards, + // }) + // } + //} if rewardList == nil { rewardList, _ = util.StringToInt64Slice(cardInfo.Rewards, ",") @@ -1380,11 +1381,12 @@ func ActivityWeekCardInfo(c *gin.Context) { resp.RechargeStatus = false } for _, item := range rewardList { - resp.RewardList = append(resp.RewardList, values.WeekCardInfo{ - Min: cons.MiniLimit, - Max: cons.RewardAmount - cons.MiniLimit*4, - Val: item, - }) + _ = item + //resp.RewardList = append(resp.RewardList, values.WeekCardInfo{ + // Min: cons.MiniLimit, + // Max: cons.RewardAmount - cons.MiniLimit*4, + // Val: item, + //}) } resp.Status = true if config.GetBase().Release { diff --git a/modules/web/routers/routers.go b/modules/web/routers/routers.go index 6be34d1..2c3ab97 100644 --- a/modules/web/routers/routers.go +++ b/modules/web/routers/routers.go @@ -58,6 +58,7 @@ func SetUpRouter() *gin.Engine { popUp(auth) luckyWheel(auth) pdd(auth) + weekCard(auth) } provider := r.Group("provider/") if config.GetBase().Release { diff --git a/modules/web/routers/routers_weekCard.go b/modules/web/routers/routers_weekCard.go new file mode 100644 index 0000000..4e400b4 --- /dev/null +++ b/modules/web/routers/routers_weekCard.go @@ -0,0 +1,11 @@ +package routers + +import ( + "github.com/gin-gonic/gin" + "server/modules/web/handler" +) + +func weekCard(e *gin.RouterGroup) { + e.POST("/weekCard/info", handler.ActivityWeekCardInfo) + e.POST("/weekCard/draw", handler.ActivityWeekCardDraw) +}