From 849fbc97c2649ba15be11274d826d5b5cd294cf1 Mon Sep 17 00:00:00 2001 From: linquan <349589071@qq.com> Date: Mon, 26 May 2025 14:58:53 +0800 Subject: [PATCH] level, debug --- api/v1/game/basicinfo.go | 30 +++-- api/v1/game/ccd.go | 6 +- api/v1/game/manage.go | 25 +---- api/v1/game/order.go | 56 ++++++++++ internal/consts/consts.go | 4 +- internal/controller/game_manage.go | 5 - internal/controller/game_order.go | 10 ++ internal/controller/game_pub.go | 10 ++ internal/dao/game_recharge_level.go | 27 +++++ internal/dao/game_recharge_sign.go | 27 +++++ internal/dao/internal/game_recharge_level.go | 79 +++++++++++++ internal/dao/internal/game_recharge_sign.go | 79 +++++++++++++ internal/model/do/game_recharge_level.go | 18 +++ internal/model/do/game_recharge_sign.go | 18 +++ internal/model/entity/game_recharge_level.go | 13 +++ internal/model/entity/game_recharge_sign.go | 13 +++ internal/router/router.go | 2 +- internal/serviceGame/client_bug.go | 28 ++--- internal/serviceGame/internal/basicinfo.go | 38 ++++++- internal/serviceGame/internal/manage.go | 29 +---- internal/serviceGame/loginUrl.go | 27 +++-- internal/serviceGame/manage.go | 55 ++++++---- internal/serviceGame/order.go | 110 ++++++++++++++++++- 23 files changed, 582 insertions(+), 127 deletions(-) create mode 100644 internal/dao/game_recharge_level.go create mode 100644 internal/dao/game_recharge_sign.go create mode 100644 internal/dao/internal/game_recharge_level.go create mode 100644 internal/dao/internal/game_recharge_sign.go create mode 100644 internal/model/do/game_recharge_level.go create mode 100644 internal/model/do/game_recharge_sign.go create mode 100644 internal/model/entity/game_recharge_level.go create mode 100644 internal/model/entity/game_recharge_sign.go diff --git a/api/v1/game/basicinfo.go b/api/v1/game/basicinfo.go index 75948a7..d0bd736 100644 --- a/api/v1/game/basicinfo.go +++ b/api/v1/game/basicinfo.go @@ -78,14 +78,14 @@ type AccountReq struct { Account string `p:"account"` Ident string `p:"ident"` Name string `p:"name"` - PageSize int64 `p:"pageSize"` - PageNum int64 `p:"pageNum"` + GmState string `p:"gmState"` ServerId int `p:"serverId" ` + common.Page64Req } type AccountRes struct { g.Meta `mime:"application/json"` Accounts []map[string]interface{} `json:"list"` - Total int64 `json:"total"` + common.List64Res } type GetLoginOutReq struct { @@ -106,7 +106,8 @@ type GetLoginOutRes struct { type GetLoginOutLogReq struct { g.Meta `path:"/loginOutLog/get" tags:"获取登录登出记录" method:"get" summary:"获取登录登出记录"` - Uid string `p:"id"` + Uid string `p:"uid"` + Id string `p:"id"` Account string `p:"account"` State int32 `p:"state"` PageNum int `p:"pageNum"` @@ -123,6 +124,7 @@ type GetLoginOutLogRes struct { type GetItemLogReq struct { g.Meta `path:"/itemRecord/get" tags:"获取物品记录" method:"get" summary:"获取物品记录"` Uid string `p:"uid"` + Id string `p:"id"` Account string `p:"account"` ItemId int `p:"ItemId"` PageNum int `p:"pageNum"` @@ -145,17 +147,17 @@ type GetShopItemLogReq struct { Channel string `p:"channel" ` common.PageReq } -type ShopItemLog struct { - ItemId int `json:"itemId" description:"物品Id"` - Num int `json:"num" description:"数量"` - ConfigType int `json:"config_type" description:"消耗途径"` -} type GetShopItemLogRes struct { g.Meta `mime:"application/json"` Logs []ShopItemLog `json:"logs"` RechargeTotal int `json:"rechargeTotal"` common.ListRes } +type ShopItemLog struct { + ItemId int `json:"itemId" description:"物品Id"` + Num int `json:"num" description:"数量"` + ConfigType int `json:"config_type" description:"消耗途径"` +} type GetShopItemListReq struct { g.Meta `path:"/order/shopList" tags:"获取物品记录" method:"get" summary:"获取商店物品记录"` @@ -253,3 +255,13 @@ type UserDelRes struct { g.Meta `mime:"application/json"` Data int `p:"data"` } + +type DelAccountReq struct { + g.Meta `path:"/mange/delAccount" tags:"账号" method:"get" summary:"删除账号"` + SrcName string `p:"SrcName"` + ServerId int `p:"serverId"` + Password string `p:"password"` +} + +type DelAccountRes struct { +} diff --git a/api/v1/game/ccd.go b/api/v1/game/ccd.go index c0de6fc..3382496 100644 --- a/api/v1/game/ccd.go +++ b/api/v1/game/ccd.go @@ -72,9 +72,9 @@ type AddLoginUrlReq struct { Id int `p:"id"` Host string `p:"host"` Port int `p:"port"` - State int `p:"state"` - Recommend int `p:"recommend"` - IsNew int `p:"isNew"` + State string `p:"state"` + Recommend string `p:"recommend"` + IsNew string `p:"isNew"` } type AddLoginUrlRes struct { diff --git a/api/v1/game/manage.go b/api/v1/game/manage.go index a5029f5..60b9af1 100644 --- a/api/v1/game/manage.go +++ b/api/v1/game/manage.go @@ -2,7 +2,6 @@ package game import ( "github.com/gogf/gf/v2/frame/g" - "tyj_admin/api/v1/common" "tyj_admin/internal/model/entity" ) @@ -32,19 +31,6 @@ type SearchGmRes struct { Gm int32 `json:"gm"` } -type ListGmReq struct { - g.Meta `path:"/mange/listgm" tags:"账号" method:"get" summary:"列出GM权限"` - ServerId int `p:"serverId"` - ChangeValue int `p:"gmState"` //0正常,1-黑名单,3-gm - common.Page64Req -} - -type ListGmRes struct { - g.Meta `mime:"application/json"` - Uids []string `json:"uids"` - common.List64Res -} - type SetGmToClientReq struct { g.Meta `path:"/mange/setclientgm" tags:"账号" method:"get" summary:"开GM权限"` ServerId int `p:"serverId"` @@ -59,8 +45,8 @@ type SetGmToClientRes struct { type ResetPwdReq struct { g.Meta `path:"/mange/resetpwd" tags:"账号" method:"post" summary:"修改登录密码"` Account string `p:"account"` - Pwd string `p:"pwd"` ServerId int `p:"serverId" v:"required|min:1#服务器ID不能为空"` + Pwd string `p:"pwd"` } type ResetPwdRes struct { @@ -210,15 +196,6 @@ type UpdateUnitReq struct { type UpdateUnitRes struct { } -type DelAccountReq struct { - g.Meta `path:"/mange/delAccount" tags:"账号" method:"get" summary:"删除账号"` - SrcName string `p:"SrcName"` - ServerId int `p:"serverId"` -} - -type DelAccountRes struct { -} - type SearchAccountReq struct { g.Meta `path:"/mange/searchAccount" tags:"账号" method:"get" summary:"搜索账号"` //Day int `p:"day"` diff --git a/api/v1/game/order.go b/api/v1/game/order.go index e896d05..435debd 100644 --- a/api/v1/game/order.go +++ b/api/v1/game/order.go @@ -58,6 +58,7 @@ type AmountTotal struct { CreateTime string `json:"createTime" description:""` Config int `json:"config" description:""` TotalAmount int `json:"totalAmount" description:""` + Platform int `json:"platform" description:""` } type AccountTotal struct { @@ -80,6 +81,25 @@ type OrderLogRes struct { RechargeAccountTotal []AccountTotal `json:"rechargeAccountTotal"` } +type OrderLogPlatformReq struct { + g.Meta `path:"/order/logPlatform" tags:"订单" method:"get" summary:"订单列表记录"` + Channel string `p:"channel"` + StartTime int64 `p:"startTime"` + EndTime int64 `p:"endTime"` + CompareType int `p:"compareType"` + CompareType1 int `p:"compareType1"` + RechargeMin int `p:"rechargeMin"` + RechargeTotal int `p:"rechargeTotal"` + ServerId int `p:"server"` +} + +type OrderLogPlatformRes struct { + g.Meta `mime:"application/json"` + AccountTotal []AccountTotal `json:"accountTotal"` + AmountTotal []AmountTotal `json:"amountTotal"` + RechargeAccountTotal []AccountTotal `json:"rechargeAccountTotal"` +} + type OrderBehaviorReq struct { g.Meta `path:"/order/behavior" tags:"订单" method:"get" summary:"订单记录"` StartTime string `p:"startTime"` @@ -202,3 +222,39 @@ type GetGMOrderListRes struct { List []entity.GameRechargeLog `json:"list"` common.ListRes } + +// 查询充值情况 +type CheckRechargeSignReq struct { + g.Meta `path:"/getOrderLevel" tags:"订单" method:"get" summary:"查询充值情况"` + Id int64 `p:"unitId"` + ServerId int32 `p:"server"` +} + +type CheckRechargeSignRes struct { + g.Meta `mime:"application/json"` + List []int `json:"list"` +} + +// 插入充值情况 +type AddRechargeSignReq struct { + g.Meta `path:"/setOrderLevel" tags:"订单" method:"get" summary:"插入充值情况"` + Id int64 `p:"unitId"` + ServerId int32 `p:"server"` + Config int32 `p:"config"` + Time int32 `p:"time"` + Token string `p:"token"` +} + +type AddRechargeSignRes struct { + g.Meta `mime:"application/json"` + List []int `json:"list"` +} + +// 重置充值情况 +type ResetRechargeSignReq struct { + g.Meta `path:"/order/resetSign" tags:"订单" method:"get" summary:"重置充值情况"` +} + +type ResetRechargeSignRes struct { + g.Meta `mime:"application/json"` +} diff --git a/internal/consts/consts.go b/internal/consts/consts.go index d311fdf..9391e4b 100644 --- a/internal/consts/consts.go +++ b/internal/consts/consts.go @@ -41,8 +41,10 @@ const ( const ( Notice_Type_Pop = 1 - Notice_Type_Normal = 2 + Notice_Type_Login = 2 Notice_Type_Maintenance = 3 + Notice_Type_Customer = 4 + Notice_Type_Preview = 5 ) const ( diff --git a/internal/controller/game_manage.go b/internal/controller/game_manage.go index 9f6b3c7..f84bb42 100644 --- a/internal/controller/game_manage.go +++ b/internal/controller/game_manage.go @@ -22,11 +22,6 @@ func (c *manageController) SearchGmAuthority(ctx context.Context, req *game.Sear return } -func (c *manageController) ListGmAuthority(ctx context.Context, req *game.ListGmReq) (res *game.ListGmRes, err error) { - res, err = serviceGame.GameManage().ListGm(ctx, req) - return -} - func (c *manageController) SetGmToClient(ctx context.Context, req *game.SetGmToClientReq) (res *game.SetGmToClientRes, err error) { res, err = serviceGame.GameManage().SetGmToClient(ctx, req) return diff --git a/internal/controller/game_order.go b/internal/controller/game_order.go index 1288c5f..4e86892 100644 --- a/internal/controller/game_order.go +++ b/internal/controller/game_order.go @@ -46,6 +46,11 @@ func (c *orderController) GetOrderLog(ctx context.Context, req *game.OrderLogReq return res, err } +func (c *orderController) GetOrderLogPlatform(ctx context.Context, req *game.OrderLogPlatformReq) (res *game.OrderLogPlatformRes, err error) { + res, err = serviceGame.GameOrder().GetOrderLogPlatform(ctx, req) + return res, err +} + func (c *orderController) GetOrderBehavior(ctx context.Context, req *game.OrderBehaviorReq) (res *game.OrderBehaviorRes, err error) { res, err = serviceGame.GameOrder().GetOrderBehavior(ctx, req) return res, err @@ -80,3 +85,8 @@ func (c *orderController) GetGMOrderList(ctx context.Context, req *game.GetGMOrd res, err = serviceGame.GameOrder().GetGMOrderList(ctx, req) return res, err } + +func (c *orderController) ResetRechargeSign(ctx context.Context, req *game.ResetRechargeSignReq) (res *game.ResetRechargeSignRes, err error) { + res, err = serviceGame.GameOrder().ResetRechargeSign(ctx, req) + return +} diff --git a/internal/controller/game_pub.go b/internal/controller/game_pub.go index 7cc53e8..c8af31a 100644 --- a/internal/controller/game_pub.go +++ b/internal/controller/game_pub.go @@ -205,3 +205,13 @@ func (c *pubController) CheckSecondRebate(ctx context.Context, req *game.CheckSe res, err = serviceGame.GamePub().CheckSecondRebate(ctx, req) return } + +func (c *pubController) CheckRechargeSign(ctx context.Context, req *game.CheckRechargeSignReq) (res *game.CheckRechargeSignRes, err error) { + res, err = serviceGame.GameOrder().CheckRechargeSign(ctx, req) + return +} + +func (c *pubController) AddRechargeSign(ctx context.Context, req *game.AddRechargeSignReq) (res *game.AddRechargeSignRes, err error) { + res, err = serviceGame.GameOrder().AddRechargeSign(ctx, req) + return +} diff --git a/internal/dao/game_recharge_level.go b/internal/dao/game_recharge_level.go new file mode 100644 index 0000000..59f34e0 --- /dev/null +++ b/internal/dao/game_recharge_level.go @@ -0,0 +1,27 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package dao + +import ( + "tyj_admin/internal/dao/internal" +) + +// internalGameRechargeLevelDao is internal type for wrapping internal DAO implements. +type internalGameRechargeLevelDao = *internal.GameRechargeLevelDao + +// gameRechargeLevelDao is the data access object for table game_recharge_level. +// You can define custom methods on it to extend its functionality as you wish. +type gameRechargeLevelDao struct { + internalGameRechargeLevelDao +} + +var ( + // GameRechargeLevel is globally public accessible object for table game_recharge_level operations. + GameRechargeLevel = gameRechargeLevelDao{ + internal.NewGameRechargeLevelDao(), + } +) + +// Fill with you ideas below. diff --git a/internal/dao/game_recharge_sign.go b/internal/dao/game_recharge_sign.go new file mode 100644 index 0000000..30333e9 --- /dev/null +++ b/internal/dao/game_recharge_sign.go @@ -0,0 +1,27 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package dao + +import ( + "tyj_admin/internal/dao/internal" +) + +// internalGameRechargeSignDao is internal type for wrapping internal DAO implements. +type internalGameRechargeSignDao = *internal.GameRechargeSignDao + +// gameRechargeSignDao is the data access object for table game_recharge_sign. +// You can define custom methods on it to extend its functionality as you wish. +type gameRechargeSignDao struct { + internalGameRechargeSignDao +} + +var ( + // GameRechargeSign is globally public accessible object for table game_recharge_sign operations. + GameRechargeSign = gameRechargeSignDao{ + internal.NewGameRechargeSignDao(), + } +) + +// Fill with you ideas below. diff --git a/internal/dao/internal/game_recharge_level.go b/internal/dao/internal/game_recharge_level.go new file mode 100644 index 0000000..62733d3 --- /dev/null +++ b/internal/dao/internal/game_recharge_level.go @@ -0,0 +1,79 @@ +// ========================================================================== +// Code generated by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// GameRechargeLevelDao is the data access object for table game_recharge_level. +type GameRechargeLevelDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of current DAO. + columns GameRechargeLevelColumns // columns contains all the column names of Table for convenient usage. +} + +// GameRechargeLevelColumns defines and stores column names for table game_recharge_level. +type GameRechargeLevelColumns struct { + Id string // + UnitId string // 账号Id + Server string // 区服 + Config string // 配置Id +} + +// gameRechargeLevelColumns holds the columns for table game_recharge_level. +var gameRechargeLevelColumns = GameRechargeLevelColumns{ + Id: "id", + UnitId: "unitId", + Server: "server", + Config: "config", +} + +// NewGameRechargeLevelDao creates and returns a new DAO object for table data access. +func NewGameRechargeLevelDao() *GameRechargeLevelDao { + return &GameRechargeLevelDao{ + group: "default", + table: "game_recharge_level", + columns: gameRechargeLevelColumns, + } +} + +// DB retrieves and returns the underlying raw database management object of current DAO. +func (dao *GameRechargeLevelDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of current dao. +func (dao *GameRechargeLevelDao) Table() string { + return dao.table +} + +// Columns returns all column names of current dao. +func (dao *GameRechargeLevelDao) Columns() GameRechargeLevelColumns { + return dao.columns +} + +// Group returns the configuration group name of database of current dao. +func (dao *GameRechargeLevelDao) Group() string { + return dao.group +} + +// Ctx creates and returns the Model for current DAO, It automatically sets the context for current operation. +func (dao *GameRechargeLevelDao) Ctx(ctx context.Context) *gdb.Model { + return dao.DB().Model(dao.table).Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rollbacks the transaction and returns the error from function f if it returns non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note that, you should not Commit or Rollback the transaction in function f +// as it is automatically handled by this function. +func (dao *GameRechargeLevelDao) Transaction(ctx context.Context, f func(ctx context.Context, tx *gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/internal/dao/internal/game_recharge_sign.go b/internal/dao/internal/game_recharge_sign.go new file mode 100644 index 0000000..f61ca53 --- /dev/null +++ b/internal/dao/internal/game_recharge_sign.go @@ -0,0 +1,79 @@ +// ========================================================================== +// Code generated by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// GameRechargeSignDao is the data access object for table game_recharge_sign. +type GameRechargeSignDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of current DAO. + columns GameRechargeSignColumns // columns contains all the column names of Table for convenient usage. +} + +// GameRechargeSignColumns defines and stores column names for table game_recharge_sign. +type GameRechargeSignColumns struct { + Id string // + Unitid string // 账号Id + Server string // 区服 + Config string // 配置Id +} + +// gameRechargeSignColumns holds the columns for table game_recharge_sign. +var gameRechargeSignColumns = GameRechargeSignColumns{ + Id: "id", + Unitid: "unitid", + Server: "server", + Config: "config", +} + +// NewGameRechargeSignDao creates and returns a new DAO object for table data access. +func NewGameRechargeSignDao() *GameRechargeSignDao { + return &GameRechargeSignDao{ + group: "default", + table: "game_recharge_sign", + columns: gameRechargeSignColumns, + } +} + +// DB retrieves and returns the underlying raw database management object of current DAO. +func (dao *GameRechargeSignDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of current dao. +func (dao *GameRechargeSignDao) Table() string { + return dao.table +} + +// Columns returns all column names of current dao. +func (dao *GameRechargeSignDao) Columns() GameRechargeSignColumns { + return dao.columns +} + +// Group returns the configuration group name of database of current dao. +func (dao *GameRechargeSignDao) Group() string { + return dao.group +} + +// Ctx creates and returns the Model for current DAO, It automatically sets the context for current operation. +func (dao *GameRechargeSignDao) Ctx(ctx context.Context) *gdb.Model { + return dao.DB().Model(dao.table).Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rollbacks the transaction and returns the error from function f if it returns non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note that, you should not Commit or Rollback the transaction in function f +// as it is automatically handled by this function. +func (dao *GameRechargeSignDao) Transaction(ctx context.Context, f func(ctx context.Context, tx *gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/internal/model/do/game_recharge_level.go b/internal/model/do/game_recharge_level.go new file mode 100644 index 0000000..a7dd0b8 --- /dev/null +++ b/internal/model/do/game_recharge_level.go @@ -0,0 +1,18 @@ +// ================================================================================= +// Code generated by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package do + +import ( + "github.com/gogf/gf/v2/frame/g" +) + +// GameRechargeLevel is the golang structure of table game_recharge_level for DAO operations like Where/Data. +type GameRechargeLevel struct { + g.Meta `orm:"table:game_recharge_level, do:true"` + Id interface{} // + UnitId interface{} // 账号Id + Server interface{} // 区服 + Config interface{} // 配置Id +} diff --git a/internal/model/do/game_recharge_sign.go b/internal/model/do/game_recharge_sign.go new file mode 100644 index 0000000..e7b03d9 --- /dev/null +++ b/internal/model/do/game_recharge_sign.go @@ -0,0 +1,18 @@ +// ================================================================================= +// Code generated by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package do + +import ( + "github.com/gogf/gf/v2/frame/g" +) + +// GameRechargeSign is the golang structure of table game_recharge_sign for DAO operations like Where/Data. +type GameRechargeSign struct { + g.Meta `orm:"table:game_recharge_sign, do:true"` + Id interface{} // + Unitid interface{} // 账号Id + Server interface{} // 区服 + Config interface{} // 配置Id +} diff --git a/internal/model/entity/game_recharge_level.go b/internal/model/entity/game_recharge_level.go new file mode 100644 index 0000000..23d6011 --- /dev/null +++ b/internal/model/entity/game_recharge_level.go @@ -0,0 +1,13 @@ +// ================================================================================= +// Code generated by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package entity + +// GameRechargeLevel is the golang structure for table game_recharge_level. +type GameRechargeLevel struct { + Id int64 `json:"id" description:""` + UnitId int64 `json:"unitId" description:"账号Id"` + Server int `json:"server" description:"区服"` + Config int `json:"config" description:"配置Id"` +} diff --git a/internal/model/entity/game_recharge_sign.go b/internal/model/entity/game_recharge_sign.go new file mode 100644 index 0000000..6c1a464 --- /dev/null +++ b/internal/model/entity/game_recharge_sign.go @@ -0,0 +1,13 @@ +// ================================================================================= +// Code generated by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package entity + +// GameRechargeSign is the golang structure for table game_recharge_sign. +type GameRechargeSign struct { + Id int64 `json:"id" description:""` + Unitid int64 `json:"unitid" description:"账号Id"` + Server int `json:"server" description:"区服"` + Config int `json:"config" description:"配置Id"` +} diff --git a/internal/router/router.go b/internal/router/router.go index 15ad824..c89837f 100644 --- a/internal/router/router.go +++ b/internal/router/router.go @@ -81,10 +81,10 @@ func MiddlewareHandlerResponse(r *ghttp.Request) { res = msg } - //fmt.Println("WriteJson ", err, msg, fmt.Sprintf("%j", res)) if res == nil { res = "" } + //fmt.Println("WriteJson ", err, msg, gjson.MustEncodeString(res)) r.Response.WriteJson(res) } diff --git a/internal/serviceGame/client_bug.go b/internal/serviceGame/client_bug.go index 10189a5..332b4c5 100644 --- a/internal/serviceGame/client_bug.go +++ b/internal/serviceGame/client_bug.go @@ -73,23 +73,19 @@ func (c gameClientBugImpl) List(ctx context.Context, req *game.ClientBugListReq) } func (c gameClientBugImpl) Add(ctx context.Context, req *game.ClientBugAddReq) (res *game.ClientBugAddRes, err error) { - err = g.DB().Transaction(ctx, func(ctx context.Context, tx *gdb.TX) error { - err = g.Try(ctx, func(ctx context.Context) { - _, err = dao.GameBugClient.Ctx(ctx).TX(tx).InsertAndGetId(do.GameBugClient{ - Uid: req.Uid, - Bug: req.Bug, - LogType: req.LogType, - StackTrace: req.StackTrace, - Channel: req.Channel, - SubChannel: req.SubChannel, - DeviceModel: req.DeviceModel, - DeviceType: req.DeviceType, - OperationSystem: req.OperationSystem, - SystemMemorySize: req.SystemMemorySize, - }) - + err = g.Try(ctx, func(ctx context.Context) { + _, err = dao.GameBugClient.Ctx(ctx).Insert(do.GameBugClient{ + Uid: req.Uid, + Bug: req.Bug, + LogType: req.LogType, + StackTrace: req.StackTrace, + Channel: req.Channel, + SubChannel: req.SubChannel, + DeviceModel: req.DeviceModel, + DeviceType: req.DeviceType, + OperationSystem: req.OperationSystem, + SystemMemorySize: req.SystemMemorySize, }) - return err }) return } diff --git a/internal/serviceGame/internal/basicinfo.go b/internal/serviceGame/internal/basicinfo.go index 1ead2de..e22caf7 100644 --- a/internal/serviceGame/internal/basicinfo.go +++ b/internal/serviceGame/internal/basicinfo.go @@ -339,6 +339,10 @@ func GetAccount(ctx context.Context, req *game.AccountReq) (res *game.AccountRes if req.Name != "" { query["RealName"] = req.Name } + if req.GmState != "" { + gm, _ := strconv.Atoi(req.GmState) + query["AccountType"] = gm + } mongo, ok := MongoDatabaseList[server] if !ok { return nil, errors.New("不存在数据库!") @@ -635,15 +639,29 @@ func GetLoginOutLog(ctx context.Context, req *game.GetLoginOutLogReq) (res *game if req.Account != "" { uid, _ := GetAccountUid2(ctx, req.Account, fmt.Sprint(req.ServerId)) if uid == 0 { - //g.Log().Debugf(ctx, "LoginOut -> "+fmt.Sprint(uid)) + err = gerror.New("获取账号失败!") + return + } + model = model.Where("uid=? ", uid) + } else if req.Id != "" { + uid, _ := strconv.ParseInt(req.Id, 10, 64) + if uid == 0 { err = gerror.New("获取账号失败!") return } model = model.Where("uid=? ", uid) } else if req.Uid != "" { - uid, _ := strconv.ParseInt(req.Uid, 10, 64) + srcId, err1 := GetStringIdToUid(ctx, req.Uid) + if err1 != nil { + g.Log().Error(ctx, "GetUnit 获取账号ID err : ", err1, req.Uid) + return + } + if g.IsEmpty(srcId) { + g.Log().Error(ctx, "GetUnit 账号ID不存在 : ", srcId) + return + } + uid, _ := strconv.ParseInt(srcId, 10, 64) if uid == 0 { - //g.Log().Debugf(ctx, "LoginOut -> "+fmt.Sprint(uid)) err = gerror.New("获取账号失败!") return } @@ -667,19 +685,28 @@ func GetItemLog(ctx context.Context, req *game.GetItemLogReq) (res *game.GetItem if req.Account != "" { uid, _ := GetAccountUid2(ctx, req.Account, fmt.Sprint(req.ServerId)) if uid == 0 { - //g.Log().Debugf(ctx, "LoginOut -> "+fmt.Sprint(uid)) err = gerror.New("获取账号失败!") return } model = model.Where("uid=? ", uid) + model = model.Where("server=? ", req.ServerId) } else if req.Uid != "" { + uid, _ := strconv.ParseInt(req.Uid, 10, 64) if uid == 0 { - //g.Log().Debugf(ctx, "LoginOut -> "+fmt.Sprint(uid)) err = gerror.New("获取账号失败!") return } model = model.Where("uid=? ", uid) + model = model.Where("server=? ", req.ServerId) + } else if req.Id != "" { + uid, _ := strconv.ParseInt(req.Id, 10, 64) + if uid == 0 { + err = gerror.New("获取账号失败!") + return + } + model = model.Where("uid=? ", uid) + model = model.Where("server=? ", req.ServerId) } if req.ItemId != 0 { model = model.Where("item_id=? ", req.ItemId) @@ -1049,6 +1076,7 @@ func GameUserDel(ctx context.Context, req *game.UserDelReq) (res *game.UserDelRe liberr.ErrIsNil(ctx, errors.New("密码错误! pwd:"+fulluser.UserPassword+", req.pwd:"+password)) return } + units := []entity.GameUnit{} err = dao.GameUnit.Ctx(ctx).Where("account=?", req.Account).Scan(&units) data, _ := json.Marshal(units) diff --git a/internal/serviceGame/internal/manage.go b/internal/serviceGame/internal/manage.go index e100ed8..e8ac169 100644 --- a/internal/serviceGame/internal/manage.go +++ b/internal/serviceGame/internal/manage.go @@ -56,31 +56,6 @@ func SearchGm(ctx context.Context, req *game.SearchGmReq) (gm int32, err error) return gm, err } -func ListGm(ctx context.Context, req *game.ListGmReq) (res *game.ListGmRes, err error) { - res = new(game.ListGmRes) - filter := bson.M{"AccountType": req.ChangeValue} - server := fmt.Sprint(req.ServerId) - if MongoDatabaseList[server] == nil { - return nil, errors.New("数据库不存在,请联系管理员") - } - - res.Total, err = MongoDatabaseList[server].Collection("Account").Find(ctx, filter).Count() - all1 := make([]map[string]interface{}, req.PageSize) - err = MongoDatabaseList[server].Collection("Account").Find(ctx, filter).Skip((req.PageNum - 1) * req.PageSize).Limit(req.PageSize).All(&all1) - if err != nil { - return nil, err - } - if len(all1) == 0 { - return nil, gerror.New("获取失败") - } - - for _, v := range all1 { - id, _ := GetStringIdToUid(ctx, fmt.Sprint(v["_id"])) - res.Uids = append(res.Uids, id) - } - return -} - func SetGmToClient(ctx context.Context, req *game.SetGmToClientReq) (res *game.SetGmToClientRes, err error) { res = new(game.SetGmToClientRes) srcCharset := "UTF-8" @@ -200,8 +175,8 @@ func GetKeepAlive(ctx context.Context, req *game.GetKeepAliveReq) (res *game.Get sql := fmt.Sprintf(`SELECT cd,COUNT(account) as num from (SELECT b.account, FROM_UNIXTIME( a.c_date, "%%Y-%%m-%%d" ) AS cd FROM login_out_log a INNER JOIN game_unit b ON ( a.uid = b.uid ) inner join game_register c on (b.account=c.account) - WHERE ( a.e_date - a.c_date > 0 ) AND ( STR_TO_DATE( c.create_time, "%%Y-%%m-%%d" )= '%s') AND ( a.c_date < %d )`, - req.CreateTime, t.AddDate(0, 0, 30).Unix()) + WHERE ( a.e_date - a.c_date > 0 ) AND ( STR_TO_DATE( c.create_time, "%%Y-%%m-%%d" )= '%s') AND ( a.c_date < %d ) AND ( a.c_date >= %d )`, + req.CreateTime, t.AddDate(0, 0, 30).Unix(), t.Unix()) if req.Server != 0 { sql += fmt.Sprintf(` And a.server=%d`, req.Server) } diff --git a/internal/serviceGame/loginUrl.go b/internal/serviceGame/loginUrl.go index f05cbc4..278b956 100644 --- a/internal/serviceGame/loginUrl.go +++ b/internal/serviceGame/loginUrl.go @@ -94,14 +94,25 @@ func (c *gameLoginUrlImpl) AddLoginUrl(ctx context.Context, req *game.AddLoginUr model := dao.GameLoginUrl.Ctx(ctx) model.WherePri(req.Id).Scan(&server) if len(server) > 0 { - _, err = model.WherePri(req.Id).Update(g.Map{ - dao.GameLoginUrl.Columns().Id: req.Id, - dao.GameLoginUrl.Columns().Host: req.Host, - dao.GameLoginUrl.Columns().Port: req.Port, - dao.GameLoginUrl.Columns().State: req.State, - dao.GameLoginUrl.Columns().Recommend: req.Recommend, - dao.GameLoginUrl.Columns().IsNew: req.IsNew, - }) + data := g.Map{ + dao.GameLoginUrl.Columns().Id: req.Id, + } + if req.IsNew != "" { + data[dao.GameLoginUrl.Columns().IsNew] = req.IsNew + } + if req.Recommend != "" { + data[dao.GameLoginUrl.Columns().Recommend] = req.Recommend + } + if req.State != "" { + data[dao.GameLoginUrl.Columns().State] = req.State + } + if req.Host != "" { + data[dao.GameLoginUrl.Columns().Host] = req.Host + } + if req.Port != 0 { + data[dao.GameLoginUrl.Columns().Port] = req.Port + } + _, err = model.WherePri(req.Id).Update(data) } }) return diff --git a/internal/serviceGame/manage.go b/internal/serviceGame/manage.go index 8ec6cca..95137d0 100644 --- a/internal/serviceGame/manage.go +++ b/internal/serviceGame/manage.go @@ -13,7 +13,10 @@ import ( "time" "tyj_admin/api/v1/game" "tyj_admin/internal/model/entity" + "tyj_admin/internal/service" "tyj_admin/internal/serviceGame/internal" + "tyj_admin/library/libUtils" + "tyj_admin/library/liberr" "tyj_admin/utils" ) @@ -21,7 +24,6 @@ type IGameManage interface { ChangeGm(ctx context.Context, req *game.ChangeGmReq) (res *game.ChangeGmRes, err error) ChangePwd(ctx context.Context, req *game.ResetPwdReq) (res *game.ResetPwdRes, err error) SearchGm(ctx context.Context, req *game.SearchGmReq) (res *game.SearchGmRes, err error) - ListGm(ctx context.Context, req *game.ListGmReq) (res *game.ListGmRes, err error) SetGmToClient(ctx context.Context, req *game.SetGmToClientReq) (res *game.SetGmToClientRes, err error) CopyUnit(ctx context.Context, req *game.CopyUnitReq) (res *game.CopyUnitRes, err error) UpdateUnit(ctx context.Context, req *game.UpdateUnitReq) (res *game.UpdateUnitRes, err error) @@ -55,12 +57,6 @@ func (ga *gameManageImpl) SearchGm(ctx context.Context, req *game.SearchGmReq) ( return } -func (ga *gameManageImpl) ListGm(ctx context.Context, req *game.ListGmReq) (res *game.ListGmRes, err error) { - res = new(game.ListGmRes) - res, err = internal.ListGm(ctx, req) - return -} - func (ga *gameManageImpl) SetGmToClient(ctx context.Context, req *game.SetGmToClientReq) (res *game.SetGmToClientRes, err error) { res = new(game.SetGmToClientRes) res, err = internal.SetGmToClient(ctx, req) @@ -282,28 +278,41 @@ 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 + } + 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 + } + uid, err := internal.GetAccountUid2(ctx, req.SrcName, fmt.Sprint(req.ServerId)) if err != nil { fmt.Println("DelAccount GetAccount err", err) return nil, err } - fmt.Println("DelAccount DelRole", uid) - _, err2 := internal.DelRole(ctx, uid, fmt.Sprint(req.ServerId)) - if err2 != nil { - fmt.Println("DelAccount err2: ", err2) - return nil, err2 - } + fmt.Printf("DelAccount uid: %d, server: %d", uid, req.ServerId) + //_, err2 := internal.DelRole(ctx, uid, fmt.Sprint(req.ServerId)) + //if err2 != nil { + // fmt.Println("DelAccount err2: ", err2) + // return nil, err2 + //} _, err3 := internal.DelAccount(ctx, uid, fmt.Sprint(req.ServerId)) if err3 != nil { fmt.Println("DelAccount err3: ", err3) return nil, err3 } - _, err4 := internal.DelBaseInfo(ctx, uid, fmt.Sprint(req.ServerId)) - fmt.Println("DelAccount err4: ", err4) - _, err6 := internal.DelBazaar(ctx, uid, fmt.Sprint(req.ServerId)) - fmt.Println("DelAccount err6: ", err6) - _, err5 := internal.DelFriendUnit(ctx, uid, fmt.Sprint(req.ServerId)) - fmt.Println("DelAccount err5: ", err5) + //_, err4 := internal.DelBaseInfo(ctx, uid, fmt.Sprint(req.ServerId)) + //fmt.Println("DelAccount err4: ", err4) + //_, err6 := internal.DelBazaar(ctx, uid, fmt.Sprint(req.ServerId)) + //fmt.Println("DelAccount err6: ", err6) + //_, err5 := internal.DelFriendUnit(ctx, uid, fmt.Sprint(req.ServerId)) + //fmt.Println("DelAccount err5: ", err5) return } @@ -317,9 +326,11 @@ func (ga *gameManageImpl) SearchAccount(ctx context.Context, req *game.SearchAcc return res, err } -/* -**留存 -**/ +/* * +** +** 留存 +** +* */ func (ga *gameManageImpl) GetKeepAlive(ctx context.Context, req *game.GetKeepAliveReq) (res *game.GetKeepAliveRes, err error) { res, err = internal.GetKeepAlive(ctx, req) return diff --git a/internal/serviceGame/order.go b/internal/serviceGame/order.go index 5c88d1b..b9d5074 100644 --- a/internal/serviceGame/order.go +++ b/internal/serviceGame/order.go @@ -27,6 +27,7 @@ type IGameOrder interface { ChangeCoin(ctx context.Context, req *game.AddCoinReq) (res *game.AddCoinRes, err error) Deposit(ctx context.Context, req *game.OrderDepositReq) (res *game.OrderDepositRes, err error) GetOrderLog(ctx context.Context, req *game.OrderLogReq) (res *game.OrderLogRes, err error) + GetOrderLogPlatform(ctx context.Context, req *game.OrderLogPlatformReq) (res *game.OrderLogPlatformRes, err error) GetOrderBehavior(ctx context.Context, req *game.OrderBehaviorReq) (res *game.OrderBehaviorRes, err error) GetRechargePer(ctx context.Context, req *game.RechargePerReq) (res *game.RechargePerRes, err error) GameRechargeControl(ctx context.Context, req *game.RechargeControlReq) (res *game.RechargeControlRes, err error) @@ -35,6 +36,9 @@ type IGameOrder interface { DeleteRechargeControl(ctx context.Context, req *game.DeleteRechargeControlReq) (res *game.DeleteRechargeControlRes, err error) ChangeOrderState(ctx context.Context, req *game.ChangeOrderStateReq) (res *game.ChangeOrderStateRes, err error) GetGMOrderList(ctx context.Context, req *game.GetGMOrderListReq) (res *game.GetGMOrderListRes, err error) + CheckRechargeSign(ctx context.Context, req *game.CheckRechargeSignReq) (res *game.CheckRechargeSignRes, err error) + AddRechargeSign(ctx context.Context, req *game.AddRechargeSignReq) (res *game.AddRechargeSignRes, err error) + ResetRechargeSign(ctx context.Context, req *game.ResetRechargeSignReq) (res *game.ResetRechargeSignRes, err error) } type gameOrderImpl struct { @@ -289,8 +293,7 @@ func (o gameOrderImpl) GetOrderCount(ctx context.Context, req *game.OrderCountRe } res.Orders[k].Uid = int32(uid) } - data, _ := json.Marshal(res.Orders) - log.Println("GetOrderCount 4 : ", string(data)) + log.Println("GetOrderCount 4 : ", gjson.MustEncodeString(res.Orders)) return } @@ -329,7 +332,7 @@ func (o gameOrderImpl) GetOrderLog(ctx context.Context, req *game.OrderLogReq) ( sql += fmt.Sprintf(` and r.server=%d`, req.ServerId) } } - sql += fmt.Sprint(" group by u.account") + sql += fmt.Sprint(" group by u.account,r.channel") amountSql := fmt.Sprintf(`select max(a.channel) as channel, sum(a.amount) as totalAmount from (%s) as a WHERE 1=1 `, sql) if req.RechargeMin > 0 { @@ -345,7 +348,41 @@ func (o gameOrderImpl) GetOrderLog(ctx context.Context, req *game.OrderLogReq) ( accountSql += " group by a.channel" g.Model().Raw(accountSql).Scan(&res.RechargeAccountTotal) - log.Printf("GetOrderLog: %v, %v, %v", res.AmountTotal, res.AccountTotal, res.RechargeAccountTotal) + log.Printf("GetOrderLog: %v, %v, %v", gjson.MustEncodeString(res.AmountTotal), gjson.MustEncodeString(res.AccountTotal), gjson.MustEncodeString(res.RechargeAccountTotal)) + }) + return +} + +func (o gameOrderImpl) GetOrderLogPlatform(ctx context.Context, req *game.OrderLogPlatformReq) (res *game.OrderLogPlatformRes, err error) { + res = new(game.OrderLogPlatformRes) + + g.Try(ctx, func(ctx context.Context) { + var sql = fmt.Sprintf("select r.channel, sum(r.amount) as amount,u.account, r.platform from game_recharge as r inner join game_unit as u on u.uid=r.unitId where r.status=2 and r.tradeNo NOT LIKE 'GM%%' ") + if req.StartTime != 0 { + sql += fmt.Sprintf(` and UNIX_TIMESTAMP(r.createTime)>%d`, req.StartTime/1000) + } + if req.EndTime != 0 { + sql += fmt.Sprintf(` and UNIX_TIMESTAMP(r.createTime)<%d`, req.EndTime/1000) + } + if req.RechargeTotal > 0 { + sql = internal.CompareSqlType(sql, req.RechargeTotal, "r.amount", req.CompareType1) + } + if req.Channel != "" { + sql += fmt.Sprintf(` and r.channel="%s"`, req.Channel) + if req.ServerId != 0 { + sql += fmt.Sprintf(` and r.server=%d`, req.ServerId) + } + } + sql += fmt.Sprint(" group by u.account,r.channel,r.platform") + + amountSql := fmt.Sprintf(`select a.channel, sum(a.amount) as totalAmount, a.platform from (%s) as a WHERE 1=1 `, sql) + if req.RechargeMin > 0 { + amountSql = internal.CompareSqlType(amountSql, req.RechargeMin, "a.amount", req.CompareType) + } + amountSql += " group by a.channel,a.platform" + g.Model().Raw(amountSql).Scan(&res.AmountTotal) + + log.Printf("GetOrderLog: %v, %v, %v", gjson.MustEncodeString(res.AmountTotal), gjson.MustEncodeString(res.AccountTotal), gjson.MustEncodeString(res.RechargeAccountTotal)) }) return } @@ -373,7 +410,7 @@ FROM game_recharge AS r INNER JOIN (%s) AS c ON c.uid = r.unitId WHERE r.STATUS GROUP BY a.channel,a.createTime`, sql) g.Model().Raw(accountSql).Scan(&res.RechargeAccount) - log.Printf("GetOrderBehavior: %v, %v, %v", res.Account, res.RechargeAccount, res.AmountList) + log.Printf("GetOrderBehavior: %v, %v, %v", gjson.MustEncodeString(res.Account), gjson.MustEncodeString(res.AmountList), gjson.MustEncodeString(res.RechargeAccount)) }) return } @@ -394,7 +431,7 @@ func (o gameOrderImpl) GetRechargePer(ctx context.Context, req *game.RechargePer from game_recharge as r inner join (%s) as c on c.uid=r.unitId where status=2 and tradeNo NOT LIKE 'GM%%' group by r.channel,c.createTime`, sql) g.Model().Raw(accountSql).Scan(&res.RechargeAccount) - log.Printf("GetOrderBehavior: %v, %v", res.Account, res.RechargeAccount) + log.Printf("GetOrderBehavior: %v, %v", gjson.MustEncodeString(res.Account), gjson.MustEncodeString(res.RechargeAccount)) }) return } @@ -481,3 +518,64 @@ func (o gameOrderImpl) GetGMOrderList(ctx context.Context, req *game.GetGMOrderL err = model.Page(req.PageNum, req.PageSize).Scan(&res.List) return } + +func (o gameOrderImpl) CheckRechargeSign(ctx context.Context, req *game.CheckRechargeSignReq) (res *game.CheckRechargeSignRes, err error) { + res = new(game.CheckRechargeSignRes) + if req.Id == 0 || req.ServerId == 0 { + return res, errors.New("账号为空") + } + list := []entity.GameRechargeLevel{} + err = dao.GameRechargeLevel.Ctx(ctx).Where("unitId=?", req.Id).Where("server=?", req.ServerId).Scan(&list) + if err != nil { + log.Printf("CheckRechargeSign: %v, %v", gjson.MustEncodeString(res), err) + return res, err + } + for _, v := range list { + res.List = append(res.List, v.Config) + } + return +} + +// http://192.168.2.100:4111/frontApi/game/setOrderLevel?unitId=1&server=1001&time=250726&token +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 { + 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 { + log.Printf("[%s]AddRechargeSign failed, token error, md5: %s", gjson.MustEncodeString(req), token) + return nil, errors.New("token err") + } + + count, err := dao.GameRechargeLevel.Ctx(ctx).Where("unitId=?", req.Id).Where("server=?", req.ServerId).Where("config=?", req.Config).Count() + if err != nil { + log.Printf("req: %s, AddRechargeSign: err: %v", gjson.MustEncodeString(req), err) + return nil, err + } + if count > 0 { + log.Printf("req: %s, AddRechargeSign: count:%v", gjson.MustEncodeString(req), count) + return nil, errors.New("ok") + } + + _, err = dao.GameRechargeLevel.Ctx(ctx).Insert(do.GameRechargeLevel{UnitId: req.Id, Server: req.ServerId, Config: req.Config}) + if err != nil { + log.Printf("req: %s, AddRechargeSign: %v, err: %v", gjson.MustEncodeString(req), gjson.MustEncodeString(res), err) + return nil, err + } + return nil, errors.New("ok") +} + +func (o gameOrderImpl) ResetRechargeSign(ctx context.Context, req *game.ResetRechargeSignReq) (res *game.ResetRechargeSignRes, err error) { + result, err := dao.GameRechargeLevel.Ctx(ctx).Where("1=1").Delete() + if err != nil { + log.Printf("ResetRechargeSign: %v", err) + return nil, err + } + rows, err := result.RowsAffected() + if err != nil { + log.Printf("ResetRechargeSign: %v", err) + return nil, err + } + log.Printf("ResetRechargeSign: %v", rows) + return +}