diff --git a/api/v1/game/advertisement.go b/api/v1/game/advertisement.go index 0261492..37ae786 100644 --- a/api/v1/game/advertisement.go +++ b/api/v1/game/advertisement.go @@ -85,7 +85,7 @@ type ATHARes struct { } type CSHAReq struct { - g.Meta `path:"/attributionHA" tags:"ad" method:"get" summary:"广告投放"` + g.Meta `path:"/conversionHA" tags:"ad" method:"get" summary:"广告投放"` EventType string `p:"event_type"` Platform string `p:"platform"` Id string `p:"id"` diff --git a/api/v1/game/order.go b/api/v1/game/order.go index 7d04069..6590236 100644 --- a/api/v1/game/order.go +++ b/api/v1/game/order.go @@ -251,7 +251,8 @@ type AddRechargeSignRes struct { // 重置充值情况 type ResetRechargeSignReq struct { - g.Meta `path:"/order/resetSign" tags:"订单" method:"get" summary:"重置充值情况"` + g.Meta `path:"/order/resetSign" tags:"订单" method:"get" summary:"重置充值情况"` + Password string `p:"password"` } type ResetRechargeSignRes struct { diff --git a/api/v1/game/rank.go b/api/v1/game/rank.go index 88b9e38..1cedb02 100644 --- a/api/v1/game/rank.go +++ b/api/v1/game/rank.go @@ -93,10 +93,21 @@ type AddRankGroupRes struct { type GetRankGroupReq struct { g.Meta `path:"/rank/getGroup" tags:"排行榜" method:"post" summary:"获取排行榜组"` - name string `p:"name"` + Name string `p:"name"` } type GetRankGroupRes struct { g.Meta `mime:"application/json"` Groups map[string]interface{} `p:"groups"` } + +type GetGameRankReq struct { + g.Meta `path:"/rank/getGameRank" tags:"排行榜" method:"get" summary:"获取游戏排行榜"` + Name string `p:"name"` + ServerId int `p:"serverId" v:"required|min:1#服务器ID不能为空"` +} + +type GetGameRankRes struct { + g.Meta `mime:"application/json"` + Groups []map[string]interface{} `json:"list"` +} diff --git a/internal/controller/game_rank.go b/internal/controller/game_rank.go index 0814d95..261eb15 100644 --- a/internal/controller/game_rank.go +++ b/internal/controller/game_rank.go @@ -51,3 +51,8 @@ func (c *rankController) CheckRank(ctx context.Context, req *game.CheckRankReq) res, err = serviceGame.GameRank().Check(ctx, req) return } + +func (c *rankController) GetGameRank(ctx context.Context, req *game.GetGameRankReq) (res *game.GetGameRankRes, err error) { + res, err = serviceGame.GameRank().GetGameRank(ctx, req) + return +} diff --git a/internal/serviceGame/internal/basicinfo.go b/internal/serviceGame/internal/basicinfo.go index e22caf7..11585f0 100644 --- a/internal/serviceGame/internal/basicinfo.go +++ b/internal/serviceGame/internal/basicinfo.go @@ -992,12 +992,10 @@ func GetShopItemLog(ctx context.Context, req *game.GetShopItemLogReq) (res *game shopLogSql := fmt.Sprintf(`select u.account,s.itemId,s.num,s.price,s.config_type from game_shop_log s inner join game_unit u on s.uid=u.uid and s.serverId=u.server where 1=1`) rechargeSql := fmt.Sprintf(`select DISTINCT u.account from game_recharge r inner join game_unit u on r.unitId=u.uid inner join game_register rr on rr.account=u.account where r.status=2`) if req.LowTime != "" { - //start := time.Unix(req.LowTime, 0).Format(consts.TIME_FORMAT) rechargeSql += fmt.Sprintf(` and rr.create_time>"%s"`, req.LowTime) shopLogSql += fmt.Sprintf(` and s.c_date>"%s"`, req.LowTime) } if req.Uptime != "" { - //end := time.Unix(req.Uptime, 0).Format(consts.TIME_FORMAT) rechargeSql = fmt.Sprintf(`%s and rr.create_time<"%s"`, rechargeSql, req.Uptime) shopLogSql = fmt.Sprintf(`%s and s.c_date<"%s"`, shopLogSql, req.Uptime) } diff --git a/internal/serviceGame/internal/out.go b/internal/serviceGame/internal/out.go index 9c5c8eb..3b73e2f 100644 --- a/internal/serviceGame/internal/out.go +++ b/internal/serviceGame/internal/out.go @@ -113,11 +113,19 @@ func SetOpenId(ctx context.Context, req *game.SetOpenIdReq) (res *game.SetOpenId data = append(data, v, 1) } - log.Printf("SetOpenId: json:%s data: %s", gjson.MustEncodeString(user), gjson.MustEncodeString(data)) - _ = rdbTop.HMSet(ctx, "openId", data) + log.Printf("SetOpenId: flieName:%s ", gjson.MustEncodeString(user)) + _ = HMSetOpenId(ctx, data) return } +func HMSetOpenId(ctx context.Context, data []interface{}) error { + rdbTop := RedisDbList[0] + rdbTop.Do(ctx, "select", 0) + log.Printf("SetOpenId: data: %s", gjson.MustEncodeString(data)) + err := rdbTop.HMSet(ctx, "openId", data) + return err.Err() +} + func GetOpenId(ctx context.Context, req *game.GetOpenIdReq) (data int, err error) { rdbTop := RedisDbList[0] rdbTop.Do(ctx, "select", 0) diff --git a/internal/serviceGame/internal/rank.go b/internal/serviceGame/internal/rank.go index 46a9461..4bda886 100644 --- a/internal/serviceGame/internal/rank.go +++ b/internal/serviceGame/internal/rank.go @@ -2,10 +2,13 @@ package internal import ( "context" + "errors" "fmt" + "github.com/gogf/gf/v2/encoding/gjson" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gtime" "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/bson/primitive" "log" "strconv" "tyj_admin/api/v1/game" @@ -200,3 +203,23 @@ func GetRankGroup(ctx context.Context, req *game.AddRankGroupReq) (res *game.Add res = new(game.AddRankGroupRes) return res, err } + +func GetGameRank(ctx context.Context, req *game.GetGameRankReq) (res *game.GetGameRankRes, err error) { + log.Printf("GetGameRank: %s", gjson.MustEncodeString(req)) + res = new(game.GetGameRankRes) + mongo, ok := MongoDatabaseList[fmt.Sprint(req.ServerId)] + if !ok { + return res, errors.New("数据库为空!") + } + err = mongo.Collection(req.Name).Find(ctx, bson.M{}).All(&res.Groups) + chillren := res.Groups[0]["Children"].(primitive.A) + for _, v := range chillren { + v1 := v.(map[string]interface{}) + if v1["UnitId"] != nil { + v1["StringId"] = fmt.Sprint(v1["UnitId"]) + v1["uid"], _ = GetStringIdToUid(ctx, fmt.Sprint(v1["UnitId"])) + } + } + + return res, err +} diff --git a/internal/serviceGame/manage.go b/internal/serviceGame/manage.go index 95137d0..a5134a2 100644 --- a/internal/serviceGame/manage.go +++ b/internal/serviceGame/manage.go @@ -16,7 +16,6 @@ import ( "tyj_admin/internal/service" "tyj_admin/internal/serviceGame/internal" "tyj_admin/library/libUtils" - "tyj_admin/library/liberr" "tyj_admin/utils" ) @@ -280,15 +279,13 @@ func (ga *gameManageImpl) UpdateUnit(ctx context.Context, req *game.UpdateUnitRe func (ga *gameManageImpl) DelAccount(ctx context.Context, req *game.DelAccountReq) (res *game.DelAccountRes, err error) { user := service.Context().GetLoginUser(ctx) fulluser, err1 := service.User().GetUserByUsername(ctx, user.UserName) - if err != nil { - liberr.ErrIsNil(ctx, err1) - return + if err1 != nil { + return nil, err1 } password := libUtils.EncryptPassword(req.Password, fulluser.UserSalt) - log.Printf("密码错误! fulluser: %v, pwd: %s", fulluser, password) if fulluser.UserPassword != password { - liberr.ErrIsNil(ctx, errors.New("密码错误! pwd:"+fulluser.UserPassword+", req.pwd:"+password)) - return + log.Printf("密码错误! fulluser: %v, pwd: %s", gjson.MustEncodeString(fulluser), password) + return nil, errors.New("密码错误!") } uid, err := internal.GetAccountUid2(ctx, req.SrcName, fmt.Sprint(req.ServerId)) diff --git a/internal/serviceGame/order.go b/internal/serviceGame/order.go index 817c442..55dfc0f 100644 --- a/internal/serviceGame/order.go +++ b/internal/serviceGame/order.go @@ -19,6 +19,7 @@ import ( "tyj_admin/internal/model/entity" "tyj_admin/internal/service" "tyj_admin/internal/serviceGame/internal" + "tyj_admin/library/libUtils" ) type IGameOrder interface { @@ -522,6 +523,16 @@ func (o gameOrderImpl) GetGMOrderList(ctx context.Context, req *game.GetGMOrderL func (o gameOrderImpl) CheckRechargeSign(ctx context.Context, req *game.CheckRechargeSignReq) (res *game.CheckRechargeSignRes, err error) { res = new(game.CheckRechargeSignRes) + if req.ServerId == 0 { + ip := libUtils.GetClientIp(ctx) + data := []entity.GameRouter{} + err := dao.GameRouter.Ctx(ctx).Where("router_ip=?", ip).Scan(&data) + //log.Printf("data: %s", gjson.MustEncodeString(data)) + if len(data) == 0 { + return nil, err + } + req.ServerId = int32(data[0].Id) + } if req.Id == 0 || req.ServerId == 0 { return res, errors.New("账号为空") } @@ -537,16 +548,30 @@ func (o gameOrderImpl) CheckRechargeSign(ctx context.Context, req *game.CheckRec return } -// http://192.168.2.100:4111/frontApi/game/setOrderLevel?unitId=1&server=1001&time=250726&token +// http://192.168.2.100:4111/frontApi/game/setOrderLevel?unitId=1&server=&time=250726&token&config=101 func (o gameOrderImpl) AddRechargeSign(ctx context.Context, req *game.AddRechargeSignReq) (res *game.AddRechargeSignRes, err error) { - if req.Id == 0 || req.ServerId == 0 || req.Config == 0 || req.Time == 0 { + serverId := req.ServerId + if serverId == 0 { + ip := libUtils.GetClientIp(ctx) + data := []entity.GameRouter{} + err := dao.GameRouter.Ctx(ctx).Where("router_ip=?", ip).Scan(&data) + //log.Printf("AddRechargeSign data: %s", gjson.MustEncodeString(data)) + if len(data) == 0 { + log.Printf("AddRechargeSign err : %s", err.Error()) + return nil, err + } + serverId = int32(data[0].Id) + } + + if req.Id == 0 || serverId == 0 || req.Config == 0 || req.Time == 0 { return nil, errors.New("参数为空") } token := fmt.Sprintf("%x", md5.Sum([]byte("#colony"+fmt.Sprint(req.Id)+fmt.Sprint(req.ServerId)+fmt.Sprint(req.Config)+fmt.Sprint(req.Time)+"$"))) - if req.Time != 250726 && req.Token != token { + if req.Token != token { log.Printf("[%s]AddRechargeSign failed, token error, md5: %s", gjson.MustEncodeString(req), token) return nil, errors.New("token err") } + req.ServerId = serverId count, err := dao.GameRechargeLevel.Ctx(ctx).Where("unitId=?", req.Id).Where("server=?", req.ServerId).Where("config=?", req.Config).Count() if err != nil { @@ -567,6 +592,16 @@ func (o gameOrderImpl) AddRechargeSign(ctx context.Context, req *game.AddRecharg } func (o gameOrderImpl) ResetRechargeSign(ctx context.Context, req *game.ResetRechargeSignReq) (res *game.ResetRechargeSignRes, err error) { + user := service.Context().GetLoginUser(ctx) + fulluser, err1 := service.User().GetUserByUsername(ctx, user.UserName) + if err1 != nil { + return nil, err1 + } + password := libUtils.EncryptPassword(req.Password, fulluser.UserSalt) + if fulluser.UserPassword != password { + log.Printf("ResetRechargeSign 密码错误! fulluser: %v, pwd: %s", gjson.MustEncodeString(fulluser), password) + return nil, errors.New("密码错误!") + } result, err := dao.GameRechargeLevel.Ctx(ctx).Where("1=1").Delete() if err != nil { log.Printf("ResetRechargeSign: %v", err) diff --git a/internal/serviceGame/pub.go b/internal/serviceGame/pub.go index 90a87d1..d476524 100644 --- a/internal/serviceGame/pub.go +++ b/internal/serviceGame/pub.go @@ -5,6 +5,7 @@ import ( "github.com/gogf/gf/v2/encoding/gjson" "github.com/gogf/gf/v2/frame/g" "log" + "strings" "time" "tyj_admin/api/v1/game" "tyj_admin/internal/dao" @@ -93,6 +94,13 @@ func (c *gamePubImpl) SetOpenId(ctx context.Context, req *game.SetOpenIdReq) (re res, err = internal.SetOpenId(ctx, req) } else if req.InitUnit == 1 { internal.SetUid(ctx) + } else if req.InitUnit == 3 { + list := strings.Split(req.OpenId, ";") + data := []interface{}{} + for _, v := range list { + data = append(data, v, 1) + } + err = internal.HMSetOpenId(ctx, data) } return } diff --git a/internal/serviceGame/rank.go b/internal/serviceGame/rank.go index bf7ca8a..8940a36 100644 --- a/internal/serviceGame/rank.go +++ b/internal/serviceGame/rank.go @@ -17,6 +17,7 @@ type IGameRank interface { UpdateAward(ctx context.Context, req *game.UpdateRankAwardReq) (res *game.UpdateRankAwardRes, err error) InsertAward(ctx context.Context, req *game.InsertRankAwardReq) (res *game.InsertRankAwardRes, err error) AddRankGroup(ctx context.Context, req *game.AddRankGroupReq) (res *game.AddRankGroupRes, err error) + GetGameRank(ctx context.Context, req *game.GetGameRankReq) (res *game.GetGameRankRes, err error) } type gameRankImpl struct { @@ -84,3 +85,10 @@ func (g *gameRankImpl) AddRankGroup(ctx context.Context, req *game.AddRankGroupR log.Print("InsertRank", err) return } + +func (g *gameRankImpl) GetGameRank(ctx context.Context, req *game.GetGameRankReq) (res *game.GetGameRankRes, err error) { + res = new(game.GetGameRankRes) + res, err = internal.GetGameRank(ctx, req) + log.Print("GetGameRank", err) + return +}