瀏覽代碼

新增领取奖励

zhengtao 11 月之前
父節點
當前提交
7d38e822bb

+ 0 - 22
game/config/data/areaConfig.json

@@ -1,22 +0,0 @@
-[
-  {
-    "areaId": 1,
-    "areaName": "1区",
-    "gate" : "127.0.0.1:10010"
-  },
-  {
-    "areaId": 2,
-    "areaName": "2区",
-    "gate" : "127.0.0.1:10010"
-  },
-  {
-    "areaId": 3,
-    "areaName": "3区",
-    "gate" : "127.0.0.1:10010"
-  },
-  {
-    "areaId": 4,
-    "areaName": "4区",
-    "gate" : "127.0.0.1:10010"
-  }
-]

+ 0 - 16
game/config/data/areaGroupConfig.json

@@ -1,16 +0,0 @@
-[
-  {
-    "pid": 2126001,
-    "areaIdList": [
-      1,
-      2
-    ]
-  },
-  {
-    "pid": 2126002,
-    "areaIdList": [
-      3,
-      4
-    ]
-  }
-]

+ 0 - 26
game/config/data/areaServerConfig.json

@@ -1,26 +0,0 @@
-[
-  {
-    "serverId": 10001,
-    "serverName": "1服",
-    "areaId": 1,
-    "status": 1
-  },
-  {
-    "serverId": 10002,
-    "serverName": "2服",
-    "areaId": 2,
-    "status": 1
-  },
-  {
-    "serverId": 10003,
-    "serverName": "3服",
-    "areaId": 3,
-    "status": 1
-  },
-  {
-    "serverId": 10004,
-    "serverName": "4服",
-    "areaId": 4,
-    "status": 1
-  }
-]

+ 1 - 1
game/config/data/rankConfig.json

@@ -1,6 +1,6 @@
 [
 [
 		{"ID":1,"Enable":1,"Type":1,"Source":1,"ShowTotal":100,"Reward":null,"IsBot":1,"StartTime":"","EndTime":"","ShowTime":""},
 		{"ID":1,"Enable":1,"Type":1,"Source":1,"ShowTotal":100,"Reward":null,"IsBot":1,"StartTime":"","EndTime":"","ShowTime":""},
 		{"ID":2,"Enable":1,"Type":1,"Source":2,"ShowTotal":100,"Reward":null,"IsBot":1,"StartTime":"","EndTime":"","ShowTime":""},
 		{"ID":2,"Enable":1,"Type":1,"Source":2,"ShowTotal":100,"Reward":null,"IsBot":1,"StartTime":"","EndTime":"","ShowTime":""},
-		{"ID":3,"Enable":1,"Type":2,"Source":2,"ShowTotal":1000,"Reward":[{"itemBaseType":4,"itemID":3,"amount":350}],"IsBot":1,"StartTime":"","EndTime":"","ShowTime":""},
+		{"ID":3,"Enable":1,"Type":2,"Source":2,"ShowTotal":1000,"Reward":[{"itemBaseType":4,"itemID":3,"amount":5000000000}],"IsBot":1,"StartTime":"","EndTime":"","ShowTime":""},
 		{"ID":4,"Enable":1,"Type":1,"Source":3,"ShowTotal":100,"Reward":null,"IsBot":1,"StartTime":"","EndTime":"","ShowTime":""}	
 		{"ID":4,"Enable":1,"Type":1,"Source":3,"ShowTotal":100,"Reward":null,"IsBot":1,"StartTime":"","EndTime":"","ShowTime":""}	
 ]
 ]

+ 1 - 0
game/game_cluster/internal/code/code.go

