From f68c0f7a34191a81019b0dddbe4243b7faea953e Mon Sep 17 00:00:00 2001 From: linquan <349589071@qq.com> Date: Tue, 22 Apr 2025 11:34:58 +0800 Subject: [PATCH] =?UTF-8?q?debug,=20=E5=85=91=E6=8D=A2=E7=A0=81=EF=BC=8C?= =?UTF-8?q?=E9=82=AE=E4=BB=B6=E6=9C=89=E6=95=88=E6=9C=9F=EF=BC=8Cserver?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1/game/cdKey.go | 5 +- api/v1/game/game.go | 13 --- api/v1/game/mail.go | 7 +- api/v1/game/manage.go | 8 +- api/v1/game/order.go | 2 +- api/v1/game/pub.go | 33 +++++- internal/controller/game_pub.go | 20 ++-- internal/dao/internal/game_cd_key.go | 4 +- internal/dao/internal/game_cd_password.go | 2 + internal/dao/internal/game_recharge.go | 2 + internal/dao/internal/game_recharge_copy_1.go | 4 +- internal/dao/internal/game_shop_log.go | 26 ++--- internal/dao/internal/game_unit_copy_1.go | 14 ++- internal/model/do/game_cd_key.go | 3 +- internal/model/do/game_cd_password.go | 1 + internal/model/do/game_recharge.go | 1 + internal/model/do/game_recharge_copy_1.go | 3 +- internal/model/do/game_shop_log.go | 15 +-- internal/model/do/game_unit_copy_1.go | 13 ++- internal/model/entity/game_cd_key.go | 3 +- internal/model/entity/game_cd_password.go | 1 + internal/model/entity/game_recharge.go | 1 + internal/model/entity/game_recharge_copy_1.go | 3 +- internal/model/entity/game_shop_log.go | 13 +-- internal/model/entity/game_unit_copy_1.go | 13 ++- internal/serviceGame/basicinfo_game_role.go | 85 --------------- internal/serviceGame/ccd.go | 10 +- internal/serviceGame/internal/basicinfo.go | 85 +++++++++------ internal/serviceGame/internal/cdKey.go | 100 ++++++++++-------- internal/serviceGame/internal/dbinit.go | 3 +- internal/serviceGame/internal/mail.go | 3 +- internal/serviceGame/internal/out.go | 7 ++ internal/serviceGame/loginUrl.go | 2 +- internal/serviceGame/manage.go | 25 ++++- internal/serviceGame/order.go | 12 ++- internal/serviceGame/pub.go | 65 +++++++++++- testCdKey.go | 16 +-- 37 files changed, 351 insertions(+), 272 deletions(-) delete mode 100644 api/v1/game/game.go delete mode 100644 internal/serviceGame/basicinfo_game_role.go diff --git a/api/v1/game/cdKey.go b/api/v1/game/cdKey.go index 4d05bde..bfd8b55 100644 --- a/api/v1/game/cdKey.go +++ b/api/v1/game/cdKey.go @@ -64,9 +64,10 @@ type GetGenerateCodeReq struct { g.Meta `path:"/exchangeCodeVerification" tags:"cdKey" method:"get" summary:"兑换码核销"` Code string `p:"code"` Account int64 `p:"unitId" ` + Server int `p:"server" ` Time int64 `p:"time" description:"时间值" ` - //State int32 `p:"state" description:"状态:1-查询;2-兑换" ` - Token string `p:"token" description:"校验码" ` + Token string `p:"token" description:"校验码" ` + Channel string `p:"channel" description:"渠道" ` } type GetGenerateCodeRes struct { diff --git a/api/v1/game/game.go b/api/v1/game/game.go deleted file mode 100644 index c7756b7..0000000 --- a/api/v1/game/game.go +++ /dev/null @@ -1,13 +0,0 @@ -package game - -import "github.com/gogf/gf/v2/frame/g" - -type GetGameUpdateUrlReq struct { - g.Meta `path:"/updateurl/get" tags:"强更地址" method:"get" summary:"强更地址"` - Channel string `p:"channel"` -} - -type GetGameUpdateUrlRes struct { - g.Meta `mime:"application/json"` - Url string `json:"url"` -} diff --git a/api/v1/game/mail.go b/api/v1/game/mail.go index 96adc8a..603762c 100644 --- a/api/v1/game/mail.go +++ b/api/v1/game/mail.go @@ -39,9 +39,10 @@ type MailSendReq struct { NewGet int32 `p:"newGet" v:"required#类型不能为空,1-新号不可领取,2-新号可领取"` Title string `p:"title" v:"required#标题不能为空"` //Greetings string `p:"greetings"` - Content string `p:"content" v:"required#邮件内容不能为空"` - UserName string `p:"userName" v:"required#操作管理员不能为空"` - Drops []entity.Drop `p:"drops" ` + Content string `p:"content" v:"required#邮件内容不能为空"` + UserName string `p:"userName" v:"required#操作管理员不能为空"` + Drops []entity.Drop `p:"drops" ` + IsLongTerm int32 `json:"isLongTerm" description:"是否过期"` } type MailSendRes struct { diff --git a/api/v1/game/manage.go b/api/v1/game/manage.go index abd187c..68eb184 100644 --- a/api/v1/game/manage.go +++ b/api/v1/game/manage.go @@ -187,9 +187,9 @@ type ClearResourceRes struct { } type CopyUnitReq struct { - g.Meta `path:"/mange/copyUnit" tags:"账号" method:"get" summary:"复制账号"` - SrcName int `p:"SrcName" v:"required|min:1#账号ID不能为空"` - //SrcServer int `p:"SrcServer" v:"required|min:1#服务器ID不能为空"` + g.Meta `path:"/mange/copyUnit" tags:"账号" method:"get" summary:"复制账号"` + SrcName int `p:"SrcName" v:"required|min:1#账号ID不能为空"` + SrcServer int `p:"SrcServer" v:"required|min:1#服务器ID不能为空"` } type CopyUnitRes struct { @@ -203,7 +203,7 @@ type UpdateUnitReq struct { Filename string `p:"filename" v:"required#文件名不能为空"` StoreFilename string `p:"storeFilename" v:"required#文件名不能为空"` DestName int `p:"DestName" v:"required|min:1#账号ID不能为空"` - //DestServer int `p:"DestServer" v:"required|min:1#服务器ID不能为空"` + DestServer int `p:"DestServer" v:"required|min:1#服务器ID不能为空"` } type UpdateUnitRes struct { diff --git a/api/v1/game/order.go b/api/v1/game/order.go index d8ee381..eda5025 100644 --- a/api/v1/game/order.go +++ b/api/v1/game/order.go @@ -111,7 +111,7 @@ type OrderDepositReq struct { Amount int32 `p:"amount"` Count int32 `p:"count"` Platform int `p:"platform"` - //ServerId int32 `p:"serverId"` + ServerId int `p:"serverId"` //Channel string `p:"channel"` } diff --git a/api/v1/game/pub.go b/api/v1/game/pub.go index fbac6b2..eeb08ab 100644 --- a/api/v1/game/pub.go +++ b/api/v1/game/pub.go @@ -152,11 +152,12 @@ type ItemRecordRes struct { } type ShopRecordReq struct { - g.Meta `path:"/shopRecord" tags:"外部接口" method:"post" summary:"添加商城流向记录"` - Uid int64 `p:"uid"` - ItemId int `p:"itemId"` - Price int `p:"price"` - Num int32 `p:"num"` + g.Meta `path:"/shopRecord" tags:"外部接口" method:"post" summary:"添加商城流向记录"` + Uid int64 `p:"uid"` + ItemId int `p:"itemId"` + Price int `p:"price"` + Num int32 `p:"num"` + ServerId int32 `p:"serverId"` } type ShopRecordRes struct { @@ -248,3 +249,25 @@ type GetServerConfigRes struct { InnerIp string `json:"innerIp" description:""` CreateTime int64 `json:"createTime" description:""` } + +type CheckFirstRebateReq struct { + g.Meta `path:"/checkFirstRebate" tags:"外部接口" method:"get" summary:"获取服务器配置"` + ServerId int `p:"server"` + Id int64 `p:"id"` +} + +type CheckFirstRebateRes struct { + g.Meta `mime:"application/json"` + Amount int `json:"Amount" description:""` +} + +type CheckSecondRebateReq struct { + g.Meta `path:"/checkSecondRebate" tags:"外部接口" method:"get" summary:"获取服务器配置"` + ServerId int `p:"server"` + Id int64 `p:"id"` +} + +type CheckSecondRebateRes struct { + g.Meta `mime:"application/json"` + Amount int `json:"Amount" description:""` +} diff --git a/internal/controller/game_pub.go b/internal/controller/game_pub.go index 2f56873..c673664 100644 --- a/internal/controller/game_pub.go +++ b/internal/controller/game_pub.go @@ -22,20 +22,10 @@ type pubController struct { func (c *pubController) Get(ctx context.Context, req *game.GetGameNoticeReq) (res *game.GetGameNoticeRes, err error) { res, err = serviceGame.GameNotice().GetGameNotice(ctx, req) - //g.Log().Debugf(ctx, "GetGameCCD -> ", res) return } func (c *pubController) GetUpdateUrl(ctx context.Context, req *game.GetGameUpdateUrlReq) (res *game.GetGameUpdateUrlRes, err error) { - //req1 := new(game.GetGameNoticeReq) - //res1 := new(game.GetGameNoticeRes) - //req1.NoticeType = 3 - //req1.Channel = req.Channel - //res1, err = serviceGame.GameNotice().GetGameNotice(ctx, req1) - //if res1.Status != 1 { - // return nil, gerror.New("ip黑名单!") - //} - config := new(entity.SysConfig) res = new(game.GetGameUpdateUrlRes) config, err = service.Config().GetByKey(ctx, req.Channel+"_url") @@ -214,3 +204,13 @@ func (c *pubController) GetServerConfig(ctx context.Context, req *game.GetServer res, err = serviceGame.GamePub().GetServerConfig(ctx, req) return } + +func (c *pubController) CheckFirstRebate(ctx context.Context, req *game.CheckFirstRebateReq) (res *game.CheckFirstRebateRes, err error) { + res, err = serviceGame.GamePub().CheckFirstRebate(ctx, req) + return +} + +func (c *pubController) CheckSecondRebate(ctx context.Context, req *game.CheckSecondRebateReq) (res *game.CheckSecondRebateRes, err error) { + res, err = serviceGame.GamePub().CheckSecondRebate(ctx, req) + return +} diff --git a/internal/dao/internal/game_cd_key.go b/internal/dao/internal/game_cd_key.go index 440ed66..244df02 100644 --- a/internal/dao/internal/game_cd_key.go +++ b/internal/dao/internal/game_cd_key.go @@ -23,9 +23,10 @@ type GameCdKeyColumns struct { Id string // Code string // 兑换码 ConfigId string // - Used string // + Used string // 账号id SeizeASeat string // Time string // + Server string // 区服 } // gameCdKeyColumns holds the columns for table game_cd_key. @@ -36,6 +37,7 @@ var gameCdKeyColumns = GameCdKeyColumns{ Used: "used", SeizeASeat: "seizeASeat", Time: "time", + Server: "server", } // NewGameCdKeyDao creates and returns a new DAO object for table data access. diff --git a/internal/dao/internal/game_cd_password.go b/internal/dao/internal/game_cd_password.go index d797088..e64255e 100644 --- a/internal/dao/internal/game_cd_password.go +++ b/internal/dao/internal/game_cd_password.go @@ -23,6 +23,7 @@ type GameCdPasswordColumns struct { Id string // Account string // 用户名 ConfigId string // 配置id + Server string // 区服 } // gameCdPasswordColumns holds the columns for table game_cd_password. @@ -30,6 +31,7 @@ var gameCdPasswordColumns = GameCdPasswordColumns{ Id: "id", Account: "account", ConfigId: "config_id", + Server: "server", } // NewGameCdPasswordDao creates and returns a new DAO object for table data access. diff --git a/internal/dao/internal/game_recharge.go b/internal/dao/internal/game_recharge.go index 5cbc829..751f106 100644 --- a/internal/dao/internal/game_recharge.go +++ b/internal/dao/internal/game_recharge.go @@ -37,6 +37,7 @@ type GameRechargeColumns struct { Platform string // 充值平台 Remark string // 手动修改成功理由 Receipt string // + Account string // } // gameRechargeColumns holds the columns for table game_recharge. @@ -58,6 +59,7 @@ var gameRechargeColumns = GameRechargeColumns{ Platform: "platform", Remark: "remark", Receipt: "receipt", + Account: "account", } // NewGameRechargeDao creates and returns a new DAO object for table data access. diff --git a/internal/dao/internal/game_recharge_copy_1.go b/internal/dao/internal/game_recharge_copy_1.go index 212a470..6fa31ce 100644 --- a/internal/dao/internal/game_recharge_copy_1.go +++ b/internal/dao/internal/game_recharge_copy_1.go @@ -28,7 +28,7 @@ type GameRechargeCopy1Columns struct { CreateTime string // 记录创建时间 ExternalCreateTime string // 订单创建时间 PayTime string // 订单支付时间 - Status string // 订单状态:1-成功,2-失败,3-创建, + Status string // 订单状态:1-创建, 2-成功, 3-失效, 100-失败, Config string // 配置Id TradeNo string // 游戏方订单号 ExternalTradeNo string // 第三方订单号 @@ -36,7 +36,6 @@ type GameRechargeCopy1Columns struct { BuyerId string // Platform string // 充值平台 Remark string // 手动修改成功理由 - Receipt string // } // gameRechargeCopy1Columns holds the columns for table game_recharge_copy1. @@ -57,7 +56,6 @@ var gameRechargeCopy1Columns = GameRechargeCopy1Columns{ BuyerId: "buyerId", Platform: "platform", Remark: "remark", - Receipt: "receipt", } // NewGameRechargeCopy1Dao creates and returns a new DAO object for table data access. diff --git a/internal/dao/internal/game_shop_log.go b/internal/dao/internal/game_shop_log.go index 862c326..f33685d 100644 --- a/internal/dao/internal/game_shop_log.go +++ b/internal/dao/internal/game_shop_log.go @@ -20,22 +20,24 @@ type GameShopLogDao struct { // GameShopLogColumns defines and stores column names for table game_shop_log. type GameShopLogColumns struct { - Id string // - Uid string // - ItemId string // - Num string // - Price string // 价格 - CDate string // + Id string // + Uid string // + ItemId string // + Num string // + Price string // 价格 + CDate string // + ServerId string // } // gameShopLogColumns holds the columns for table game_shop_log. var gameShopLogColumns = GameShopLogColumns{ - Id: "id", - Uid: "uid", - ItemId: "itemId", - Num: "num", - Price: "price", - CDate: "c_date", + Id: "id", + Uid: "uid", + ItemId: "itemId", + Num: "num", + Price: "price", + CDate: "c_date", + ServerId: "serverId", } // NewGameShopLogDao creates and returns a new DAO object for table data access. diff --git a/internal/dao/internal/game_unit_copy_1.go b/internal/dao/internal/game_unit_copy_1.go index 4b25da5..e612678 100644 --- a/internal/dao/internal/game_unit_copy_1.go +++ b/internal/dao/internal/game_unit_copy_1.go @@ -21,12 +21,12 @@ type GameUnitCopy1Dao struct { // GameUnitCopy1Columns defines and stores column names for table game_unit_copy1. type GameUnitCopy1Columns struct { Id string // - Account string // 账号 - Channel string // 渠道 - Uid string // 账号Id - Server string // 区服 - Scale string // 规模 - Name string // 桃谷名称 + Account string // + Channel string // + Uid string // + Server string // + Scale string // + Name string // LogTime string // CreateTime string // 账号创建时间 VillagerNum string // 村民数量 @@ -35,7 +35,6 @@ type GameUnitCopy1Columns struct { BaseFood string // 基础食物 Day string // 游戏天数 Recharge string // 充值 - OAID string // } // gameUnitCopy1Columns holds the columns for table game_unit_copy1. @@ -55,7 +54,6 @@ var gameUnitCopy1Columns = GameUnitCopy1Columns{ BaseFood: "base_food", Day: "day", Recharge: "recharge", - OAID: "OAID", } // NewGameUnitCopy1Dao creates and returns a new DAO object for table data access. diff --git a/internal/model/do/game_cd_key.go b/internal/model/do/game_cd_key.go index a7c2874..0e6d7ed 100644 --- a/internal/model/do/game_cd_key.go +++ b/internal/model/do/game_cd_key.go @@ -14,7 +14,8 @@ type GameCdKey struct { Id interface{} // Code interface{} // 兑换码 ConfigId interface{} // - Used interface{} // + Used interface{} // 账号id SeizeASeat interface{} // Time interface{} // + Server interface{} // 区服 } diff --git a/internal/model/do/game_cd_password.go b/internal/model/do/game_cd_password.go index 80d02b1..8623db3 100644 --- a/internal/model/do/game_cd_password.go +++ b/internal/model/do/game_cd_password.go @@ -14,4 +14,5 @@ type GameCdPassword struct { Id interface{} // Account interface{} // 用户名 ConfigId interface{} // 配置id + Server interface{} // 区服 } diff --git a/internal/model/do/game_recharge.go b/internal/model/do/game_recharge.go index 6a3650f..a538bfa 100644 --- a/internal/model/do/game_recharge.go +++ b/internal/model/do/game_recharge.go @@ -29,4 +29,5 @@ type GameRecharge struct { Platform interface{} // 充值平台 Remark interface{} // 手动修改成功理由 Receipt interface{} // + Account interface{} // } diff --git a/internal/model/do/game_recharge_copy_1.go b/internal/model/do/game_recharge_copy_1.go index 991e539..fdfa5c0 100644 --- a/internal/model/do/game_recharge_copy_1.go +++ b/internal/model/do/game_recharge_copy_1.go @@ -20,7 +20,7 @@ type GameRechargeCopy1 struct { CreateTime *gtime.Time // 记录创建时间 ExternalCreateTime *gtime.Time // 订单创建时间 PayTime *gtime.Time // 订单支付时间 - Status interface{} // 订单状态:1-成功,2-失败,3-创建, + Status interface{} // 订单状态:1-创建, 2-成功, 3-失效, 100-失败, Config interface{} // 配置Id TradeNo interface{} // 游戏方订单号 ExternalTradeNo interface{} // 第三方订单号 @@ -28,5 +28,4 @@ type GameRechargeCopy1 struct { BuyerId interface{} // Platform interface{} // 充值平台 Remark interface{} // 手动修改成功理由 - Receipt interface{} // } diff --git a/internal/model/do/game_shop_log.go b/internal/model/do/game_shop_log.go index 2d46785..4af391a 100644 --- a/internal/model/do/game_shop_log.go +++ b/internal/model/do/game_shop_log.go @@ -11,11 +11,12 @@ import ( // GameShopLog is the golang structure of table game_shop_log for DAO operations like Where/Data. type GameShopLog struct { - g.Meta `orm:"table:game_shop_log, do:true"` - Id interface{} // - Uid interface{} // - ItemId interface{} // - Num interface{} // - Price interface{} // 价格 - CDate *gtime.Time // + g.Meta `orm:"table:game_shop_log, do:true"` + Id interface{} // + Uid interface{} // + ItemId interface{} // + Num interface{} // + Price interface{} // 价格 + CDate *gtime.Time // + ServerId interface{} // } diff --git a/internal/model/do/game_unit_copy_1.go b/internal/model/do/game_unit_copy_1.go index 8a64837..b526e64 100644 --- a/internal/model/do/game_unit_copy_1.go +++ b/internal/model/do/game_unit_copy_1.go @@ -13,12 +13,12 @@ import ( type GameUnitCopy1 struct { g.Meta `orm:"table:game_unit_copy1, do:true"` Id interface{} // - Account interface{} // 账号 - Channel interface{} // 渠道 - Uid interface{} // 账号Id - Server interface{} // 区服 - Scale interface{} // 规模 - Name interface{} // 桃谷名称 + Account interface{} // + Channel interface{} // + Uid interface{} // + Server interface{} // + Scale interface{} // + Name interface{} // LogTime interface{} // CreateTime *gtime.Time // 账号创建时间 VillagerNum interface{} // 村民数量 @@ -27,5 +27,4 @@ type GameUnitCopy1 struct { BaseFood interface{} // 基础食物 Day interface{} // 游戏天数 Recharge interface{} // 充值 - OAID interface{} // } diff --git a/internal/model/entity/game_cd_key.go b/internal/model/entity/game_cd_key.go index c38d9b2..2810256 100644 --- a/internal/model/entity/game_cd_key.go +++ b/internal/model/entity/game_cd_key.go @@ -9,7 +9,8 @@ type GameCdKey struct { Id int64 `json:"id" description:""` Code string `json:"code" description:"兑换码"` ConfigId int `json:"configId" description:""` - Used int64 `json:"used" description:""` + Used int64 `json:"used" description:"账号id"` SeizeASeat int64 `json:"seizeASeat" description:""` Time int64 `json:"time" description:""` + Server int `json:"server" description:"区服"` } diff --git a/internal/model/entity/game_cd_password.go b/internal/model/entity/game_cd_password.go index 95cbda9..9c6addf 100644 --- a/internal/model/entity/game_cd_password.go +++ b/internal/model/entity/game_cd_password.go @@ -9,4 +9,5 @@ type GameCdPassword struct { Id int64 `json:"id" description:""` Account int64 `json:"account" description:"用户名"` ConfigId int `json:"configId" description:"配置id"` + Server int `json:"server" description:"区服"` } diff --git a/internal/model/entity/game_recharge.go b/internal/model/entity/game_recharge.go index 95744be..28505c7 100644 --- a/internal/model/entity/game_recharge.go +++ b/internal/model/entity/game_recharge.go @@ -27,4 +27,5 @@ type GameRecharge struct { Platform int `json:"platform" description:"充值平台"` Remark string `json:"remark" description:"手动修改成功理由"` Receipt string `json:"receipt" description:""` + Account string `json:"account" description:""` } diff --git a/internal/model/entity/game_recharge_copy_1.go b/internal/model/entity/game_recharge_copy_1.go index 810bb41..143b70d 100644 --- a/internal/model/entity/game_recharge_copy_1.go +++ b/internal/model/entity/game_recharge_copy_1.go @@ -18,7 +18,7 @@ type GameRechargeCopy1 struct { CreateTime *gtime.Time `json:"createTime" description:"记录创建时间"` ExternalCreateTime *gtime.Time `json:"externalCreateTime" description:"订单创建时间"` PayTime *gtime.Time `json:"payTime" description:"订单支付时间"` - Status int `json:"status" description:"订单状态:1-成功,2-失败,3-创建,"` + Status int `json:"status" description:"订单状态:1-创建, 2-成功, 3-失效, 100-失败,"` Config int `json:"config" description:"配置Id"` TradeNo string `json:"tradeNo" description:"游戏方订单号"` ExternalTradeNo string `json:"externalTradeNo" description:"第三方订单号"` @@ -26,5 +26,4 @@ type GameRechargeCopy1 struct { BuyerId string `json:"buyerId" description:""` Platform int `json:"platform" description:"充值平台"` Remark string `json:"remark" description:"手动修改成功理由"` - Receipt string `json:"receipt" description:""` } diff --git a/internal/model/entity/game_shop_log.go b/internal/model/entity/game_shop_log.go index a4f7532..afff62c 100644 --- a/internal/model/entity/game_shop_log.go +++ b/internal/model/entity/game_shop_log.go @@ -10,10 +10,11 @@ import ( // GameShopLog is the golang structure for table game_shop_log. type GameShopLog struct { - Id int64 `json:"id" description:""` - Uid int64 `json:"uid" description:""` - ItemId int `json:"itemId" description:""` - Num int `json:"num" description:""` - Price int `json:"price" description:"价格"` - CDate *gtime.Time `json:"cDate" description:""` + Id int64 `json:"id" description:""` + Uid int64 `json:"uid" description:""` + ItemId int `json:"itemId" description:""` + Num int `json:"num" description:""` + Price int `json:"price" description:"价格"` + CDate *gtime.Time `json:"cDate" description:""` + ServerId int `json:"serverId" description:""` } diff --git a/internal/model/entity/game_unit_copy_1.go b/internal/model/entity/game_unit_copy_1.go index ad086e8..e90e887 100644 --- a/internal/model/entity/game_unit_copy_1.go +++ b/internal/model/entity/game_unit_copy_1.go @@ -11,12 +11,12 @@ import ( // GameUnitCopy1 is the golang structure for table game_unit_copy1. type GameUnitCopy1 struct { Id int64 `json:"id" description:""` - Account string `json:"account" description:"账号"` - Channel string `json:"channel" description:"渠道"` - Uid int64 `json:"uid" description:"账号Id"` - Server int `json:"server" description:"区服"` - Scale int `json:"scale" description:"规模"` - Name string `json:"name" description:"桃谷名称"` + Account string `json:"account" description:""` + Channel string `json:"channel" description:""` + Uid int64 `json:"uid" description:""` + Server int `json:"server" description:""` + Scale int `json:"scale" description:""` + Name string `json:"name" description:""` LogTime int64 `json:"logTime" description:""` CreateTime *gtime.Time `json:"createTime" description:"账号创建时间"` VillagerNum int `json:"villagerNum" description:"村民数量"` @@ -25,5 +25,4 @@ type GameUnitCopy1 struct { BaseFood int `json:"baseFood" description:"基础食物"` Day int `json:"day" description:"游戏天数"` Recharge int64 `json:"recharge" description:"充值"` - OAID string `json:"oAID" description:""` } diff --git a/internal/serviceGame/basicinfo_game_role.go b/internal/serviceGame/basicinfo_game_role.go deleted file mode 100644 index cc10a33..0000000 --- a/internal/serviceGame/basicinfo_game_role.go +++ /dev/null @@ -1,85 +0,0 @@ -package serviceGame - -import ( - "context" - "encoding/json" - "github.com/gogf/gf/v2/errors/gerror" - "github.com/gogf/gf/v2/frame/g" - "tyj_admin/api/v1/game" - "tyj_admin/internal/model/entity" - "tyj_admin/internal/serviceGame/internal" -) - -type IGameRole interface { - GetGameRoleListSearch(ctx context.Context, req *game.RoleSearchReq) (res *game.RoleSearchRes, err error) - GetRoleDetail(ctx context.Context, req *game.RoleDetailReq) (res *game.RoleDetailRes, err error) - GetOnlineList(ctx context.Context, req *game.RoleOnlineReq) (res *game.RoleOnlineRes, err error) - GetAccount(ctx context.Context, req *game.AccountReq) (res *game.AccountRes, err error) -} - -type gameRoleImpl struct { -} - -var gameRoleService = gameRoleImpl{} - -func GameRole() IGameRole { - return &gameRoleService -} - -// 获取玩家角色列表 -func (s *gameRoleImpl) GetGameRoleListSearch(ctx context.Context, req *game.RoleSearchReq) (res *game.RoleSearchRes, err error) { - res = new(game.RoleSearchRes) - g.Try(ctx, func(ctx context.Context) { - res.RoleList, err = internal.GetRoleList(ctx, req.Account) - }) - return -} - -// 获取角色详情 -func (s *gameRoleImpl) GetRoleDetail(ctx context.Context, req *game.RoleDetailReq) (res *game.RoleDetailRes, err error) { - res = new(game.RoleDetailRes) - g.Try(ctx, func(ctx context.Context) { - res.RoleDetail, err = internal.GetRoleDetail(ctx, req.Uid, req.Channel) - }) - return -} - -func (m *gameRoleImpl) GetOnlineList(ctx context.Context, req *game.RoleOnlineReq) (res *game.RoleOnlineRes, err error) { - res = new(game.RoleOnlineRes) - mqttMsg := internal.MqttOnlineReq{1, "onlineUser"} - js, err := json.Marshal(mqttMsg) - connectCh := make(chan *internal.MqttOnlineRes) - defer close(connectCh) - server := "192.168.2.100:3005" - internal.SendMqttOnline(js, connectCh, server) - var result *internal.MqttOnlineRes - for { - select { - case result = <-connectCh: - if result.Error != nil { - err = gerror.New("失败") - return - } else { - for _, v := range result.Body { - for _, login := range v.LoginedList { - info := new(entity.Online) - info.ConnectId = v.ServerId - info.Uid = login.Uid - info.LoginTime = login.LoginTime - info.Address = login.Address - res.Onlines = append(res.Onlines, info) - } - - } - return - } - } - } - return -} - -func (m *gameRoleImpl) GetAccount(ctx context.Context, req *game.AccountReq) (res *game.AccountRes, err error) { - res = new(game.AccountRes) - res.Accounts, err = internal.GetAccountList(ctx, req.Account, req.Tel, req.Ident, req.Name) - return -} diff --git a/internal/serviceGame/ccd.go b/internal/serviceGame/ccd.go index eafe22a..d9cef16 100644 --- a/internal/serviceGame/ccd.go +++ b/internal/serviceGame/ccd.go @@ -228,28 +228,28 @@ func (c *gameCCDImpl) GetGameCCD1(ctx context.Context, req *game.GetGameCCD1Req) for _, v := range ccdList { if v.Ip == ip { res.Version = v.VersionCompare - g.Log().Debugf(ctx, "ccd ip -> ip="+ip, gjson.MustEncodeString(res), v) + g.Log().Infof(ctx, "ccd ip -> ip="+ip, gjson.MustEncodeString(res), v) return } else { if v.ChannelType == req.ChannelType { res.Version = v.VersionCompare - g.Log().Debugf(ctx, "ccd ChannelType -> req.ChannelType=%s, ", req.ChannelType, gjson.MustEncodeString(res)) + g.Log().Infof(ctx, "ccd ChannelType -> req.ChannelType=%s, ", req.ChannelType, gjson.MustEncodeString(res)) return } else if v.ChannelType == "" { if v.HotfixVersion == req.HotfixVersion { res.Version = v.VersionCompare - g.Log().Debugf(ctx, "ccd ChannelType == '' -> req.HotfixVersion="+req.HotfixVersion, gjson.MustEncodeString(res)) + g.Log().Infof(ctx, "ccd ChannelType == '' -> req.HotfixVersion="+req.HotfixVersion, gjson.MustEncodeString(res)) return } else if v.HotfixVersion == "" { res.Version = v.VersionCompare - g.Log().Debugf(ctx, "ccd ChannelType == '' -> ", gjson.MustEncodeString(res)) + g.Log().Infof(ctx, "ccd ChannelType == '' -> ", gjson.MustEncodeString(res)) return } } } } - g.Log().Debugf(ctx, "ccd ip"+ip) + g.Log().Infof(ctx, "ccd ip"+ip) }) return diff --git a/internal/serviceGame/internal/basicinfo.go b/internal/serviceGame/internal/basicinfo.go index 19daab4..e3c77ec 100644 --- a/internal/serviceGame/internal/basicinfo.go +++ b/internal/serviceGame/internal/basicinfo.go @@ -92,9 +92,14 @@ func GetRoleList(ctx context.Context, req *game.RoleSearchReq) (res *game.RoleSe fmt.Println("GetRoleList: query ", query) res = new(game.RoleSearchRes) + mongo, ok := MongoDatabaseList[fmt.Sprint(req.ServerId)] - res.Total, err = MongoDatabaseList[fmt.Sprint(req.ServerId)].Collection("Unit").Find(ctx, query).Count() - err = MongoDatabaseList[fmt.Sprint(req.ServerId)].Collection("Unit").Find(ctx, query).Skip((req.PageNum - 1) * req.PageSize).Limit(req.PageSize).All(&res.RoleList) + if !ok { + return + } + + res.Total, err = mongo.Collection("Unit").Find(ctx, query).Count() + err = mongo.Collection("Unit").Find(ctx, query).Skip((req.PageNum - 1) * req.PageSize).Limit(req.PageSize).All(&res.RoleList) for _, v := range res.RoleList { v["StringId"] = fmt.Sprint(v["_id"]) if _, ok := v["C"]; ok { @@ -192,46 +197,63 @@ func DelBazaar(ctx context.Context, uid int64, server string) (roleDetail map[st return roleDetail, err } -func GetUnit(ctx context.Context, uid int64) (unit *entity.GameUnit, err error) { +func GetUnitByUid(ctx context.Context, uid int64, serverId int) (unit *entity.GameUnit, err error) { srcId, err1 := GetIdToUid(ctx, uid) if err1 != nil { - log.Println("GetAccount 获取账号ID err : ", err1) + g.Log().Error(ctx, "GetUnit 获取账号ID err : ", err1) return nil, err1 } if g.IsEmpty(srcId) { - log.Println("GetAccount 账号ID不存在 : ", fmt.Sprint(srcId)+"-"+fmt.Sprint(uid)) + g.Log().Error(ctx, "GetUnit 账号ID不存在 : ", fmt.Sprint(srcId)+"-"+fmt.Sprint(uid)) return nil, gerror.New("IDIsNull") } units := []entity.GameUnit{} err = dao.GameUnit.Ctx(ctx).Where("uid=?", srcId).Scan(&units) if err != nil { - log.Println("GetAccount scan 1 : ", srcId, gjson.MustEncodeString(units)) + g.Log().Error(ctx, "GetUnit scan 1 : ", srcId, gjson.MustEncodeString(units)) return nil, err } if len(units) == 0 { - log.Printf("[%d]GetAccount unit is null, %s", srcId, gjson.MustEncodeString(units)) + g.Log().Errorf(ctx, "[%d]GetUnit unit is null, %s", srcId, gjson.MustEncodeString(units)) return nil, errors.New("UnitIsNull") } - + serverList := "" + for _, v := range units { + if v.Server == serverId { + return &v, err + } + serverList += fmt.Sprint(v.Server) + ";" + } + if len(units) > 1 { + return nil, errors.New("查询失败,包含多个用户,区服在:" + serverList) + } return &units[0], err } -func GetUnitById(ctx context.Context, srcId int64) (unit *entity.GameUnit, err error) { +func GetUnitById(ctx context.Context, srcId int64, serverId int) (unit *entity.GameUnit, err error) { if g.IsEmpty(srcId) { - log.Println("GetAccount 账号ID不存在 : ", fmt.Sprint(srcId)) + g.Log().Error(ctx, "GetAccount 账号ID不存在 : ", fmt.Sprint(srcId)) return nil, gerror.New("IDIsNull") } units := []entity.GameUnit{} err = dao.GameUnit.Ctx(ctx).Where("uid=?", srcId).Scan(&units) if err != nil { - log.Println("GetAccount scan 1 : ", srcId, gjson.MustEncodeString(units)) + g.Log().Error(ctx, "GetAccount scan 1 : ", srcId, gjson.MustEncodeString(units)) return nil, err } if len(units) == 0 { - log.Printf("[%d]GetAccount unit is null, %s", srcId, gjson.MustEncodeString(units)) + g.Log().Errorf(ctx, "[%d]GetAccount unit is null, %s", srcId, gjson.MustEncodeString(units)) return nil, errors.New("UnitIsNull") } - + serverList := "" + for _, v := range units { + if v.Server == serverId { + return &v, err + } + } + if len(units) > 1 { + return nil, errors.New("查询失败,包含多个用户,区服在:" + serverList) + } return &units[0], err } @@ -240,10 +262,10 @@ func GetAccount(ctx context.Context, req *game.AccountReq) (res *game.AccountRes server := fmt.Sprint(req.ServerId) if req.Id != "" { id, _ := strconv.ParseInt(req.Id, 10, 64) - unit, err1 := GetUnitById(ctx, id) + unit, err1 := GetUnitById(ctx, id, req.ServerId) if err1 != nil { err = err1 - fmt.Println("GetUnit:", err1) + g.Log().Error(ctx, "GetUnit:", err1) return } query["_id"] = unit.Uid @@ -255,14 +277,14 @@ func GetAccount(ctx context.Context, req *game.AccountReq) (res *game.AccountRes break } } - return nil, errors.New("区服选择错误!当前id在<" + serverInfo.Name + ">区") + return nil, errors.New("区服选择错误!当前id在<" + fmt.Sprint(serverInfo.Id) + "><" + serverInfo.Name + ">区") } } if req.Uid != 0 { - unit, err1 := GetUnit(ctx, int64(req.Uid)) + unit, err1 := GetUnitByUid(ctx, int64(req.Uid), req.ServerId) if err1 != nil { err = err1 - fmt.Println("GetUnit:", err1) + g.Log().Error(ctx, "GetUnit:", err1) return } query["_id"] = unit.Uid @@ -274,7 +296,7 @@ func GetAccount(ctx context.Context, req *game.AccountReq) (res *game.AccountRes break } } - return nil, errors.New("区服选择错误!当前区服在<" + serverInfo.Name + ">区") + return nil, errors.New("区服选择错误!当前区服在<" + fmt.Sprint(serverInfo.Id) + "><" + serverInfo.Name + ">区") } } if req.Account != "" { @@ -289,13 +311,14 @@ func GetAccount(ctx context.Context, req *game.AccountReq) (res *game.AccountRes if req.Name != "" { query["RealName"] = req.Name } - if MongoDatabaseList[server] == nil { + mongo, ok := MongoDatabaseList[server] + if !ok { return nil, errors.New("不存在数据库!") } res = new(game.AccountRes) - res.Total, err = MongoDatabaseList[server].Collection("Account").Find(ctx, query).Count() - err = MongoDatabaseList[server].Collection("Account").Find(ctx, query).Skip((req.PageNum - 1) * req.PageSize).Limit(req.PageSize).All(&res.Accounts) + res.Total, err = mongo.Collection("Account").Find(ctx, query).Count() + err = mongo.Collection("Account").Find(ctx, query).Skip((req.PageNum - 1) * req.PageSize).Limit(req.PageSize).All(&res.Accounts) for _, v := range res.Accounts { v["StringId"] = fmt.Sprint(v["_id"]) v["uid"], _ = GetIdToUid(ctx, v["_id"].(int64)) @@ -340,11 +363,12 @@ func GetAccountByUid(ctx context.Context, uid int64, server string) (account map } log.Println("GetAccountByUid: ", filtter) all1 := make([]map[string]interface{}, 1) - if MongoDatabaseList[server] != nil { + mongo, ok := MongoDatabaseList[server] + if !ok { log.Println("GetAccountUid: 获取失败 ", all1, err) return account, gerror.New("获取失败") } - err = MongoDatabaseList[server].Collection("Account").Find(ctx, filtter).All(&all1) + err = mongo.Collection("Account").Find(ctx, filtter).All(&all1) if err != nil || len(all1) == 0 { log.Println("GetAccountUid: 获取失败 ", all1, err) return account, gerror.New("获取失败") @@ -732,7 +756,7 @@ func setAccount(ctx context.Context, req *game.LoginOutReq) { save := game.RegisterReq{} save.Channel = fmt.Sprintf("%06d", account["Channel"]) + fmt.Sprintf("%06d", account["SubChannel"]) accountName := fmt.Sprint(account["AccountName"]) - if !strings.Contains(accountName, save.Channel) { + if !strings.HasPrefix(accountName, save.Channel) { accountName = save.Channel + accountName } save.Account = accountName @@ -776,7 +800,7 @@ func LoginOut(ctx context.Context, req *game.LoginOutReq) (res *game.LoginOutRes if count == 1 { var result sql.Result - result, err = dao.GameUnit.Ctx(ctx).WherePri(req.Uid).Where("server=?", req.Server).Update(g.Map{ + result, err = dao.GameUnit.Ctx(ctx).Where("uid=?", req.Uid).Where("server=?", req.Server).Update(g.Map{ dao.GameUnit.Columns().Name: req.Name, dao.GameUnit.Columns().Scale: req.Scale, dao.GameUnit.Columns().LogTime: time.Now().Unix(), @@ -891,10 +915,11 @@ func ShopRecords(ctx context.Context, req *game.ShopRecordReq) (res *game.ShopRe g.Try(ctx, func(ctx context.Context) { model := dao.GameShopLog.Ctx(ctx) _, err = model.Insert(&do.GameShopLog{ - Uid: req.Uid, - ItemId: req.ItemId, - Price: req.Price, - Num: req.Num, + Uid: req.Uid, + ItemId: req.ItemId, + Price: req.Price, + Num: req.Num, + ServerId: req.ServerId, }) return }) diff --git a/internal/serviceGame/internal/cdKey.go b/internal/serviceGame/internal/cdKey.go index c021207..7a86439 100644 --- a/internal/serviceGame/internal/cdKey.go +++ b/internal/serviceGame/internal/cdKey.go @@ -242,70 +242,86 @@ func insertGiftExchangeConfig(ctx context.Context, req *game.RandomGenerateCodeR return id, err } -// http://192.168.2.100:4111/frontApi/game/exchangeCodeVerification?code=M1CUnxocRN&account=lq0001&time=10000&token +// http://192.168.2.100:4111/frontApi/game/exchangeCodeVerification?code=1ipq61NK&account=lq0001&time=10000&server=1&channel=000000000000&token func GetGenerateCode(ctx context.Context, req *game.GetGenerateCodeReq) (res *game.GetGenerateCodeRes, err error) { res = new(game.GetGenerateCodeRes) if req.Code == "" { - log.Printf("[%d]CodeExchange failed, code not exist, req.Code: %s", req.Account, req.Code) + log.Printf("[%d-%d]CodeExchange failed, code not exist, req.Code: %s", req.Account, req.Server, req.Code) res.Code = 292 return res, nil } - token := fmt.Sprintf("%x", md5.Sum([]byte("#colony"+fmt.Sprint(req.Account)+fmt.Sprint(req.Time)+fmt.Sprint(req.Code)+"$"))) - if req.Time != 10000 && req.Token != token { - log.Printf("[%d]CodeExchange failed, token error, req.Token: %s, md5: %s", req.Account, req.Token, token) - res.Code = 290 - return res, nil - } - unit := []entity.GameUnit{} - err1 := dao.GameUnit.Ctx(ctx).Where("uid=?", req.Account).Scan(&unit) - if err1 != nil { - log.Printf("[%d]CodeExchange get unit error %s", req.Account, err1.Error()) - res.Code = 250 + if req.Channel == "" { + log.Printf("[%d-%d]CodeExchange failed, channel not exist, req.channel: %s", req.Account, req.Server, req.Channel) + res.Code = 292 return res, nil } - if len(unit) == 0 { - log.Printf("[%d]CodeExchange unit is null", req.Account) - res.Code = 294 + token := fmt.Sprintf("%x", md5.Sum([]byte("#colony"+fmt.Sprint(req.Account)+fmt.Sprint(req.Time)+fmt.Sprint(req.Code)+fmt.Sprint(req.Server)+req.Channel+"$"))) + if req.Time != 10000 && req.Token != token { + log.Printf("[%d-%d]CodeExchange failed, token error, req.Token: %s, md5: %s", req.Account, req.Server, req.Token, token) + res.Code = 290 return res, nil } + //units := []entity.GameUnit{} + //err1 := dao.GameUnit.Ctx(ctx).Where("uid=?", req.Account).Scan(&units) + //if err1 != nil { + // log.Printf("[%d-%d]CodeExchange get unit error %s", req.Account, req.Server, err1.Error()) + // res.Code = 250 + // return res, nil + //} + //if len(units) == 0 { + // log.Printf("[%d-%d]CodeExchange unit is null", req.Account, req.Server) + // res.Code = 294 + // return res, nil + //} + //unit := entity.GameUnit{} + //for _, v := range units { + // if v.Server == req.Server { + // unit = v + // } + //} + //if unit.Id == 0 { + // log.Printf("[%d-%d]CodeExchange unit is null", req.Account, req.Server) + // res.Code = 294 + // return res, nil + //} - res, err = getPasswordKey(ctx, req, unit[0].Channel) + res, err = getPasswordKey(ctx, req, req.Channel) if res.Code != 1 { return res, nil } detail := []entity.GameCdKey{} - err1 = dao.GameCdKey.Ctx(ctx).Where("code=?", req.Code).Scan(&detail) + err1 := dao.GameCdKey.Ctx(ctx).Where("code=?", req.Code).Scan(&detail) if err1 != nil { - log.Printf("[%d]CodeExchange get code error %s", req.Account, err1.Error()) + log.Printf("[%d-%d]CodeExchange get code error %s", req.Account, req.Server, err1.Error()) res.Code = 250 return res, nil } if len(detail) <= 0 { - log.Printf("[%d]CodeExchange code not exist", req.Account) + log.Printf("[%d-%d]CodeExchange code[%s] not exist", req.Account, req.Server, req.Code) res.Code = 291 return res, nil } if detail[0].Used != 0 { - log.Printf("[%d]CodeExchange GetGenerateCode code is used: %d", req.Account, detail[0].Used) + log.Printf("[%d-%d]CodeExchange GetGenerateCode code is used: %d", req.Account, req.Server, detail[0].Used) res.Code = 299 return res, nil } exchange := []entity.GameGiftExchange{} err3 := dao.GameGiftExchange.Ctx(ctx).WherePri(detail[0].ConfigId).Scan(&exchange) if err3 != nil { - log.Printf("[%d]CodeExchange get code error %s", req.Account, err3.Error()) + log.Printf("[%d-%d]CodeExchange get code error %s", req.Account, req.Server, err3.Error()) res.Code = 250 return res, nil } - if exchange[0].Channel != "" && !strings.Contains(exchange[0].Channel, unit[0].Channel) { - log.Printf("[%d]CodeExchange channel error exchange[0].Channel: %s, unit[0].Channel: %s", req.Account, exchange[0].Channel, unit[0].Channel) + if exchange[0].Channel != "" && !strings.Contains(exchange[0].Channel, req.Channel) { + log.Printf("[%d-%d]CodeExchange channel error exchange[0].Channel: %s, req.Channel: %s", req.Account, req.Server, exchange[0].Channel, req.Channel) res.Code = 293 return res, nil } //if exchange[0].StartTime != "" { begin, _ := time.ParseInLocation(consts.TIME_FORMAT, exchange[0].StartTime, time.Local) if begin.Unix() > time.Now().Unix() { - log.Printf("[%d]CodeExchange not activated", req.Account) + log.Printf("[%d-%d]CodeExchange not activated", req.Account, req.Server) res.Code = 297 return res, nil } @@ -313,33 +329,33 @@ func GetGenerateCode(ctx context.Context, req *game.GetGenerateCodeReq) (res *ga //if exchange[0].StopTime != "" { end, _ := time.ParseInLocation(consts.TIME_FORMAT, exchange[0].StopTime, time.Local) if end.Unix() < time.Now().Unix() { - log.Printf("[%d]CodeExchange code is expired", req.Account) + log.Printf("[%d-%d]CodeExchange code is expired", req.Account, req.Server) res.Code = 295 return res, nil } //} detail1 := []entity.GameCdKey{} - err2 := dao.GameCdKey.Ctx(ctx).Where("used=?", req.Account).Where("configId=?", detail[0].ConfigId).Scan(&detail1) + err2 := dao.GameCdKey.Ctx(ctx).Where("used=?", req.Account).Where("server=?", req.Server).Where("configId=?", detail[0].ConfigId).Scan(&detail1) if err2 != nil { - log.Printf("[%d]CodeExchange get code error %s", req.Account, err2.Error()) + log.Printf("[%d-%d]CodeExchange get code error %s", req.Account, req.Server, err2.Error()) res.Code = 250 return res, nil } if len(detail1) >= exchange[0].Times { - log.Printf("[%d]CodeExchange The usage limit has been reached used: %d, times: %d", req.Account, len(detail1), exchange[0].Times) + log.Printf("[%d-%d]CodeExchange The usage limit has been reached used: %d, times: %d", req.Account, req.Server, len(detail1), exchange[0].Times) res.Code = 296 return res, nil } - _, err4 := dao.GameCdKey.Ctx(ctx).Where("code=?", req.Code).Update(g.Map{dao.GameCdKey.Columns().Used: req.Account}) + _, err4 := dao.GameCdKey.Ctx(ctx).Where("code=?", req.Code).Update(g.Map{dao.GameCdKey.Columns().Used: req.Account, dao.GameCdKey.Columns().Server: req.Server}) if err4 != nil { - log.Printf("[%d]CodeExchange UpdateOne err: %s", req.Account, err4.Error()) + log.Printf("[%d-%d]CodeExchange UpdateOne err: %s", req.Account, req.Server, err4.Error()) res.Code = 250 return res, nil } - log.Printf("[%d]CodeExchange success: %d", req.Account, detail[0].ConfigId) + log.Printf("[%d-%d]CodeExchange success: %d", req.Account, req.Server, detail[0].ConfigId) res.Code = 200 res.Rewards = exchange[0].Rewards return res, nil @@ -350,17 +366,17 @@ func getPasswordKey(ctx context.Context, req *game.GetGenerateCodeReq, channel s exchange := []entity.GameGiftExchange{} err1 := dao.GameGiftExchange.Ctx(ctx).Where("password=?", req.Code).Scan(&exchange) if err1 != nil { - log.Printf("[%d]CodeExchange get exchange error %s", req.Account, err1.Error()) + log.Printf("[%d-%d]CodeExchange get exchange error %s", req.Account, req.Server, err1.Error()) res.Code = 250 return res, nil } if len(exchange) <= 0 { - //log.Printf("[%d]CodeExchange password nil %s", req.Account, err1.Error()) + //log.Printf("[%d-%d]CodeExchange password nil: code: %s err: %s", req.Account, req.Server, req.Code, err1.Error()) res.Code = 1 return res, nil } if exchange[0].Channel != "" && !strings.Contains(exchange[0].Channel, channel) { - log.Printf("[%d]CodeExchange channel error exchange[0].Channel: %s, unit[0].Channel: %s", req.Account, exchange[0].Channel, channel) + log.Printf("[%d-%d]CodeExchange channel error exchange[0].Channel: %s, req.Channel: %s", req.Account, req.Server, exchange[0].Channel, channel) res.Code = 293 return res, nil } @@ -368,7 +384,7 @@ func getPasswordKey(ctx context.Context, req *game.GetGenerateCodeReq, channel s //if exchange[0].StartTime != "" { begin, _ := time.ParseInLocation(consts.TIME_FORMAT, exchange[0].StartTime, time.Local) if begin.Unix() > time.Now().Unix() { - log.Printf("[%d]CodeExchange not activated", req.Account) + log.Printf("[%d-%d]CodeExchange not activated", req.Account, req.Server) res.Code = 297 return res, nil } @@ -376,27 +392,27 @@ func getPasswordKey(ctx context.Context, req *game.GetGenerateCodeReq, channel s //if exchange[0].StopTime != "" { end, _ := time.ParseInLocation(consts.TIME_FORMAT, exchange[0].StopTime, time.Local) if end.Unix() < time.Now().Unix() { - log.Printf("[%d]CodeExchange code is expired", req.Account) + log.Printf("[%d-%d]CodeExchange code is expired", req.Account, req.Server) res.Code = 295 return res, nil } //} model := dao.GameCdPassword.Ctx(ctx) - total, err1 := model.Where("account=?", req.Account).Where("config_id=?", exchange[0].Id).Count() + total, err1 := model.Where("account=?", req.Account).Where("server=?", req.Server).Where("config_id=?", exchange[0].Id).Count() if err1 != nil { - log.Printf("[%d]CodeExchange get GameCdPassword error %s", req.Account, err1.Error()) + log.Printf("[%d-%d]CodeExchange get GameCdPassword error %s", req.Account, req.Server, err1.Error()) res.Code = 250 return res, nil } if total >= exchange[0].Times { - log.Printf("[%d]CodeExchange The usage limit has been reached used: %d, times: %d", req.Account, total, exchange[0].Times) + log.Printf("[%d-%d]CodeExchange The usage limit has been reached used: %d, times: %d", req.Account, req.Server, total, exchange[0].Times) res.Code = 296 return res, nil } - _, err1 = model.Insert(do.GameCdPassword{Account: req.Account, ConfigId: exchange[0].Id}) + _, err1 = model.Insert(do.GameCdPassword{Account: req.Account, Server: req.Server, ConfigId: exchange[0].Id}) if err1 != nil { - log.Printf("[%d]CodeExchange insert GameCdPassword error %s", req.Account, err1.Error()) + log.Printf("[%d-%d]CodeExchange insert GameCdPassword error %s", req.Account, req.Server, err1.Error()) res.Code = 250 return res, nil } diff --git a/internal/serviceGame/internal/dbinit.go b/internal/serviceGame/internal/dbinit.go index 5b61bef..398806b 100644 --- a/internal/serviceGame/internal/dbinit.go +++ b/internal/serviceGame/internal/dbinit.go @@ -115,6 +115,7 @@ func InitRedis(ctx context.Context) { rdbTop := RedisDbList[0] rdbTop.Do(ctx, "select", 0) rdbTop.SetNX(ctx, "public_id", 999999, 0) + rdbTop.SetNX(ctx, "public_unit_id", 1000000000, 0) } func InitServer(ctx context.Context) { @@ -160,7 +161,7 @@ func InitRechargeServer(ctx context.Context) { func InitRouterServer(ctx context.Context) { err := g.Try(ctx, func(ctx context.Context) { url := RouterServer + "/resetRouter?md5=erweita0726" - bytes := g.Client().PostBytes(ctx, url) + bytes := g.Client().GetBytes(ctx, url) fmt.Printf("InitRechargeServer: %s, res: %v/n", RechargeServer, string(bytes)) }) diff --git a/internal/serviceGame/internal/mail.go b/internal/serviceGame/internal/mail.go index 2f2442b..dcd64e7 100644 --- a/internal/serviceGame/internal/mail.go +++ b/internal/serviceGame/internal/mail.go @@ -174,6 +174,7 @@ func SendMailToC(ctx context.Context, req *game.MailSendReq) (res *game.MailSend } } else { req.ValidDay = 0 + req.IsLongTerm = 1 } srcCharset := "UTF-8" g.Client().SetHeader("Content-Type", "application/json;charset=UTF-8") @@ -204,7 +205,7 @@ func SendMailToC(ctx context.Context, req *game.MailSendReq) (res *game.MailSend //g.Log().Info(ctx, "sendMail - ServerConfig: ", v, gjson.MustEncodeString(ServerConfig)) url := "http://" + ip + "/sendMail?items=" + items + "&validDay=" + fmt.Sprint(req.ValidDay) + "&from=" + url.QueryEscape(req.From) + "&title=" + url.QueryEscape(req.Title) + "&context=" + url.QueryEscape(req.Content) + - "&newGet=" + fmt.Sprint(req.NewGet) + "&ownerId=" + owner + "&newGet=" + fmt.Sprint(req.NewGet) + "&ownerId=" + owner + "&isLongTerm=" + fmt.Sprint(req.IsLongTerm) g.Log().Info(ctx, "sendMail - req: ", url, gjson.MustEncodeString(req)) bytes := g.Client().GetBytes(ctx, url) diff --git a/internal/serviceGame/internal/out.go b/internal/serviceGame/internal/out.go index 308126e..9c5c8eb 100644 --- a/internal/serviceGame/internal/out.go +++ b/internal/serviceGame/internal/out.go @@ -19,6 +19,13 @@ func GetIdIncrease(ctx context.Context) (int64, error) { return result.Val(), result.Err() } +func GetUnitIdIncrease(ctx context.Context) (int64, error) { + rdbTop := RedisDbList[0] + rdbTop.Do(ctx, "select", 0) + result := rdbTop.Incr(ctx, "public_unit_id") + return result.Val(), result.Err() +} + func CheckUidHadPId(ctx context.Context, uid int64) bool { rdbTop := RedisDbList[0] rdbTop.Do(ctx, "select", 0) diff --git a/internal/serviceGame/loginUrl.go b/internal/serviceGame/loginUrl.go index d73511a..305ee2b 100644 --- a/internal/serviceGame/loginUrl.go +++ b/internal/serviceGame/loginUrl.go @@ -147,7 +147,7 @@ func (c *gameLoginUrlImpl) GetGameLoginUrl(ctx context.Context, req *game.GetGam return } - if req.Channel == "000005000000" && req.VersionName != "" { + if req.Channel == "000005000000" && req.Version == "1.0.1" && req.VersionName != "" { req.Version = "1.0.2" } diff --git a/internal/serviceGame/manage.go b/internal/serviceGame/manage.go index 5736e5c..543aa8b 100644 --- a/internal/serviceGame/manage.go +++ b/internal/serviceGame/manage.go @@ -16,6 +16,7 @@ import ( "tyj_admin/api/v1/game" "tyj_admin/config" "tyj_admin/internal/consts" + "tyj_admin/internal/model/entity" "tyj_admin/internal/serviceGame/internal" "tyj_admin/utils" ) @@ -608,11 +609,21 @@ func (ga *gameManageImpl) ClearResource(ctx context.Context, req *game.ClearReso func (ga *gameManageImpl) CopyUnit(ctx context.Context, req *game.CopyUnitReq) (res *game.CopyUnitRes, err error) { res = new(game.CopyUnitRes) - unit, err := internal.GetUnit(ctx, int64(req.SrcName)) + unit, err := internal.GetUnitByUid(ctx, int64(req.SrcName), req.SrcServer) if err != nil { fmt.Println("GetAccount:", err) return } + if req.SrcServer != unit.Server { + var serverInfo entity.GameLoginUrl + for _, v := range internal.ServerList { + if v.Id == unit.Server { + serverInfo = v + break + } + } + return nil, errors.New("区服选择错误!当前区服在<" + fmt.Sprint(serverInfo.Id) + "><" + serverInfo.Name + ">区") + } mongoConfig := internal.MongoConfigs[fmt.Sprint(unit.Server)] if mongoConfig.Id == "" { return res, errors.New("区服不存在!") @@ -708,11 +719,21 @@ func (ga *gameManageImpl) CopyUnit(ctx context.Context, req *game.CopyUnitReq) ( func (ga *gameManageImpl) UpdateUnit(ctx context.Context, req *game.UpdateUnitReq) (res *game.UpdateUnitRes, err error) { res = new(game.UpdateUnitRes) - unit, err := internal.GetUnit(ctx, int64(req.DestName)) + unit, err := internal.GetUnitByUid(ctx, int64(req.DestName), req.DestServer) if err != nil { fmt.Println("GetAccount:", err) return } + if req.DestServer != unit.Server { + var serverInfo entity.GameLoginUrl + for _, v := range internal.ServerList { + if v.Id == unit.Server { + serverInfo = v + break + } + } + return nil, errors.New("区服选择错误!当前id在<" + fmt.Sprint(serverInfo.Id) + "><" + serverInfo.Name + ">区") + } mongoConfig := internal.MongoConfigs[fmt.Sprint(unit.Server)] if mongoConfig.Id == "" { return res, errors.New("区服不存在!") diff --git a/internal/serviceGame/order.go b/internal/serviceGame/order.go index 88ef26a..8539fcd 100644 --- a/internal/serviceGame/order.go +++ b/internal/serviceGame/order.go @@ -147,12 +147,22 @@ func (o gameOrderImpl) Deposit(ctx context.Context, req *game.OrderDepositReq) ( gmMessage.PayTime = time.Now().Format(timeFormat) gmMessage.Amount = fmt.Sprint(req.Amount) gmMessage.Status = "SUCCESS" - unit, err := internal.GetUnit(ctx, req.Uid) + unit, err := internal.GetUnitByUid(ctx, req.Uid, req.ServerId) //uid, err := internal.GetIdToUid(ctx, req.Uid) if err != nil { log.Println("GetOrders 1 : ", req.Uid) return nil, err } + if req.ServerId != unit.Server { + var serverInfo entity.GameLoginUrl + for _, v := range internal.ServerList { + if v.Id == unit.Server { + serverInfo = v + break + } + } + return nil, errors.New("区服选择错误!当前id在<" + fmt.Sprint(serverInfo.Id) + "><" + serverInfo.Name + ">区") + } gmMessage.Server = fmt.Sprint(unit.Server) gmMessage.Channel = unit.Channel gmMessage.Uid = fmt.Sprint(unit.Uid) diff --git a/internal/serviceGame/pub.go b/internal/serviceGame/pub.go index 26127f9..90a87d1 100644 --- a/internal/serviceGame/pub.go +++ b/internal/serviceGame/pub.go @@ -2,8 +2,10 @@ package serviceGame import ( "context" + "github.com/gogf/gf/v2/encoding/gjson" "github.com/gogf/gf/v2/frame/g" "log" + "time" "tyj_admin/api/v1/game" "tyj_admin/internal/dao" "tyj_admin/internal/model/entity" @@ -19,6 +21,8 @@ type IGamePub interface { SetOpenId(ctx context.Context, req *game.SetOpenIdReq) (res *game.SetOpenIdRes, err error) GetOpenId(ctx context.Context, req *game.GetOpenIdReq) (res *game.GetOpenIdRes, err error) GetServerConfig(ctx context.Context, req *game.GetServerConfigReq) (res *game.GetServerConfigRes, err error) + CheckFirstRebate(ctx context.Context, req *game.CheckFirstRebateReq) (res *game.CheckFirstRebateRes, err error) + CheckSecondRebate(ctx context.Context, req *game.CheckSecondRebateReq) (res *game.CheckSecondRebateRes, err error) } type gamePubImpl struct { @@ -35,6 +39,10 @@ func (c *gamePubImpl) GetId(ctx context.Context, req *game.GetOutIdReq) (res *ga //fmt.Println("ip: ", ip) g.Try(ctx, func(ctx context.Context) { res = new(game.GetOutIdRes) + if req.Uid == -1 { + res.Id, err = internal.GetUnitIdIncrease(ctx) + return + } res.Id, err = internal.GetIdToUid(ctx, req.Uid) if res.Id > 0 { return @@ -76,9 +84,6 @@ func (c *gamePubImpl) ShopRecords(ctx context.Context, req *game.ShopRecordReq) func (c *gamePubImpl) GetAuditMode(ctx context.Context, req *game.GetAuditModeReq) (res *game.GetAuditModeRes, err error) { res = new(game.GetAuditModeRes) - //if 1 == internal.GetEnableHotfix(ctx, req.Channel) { - // res.AuditMode = 1 - //} return } @@ -138,3 +143,57 @@ func (c *gamePubImpl) GetServerConfig(ctx context.Context, req *game.GetServerCo log.Println(err1) return } + +func (c *gamePubImpl) CheckFirstRebate(ctx context.Context, req *game.CheckFirstRebateReq) (res *game.CheckFirstRebateRes, err error) { + res = new(game.CheckFirstRebateRes) + _ = g.Try(ctx, func(ctx context.Context) { + general := []entity.GameRecharge{} + err = dao.GameRecharge.Ctx(ctx). + Where(`UNIX_TIMESTAMP(createTime)>?`, time.Date(2025, 4, 19, 10, 0, 0, 0, time.Local).Unix()). + Where(`UNIX_TIMESTAMP(createTime)=?`, time.Date(2025, 4, 20, 0, 0, 0, 0, time.Local).Unix()). + Where(`UNIX_TIMESTAMP(createTime)