liliang 6 ماه پیش
والد
کامیت
2b35aa877c

+ 11 - 4
game/game_cluster/nodes/adminapi/entity/user.go

@@ -5,10 +5,17 @@ type UserCountResp struct {
 	ToDayReg int64 `json:"today_reg"`
 }
 type UserReq struct {
-	UserName string `json:"userName" bson:"userName" form:"userName"` // 用户名
-	UserID   string `json:"user_id" bson:"user_id" form:"userID"`
-	Page     int    `json:"page" form:"page"`
-	Size     int    `json:"size" form:"size"`
+	UserName    string `json:"userName" bson:"userName" form:"userName"` // 用户名
+	UserID      string `json:"user_id" bson:"user_id" form:"userID"`
+	Pid         string `json:"pid" form:"pid"`
+	RangeStart  int    `json:"rangeStart" form:"rangeStart"`
+	RangeEnd    int    `json:"rangeEnd" form:"rangeEnd"`
+	LoginIp     string `json:"loginIp" form:"loginIp"`
+	Tag         string `json:"tag" form:"tag"`
+	Page        int    `json:"page" form:"page"`
+	Size        int    `json:"size" form:"size"`
+	OrderColumn string `json:"orderColumn" form:"orderColumn"`
+	OrderType   string `json:"orderType" form:"orderType"`
 }
 
 type UserListResp struct {

+ 30 - 1
game/game_cluster/nodes/adminapi/service/user.go

@@ -4,6 +4,7 @@ import (
 	"context"
 	"fmt"
 	"github.com/mhaya/game/game_cluster/internal/data"
+	"go.mongodb.org/mongo-driver/bson/primitive"
 	"go.mongodb.org/mongo-driver/mongo/options"
 	"slices"
 	"time"
@@ -49,17 +50,45 @@ func GetUserCount() *entity.UserCountResp {
 func GetUserList(req *entity.UserReq) []*entity.UserListResp {
 	collection := mdb.MDB.Collection(constant.CNamePlayer)
 	filter := bson.M{}
+	if req.Pid != "" {
+		filter["pid"] = req.Pid
+	}
+
 	if req.UserName != "" {
-		filter["pid"] = req.UserName
+		filter["nickName"] = primitive.Regex{Pattern: fmt.Sprintf(".*%s.*", req.UserName), Options: "i"}
 	}
+
+	if req.RangeStart != 0 && req.RangeEnd != 0 {
+		filter["createTime"] = bson.M{
+			"$gte": req.RangeStart,
+			"$lte": req.RangeEnd,
+		}
+	}
+
 	if req.UserID != "" {
 		filter["userName"] = req.UserID
 	}
 
+	if req.Tag != "" {
+		filter["tag"] = req.Tag
+	}
+
+	if req.LoginIp != "" {
+		filter["loginIp"] = req.LoginIp
+	}
+
 	// 分页参数
 	skip := (req.Page - 1) * req.Size
 	// 执行查询
 	opts := options.Find()
+
+	// 根据指定字段和排序类型做排序
+	sort := bson.D{}
+	if req.OrderColumn != "" && req.OrderType != "" {
+		sort = bson.D{{req.OrderColumn, req.OrderType}}
+		opts.SetSort(sort)
+	}
+
 	opts.SetSkip(int64(skip))
 	opts.SetLimit(int64(req.Size))
 

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

@@ -25,6 +25,8 @@ import (
 	"io"
 	"math/rand"
 	"net/http"
+	"slices"
+
 	//"net/url"
 	"time"
 )
@@ -564,3 +566,19 @@ func (p *actorPlayer) login(req *token.Token) (*models.Player, int32) {
 	//p.Player.JoinIP = "13.229.223.106"
 	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
+	//for id := range ids {
+	//	reward, _ := p.ClaimInviteNodeReward(id)
+	//
+	//}
+	return nil, code.OK
+}

+ 19 - 6
game/game_cluster/nodes/game/module/player/claim.go

@@ -11,6 +11,7 @@ import (
 	"github.com/mhaya/game/game_cluster/internal/mdb/models"
 	"github.com/mhaya/game/game_cluster/internal/param"
 	mhayaLogger "github.com/mhaya/logger"
+	"strconv"
 )
 
 func (p *actorPlayer) claim(req *param.ClaimReq) (*param.ChangeData, int32) {
@@ -28,6 +29,8 @@ func (p *actorPlayer) claim(req *param.ClaimReq) (*param.ChangeData, int32) {
 		resp, code = p.ClaimFirstReward(req.Id)
 	case 4:
 		resp, code = p.ClaimInviteNodeReward(req.Id)
+	case 5:
+		resp, code = p.ClaimInviteAggregation()
 	}
 	p.dirty = true
 
@@ -84,16 +87,26 @@ func (p *actorPlayer) inviteClaimRatio(userName string) (*param.ChangeData, int3
 		return resp, resCode
 	}
 
+	var addItem models.AddItem
 	key := fmt.Sprintf("%v:1:%v", constant.InviteScoreKey, p.Player.UserName)
-	claimScore, err := mdb.RDB.HGet(context.Background(), key, userName).Int()
-	if err != nil {
-		return nil, code.OK
+
+	var claimScore int
+	if userName != "" {
+		// 多次领取
+		claimScore, _ = mdb.RDB.HGet(context.Background(), key, userName).Int()
+		mdb.RDB.HDel(context.Background(), key, userName)
+	} else {
+		// 一次领取
+		hMap := mdb.RDB.HGetAll(context.Background(), key).Val()
+		for _, vStr := range hMap {
+			score, _ := strconv.Atoi(vStr)
+			claimScore += score
+		}
+		mdb.RDB.Del(context.Background(), key)
 	}
 
 	p.Player.Item[models.ItemGold].Num += claimScore
 
-	mdb.RDB.HDel(context.Background(), key, userName)
-
 	reward := make([]data.ItemReward, 0)
 	item := &data.ItemReward{
 		ItemBaseType: 1,
@@ -105,7 +118,7 @@ func (p *actorPlayer) inviteClaimRatio(userName string) (*param.ChangeData, int3
 	p.Player.Item.AddItem(reward)
 
 	// 统计收益
-	addItem := models.NewAddItem().Add(reward)
+	addItem = models.NewAddItem().Add(reward)
 	p.itemStat(addItem)
 
 	var resp param.ChangeData