Просмотр исходного кода

邀请裂变奖励代码补充

Administrator 8 месяцев назад
Родитель
Сommit
8d35a59190

+ 3 - 0
extend/map/map_test.go

@@ -2,6 +2,7 @@ package mhayaMap
 
 import (
 	"fmt"
+	"maps"
 	"testing"
 )
 
@@ -47,4 +48,6 @@ func TestMapAll(t *testing.T) {
 
 	fmt.Println(sm.String())
 
+	maps.Insert()
+
 }

+ 10 - 0
extend/slice/slice.go

@@ -265,3 +265,13 @@ func IsEmptyWithString(p []string) bool {
 	}
 	return false
 }
+
+// 从切片尾部弹出数据,队列用法
+func Pop[T any](slice *[]T) T {
+	if len(*slice) == 0 {
+		panic("试图从空切片中弹出数据")
+	}
+	last := (*slice)[len(*slice)-1]   // 获取最后一个元素
+	*slice = (*slice)[:len(*slice)-1] // 将切片缩短
+	return last
+}

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

@@ -1,3 +1,3 @@
 [
-		{"ID":1,"Enable":1,"Num":20,"MaxTime":5}
+		{"ID":1,"Enable":1,"Num":2000000,"MaxTime":5}
 ]

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

@@ -121,7 +121,7 @@ func (p *actorPlayer) inviteRewardRatio() (*param.InviteRatioResp, int32) {
 	key := fmt.Sprintf("%v:1:%v", constant.InviteScoreKey, p.Player.UserName)
 	claimScore, _ := mdb.RDB.Get(context.Background(), key).Int()
 	if claimScore < minClaim {
-		return nil, code.OK
+		return &param.InviteRatioResp{}, code.OK
 	}
 
 	return &param.InviteRatioResp{

+ 91 - 35
game/game_cluster/robot_client/main.go

@@ -6,11 +6,14 @@ import (
 	mhayaHttp "github.com/mhaya/extend/http"
 	mhayaTime "github.com/mhaya/extend/time"
 	"github.com/mhaya/game/game_cluster/internal/code"
+	"github.com/mhaya/game/game_cluster/internal/constant"
+	"github.com/mhaya/game/game_cluster/internal/mdb/models"
 	"github.com/mhaya/game/game_cluster/internal/param"
 	mhayaLogger "github.com/mhaya/logger"
 	pomeloClient "github.com/mhaya/net/parser/pomelo/client"
 	"math/rand"
 	"strconv"
+	"sync"
 	"time"
 )
 
@@ -26,46 +29,47 @@ var (
 
 func main() {
 
-	accounts := make(map[string]*param.LoginReq)
-	for i := 1; i <= maxRobotNum; i++ {
-		str := strconv.Itoa(i)
-		accounts[str] = &param.LoginReq{
-			Pid:      2,
-			OpenID:   str,
-			Platform: "ios",
-			Channel:  "tg",
-		}
+	var wg sync.WaitGroup
+
+	//accounts := make(map[string]*param.LoginReq)
+	//for i := 1; i <= maxRobotNum; i++ {
+	//	str := strconv.Itoa(i)
+	//	accounts[str] = &param.LoginReq{
+	//		Pid:      2,
+	//		OpenID:   str,
+	//		Platform: "ios",
+	//		Channel:  "tg",
+	//	}
+	//}
+	//var Url = ""
+	//for _, val := range accounts {
+	//	k := rand.Intn(2)
+	//	if k == 1 {
+	//		Url = url2
+	//	} else {
+	//		Url = url
+	//	}
+	//	fmt.Println(Url)
+	//	time.Sleep(200 * time.Millisecond)
+	//	go RunRobot(Url, val)
+	//}
+
+	// 邀请排行榜机器人
+	accounts := BuildAccount(1)
+	for _, account := range accounts {
+		wg.Add(1)
+		InviteRankRobot(account, &wg)
 	}
-	var Url = ""
-	for _, val := range accounts {
-		k := rand.Intn(2)
-		if k == 1 {
-			Url = url2
-		} else {
-			Url = url
-		}
-		fmt.Println(Url)
-		time.Sleep(200 * time.Millisecond)
-		go RunRobot(Url, val)
-	}
-
+	wg.Wait()
 }
 
 var Player = []string{"28q1PjXEh3M", "28q1PjY2LSm", "28q1PjYpgFW", "28q1PjYLLvw", "28qeTc4cwBj", "28q1RgBeGYq", "28q1PjYLLvx", "28qfgUzvh67", "28qeLPTxn79", "28qfBVzrRqm", "28qf5VTadno", "28qfdrK9yVN", "28qg8W7Lbmh"}
 
 func RunRobot(url string, val *param.LoginReq) {
-	token := RegisterDevAccount(url, val)
-	if token == "" {
-		return
-	}
-	params := map[string]interface{}{
-		"nickName": "guest" + val.OpenID,
-	}
-	Login(url, params, token)
+	token, _ := RegisterAndLogin(url, val)
 
-	time.Sleep(time.Duration(rand.Int31n(2)) * time.Millisecond)
 	num1 := rand.Intn(12)
-	params = map[string]interface{}{
+	params := map[string]interface{}{
 		"parentName": Player[num1],
 	}
 	time.Sleep(time.Duration(rand.Int31n(10)) * time.Millisecond)
@@ -90,7 +94,55 @@ func RunRobot(url string, val *param.LoginReq) {
 		}
 
 	}(url, token)
+}
+
+// 邀请排行榜机器人
+func InviteRankRobot(account *param.LoginReq, wg *sync.WaitGroup) {
+	defer wg.Done()
+	// 注册邀请人账号
+	_, userName := RegisterAndLogin(url, account)
+	//
+	//params := map[string]interface{}{
+	//	"parentName": userName,
+	//}
+	// 注册被邀请人账号并填写邀请
+	RegisterAndLogin(url, account)
+
+	time.Sleep(time.Duration(rand.Int31n(10)) * time.Millisecond)
+
+	//Invite(url, params, token)
 
+	//设置邀请榜单
+	models.SetRank(constant.RankSourceInvite, 0, userName, 1)
+}
+
+func BuildAccount(total int) []*param.LoginReq {
+	accounts := make([]*param.LoginReq, 0)
+	for i := 1; i <= total; i++ {
+		str := strconv.Itoa(i)
+		accounts = append(accounts, &param.LoginReq{
+			Pid:      2,
+			OpenID:   str,
+			Platform: "ios",
+			Channel:  "tg",
+		})
+	}
+	return accounts
+}
+
+// 注册并登录
+func RegisterAndLogin(url string, val *param.LoginReq) (string, string) {
+	token := RegisterDevAccount(url, val)
+	if token == "" {
+		return "", ""
+	}
+	params := map[string]interface{}{
+		"nickName": "guest" + val.OpenID,
+	}
+	userName := Login(url, params, token)
+
+	time.Sleep(time.Duration(rand.Int31n(2)) * time.Millisecond)
+	return token, userName
 }
 
 func RegisterDevAccount(url string, val *param.LoginReq) string {
@@ -102,6 +154,7 @@ func RegisterDevAccount(url string, val *param.LoginReq) string {
 		"platform": val.Platform,
 		"channel":  val.Channel,
 	}
+
 	jsonBytes, _, err := mhayaHttp.PostJSON(requestURL, params)
 	if err != nil {
 		mhayaLogger.Warn(err)
@@ -121,23 +174,26 @@ func RegisterDevAccount(url string, val *param.LoginReq) string {
 	return ""
 }
 
-func Login(url string, params map[string]interface{}, token string) {
+func Login(url string, params map[string]interface{}, token string) string {
 	requestURL := fmt.Sprintf("%s/login", url)
 	jsonBytes, err := mhayaHttp.PostJSONWithHeader(requestURL, params, token)
 	if err != nil {
 		mhayaLogger.Warn(err)
-		return
+		return ""
 	}
 
 	rsp := &code.Result{}
 	err = jsoniter.Unmarshal(jsonBytes, rsp)
 	if err != nil {
 		mhayaLogger.Warn(err)
-		return
+		return ""
 	}
 
 	mhayaLogger.Debugf("Login OK")
 
+	m := rsp.Data.(map[string]interface{})
+	i := m["userName"]
+	return i.(string)
 }
 
 func Roll(url string, params map[string]interface{}, token string) {