Browse Source

debug, 兑换码,邮件有效期,server

master
linquan 3 months ago
parent
commit
f68c0f7a34
  1. 5
      api/v1/game/cdKey.go
  2. 13
      api/v1/game/game.go
  3. 7
      api/v1/game/mail.go
  4. 8
      api/v1/game/manage.go
  5. 2
      api/v1/game/order.go
  6. 33
      api/v1/game/pub.go
  7. 20
      internal/controller/game_pub.go
  8. 4
      internal/dao/internal/game_cd_key.go
  9. 2
      internal/dao/internal/game_cd_password.go
  10. 2
      internal/dao/internal/game_recharge.go
  11. 4
      internal/dao/internal/game_recharge_copy_1.go
  12. 26
      internal/dao/internal/game_shop_log.go
  13. 14
      internal/dao/internal/game_unit_copy_1.go
  14. 3
      internal/model/do/game_cd_key.go
  15. 1
      internal/model/do/game_cd_password.go
  16. 1
      internal/model/do/game_recharge.go
  17. 3
      internal/model/do/game_recharge_copy_1.go
  18. 15
      internal/model/do/game_shop_log.go
  19. 13
      internal/model/do/game_unit_copy_1.go
  20. 3
      internal/model/entity/game_cd_key.go
  21. 1
      internal/model/entity/game_cd_password.go
  22. 1
      internal/model/entity/game_recharge.go
  23. 3
      internal/model/entity/game_recharge_copy_1.go
  24. 13
      internal/model/entity/game_shop_log.go
  25. 13
      internal/model/entity/game_unit_copy_1.go
  26. 85
      internal/serviceGame/basicinfo_game_role.go
  27. 10
      internal/serviceGame/ccd.go
  28. 85
      internal/serviceGame/internal/basicinfo.go
  29. 100
      internal/serviceGame/internal/cdKey.go
  30. 3
      internal/serviceGame/internal/dbinit.go
  31. 3
      internal/serviceGame/internal/mail.go
  32. 7
      internal/serviceGame/internal/out.go
  33. 2
      internal/serviceGame/loginUrl.go
  34. 25
      internal/serviceGame/manage.go
  35. 12
      internal/serviceGame/order.go
  36. 65
      internal/serviceGame/pub.go
  37. 16
      testCdKey.go

5
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 {

13
api/v1/game/game.go

@ -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"`
}

7
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 {

8
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 {

2
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"`
}

33
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:""`
}

20
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
}

4
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.

2
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.

2
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.

4
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.

26
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.

14
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.

3
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{} // 区服
}

1
internal/model/do/game_cd_password.go

@ -14,4 +14,5 @@ type GameCdPassword struct {
Id interface{} //
Account interface{} // 用户名
ConfigId interface{} // 配置id
Server interface{} // 区服
}

1
internal/model/do/game_recharge.go

@ -29,4 +29,5 @@ type GameRecharge struct {
Platform interface{} // 充值平台
Remark interface{} // 手动修改成功理由
Receipt interface{} //
Account interface{} //
}

3
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{} //
}

15
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{} //
}

13
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{} //
}

3
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:"区服"`
}

1
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:"区服"`
}

1
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:""`
}

3
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:""`
}

13
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:""`
}

13
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:""`
}

85
internal/serviceGame/basicinfo_game_role.go

@ -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
}

10
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

85
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
})

100
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
}

3
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))
})

3
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)

7
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)

2
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"
}

25
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("区服不存在!")

12
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)

65
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(`tradeNo NOT LIKE 'GM%'`).Where(`status=2`).Where("unitId=?", req.Id).Where("server=?", req.ServerId).Scan(&general)
if err != nil {
log.Println("CheckFirstRebate data err", err)
return
}
if len(general) == 0 {
log.Println("CheckFirstRebate data nil", gjson.MustEncodeString(req))
return
}
for _, v := range general {
res.Amount += v.Amount / 100
}
log.Printf("CheckFirstRebate: unit: %s res %d", gjson.MustEncodeString(req), res.Amount)
})
return
}
func (c *gamePubImpl) CheckSecondRebate(ctx context.Context, req *game.CheckSecondRebateReq) (res *game.CheckSecondRebateRes, err error) {
res = new(game.CheckSecondRebateRes)
_ = g.Try(ctx, func(ctx context.Context) {
general := []entity.GameRecharge{}
err = dao.GameRecharge.Ctx(ctx).
Where(`UNIX_TIMESTAMP(createTime)>=?`, time.Date(2025, 4, 20, 0, 0, 0, 0, time.Local).Unix()).
Where(`UNIX_TIMESTAMP(createTime)<?`, time.Date(2025, 4, 20, 17, 0, 0, 0, time.Local).Unix()).
Where(`tradeNo NOT LIKE 'GM%'`).Where(`status=2`).Where("unitId=?", req.Id).Where("server=?", req.ServerId).Scan(&general)
if err != nil {
log.Println("CheckSecondRebateReq data err", err)
return
}
if len(general) == 0 {
log.Println("CheckSecondRebateReq data nil", gjson.MustEncodeString(req))
return
}
for _, v := range general {
res.Amount += v.Amount / 100
}
log.Printf("CheckSecondRebateReq: unit: %s res %d", gjson.MustEncodeString(req), res.Amount)
})
return
}

16
testCdKey.go

@ -3,13 +3,11 @@ package main
import (
"context"
"fmt"
"github.com/gogf/gf/v2/os/gctx"
"log"
"math"
"math/rand"
"strconv"
"strings"
"time"
)
func checkOne(ctx context.Context, result string, value string) bool {
@ -84,10 +82,16 @@ func randomGenerate(ctx context.Context, preName string, id, num int, isSave boo
}
func main() {
ctx := gctx.New()
preName := fmt.Sprintf("code%d_", time.Now().Unix())
randomGenerate(ctx, preName, 0, 10, true)
//ctx := gctx.New()
//preName := fmt.Sprintf("code%d_", time.Now().Unix())
//randomGenerate(ctx, preName, 0, 10, true)
channel := "000000000000"
accountName := "lq00001000000000000"
if !strings.HasPrefix(accountName, channel) {
log.Println("not in ", accountName, channel)
return
}
log.Println("has in ", accountName, channel)
}
func generateOne(charset string, lenfrom, lento int) string {

Loading…
Cancel
Save