diff --git a/src/server/conf/activity/activity_cfg.go b/src/server/conf/activity/activity_cfg.go index 9625334e..71a50cf5 100644 --- a/src/server/conf/activity/activity_cfg.go +++ b/src/server/conf/activity/activity_cfg.go @@ -90,6 +90,42 @@ func GetActivityList() []*gamedata.ActivityData { } return List } +func GetActivityListOrigin() []*gamedata.ActivityData { + data, err := gamedata.GetData(CFG_ACTIVITY) + if err != nil { + log.Debug("GetActivityList err:%v", err) + return nil + } + List := make([]*gamedata.ActivityData, 0, len(data)) + + for k, v := range data { + StartTimeStr := gamedata.GetStringValue(v, "StartTime") + EndTimeStr := gamedata.GetStringValue(v, "EndTime") + StartTime := GoUtil.ParseTime(StartTimeStr) + EndTime := GoUtil.ParseTime(EndTimeStr) + Id, err := strconv.Atoi(k) + if err != nil { + log.Debug("GetActivityList parse id err:%v, key:%s", err, k) + continue + } + Type := gamedata.GetIntValue(v, "Type") + Name := gamedata.GetStringValue(v, "Name") + Title := gamedata.GetStringValue(v, "Title") + Level := gamedata.GetIntValue(v, "Level") + ActivityData := &gamedata.ActivityData{ + Id: Id, + Type: Type, + AType: gamedata.GetIntValue(v, "AType"), + Name: Name, + Title: Title, + Level: Level, + StartTime: StartTime, + EndTime: EndTime, + } + List = append(List, ActivityData) + } + return List +} func GetActivityRewardItems(ActId int) []*item.Item { data, err := gamedata.GetData(CFG_ACTIVITY_GIFT) diff --git a/src/server/conf/champship/champship_cfg.go b/src/server/conf/champship/champship_cfg.go index 8e5a8902..5e0ca681 100644 --- a/src/server/conf/champship/champship_cfg.go +++ b/src/server/conf/champship/champship_cfg.go @@ -5,6 +5,7 @@ import ( GoUtil "server/game_util" "server/gamedata" "server/pkg/github.com/name5566/leaf/log" + "strings" ) const ( @@ -12,6 +13,7 @@ const ( CFG_CHAMPSHIP_RANK = "ChampshipRank" CFG_CHAMPSHIP_JACKPOT = "ChampshipJackpot" CFG_CHAMPSHIP_GROUP = "ChampshipGroup" + CFG_CHAMPSHIP_CONST = "ChampshipConst" ) func init() { @@ -19,6 +21,7 @@ func init() { gamedata.InitCfg(CFG_CHAMPSHIP_RANK) gamedata.InitCfg(CFG_CHAMPSHIP_JACKPOT) gamedata.InitCfg(CFG_CHAMPSHIP_GROUP) + gamedata.InitCfg(CFG_CHAMPSHIP_CONST) } func GetGroupId(N int) int { @@ -44,7 +47,7 @@ func GetChessScore(ChessLv int) int { return gamedata.GetIntValue(data, "Score") } -func GetReward(Reward, Score int) (int, []*item.Item) { +func GetReward(Reward, Score, activityId int) (int, []*item.Item) { data, err := gamedata.GetData(CFG_CHAMPSHIP_JACKPOT) if err != nil { log.Debug("GetReward err:%v, Reward=%d, Score=%d", err, Reward, Score) @@ -53,6 +56,10 @@ func GetReward(Reward, Score int) (int, []*item.Item) { r := make([]*item.Item, 0, len(data)) NewReward := Reward for k, v := range data { + rewardGroupType := gamedata.GetIntValue(v, "RewardGroupType") + if rewardGroupType != activityId { + continue + } Id := GoUtil.Int(k) if Reward >= Id { continue @@ -84,14 +91,14 @@ func GetRewardTotalScore(Reward int) int { return gamedata.GetIntValue(data, "Total") } -func GetRankReward(Rank int) []*item.Item { +func GetRankReward(Rank, yesterdayActivityId int) []*item.Item { data, err := gamedata.GetData(CFG_CHAMPSHIP_RANK) if err != nil { - log.Debug("GetRankReward err:%v, Rank=%d", err, Rank) + log.Debug("GetRankReward err:%v, Rank=%d, yesterdayActivityId=%d", err, Rank, yesterdayActivityId) return nil } for _, v := range data { - if Rank >= gamedata.GetIntValue(v, "Min") && Rank <= gamedata.GetIntValue(v, "Max") { + if Rank >= gamedata.GetIntValue(v, "Min") && Rank <= gamedata.GetIntValue(v, "Max") && yesterdayActivityId == gamedata.GetIntValue(v, "RewardGroupType") { return gamedata.GetItemList(v, "Items") } } @@ -113,3 +120,20 @@ func GetMaxRewardId() int { } return MaxId } + +func GetChampshipActivityId() []int { + data, err := gamedata.GetDataByKey(CFG_CHAMPSHIP_CONST, "RewardGroupType_const") + if err != nil { + log.Debug("GetChampshipActivityId err:%v", err) + return nil + } + value := gamedata.GetStringValue(data, "Value") + var res []int + for _, v := range strings.Split(value, "|") { + id := GoUtil.Int(v) + if id > 0 { + res = append(res, id) + } + } + return res +} diff --git a/src/server/game/activity_func.go b/src/server/game/activity_func.go index 6aa194a3..dce8cf2d 100644 --- a/src/server/game/activity_func.go +++ b/src/server/game/activity_func.go @@ -4,6 +4,7 @@ import ( "fmt" activityCfg "server/conf/activity" catnipCfg "server/conf/catnip" + champshipCfg "server/conf/champship" guesscolorCfg "server/conf/guess_color" languageCfg "server/conf/language" miningCfg "server/conf/mining" @@ -422,3 +423,28 @@ func (p *Player) CatnipBackData() { } p.PushClientRes(res) } + +func (p *Player) GetChampshipActivityId() (int, int) { + var todayActivityId int + var yesterdayActivityId int + activiyCfgList := activityCfg.GetActivityListOrigin() + Now := GoUtil.Now() + YesterDay := GoUtil.ZeroTimestamp() - 1 + level := p.GetBaseMod().GetLevel() + champshipActivityIds := champshipCfg.GetChampshipActivityId() + for _, v := range activiyCfgList { + if !GoUtil.InArray(v.Id, champshipActivityIds) { + continue + } + if v.Level > level { + continue + } + if v.StartTime <= Now && v.EndTime >= Now { + todayActivityId = v.Id + } + if v.StartTime <= YesterDay && v.EndTime >= YesterDay { + yesterdayActivityId = v.Id + } + } + return todayActivityId, yesterdayActivityId +} diff --git a/src/server/game/mod/champship/Champship.go b/src/server/game/mod/champship/Champship.go index 8d5bd263..827ccb6d 100644 --- a/src/server/game/mod/champship/Champship.go +++ b/src/server/game/mod/champship/Champship.go @@ -35,12 +35,12 @@ func (c *ChampshipMod) GetScore() int { return c.Score } -func (c *ChampshipMod) GetRankReward(Rank int) ([]*item.Item, error) { +func (c *ChampshipMod) GetRankReward(Rank, yesterdayActivityId int) ([]*item.Item, error) { if c.RankReward { return nil, fmt.Errorf("rank reward has been received") } c.RankReward = true - return champshipCfg.GetRankReward(Rank), nil + return champshipCfg.GetRankReward(Rank, yesterdayActivityId), nil } func (c *ChampshipMod) AddScore(Chess []int) { @@ -56,14 +56,14 @@ func (c *ChampshipMod) AddScore(Chess []int) { c.Score += score } -func (c *ChampshipMod) GetReward() []*item.Item { - Reward, Items := champshipCfg.GetReward(c.Reward, c.Score) +func (c *ChampshipMod) GetReward(activityId int) []*item.Item { + Reward, Items := champshipCfg.GetReward(c.Reward, c.Score, activityId) c.Reward = Reward c.Max = max(c.Max, c.Reward) return Items } -func (c *ChampshipMod) BackData(MyRank, MyPreRank int) *msg.ResChampship { +func (c *ChampshipMod) BackData(MyRank, MyPreRank, todayActivityId, yesterdayActivityId int) *msg.ResChampship { rankReward := 0 if c.RankReward { rankReward = 2 @@ -75,13 +75,15 @@ func (c *ChampshipMod) BackData(MyRank, MyPreRank int) *msg.ResChampship { status = 1 } return &msg.ResChampship{ - Score: int32(c.Score), - Reward: int32(c.Reward), - EndTime: int32(GoUtil.ZeroTimestamp() + 86400), - Period: int32(GoUtil.GetServerOpenDay()), - Rank: int32(MyRank), - RankReward: int32(rankReward), - Status: int32(status), + Score: int32(c.Score), + Reward: int32(c.Reward), + EndTime: int32(GoUtil.ZeroTimestamp() + 86400), + Period: int32(GoUtil.GetServerOpenDay()), + Rank: int32(MyRank), + RankReward: int32(rankReward), + Status: int32(status), + TodayActivityId: int32(todayActivityId), + YesterdayActivityId: int32(yesterdayActivityId), } } diff --git a/src/server/game/mod_factory.go b/src/server/game/mod_factory.go index d2ad38bc..8d9ec147 100644 --- a/src/server/game/mod_factory.go +++ b/src/server/game/mod_factory.go @@ -3,6 +3,7 @@ package game import ( "server/game/mod/base" "server/game/mod/card" + "server/game/mod/champship" "server/game/mod/charge" "server/game/mod/chess" "server/game/mod/decorate" @@ -67,3 +68,7 @@ func (p *Player) GetFurMod() *fur.FurMod { func (p *Player) GetFriendMod() *friend.FriendMod { return p.PlayMod.getFriendMod() } + +func (p *Player) GetChampshipMod() *champship.ChampshipMod { + return p.PlayMod.getChampshipMod() +} diff --git a/src/server/game/player_back.go b/src/server/game/player_back.go index 5fab317f..005a8eb9 100644 --- a/src/server/game/player_back.go +++ b/src/server/game/player_back.go @@ -308,7 +308,8 @@ func (p *Player) ChargeBackData() { func (p *Player) BackChampship() { ChampshipMod := p.PlayMod.getChampshipMod() rank, preRank := p.GetChampshipRank() - p.PushClientRes(ChampshipMod.BackData(rank, preRank)) + todayActivityId, yesterdayActivityId := p.GetChampshipActivityId() + p.PushClientRes(ChampshipMod.BackData(rank, preRank, todayActivityId, yesterdayActivityId)) } // 获取冠军赛排名 redis缓存 diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index b5ee52d3..a8429550 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -2737,7 +2737,8 @@ func ReqShippingOrder(player *Player, buf []byte) error { // 锦标赛 func ReqChampshipReward(player *Player, buf []byte) error { ChampshipMod := player.PlayMod.getChampshipMod() - itemList := ChampshipMod.GetReward() + todayActivityId, _ := player.GetChampshipActivityId() + itemList := ChampshipMod.GetReward(todayActivityId) err := player.HandleItem(itemList, msg.ITEM_POP_LABEL_ChampshipReward.String()) if err != nil { player.SendErrClienRes(&msg.ResChampshipReward{ @@ -2789,7 +2790,8 @@ func ReqKv(player *Player, buf []byte) error { func ReqChampshipRankReward(player *Player, buf []byte) error { _, myPreRank := player.GetChampshipRank() ChampshipMod := player.PlayMod.getChampshipMod() - itemList, err := ChampshipMod.GetRankReward(myPreRank) + _, yesterdayActivityId := player.GetChampshipActivityId() + itemList, err := ChampshipMod.GetRankReward(myPreRank, yesterdayActivityId) if err != nil { player.SendErrClienRes(&msg.ResChampshipRankReward{ Code: msg.RES_CODE_FAIL, diff --git a/src/server/test/README.MD b/src/server/test/README.MD index ce744146..00f2e012 100644 --- a/src/server/test/README.MD +++ b/src/server/test/README.MD @@ -5,7 +5,7 @@ ### 随机好友推荐 ```golang -test function TestFriendRecommendList 2026-3-12 +test function TestFriendRecommendList 2026-03-04 ok server/test 1.033s ``` @@ -16,6 +16,13 @@ ok server/test 1.033s 3714321 | 100002 ``` +### 好友申请 + +```golang +test function TestReqApplyFriend 2026-03-05 +ok server/test 0.479s +``` + ## 充值模块 ### 观看广告记录 diff --git a/src/server/test/champship_test.go b/src/server/test/champship_test.go new file mode 100644 index 00000000..8dd750d0 --- /dev/null +++ b/src/server/test/champship_test.go @@ -0,0 +1,29 @@ +package test + +import ( + champshipCfg "server/conf/champship" + "server/game" + "testing" +) + +func TestChampshipReward(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("3625212") + ChampshipMod := p1.GetChampshipMod() + ChampshipMod.Score = 1000 + game.ReqChampshipReward(p1, nil) +} + +func TestChampshipRankReward(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("3625212") + ChampshipMod := p1.GetChampshipMod() + ChampshipMod.RankReward = false + _, yesterdayActivityId := p1.GetChampshipActivityId() + ChampshipMod.GetRankReward(1, yesterdayActivityId) +} + +func TestGetChampshipActivityId(t *testing.T) { + res := champshipCfg.GetChampshipActivityId() + t.Logf("res:%v", res) +}