Browse Source

领取奖励修改

liliang 6 months ago
parent
commit
ed6d95747e

+ 1 - 1
const/const.go

@@ -5,7 +5,7 @@ import (
 )
 
 const (
-	version = "1.0.56"
+	version = "1.0.64"
 )
 
 var logo = `

+ 37 - 38
game/config/data/discreteRuleConfig.json

@@ -1,40 +1,39 @@
 [
-		{"ID":13,"Reward":null,"Condition":"0.15,20000"},
-		{"ID":1001,"Reward":[{"itemBaseType":1,"itemID":1,"amount":1000000}],"Condition":""},
-		{"ID":1002,"Reward":[{"itemBaseType":1,"itemID":1,"amount":149999}],"Condition":""},
-		{"ID":1003,"Reward":[{"itemBaseType":1,"itemID":1,"amount":148888}],"Condition":""},
-		{"ID":1004,"Reward":[{"itemBaseType":1,"itemID":1,"amount":143333}],"Condition":""},
-		{"ID":1005,"Reward":[{"itemBaseType":1,"itemID":1,"amount":146666}],"Condition":""},
-		{"ID":1006,"Reward":[{"itemBaseType":1,"itemID":1,"amount":147777}],"Condition":""},
-		{"ID":1013,"Reward":[{"itemBaseType":1,"itemID":1,"amount":145555}],"Condition":""},
-		{"ID":1007,"Reward":null,"Condition":"0.15"},
-		{"ID":1008,"Reward":null,"Condition":"86400"},
-		{"ID":1009,"Reward":[{"itemBaseType":1,"itemID":1,"amount":200000}],"Condition":"8"},
-		{"ID":1010,"Reward":[{"itemBaseType":1,"itemID":1,"amount":350000}],"Condition":"15"},
-		{"ID":1011,"Reward":[{"itemBaseType":1,"itemID":1,"amount":690000}],"Condition":"22"},
-		{"ID":1012,"Reward":[{"itemBaseType":1,"itemID":1,"amount":1800000}],"Condition":"30"},
-		{"ID":2001,"Reward":[{"itemBaseType":1,"itemID":1,"amount":43333}],"Condition":"BossGo"},
-		{"ID":10001,"Reward":[{"itemBaseType":1,"itemID":1,"amount":1000000}],"Condition":"1"},
-		{"ID":10002,"Reward":[{"itemBaseType":1,"itemID":1,"amount":1000000}],"Condition":"2"},
-		{"ID":10003,"Reward":[{"itemBaseType":1,"itemID":1,"amount":2000000}],"Condition":"3"},
-		{"ID":10004,"Reward":[{"itemBaseType":1,"itemID":1,"amount":3000000}],"Condition":"4"},
-		{"ID":10005,"Reward":[{"itemBaseType":1,"itemID":1,"amount":4000000}],"Condition":"5"},
-		{"ID":10006,"Reward":[{"itemBaseType":1,"itemID":1,"amount":5000000}],"Condition":"6"},
-		{"ID":10007,"Reward":[{"itemBaseType":1,"itemID":1,"amount":6000000}],"Condition":"7"},
-		{"ID":10008,"Reward":[{"itemBaseType":1,"itemID":1,"amount":7000000}],"Condition":"8"},
-		{"ID":10009,"Reward":[{"itemBaseType":1,"itemID":1,"amount":8000000}],"Condition":"9"},
-		{"ID":10010,"Reward":[{"itemBaseType":1,"itemID":1,"amount":9000000}],"Condition":"10"},
-		{"ID":1,"Reward":[{"itemBaseType":1,"itemID":1,"amount":150},{"itemBaseType":2,"itemID":6,"amount":150}],"Condition":""},
-		{"ID":2,"Reward":[{"itemBaseType":1,"itemID":5,"amount":10000}],"Condition":"2"},
-		{"ID":3,"Reward":[{"itemBaseType":1,"itemID":5,"amount":30000}],"Condition":"2"},
-		{"ID":4,"Reward":[{"itemBaseType":1,"itemID":5,"amount":20000},{"itemBaseType":2,"itemID":6,"amount":10},{"itemBaseType":1,"itemID":7,"amount":3}],"Condition":"2"},
-		{"ID":5,"Reward":null,"Condition":"28800"},
-		{"ID":6,"Reward":[{"itemBaseType":1,"itemID":7,"amount":10}],"Condition":"30"},
-		{"ID":7,"Reward":[{"itemBaseType":1,"itemID":7,"amount":1}],"Condition":"86400"},
-		{"ID":8,"Reward":[{"itemBaseType":1,"itemID":5,"amount":10000},{"itemBaseType":2,"itemID":6,"amount":10},{"itemBaseType":1,"itemID":1,"amount":10}],"Condition":""},
-		{"ID":9,"Reward":null,"Condition":"7"},
-		{"ID":10,"Reward":null,"Condition":"1"},
-		{"ID":11,"Reward":null,"Condition":"1"},
-		{"ID":12,"Reward":null,"Condition":"4,6"},
-		{"ID":14,"Reward":null,"Condition":"1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24"}	
+		{"ID":13,"Reward":null,"Condition":"0.15,20000","task_mark":0},
+		{"ID":1002,"Reward":[{"itemBaseType":1,"itemID":1,"amount":149999}],"Condition":"","task_mark":1},
+		{"ID":1003,"Reward":[{"itemBaseType":1,"itemID":1,"amount":148888}],"Condition":"","task_mark":1},
+		{"ID":1004,"Reward":[{"itemBaseType":1,"itemID":1,"amount":143333}],"Condition":"","task_mark":1},
+		{"ID":1005,"Reward":[{"itemBaseType":1,"itemID":1,"amount":146666}],"Condition":"","task_mark":0},
+		{"ID":1006,"Reward":[{"itemBaseType":1,"itemID":1,"amount":147777}],"Condition":"","task_mark":1},
+		{"ID":1015,"Reward":[{"itemBaseType":1,"itemID":1,"amount":145555}],"Condition":"","task_mark":1},
+		{"ID":1007,"Reward":null,"Condition":"0.15","task_mark":0},
+		{"ID":1008,"Reward":null,"Condition":"86400","task_mark":0},
+		{"ID":1009,"Reward":[{"itemBaseType":1,"itemID":1,"amount":200000}],"Condition":"8","task_mark":0},
+		{"ID":1010,"Reward":[{"itemBaseType":1,"itemID":1,"amount":350000}],"Condition":"15","task_mark":0},
+		{"ID":1011,"Reward":[{"itemBaseType":1,"itemID":1,"amount":690000}],"Condition":"22","task_mark":0},
+		{"ID":1012,"Reward":[{"itemBaseType":1,"itemID":1,"amount":1800000}],"Condition":"30","task_mark":0},
+		{"ID":2001,"Reward":[{"itemBaseType":1,"itemID":1,"amount":43333}],"Condition":"BossGo","task_mark":0},
+		{"ID":10001,"Reward":[{"itemBaseType":1,"itemID":1,"amount":1000000}],"Condition":"1","task_mark":1},
+		{"ID":10002,"Reward":[{"itemBaseType":1,"itemID":1,"amount":1000000}],"Condition":"2","task_mark":1},
+		{"ID":10003,"Reward":[{"itemBaseType":1,"itemID":1,"amount":1750000}],"Condition":"3","task_mark":1},
+		{"ID":10004,"Reward":[{"itemBaseType":1,"itemID":1,"amount":2800000}],"Condition":"4","task_mark":1},
+		{"ID":10005,"Reward":[{"itemBaseType":1,"itemID":1,"amount":3850000}],"Condition":"5","task_mark":1},
+		{"ID":10006,"Reward":[{"itemBaseType":1,"itemID":1,"amount":4900000}],"Condition":"6","task_mark":1},
+		{"ID":10007,"Reward":[{"itemBaseType":1,"itemID":1,"amount":6300000}],"Condition":"7","task_mark":1},
+		{"ID":10008,"Reward":[{"itemBaseType":1,"itemID":1,"amount":7700000}],"Condition":"8","task_mark":1},
+		{"ID":10009,"Reward":[{"itemBaseType":1,"itemID":1,"amount":9100000}],"Condition":"9","task_mark":1},
+		{"ID":10010,"Reward":[{"itemBaseType":1,"itemID":1,"amount":10500000}],"Condition":"10","task_mark":1},
+		{"ID":1,"Reward":[{"itemBaseType":1,"itemID":1,"amount":150},{"itemBaseType":2,"itemID":6,"amount":150}],"Condition":"","task_mark":0},
+		{"ID":2,"Reward":[{"itemBaseType":1,"itemID":5,"amount":10000}],"Condition":"2","task_mark":0},
+		{"ID":3,"Reward":[{"itemBaseType":1,"itemID":5,"amount":30000}],"Condition":"2","task_mark":0},
+		{"ID":4,"Reward":[{"itemBaseType":1,"itemID":5,"amount":20000},{"itemBaseType":2,"itemID":6,"amount":10},{"itemBaseType":1,"itemID":7,"amount":3}],"Condition":"2","task_mark":0},
+		{"ID":5,"Reward":null,"Condition":"28800","task_mark":0},
+		{"ID":6,"Reward":[{"itemBaseType":1,"itemID":7,"amount":10}],"Condition":"30","task_mark":0},
+		{"ID":7,"Reward":[{"itemBaseType":1,"itemID":7,"amount":1}],"Condition":"86400","task_mark":0},
+		{"ID":8,"Reward":[{"itemBaseType":1,"itemID":5,"amount":10000},{"itemBaseType":2,"itemID":6,"amount":10},{"itemBaseType":1,"itemID":1,"amount":10}],"Condition":"","task_mark":0},
+		{"ID":9,"Reward":null,"Condition":"7","task_mark":0},
+		{"ID":10,"Reward":null,"Condition":"1","task_mark":0},
+		{"ID":11,"Reward":null,"Condition":"1","task_mark":0},
+		{"ID":12,"Reward":null,"Condition":"4,6","task_mark":0},
+		{"ID":14,"Reward":null,"Condition":"1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24","task_mark":0}	
 ]

+ 1 - 1
game/game_cluster/internal/mdb/models/player.go

@@ -1017,7 +1017,7 @@ func (p *Player) RefreshInviteNodeReward(icfg map[int]*data.InviteConfigRow) {
 // 初始化首次奖励
 func (p *Player) InitFirstReward() {
 	drcAll := data.DiscreteRuleConfig.GetAll()
-	ids := []int{1002, 1003, 1004, 1005, 1006}
+	ids := []int{1002, 1003, 1004, 1005, 1006, 1015}
 
 	for _, id := range ids {
 		diConfig, _ := drcAll[id]

+ 3 - 3
game/game_cluster/internal/mdb/models/rank.go

@@ -235,9 +235,9 @@ func GetCountryRankList(countryMap map[string]*data.ContryConfigRow) map[int]*pa
 	}
 
 	rankList := make(map[int]*param.CountryBase)
-	for _, value := range countryMap {
-		mhayaLogger.Debugf("value", value)
-	}
+	//for _, value := range countryMap {
+	//	mhayaLogger.Debugf("value", value)
+	//}
 	for k, v := range ranks {
 		uid := v.Member.(string)
 		mhayaLogger.Debugf("GetCountryRankList => uid:%s", uid)

+ 2 - 1
game/game_cluster/nodes/game/module/player/actor_avatar.go

@@ -38,7 +38,7 @@ type (
 )
 
 func (p *ActorAvatar) OnInit() {
-	p.childExitTime = time.Minute * 3
+	p.childExitTime = time.Minute * 50
 	clog.Debugf("[ActorAvatar] path = %s init!", p.PathString())
 	p.Remote().Register("setAvatar", p.setAvatar)
 	p.Remote().Register("sessionClose", p.sessionClose)
@@ -49,6 +49,7 @@ func (p *ActorAvatar) OnInit() {
 
 func (p *ActorAvatar) sessionClose() {
 	if p.isOnline {
+		// todo 暂时屏蔽
 		p.isOnline = false
 		p.Exit()
 	}

+ 58 - 15
game/game_cluster/nodes/game/module/player/actor_player.go

@@ -55,7 +55,7 @@ type (
 )
 
 func (p *actorPlayer) OnInit() {
-	p.exitTime = time.Duration(rand.Int63n(1200)) + time.Minute*10
+	p.exitTime = time.Duration(rand.Int63n(1200)) + time.Minute*60
 	clog.Debugf("[actorPlayer] path = %s init!", p.PathString())
 
 	// 注册 session关闭的remote函数(网关触发连接断开后,会调用RPC发送该消息)
@@ -443,6 +443,7 @@ func (p *actorPlayer) sessionClose() {
 		//p.SetRewardToDB()
 		p.setRedisAll()
 		//logoutEvent := event.NewPlayerLogout(p.ActorID(), p.playerId, p.targetPath)
+		// todo 暂时屏蔽
 		p.isOnline = false
 		p.Exit()
 		//models.SetServerRecord(p.App().NodeId(), online.Count())
@@ -468,11 +469,12 @@ func (p *actorPlayer) Init(req *token.Token) bool {
 		}
 		p.Account = &account
 	} else {
-		dbErr := mdb.MDB.Collection(constant.CNameAccount).FindOne(context.Background(), bson.M{"openId": req.OpenID}).Decode(&account).Error()
-		if dbErr != "" {
-			clog.Debugf("[actorPlayer] read account data by db error: %v", err)
-			return false
-		}
+		//dbErr := mdb.MDB.Collection(constant.CNameAccount).FindOne(context.Background(), bson.M{"openId": req.OpenID}).Decode(&account).Error()
+		mdb.MDB.Collection(constant.CNameAccount).FindOne(context.Background(), bson.M{"openId": req.OpenID}).Decode(&account)
+		//if dbErr != "" {
+		//	clog.Debugf("[actorPlayer] read account data by db error: %v", err)
+		//	return false
+		//}
 		p.Account = &account
 	}
 
@@ -599,23 +601,64 @@ func (p *actorPlayer) login(req *token.Token) (*models.Player, int32) {
 	return p.Player, code.OK
 }
 
+// 一键领取
 func (p *actorPlayer) ClaimInviteAggregation() (*param.ChangeData, int32) {
 	inviteNodeAll := data.InviteConfig.GetAll()
 	var ids []int
 	for _, row := range inviteNodeAll {
 		ids = append(ids, row.ID)
 	}
-
 	slices.Sort(ids)
-
-	//var addItem models.AddItem
+	var addItem models.AddItem
 	var amount int
-	for id := range ids {
-		reward, _ := p.ClaimInviteNodeReward(id)
-		for _, itemReward := range reward.AddItem {
-			amount += itemReward.Amount
+
+	// 领取节点奖励
+	var breakFlag bool
+
+	for {
+		// 刷新解锁进度
+		p.inviteNodeReward()
+		for _, id := range ids {
+			reward, reCode := p.ClaimInviteNodeReward(id)
+			if reCode == 16018 {
+				// 已领取直接跳过
+				continue
+			}
+
+			if reCode == 16019 {
+				// 未解锁直接终止
+				breakFlag = true
+				break
+			}
+
+			for _, itemReward := range reward.AddItem {
+				amount += itemReward.Amount
+			}
+		}
+
+		if breakFlag {
+			break
+		}
+	}
+
+	// 领取裂变奖励
+	ratioReward, reCode := p.inviteClaimRatio("")
+	if reCode == 0 {
+		for _, reward := range ratioReward.AddItem {
+			amount += reward.Amount
 		}
 	}
-	//addItem.Add()
-	return nil, code.OK
+
+	reward := data.ItemReward{
+		Amount:       amount,
+		ItemBaseType: 1,
+		ItemID:       1,
+	}
+
+	add := addItem.Add([]data.ItemReward{reward})
+
+	var resp param.ChangeData
+	resp.AddItem = add
+	resp.CurGold = p.Player.Item[1].Num
+	return &resp, code.OK
 }

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

@@ -30,7 +30,7 @@ func (p *ActorPlayers) AliasID() string {
 }
 
 func (p *ActorPlayers) OnInit() {
-	p.childExitTime = time.Minute * 10
+	p.childExitTime = time.Minute * 50
 	// 注册角色登陆事件
 	p.Event().Register(event.PlayerLoginKey, p.onLoginEvent)
 	p.Event().Register(event.PlayerLogoutKey, p.onLogoutEvent)

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

@@ -3,6 +3,7 @@ package player
 import (
 	"context"
 	"fmt"
+	jsoniter "github.com/json-iterator/go"
 	mhayaTime "github.com/mhaya/extend/time"
 	"github.com/mhaya/game/game_cluster/internal/code"
 	"github.com/mhaya/game/game_cluster/internal/constant"
@@ -19,6 +20,9 @@ func (p *actorPlayer) claim(req *param.ClaimReq) (*param.ChangeData, int32) {
 		mhayaLogger.Infof("[claim] PlayerNotLogin err node=%v", p.App().NodeId())
 		return nil, code.PlayerNotLogin
 	}
+
+	reqStr, _ := jsoniter.MarshalToString(req)
+	mhayaLogger.Debugf("claim start => nickName = %s req = %s", p.Player.NickName, reqStr)
 	var resp *param.ChangeData
 	var code int32
 	switch req.Tp {
@@ -104,6 +108,22 @@ func (p *actorPlayer) inviteClaimRatio(userName string) (*param.ChangeData, int3
 			claimScore += score
 		}
 		mdb.RDB.Del(context.Background(), key)
+
+		de_friend := []int{2001, 2002, 2003}
+		for _, id := range de_friend {
+			row, _ := data.DiscreteRuleConfig.Get(id)
+			if row == nil {
+				continue
+			}
+
+			firstRewardItem := p.Player.FirstClaimReward[id]
+			if firstRewardItem.IsClaim == 1 {
+				continue
+			}
+
+			// 领取虚拟好有奖励
+			p.ClaimFirstReward(id)
+		}
 	}
 
 	p.Player.Item[models.ItemGold].Num += claimScore

+ 9 - 5
game/game_cluster/nodes/game/module/player/invite.go

@@ -57,9 +57,7 @@ func (p *actorPlayer) invite(req *param.InviteReq) int32 {
 	clog.Debugf("invite execute => p.Player.Pid = p.Player.Pid = ", p.Player.Pid)
 	p.Player.SetInvite(req.ParentName)
 	//添加日志
-
-	clog.Infof("player invite,playerName:%v, inviteName:%v", p.Player.UserName, req.ParentName)
-
+	clog.Infof("player invite,playerName:%v, inviteName:%v", p.Player.NickName, p.Player.Pid)
 	return code.OK
 }
 
@@ -161,6 +159,8 @@ func (p *actorPlayer) inviteRewardList(key string, isHistory bool) (*param.Invit
 	minClaim, _ := strconv.Atoi(split[1])
 
 	result, _ := mdb.RDB.HGetAll(context.Background(), key).Result()
+	rsStr, _ := jsoniter.MarshalToString(result)
+	clog.Debugf("inviteRewardList nickName:%s key:%s, result:%s", p.Player.NickName, key, rsStr)
 
 	claimSlice := make([]param.InviteRatioClaim, 0)
 	var totalAmount int64
@@ -212,11 +212,15 @@ func (p *actorPlayer) inviteRewardList(key string, isHistory bool) (*param.Invit
 		totalAmount += int64(num)
 	}
 
-	return &param.InviteRatioResp{
+	resp := param.InviteRatioResp{
 		Ratio:       ratio,
 		ClaimSlice:  claimSlice,
 		TotalAmount: totalAmount,
-	}, code.OK
+	}
+
+	resStr, _ := jsoniter.MarshalToString(resp)
+	clog.Debugf("inviteRewardList return => ", resStr)
+	return &resp, code.OK
 }
 
 // 邀请奖励查询

+ 5 - 2
game/game_cluster/nodes/game/module/player/start.go

@@ -3,6 +3,7 @@ package player
 import (
 	"context"
 	"fmt"
+	jsoniter "github.com/json-iterator/go"
 	mhayaTime "github.com/mhaya/extend/time"
 	"github.com/mhaya/game/game_cluster/internal/code"
 	"github.com/mhaya/game/game_cluster/internal/constant"
@@ -18,8 +19,7 @@ func (p *actorPlayer) start() (*models.HomeData, int32) {
 		return nil, code.PlayerNotLogin
 	}
 	p.dirty = true
-
-	clog.Debugf("start() nickName:%s openId:%s ip:%s", p.Player.NickName, p.Player.OpenId, p.Player.LoginIP)
+	clog.Debugf("[start] player.nickName = " + p.Player.NickName)
 	if !mhayaTime.CreateFromTimestamp(p.Player.LoginTime).IsToday() {
 		p.Player.Successions += 1
 		if mhayaTime.CreateFromTimestamp(p.Player.LoginTime).DiffInDays(mhayaTime.Now()) > 1 {
@@ -62,5 +62,8 @@ func (p *actorPlayer) start() (*models.HomeData, int32) {
 		QuickLink:    botConfig.Params.QuickLink,
 		InviteStatus: inviteStatus,
 	}
+
+	res, _ := jsoniter.MarshalToString(homeData)
+	clog.Debugf("[start] player.nickName = %s homeData = %s", p.Player.NickName, res)
 	return homeData, code.OK
 }

+ 4 - 1
game/game_cluster/nodes/game/module/player/stat.go

@@ -80,7 +80,7 @@ func (p *actorPlayer) inviteScore(num int) {
 		return
 	}
 	key := fmt.Sprintf("%v:1:%v", constant.InviteScoreKey, p.Player.Pid)
-
+	mhayaLogger.Debugf("inviteScore key:%s,userName:%s, nickName: %s,inviteScore:%s", key, p.Player.UserName, p.Player.NickName, inviteScore)
 	mdb.RDB.HIncrBy(context.Background(), key, p.Player.UserName, int64(inviteScore))
 }
 
@@ -99,6 +99,9 @@ func (p *actorPlayer) setInviteRatioRecord(num int) {
 func (p *actorPlayer) setItemWeekRecord(item *data.ItemReward) {
 	now := mhayaTime.Now().Unix()
 	key := models.GetWeekRecordKey(p.Player.UserName, item.ItemBaseType, item.ItemID)
+	if item.Amount == 0 {
+		return
+	}
 	record := param.ItemRecord{now, int64(item.Amount)}
 	// 控制容量
 	d, _ := jsoniter.Marshal(&record)

+ 1 - 1
game/game_cluster/nodes/web/controller/claim.go

@@ -9,7 +9,7 @@ import (
 )
 
 func (p *Controller) claim(c *mhayaGin.Context) {
-
+	mhayaLogger.Debugf("claim controller start => ")
 	var pa param.ClaimReq
 	if err := c.BindJSON(&pa); err != nil {
 		mhayaLogger.Warnf("if claim err {. params=%s", pa)

+ 1 - 1
game/game_cluster/nodes/web/controller/controller.go

@@ -48,7 +48,7 @@ func (p *Users) GetChildActor(userName string) (cfacade.IActor, bool) {
 }
 
 func (cu *User) OnInit() {
-	cu.childExitTime = time.Minute * 5
+	cu.childExitTime = time.Minute * 50
 	cu.Timer().Add(30*time.Second, cu.sessionClose)
 }
 

+ 8 - 4
game/game_cluster/robot_client/main.go

@@ -17,14 +17,14 @@ import (
 func main() {
 
 	// 定义命令行标志
-	userOffset := flag.Int("userOffset", 500000, "用户偏移量")
-	count := flag.Int("count", 100000, "请求总数")
-	qps := flag.Int("qps", 500, "最大并发数")
+	userOffset := flag.Int("userOffset", 14000, "用户偏移量")
+	count := flag.Int("count", 35, "请求总数")
+	qps := flag.Int("qps", 10, "最大并发数")
 	url := flag.String("url", "http://127.0.0.1:20000", "请求url")
 	url1 := flag.String("url1", "http://127.0.0.1:20001", "请求url")
 	url2 := flag.String("url2", "http://127.0.0.1:20002", "请求url")
 	url3 := flag.String("url3", "http://127.0.0.1:20003", "请求url")
-	duration := flag.Int("duration", 120, "测试持续时间")
+	duration := flag.Int("duration", 1, "测试持续时间")
 	flag.Parse()
 
 	startTime := time.Now()
@@ -92,6 +92,10 @@ func RunRobot(url string, val *param.LoginReq, num int) {
 		start(val, token, url)
 	}
 
+	params2 := map[string]interface{}{
+		"parentName": "8FXc13he2T1bce64fJca9b2Qx",
+	}
+	Invite(url, params2, token)
 	//singInList(val, token, url)
 	//singIn(val, token,url)
 }