Compare commits

..

4 Commits

Author SHA1 Message Date
sk aa3a713699 evt_online添加渠道信息 2024-04-25 09:46:57 +08:00
sk 0cba0b0b25 Merge branch 'develop' into tongji 2024-04-24 17:22:25 +08:00
sk 3a5039727b 优化账号表 2024-04-23 15:10:48 +08:00
sk 7ecebe62e6 账号表补充渠道信息 2024-04-23 14:28:13 +08:00
6 changed files with 185 additions and 163 deletions

View File

@ -59,6 +59,11 @@ func (svc *AccountSvc) AccountIsExist(args *model.AccIsExistArg, ret *model.AccR
} }
acc := &model.Account{} acc := &model.Account{}
defer func() {
// 修改旧数据
// 补充渠道信息
svc.setParam(acc)
}()
switch args.LoginType { switch args.LoginType {
case common.LoginTypeGuest: case common.LoginTypeGuest:
@ -229,6 +234,35 @@ func (svc *AccountSvc) AccountIsExist(args *model.AccIsExistArg, ret *model.AccR
return nil return nil
} }
func (svc *AccountSvc) setParam(acc *model.Account) {
if acc == nil || (acc.Channel != "" && acc.Channel != "0") {
return
}
c := PlayerDataCollection(acc.Platform)
if c == nil {
return
}
p := new(model.PlayerData)
err := c.Find(bson.M{"snid": acc.SnId}).One(p)
if err != nil {
logger.Logger.Errorf("setChannel error:%v", err)
return
}
c = AccountCollection(acc.Platform)
if c == nil {
return
}
acc.Channel = p.Channel
if acc.Channel != "" {
err = c.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"channel", acc.Channel}}}})
if err != nil {
logger.Logger.Errorf("setChannel error:%v", err)
}
}
}
func (svc *AccountSvc) AccountTelIsRegiste(args *model.AccIsExistArg, exist *bool) error { func (svc *AccountSvc) AccountTelIsRegiste(args *model.AccIsExistArg, exist *bool) error {
caccounts := AccountCollection(args.Platform) caccounts := AccountCollection(args.Platform)
if caccounts != nil { if caccounts != nil {
@ -446,22 +480,22 @@ func (svc *AccountSvc) EditAccountPwd(acc *model.Account, ret *model.AccRet) err
return caccounts.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"backpassword", acc.TelPassWord}, {"telpassword", hashsum}}}}) return caccounts.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"backpassword", acc.TelPassWord}, {"telpassword", hashsum}}}})
} }
func (svc *AccountSvc) ResetBackAccountPwd(args *model.AccIdArg, ret *model.AccRet) error { //func (svc *AccountSvc) ResetBackAccountPwd(args *model.AccIdArg, ret *model.AccRet) error {
caccounts := AccountCollection(args.Platform) // caccounts := AccountCollection(args.Platform)
if caccounts == nil { // if caccounts == nil {
return ErrAccDBNotOpen // return ErrAccDBNotOpen
} // }
//
var acc model.Account // var acc model.Account
err := caccounts.Find(bson.M{"_id": bson.ObjectIdHex(args.AccId)}).One(&acc) // err := caccounts.Find(bson.M{"_id": bson.ObjectIdHex(args.AccId)}).One(&acc)
if err != nil { // if err != nil {
return err // return err
} // }
if len(acc.BackPassWord) > 0 { // if len(acc.BackPassWord) > 0 {
return caccounts.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"telpassword", acc.BackPassWord}}}}) // return caccounts.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"telpassword", acc.BackPassWord}}}})
} // }
return nil // return nil
} //}
/* /*
* 修改帐号密码 * 修改帐号密码
@ -506,7 +540,7 @@ func (svc *AccountSvc) UpdateAccountPlatformInfo(acc *model.Account, ret *model.
return caccounts.Update(bson.M{"_id": acc.AccountId}, return caccounts.Update(bson.M{"_id": acc.AccountId},
bson.D{{"$set", bson.M{"platform": acc.Platform, bson.D{{"$set", bson.M{"platform": acc.Platform,
"channel": acc.Channel, "promoter": acc.Promoter, "inviterid": acc.InviterId, "packegetag": acc.PackegeTag, "promotertree": acc.PromoterTree}}}) "channel": acc.Channel, "packegetag": acc.PackegeTag}}})
} }
func (svc *AccountSvc) GetRobotAccounts(limit int, accs *[]model.Account) error { func (svc *AccountSvc) GetRobotAccounts(limit int, accs *[]model.Account) error {

View File

@ -147,8 +147,8 @@ func (svc *PlayerDataSvc) GetPlayerData(args *model.GetPlayerDataArgs, ret *mode
name = "Guest" name = "Guest"
} }
pd = model.NewPlayerData(args.Acc, name, id, a.Channel, a.Platform, a.Promoter, a.InviterId, a.PromoterTree, a.Params, pd = model.NewPlayerData(args.Acc, name, id, a.Channel, a.Platform, a.Params,
a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.SubPromoter, a.TagKey, a.AccountType) a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.TagKey, a.AccountType)
if pd != nil { if pd != nil {
err = cplayerdata.Insert(pd) err = cplayerdata.Insert(pd)
if err != nil { if err != nil {
@ -222,8 +222,8 @@ func (svc *PlayerDataSvc) CreatePlayerDataByThird(args *model.CreatePlayer, ret
} }
var dataParams model.PlayerParams var dataParams model.PlayerParams
json.Unmarshal([]byte(a.Params), &dataParams) json.Unmarshal([]byte(a.Params), &dataParams)
pd = model.NewPlayerDataThird(acc, name, args.HeadUrl, id, a.Channel, a.Platform, a.Promoter, a.InviterId, pd = model.NewPlayerDataThird(acc, name, args.HeadUrl, id, a.Channel, a.Platform, a.Params,
a.PromoterTree, a.Params, a.Tel, a.PackegeTag, dataParams.Ip, a.SubPromoter, a.TagKey, a.AccountType, a.DeviceOs) a.Tel, a.PackegeTag, dataParams.Ip, a.TagKey, a.AccountType, a.DeviceOs)
if pd != nil { if pd != nil {
err = cplayerdata.Insert(pd) err = cplayerdata.Insert(pd)
if err != nil { if err != nil {
@ -292,9 +292,8 @@ func (svc *PlayerDataSvc) CreatePlayerDataOnRegister(args *model.PlayerDataArg,
} }
var dataParams model.PlayerParams var dataParams model.PlayerParams
json.Unmarshal([]byte(a.Params), &dataParams) json.Unmarshal([]byte(a.Params), &dataParams)
pd = model.NewPlayerData(acc, name, id, a.Channel, a.Platform, a.Promoter, a.InviterId, pd = model.NewPlayerData(acc, name, id, a.Channel, a.Platform, a.Params, a.Tel, a.PackegeTag,
a.PromoterTree, a.Params, a.Tel, a.PackegeTag, dataParams.Ip, int64(args.AddCoin), dataParams.Ip, int64(args.AddCoin), "", a.DeviceInfo, a.TagKey, a.AccountType)
"", a.DeviceInfo, a.SubPromoter, a.TagKey, a.AccountType)
pd.HeadUrl = args.HeadUrl pd.HeadUrl = args.HeadUrl
if pd != nil { if pd != nil {
err = cplayerdata.Insert(pd) err = cplayerdata.Insert(pd)
@ -342,8 +341,8 @@ func (svc *PlayerDataSvc) GetPlayerDataBySnId(args *model.GetPlayerDataBySnIdArg
name = "Guest" name = "Guest"
} }
pd := model.NewPlayerData(a.AccountId.Hex(), name, a.SnId, a.Channel, a.Platform, a.Promoter, a.InviterId, a.PromoterTree, a.Params, pd := model.NewPlayerData(a.AccountId.Hex(), name, a.SnId, a.Channel, a.Platform, a.Params,
a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.SubPromoter, a.TagKey, a.AccountType) a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.TagKey, a.AccountType)
if pd != nil { if pd != nil {
err = cplayerdata.Insert(pd) err = cplayerdata.Insert(pd)
if err != nil { if err != nil {

View File

@ -23,13 +23,8 @@ type Account struct {
PassWord string //昵称密码 PassWord string //昵称密码
TelPassWord string //帐号密码 TelPassWord string //帐号密码
BackPassWord string //备份账号密码 BackPassWord string //备份账号密码
//VIP int32 //VIP帐号 等级
Platform string //平台 Platform string //平台
Channel string //渠道 Channel string //渠道
Promoter string //推广员
SubPromoter string //子推广员
InviterId int32 //邀请人ID
PromoterTree int32 //推广树ID
Tel string //电话号码 Tel string //电话号码
Params string //其他参数 Params string //其他参数
DeviceOs string //系统 DeviceOs string //系统
@ -128,11 +123,7 @@ func InsertAccount(userName, passWord, platform, channel, promoter, params, devi
acc.Platform = platform acc.Platform = platform
acc.Channel = channel acc.Channel = channel
acc.Params = params acc.Params = params
acc.SubPromoter = subPromoter
acc.DeviceOs = deviceOs acc.DeviceOs = deviceOs
acc.Promoter = promoter
acc.InviterId = inviterId
acc.PromoterTree = promoterTree
acc.LastLoginTime = tCur acc.LastLoginTime = tCur
acc.RegisteTime = tCur acc.RegisteTime = tCur
acc.LoginTimes = 1 acc.LoginTimes = 1
@ -166,10 +157,7 @@ func InsertTelAccount(userName, passWord, platform, channel, promoter, params st
acc.TelPassWord = telpassword acc.TelPassWord = telpassword
acc.Platform = platform acc.Platform = platform
acc.Channel = channel acc.Channel = channel
acc.Promoter = promoter
acc.Params = params acc.Params = params
acc.InviterId = inviterId
acc.PromoterTree = promoterTree
acc.LastLoginTime = tCur acc.LastLoginTime = tCur
acc.RegisteTime = tCur acc.RegisteTime = tCur
acc.LoginTimes = 1 acc.LoginTimes = 1
@ -496,9 +484,6 @@ func UpdateAccountPlatformInfo(account string, platform, channel, promoter, invi
AccountId: bson.ObjectIdHex(account), AccountId: bson.ObjectIdHex(account),
Platform: strconv.Itoa(int(platform)), Platform: strconv.Itoa(int(platform)),
Channel: strconv.Itoa(int(channel)), Channel: strconv.Itoa(int(channel)),
Promoter: strconv.Itoa(int(promoter)),
PromoterTree: promoterTree,
InviterId: inviterid,
PackegeTag: packTag, PackegeTag: packTag,
} }
ret := &AccRet{} ret := &AccRet{}

View File

@ -709,9 +709,9 @@ func (this *PlayerData) GetPlayerDataEncoder() (bytes.Buffer, error) {
return buf, err return buf, err
} }
func NewPlayerData(acc string, name string, id int32, channel, platform, promoter string, inviterId, func NewPlayerData(acc string, name string, id int32, channel, platform string, params, tel string,
promoterTree int32, params, tel string, packTag, ip string, addCoin int64, unionid, deviceInfo string, packTag, ip string, addCoin int64, unionid, deviceInfo string,
subPromoter string, tagkey, accountType int32) *PlayerData { tagkey, accountType int32) *PlayerData {
if len(name) == 0 { if len(name) == 0 {
logger.Logger.Trace("New player name is empty.") logger.Logger.Trace("New player name is empty.")
return nil return nil
@ -733,16 +733,12 @@ func NewPlayerData(acc string, name string, id int32, channel, platform, promote
Channel: channel, Channel: channel,
Platform: platform, Platform: platform,
SnId: id, SnId: id,
InviterId: inviterId,
PromoterTree: promoterTree,
Head: rand.Int31n(common.HeadRange), Head: rand.Int31n(common.HeadRange),
//Coin: int64(GameParamData.NewPlayerCoin) + addCoin,
SafeBoxPassword: pwd, SafeBoxPassword: pwd,
Ip: ip, Ip: ip,
RegIp: ip, RegIp: ip,
Params: params, Params: params,
Tel: tel, Tel: tel,
SubBeUnderAgentCode: subPromoter,
AgentType: 0, AgentType: 0,
LastLoginTime: tNow.Local(), LastLoginTime: tNow.Local(),
LastLogoutTime: tNow.AddDate(0, 0, -1).Local(), LastLogoutTime: tNow.AddDate(0, 0, -1).Local(),
@ -753,7 +749,6 @@ func NewPlayerData(acc string, name string, id int32, channel, platform, promote
CoinPayTotal: 0, CoinPayTotal: 0,
MoneyPayTotal: 0, MoneyPayTotal: 0,
IsRob: isRobot, IsRob: isRobot,
BeUnderAgentCode: promoter,
PackageID: packTag, PackageID: packTag,
WBLevel: 0, WBLevel: 0,
WBCoinTotalOut: 0, WBCoinTotalOut: 0,
@ -781,8 +776,8 @@ func NewPlayerData(acc string, name string, id int32, channel, platform, promote
return pd return pd
} }
func NewPlayerDataThird(acc string, name, headUrl string, id int32, channel, platform, promoter string, inviterId, func NewPlayerDataThird(acc string, name, headUrl string, id int32, channel, platform string, params, tel string,
promoterTree int32, params, tel string, packTag, ip string, subPromoter string, tagkey, accountType int32, deviceOS string) *PlayerData { packTag, ip string, tagkey, accountType int32, deviceOS string) *PlayerData {
if len(name) == 0 { if len(name) == 0 {
logger.Logger.Trace("New player name is empty.") logger.Logger.Trace("New player name is empty.")
return nil return nil
@ -795,8 +790,6 @@ func NewPlayerDataThird(acc string, name, headUrl string, id int32, channel, pla
Channel: channel, Channel: channel,
Platform: platform, Platform: platform,
SnId: id, SnId: id,
InviterId: inviterId,
PromoterTree: promoterTree,
Head: rand.Int31n(common.HeadRange), Head: rand.Int31n(common.HeadRange),
HeadUrl: headUrl, HeadUrl: headUrl,
//Coin: int64(GameParamData.NewPlayerCoin), //Coin: int64(GameParamData.NewPlayerCoin),
@ -804,14 +797,12 @@ func NewPlayerDataThird(acc string, name, headUrl string, id int32, channel, pla
RegIp: ip, RegIp: ip,
Params: params, Params: params,
Tel: tel, Tel: tel,
SubBeUnderAgentCode: subPromoter,
LastLoginTime: tNow.Local(), LastLoginTime: tNow.Local(),
LastLogoutTime: tNow.AddDate(0, 0, -1).Local(), LastLogoutTime: tNow.AddDate(0, 0, -1).Local(),
CreateTime: tNow.Local(), CreateTime: tNow.Local(),
Ver: VER_PLAYER_MAX - 1, Ver: VER_PLAYER_MAX - 1,
HeadOutLine: 1, HeadOutLine: 1,
IsRob: false, IsRob: false,
BeUnderAgentCode: promoter,
PackageID: packTag, PackageID: packTag,
YesterdayGameData: NewPlayerGameCtrlData(), YesterdayGameData: NewPlayerGameCtrlData(),
TodayGameData: NewPlayerGameCtrlData(), TodayGameData: NewPlayerGameCtrlData(),

View File

@ -8,11 +8,14 @@ import (
) )
// GenerateOnline 在线统计 // GenerateOnline 在线统计
func GenerateOnline(online map[string]int) *RabbitMQData { func GenerateOnline(online map[string]map[string]int) *RabbitMQData {
m := map[int]int{} // 平台:真人数 m := map[string]map[int]int{} // 渠道:平台:真人数
for k, v := range online { for k, v := range online {
i, _ := strconv.Atoi(k) m[k] = map[int]int{}
m[i] = v for k1, v1 := range v {
pf, _ := strconv.Atoi(k1)
m[k][pf] = v1
}
} }
params := make(map[string]interface{}) params := make(map[string]interface{})
params["Online"] = m params["Online"] = m

View File

@ -7,11 +7,11 @@ import (
) )
var PlayerOnlineSington = &PlayerOnlineEvent{ var PlayerOnlineSington = &PlayerOnlineEvent{
Online: make(map[string]int), OnlineCh: make(map[string]map[string]int),
} }
type PlayerOnlineEvent struct { type PlayerOnlineEvent struct {
Online map[string]int OnlineCh map[string]map[string]int
Check bool Check bool
} }
@ -23,30 +23,40 @@ func (p *PlayerOnlineEvent) Init() {
} }
// 每五秒钟统计一次在线数据 // 每五秒钟统计一次在线数据
// 没有登录,登出,掉线情况直接不统计 // 没有登录,登出,掉线情况不统计
func (p *PlayerOnlineEvent) Update() { func (p *PlayerOnlineEvent) Update() {
if !p.Check { if !p.Check {
return return
} }
p.Check = false p.Check = false
m := map[string]int{} onlineCh := map[string]map[string]int{}
for _, player := range PlayerMgrSington.sidMap { for _, player := range PlayerMgrSington.sidMap {
if player != nil && !player.IsRob && player.IsOnLine() { if player != nil && !player.IsRob && player.IsOnLine() {
m[player.Platform] = m[player.Platform] + 1 info, ok := onlineCh[player.Channel]
if !ok {
onlineCh[player.Channel] = map[string]int{}
info = onlineCh[player.Channel]
}
info[player.Platform] += 1
} }
} }
if len(m) == len(p.Online) { if len(onlineCh) == len(p.OnlineCh) {
for k, v := range m { for k, v := range onlineCh {
if p.Online[k] != v { if len(v) != len(p.OnlineCh[k]) {
goto here goto here
} }
for k1, v1 := range v {
if v1 != p.OnlineCh[k][k1] {
goto here
}
}
} }
return return
} }
here: here:
p.Online = m p.OnlineCh = onlineCh
LogChannelSingleton.WriteMQData(model.GenerateOnline(p.Online)) LogChannelSingleton.WriteMQData(model.GenerateOnline(p.OnlineCh))
} }
func (p *PlayerOnlineEvent) Shutdown() { func (p *PlayerOnlineEvent) Shutdown() {