@@ -11,6 +11,7 @@ var (
 	AccountNameIsExist          int32 = 10205 // 帐号已存在
 	AccountNameIsExist          int32 = 10205 // 帐号已存在
 	AccountRegisterError        int32 = 10206 //
 	AccountRegisterError        int32 = 10206 //
 	AccountGetFail              int32 = 10207 //
 	AccountGetFail              int32 = 10207 //
+	ActivityNotOpenError        int32 = 10208 // 活动不存在
 	PlayerDenyLogin             int32 = 10301 // 玩家禁止登录
 	PlayerDenyLogin             int32 = 10301 // 玩家禁止登录
 	PlayerDuplicateLogin        int32 = 10302 // 玩家重复登录
 	PlayerDuplicateLogin        int32 = 10302 // 玩家重复登录
 	PlayerNameExist             int32 = 10303 // 玩家角色名已存在
 	PlayerNameExist             int32 = 10303 // 玩家角色名已存在

+ 10 - 0
game/game_cluster/internal/mdb/models/cashoutrecord.go

@@ -0,0 +1,10 @@
+package models
+
+type CashOutRecord struct {
+	UserName string `json:"userName" bson:"userName"`
+	Status   int    `json:"status" bson:"status"`
+	Amount   int    `json:"amount" bson:"amount"`
+	Type     int    `json:"type" bson:"type"`
+	CreateAt int64  `json:"createAt" bson:"createAt"`
+	UpdateAt int64  `json:"updateAt" bson:"updateAt"`
+}

+ 70 - 0
game/game_cluster/internal/mdb/models/player.go

@@ -134,6 +134,7 @@ func (p *Player) Init() {
 
 
 // InitDaily 每日刷新
 // InitDaily 每日刷新
 func (p *Player) InitDaily() {
 func (p *Player) InitDaily() {
+	p.DailyRefreshTime = mhayaTime.Now().Add(-24 * time.Hour).Unix()
 	if !mhayaTime.CreateFromTimestamp(p.DailyRefreshTime).IsToday() {
 	if !mhayaTime.CreateFromTimestamp(p.DailyRefreshTime).IsToday() {
 		//刷新每日任务
 		//刷新每日任务
 		p.DailyTask.RefreshDailyTask()
 		p.DailyTask.RefreshDailyTask()
@@ -585,3 +586,72 @@ func (p *Player) SetInvite(uid string) bool {
 	}
 	}
 	return true
 	return true
 }
 }
+
+func (p *Player) ClaimRankReward(id int) param.ChangeData {
+	var resp param.ChangeData
+	if rank, ok := p.RankReward[id]; ok {
+		if rank.IsClaim == 0 && len(rank.Reward) > 0 {
+			var addItem AddItem
+			resp.AddItem = addItem.Add(rank.Reward)
+			p.Item.AddItem(rank.Reward)
+			p.RankReward[id].IsClaim = 1
+
+			p.RankReward[id].ClaimTime = mhayaTime.Now().Unix()
+			p.SetPlayerRewardLog(SourceRank, id, rank.Reward, []data.ItemReward{}, nil)
+		}
+	}
+	p.LevelUp()
+
+	return resp
+}
+
+func (p *Player) ClaimInviteReward(id int) param.ChangeData {
+	var resp param.ChangeData
+	if p.InviteReward.IsClaim == 0 {
+		var addItem AddItem
+		resp.AddItem = addItem.Add(p.InviteReward.Reward)
+		p.Item.AddItem(p.InviteReward.Reward)
+		p.InviteReward.IsClaim = 1
+		p.InviteReward.RewardTime = mhayaTime.Now().Unix()
+
+		p.SetPlayerRewardLog(SourceInvite, id, p.InviteReward.Reward, []data.ItemReward{}, nil)
+	}
+	p.LevelUp()
+
+	return resp
+}
+
+func (p *Player) ClaimAchieveTaskReward(id int) param.ChangeData {
+	var resp param.ChangeData
+	if ach, ok := p.AchieveTask[id]; ok {
+		if ach.Status == 1 && ach.RewardNum > 0 {
+			var addItem AddItem
+			resp.AddItem = addItem.Add(ach.Reward)
+			p.Item.AddItem(ach.Reward)
+			ach.RewardNum -= 1
+			p.SetPlayerRewardLog(SourceAchieveTask, id, ach.Reward, []data.ItemReward{}, nil)
+		}
+		if ach.RewardNum == 0 {
+			p.AchieveTask[id].Status = 2
+		}
+	}
+	p.LevelUp()
+
+	return resp
+}
+
+func (p *Player) ClaimDailyTaskReward(id int) param.ChangeData {
+	var resp param.ChangeData
+	if task, ok := p.DailyTask[id]; ok {
+		if task.Status == 1 {
+			var addItem AddItem
+			resp.AddItem = addItem.Add(task.Reward)
+			p.Item.AddItem(task.Reward)
+			task.Status = 2
+			p.SetPlayerRewardLog(SourceDailyTask, id, task.Reward, []data.ItemReward{}, nil)
+		}
+	}
+	p.LevelUp()
+
+	return resp
+}

+ 13 - 1
game/game_cluster/internal/param/param.go

@@ -64,6 +64,14 @@ type DrawConfig struct {
 	Num    int `json:"num"`
 	Num    int `json:"num"`
 }
 }
 
 
+type WeeklyRankConfigResp struct {
+	WeeklyTotalReward []data.ItemReward `json:"weeklyTotalReward"`
+	StartTime         string            `json:"startTime"`
+	EndTime           string            `json:"endTime"`
+	InviteReward      []data.ItemReward `json:"inviteReward"`
+	VipInviteReward   []data.ItemReward `json:"vipInviteReward"`
+}
+
 type GetRankRewardReq struct {
 type GetRankRewardReq struct {
 	Id int `json:"id"` //排行榜ID
 	Id int `json:"id"` //排行榜ID
 }
 }
@@ -104,7 +112,11 @@ type GetLevelResp struct {
 
 
 type ClaimReq struct {
 type ClaimReq struct {
 	Tp int `json:"tp"` //类型 1榜单奖励 2邀请奖励 3成就奖励 4日常奖励
 	Tp int `json:"tp"` //类型 1榜单奖励 2邀请奖励 3成就奖励 4日常奖励
-	Id int `json:"id"`
+	Id int `json:"id"` //奖励类型ID  邀请奖励传0
+}
+
+type CashOutReq struct {
+	Num int `json:"num"`
 }
 }
 
 
 type PlayerBase struct {
 type PlayerBase struct {

+ 2 - 0
game/game_cluster/nodes/game/module/player/actor_player.go

@@ -55,6 +55,8 @@ func (p *actorPlayer) OnInit() {
 
 
 	p.Remote().Register("share", p.share) // 分享
 	p.Remote().Register("share", p.share) // 分享
 
 
+	p.Remote().Register("claim", p.claim) // 领取奖励
+
 	p.Remote().Register("jump", p.jump)               // 成就1相关的跳转服务
 	p.Remote().Register("jump", p.jump)               // 成就1相关的跳转服务
 	p.Remote().Register("savex", p.savex)             // 更新推特
 	p.Remote().Register("savex", p.savex)             // 更新推特
 	p.Remote().Register("savetonwall", p.savetonwall) // 更新钱包
 	p.Remote().Register("savetonwall", p.savetonwall) // 更新钱包

+ 17 - 0
game/game_cluster/nodes/game/module/player/cashout.go

@@ -0,0 +1,17 @@
+package player
+
+import (
+	"github.com/mhaya/game/game_cluster/internal/code"
+	"github.com/mhaya/game/game_cluster/internal/data"
+	"github.com/mhaya/game/game_cluster/internal/param"
+)
+
+func (p *actorPlayer) cashout(req *param.CashOutReq) int32 {
+	if !p.isOnline {
+		return code.PlayerNotLogin
+	}
+
+	ret, ok := data.DiscreteRuleConfig.Get()
+
+	return code.OK
+}

+ 4 - 0
game/game_cluster/nodes/game/module/player/claim.go

@@ -12,9 +12,13 @@ func (p *actorPlayer) claim(req *param.ClaimReq) (*param.ChangeData, int32) {
 	var resp param.ChangeData
 	var resp param.ChangeData
 	switch req.Tp {
 	switch req.Tp {
 	case 1:
 	case 1:
+		resp = p.Player.ClaimRankReward(req.Id)
 	case 2:
 	case 2:
+		resp = p.Player.ClaimInviteReward(req.Id)
 	case 3:
 	case 3:
+		resp = p.Player.ClaimAchieveTaskReward(req.Id)
 	case 4:
 	case 4:
+		resp = p.Player.ClaimDailyTaskReward(req.Id)
 	}
 	}
 
 
 	return &resp, code.OK
 	return &resp, code.OK

+ 1 - 1
game/game_cluster/nodes/game/module/player/roll.go

@@ -29,7 +29,7 @@ func (p *actorPlayer) roll(req *param.RollReq) (*param.RollResp, int32) {
 	resp.Rolls = append(resp.Rolls, ret.Roll)
 	resp.Rolls = append(resp.Rolls, ret.Roll)
 	addItem.AddById(models.ItemScore, ret.Roll.Score*req.Multi)
 	addItem.AddById(models.ItemScore, ret.Roll.Score*req.Multi)
 	subItem.AddById(models.ItemRoll, 1*req.Multi)
 	subItem.AddById(models.ItemRoll, 1*req.Multi)
-	scores += ret.Roll.Score
+	scores += ret.Roll.Score * req.Multi
 	//}
 	//}
 	resp.AddItem = addItem
 	resp.AddItem = addItem
 	resp.SubItem = subItem
 	resp.SubItem = subItem

+ 40 - 0
game/game_cluster/nodes/web/controller/claim.go

@@ -0,0 +1,40 @@
+package controller
+
+import (
+	mhayaGin "github.com/mhaya/components/gin"
+	"github.com/mhaya/game/game_cluster/internal/code"
+	"github.com/mhaya/game/game_cluster/internal/constant"
+	"github.com/mhaya/game/game_cluster/internal/param"
+	mhayaLogger "github.com/mhaya/logger"
+)
+
+func (p *Controller) claim(c *mhayaGin.Context) {
+
+	var pa param.ClaimReq
+	if err := c.BindJSON(&pa); err != nil {
+		mhayaLogger.Warnf("if claim err {. params=%s", pa)
+		code.RenderResult(c, code.Error)
+		return
+	}
+	if pa.Tp == 0 {
+		code.RenderResult(c, code.Error)
+		return
+	}
+
+	token, err := p.Auth(c)
+	if code.IsFail(err) {
+		mhayaLogger.Warnf("if claim token err {. params=%s", c.GetHeader(constant.Token))
+		code.RenderResult(c, code.AccountTokenValidateFail)
+		return
+	}
+
+	resp := &param.ChangeData{}
+	errCode := p.CallWait(token.TargetPath, "claim", &pa, resp)
+	if code.IsFail(errCode) {
+		mhayaLogger.Warnf("[claim] param = %v, errCode = %v", pa, errCode)
+		code.RenderResult(c, errCode)
+		return
+	}
+
+	code.RenderResult(c, code.OK, resp)
+}

+ 3 - 0
game/game_cluster/nodes/web/controller/controller.go

@@ -47,6 +47,9 @@ func (p *Controller) Init() {
 	group.POST("/rank", p.rank)
 	group.POST("/rank", p.rank)
 	group.POST("/invite", p.invite)
 	group.POST("/invite", p.invite)
 	group.POST("/share", p.share)
 	group.POST("/share", p.share)
+	group.POST("/claim", p.claim)
+
+	group.POST("/weeklyRankConfig", p.weeklyRankConfig)
 
 
 	group.POST("/jump", p.jump)
 	group.POST("/jump", p.jump)
 	group.POST("/savex", p.savex)
 	group.POST("/savex", p.savex)

+ 38 - 0
game/game_cluster/nodes/web/controller/rank.go

@@ -4,6 +4,8 @@ import (
 	mhayaGin "github.com/mhaya/components/gin"
 	mhayaGin "github.com/mhaya/components/gin"
 	"github.com/mhaya/game/game_cluster/internal/code"
 	"github.com/mhaya/game/game_cluster/internal/code"
 	"github.com/mhaya/game/game_cluster/internal/constant"
 	"github.com/mhaya/game/game_cluster/internal/constant"
+	"github.com/mhaya/game/game_cluster/internal/data"
+	"github.com/mhaya/game/game_cluster/internal/mdb/models"
 	"github.com/mhaya/game/game_cluster/internal/param"
 	"github.com/mhaya/game/game_cluster/internal/param"
 	mhayaLogger "github.com/mhaya/logger"
 	mhayaLogger "github.com/mhaya/logger"
 )
 )
@@ -38,3 +40,39 @@ func (p *Controller) rank(c *mhayaGin.Context) {
 
 
 	code.RenderResult(c, code.OK, resp)
 	code.RenderResult(c, code.OK, resp)
 }
 }
+
+func (p *Controller) weeklyRankConfig(c *mhayaGin.Context) {
+	_, err := p.Auth(c)
+	if code.IsFail(err) {
+		mhayaLogger.Warnf("if weeklyRankInfo token err {. params=%s", c.GetHeader(constant.Token))
+		code.RenderResult(c, code.AccountTokenValidateFail)
+		return
+	}
+	ret, ok := data.RankConfig.Get(3)
+	if !ok {
+		code.RenderResult(c, code.ActivityNotOpenError)
+		return
+	}
+	var resp param.WeeklyRankConfigResp
+	resp.WeeklyTotalReward = ret.Reward
+	resp.StartTime = ret.StartTime
+	resp.EndTime = ret.EndTime
+
+	ret1, ok := data.DiscreteRuleConfig.Get(models.InvitePlayer)
+	if !ok {
+		code.RenderResult(c, code.ActivityNotOpenError)
+		return
+	}
+
+	resp.InviteReward = ret1.Reward
+
+	ret2, ok := data.DiscreteRuleConfig.Get(models.InviteVipPlayer)
+	if !ok {
+		code.RenderResult(c, code.ActivityNotOpenError)
+		return
+	}
+
+	resp.VipInviteReward = ret2.Reward
+
+	code.RenderResult(c, code.OK, resp)
+}