Compare commits

..

No commits in common. "aa3a713699a786fd1f35186d62bd642da2df9b12" and "5be9e98ae021856bdb44ecb033c9afee33d6860d" have entirely different histories.

6 changed files with 163 additions and 185 deletions

View File

@ -59,11 +59,6 @@ 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:
@ -234,35 +229,6 @@ 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 {
@ -480,22 +446,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
//} }
/* /*
* 修改帐号密码 * 修改帐号密码
@ -540,7 +506,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, "packegetag": acc.PackegeTag}}}) "channel": acc.Channel, "promoter": acc.Promoter, "inviterid": acc.InviterId, "packegetag": acc.PackegeTag, "promotertree": acc.PromoterTree}}})
} }
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.Params, pd = model.NewPlayerData(args.Acc, name, id, a.Channel, a.Platform, a.Promoter, a.InviterId, a.PromoterTree, a.Params,
a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.TagKey, a.AccountType) a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.SubPromoter, 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.Params, pd = model.NewPlayerDataThird(acc, name, args.HeadUrl, id, a.Channel, a.Platform, a.Promoter, a.InviterId,
a.Tel, a.PackegeTag, dataParams.Ip, a.TagKey, a.AccountType, a.DeviceOs) a.PromoterTree, a.Params, a.Tel, a.PackegeTag, dataParams.Ip, a.SubPromoter, 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,8 +292,9 @@ 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.Params, a.Tel, a.PackegeTag, pd = model.NewPlayerData(acc, name, id, a.Channel, a.Platform, a.Promoter, a.InviterId,
dataParams.Ip, int64(args.AddCoin), "", a.DeviceInfo, a.TagKey, a.AccountType) a.PromoterTree, a.Params, a.Tel, a.PackegeTag, dataParams.Ip, int64(args.AddCoin),
"", 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)
@ -341,8 +342,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.Params, pd := model.NewPlayerData(a.AccountId.Hex(), name, a.SnId, a.Channel, a.Platform, a.Promoter, a.InviterId, a.PromoterTree, a.Params,
a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.TagKey, a.AccountType) a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.SubPromoter, 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

@ -17,31 +17,36 @@ import (
// 登录次数,最后登录最后登出时间并不准确 // 登录次数,最后登录最后登出时间并不准确
type Account struct { type Account struct {
AccountId bson.ObjectId `bson:"_id"` AccountId bson.ObjectId `bson:"_id"`
SnId int32 //玩家账号直接在这里生成 SnId int32 //玩家账号直接在这里生成
UserName string //Service Provider AccountId UserName string //Service Provider AccountId
PassWord string //昵称密码 PassWord string //昵称密码
TelPassWord string //帐号密码 TelPassWord string //帐号密码
BackPassWord string //备份账号密码 BackPassWord string //备份账号密码
Platform string //平台 //VIP int32 //VIP帐号 等级
Channel string //渠道 Platform string //平台
Tel string //电话号码 Channel string //渠道
Params string //其他参数 Promoter string //推广员
DeviceOs string //系统 SubPromoter string //子推广员
PackegeTag string //包标识 InviterId int32 //邀请人ID
Package string //包名 android:包名 ios:bundleid PromoterTree int32 //推广树ID
DeviceInfo string //设备信息 Tel string //电话号码
LoginTimes int //登录次数 Params string //其他参数
State int64 //冻结到期时间戳 DeviceOs string //系统
RegisteTime time.Time //注册时间 PackegeTag string //包标识
LastLoginTime time.Time //最后一次登录时间 Package string //包名 android:包名 ios:bundleid
LastLogoutTime time.Time //最后一次登出时间 DeviceInfo string //设备信息
Flag int32 //二次推广用户标记 LoginTimes int //登录次数
Remark string //备注信息 State int64 //冻结到期时间戳
TagKey int32 //包标识关键字 RegisteTime time.Time //注册时间
AccountType int32 //1.google 2.facebook LastLoginTime time.Time //最后一次登录时间
RegisterTs int64 // 注册时间戳 LastLogoutTime time.Time //最后一次登出时间
TelPassWordExpire int64 // 手机验证码登录过期时间戳 Flag int32 //二次推广用户标记
Remark string //备注信息
TagKey int32 //包标识关键字
AccountType int32 //1.google 2.facebook
RegisterTs int64 // 注册时间戳
TelPassWordExpire int64 // 手机验证码登录过期时间戳
} }
func NewAccount() *Account { func NewAccount() *Account {
@ -123,7 +128,11 @@ 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
@ -157,7 +166,10 @@ 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
@ -481,10 +493,13 @@ func UpdateAccountPlatformInfo(account string, platform, channel, promoter, invi
return ErrRPClientNoConn return ErrRPClientNoConn
} }
args := &Account{ args := &Account{
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)),
PackegeTag: packTag, Promoter: strconv.Itoa(int(promoter)),
PromoterTree: promoterTree,
InviterId: inviterid,
PackegeTag: packTag,
} }
ret := &AccRet{} ret := &AccRet{}
err := rpcCli.CallWithTimeout("AccountSvc.UpdateAccountPlatformInfo", args, ret, time.Second*30) err := rpcCli.CallWithTimeout("AccountSvc.UpdateAccountPlatformInfo", args, ret, time.Second*30)

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 string, params, tel string, func NewPlayerData(acc string, name string, id int32, channel, platform, promoter string, inviterId,
packTag, ip string, addCoin int64, unionid, deviceInfo string, promoterTree int32, params, tel string, packTag, ip string, addCoin int64, unionid, deviceInfo string,
tagkey, accountType int32) *PlayerData { subPromoter string, 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
@ -726,42 +726,47 @@ func NewPlayerData(acc string, name string, id int32, channel, platform string,
isRobot := channel == common.Channel_Rob isRobot := channel == common.Channel_Rob
pd := &PlayerData{ pd := &PlayerData{
Id: bson.NewObjectId(), Id: bson.NewObjectId(),
AccountId: acc, AccountId: acc,
AccountType: accountType, AccountType: accountType,
Name: name, Name: name,
Channel: channel, Channel: channel,
Platform: platform, Platform: platform,
SnId: id, SnId: id,
Head: rand.Int31n(common.HeadRange), InviterId: inviterId,
SafeBoxPassword: pwd, PromoterTree: promoterTree,
Ip: ip, Head: rand.Int31n(common.HeadRange),
RegIp: ip, //Coin: int64(GameParamData.NewPlayerCoin) + addCoin,
Params: params, SafeBoxPassword: pwd,
Tel: tel, Ip: ip,
AgentType: 0, RegIp: ip,
LastLoginTime: tNow.Local(), Params: params,
LastLogoutTime: tNow.AddDate(0, 0, -1).Local(), Tel: tel,
CreateTime: tNow.Local(), SubBeUnderAgentCode: subPromoter,
Ver: VER_PLAYER_MAX - 1, AgentType: 0,
HeadOutLine: 1, LastLoginTime: tNow.Local(),
VIP: 0, LastLogoutTime: tNow.AddDate(0, 0, -1).Local(),
CoinPayTotal: 0, CreateTime: tNow.Local(),
MoneyPayTotal: 0, Ver: VER_PLAYER_MAX - 1,
IsRob: isRobot, HeadOutLine: 1,
PackageID: packTag, VIP: 0,
WBLevel: 0, CoinPayTotal: 0,
WBCoinTotalOut: 0, MoneyPayTotal: 0,
WBCoinTotalIn: 0, IsRob: isRobot,
WBCoinLimit: 0, BeUnderAgentCode: promoter,
YesterdayGameData: NewPlayerGameCtrlData(), PackageID: packTag,
TodayGameData: NewPlayerGameCtrlData(), WBLevel: 0,
TotalGameData: make(map[int][]*PlayerGameTotal), WBCoinTotalOut: 0,
GDatas: make(map[string]*PlayerGameInfo), WBCoinTotalIn: 0,
TagKey: tagkey, WBCoinLimit: 0,
ShopTotal: make(map[int32]*ShopTotal), YesterdayGameData: NewPlayerGameCtrlData(),
ShopLastLookTime: make(map[int32]int64), TodayGameData: NewPlayerGameCtrlData(),
IsFoolPlayer: make(map[string]bool), TotalGameData: make(map[int][]*PlayerGameTotal),
GDatas: make(map[string]*PlayerGameInfo),
TagKey: tagkey,
ShopTotal: make(map[int32]*ShopTotal),
ShopLastLookTime: make(map[int32]int64),
IsFoolPlayer: make(map[string]bool),
//测试数据 //测试数据
PowerList: []int32{1}, //默认炮台 PowerList: []int32{1}, //默认炮台
UnMaxPower: 10, //初始化炮倍最小倍数 UnMaxPower: 10, //初始化炮倍最小倍数
@ -776,43 +781,47 @@ func NewPlayerData(acc string, name string, id int32, channel, platform string,
return pd return pd
} }
func NewPlayerDataThird(acc string, name, headUrl string, id int32, channel, platform string, params, tel string, func NewPlayerDataThird(acc string, name, headUrl string, id int32, channel, platform, promoter string, inviterId,
packTag, ip string, tagkey, accountType int32, deviceOS string) *PlayerData { promoterTree int32, params, tel string, packTag, ip string, subPromoter 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
} }
tNow := time.Now() tNow := time.Now()
pd := &PlayerData{ pd := &PlayerData{
Id: bson.NewObjectId(), Id: bson.NewObjectId(),
AccountId: acc, AccountId: acc,
Name: name, Name: name,
Channel: channel, Channel: channel,
Platform: platform, Platform: platform,
SnId: id, SnId: id,
Head: rand.Int31n(common.HeadRange), InviterId: inviterId,
HeadUrl: headUrl, PromoterTree: promoterTree,
Head: rand.Int31n(common.HeadRange),
HeadUrl: headUrl,
//Coin: int64(GameParamData.NewPlayerCoin), //Coin: int64(GameParamData.NewPlayerCoin),
Ip: ip, Ip: ip,
RegIp: ip, RegIp: ip,
Params: params, Params: params,
Tel: tel, Tel: tel,
LastLoginTime: tNow.Local(), SubBeUnderAgentCode: subPromoter,
LastLogoutTime: tNow.AddDate(0, 0, -1).Local(), LastLoginTime: tNow.Local(),
CreateTime: tNow.Local(), LastLogoutTime: tNow.AddDate(0, 0, -1).Local(),
Ver: VER_PLAYER_MAX - 1, CreateTime: tNow.Local(),
HeadOutLine: 1, Ver: VER_PLAYER_MAX - 1,
IsRob: false, HeadOutLine: 1,
PackageID: packTag, IsRob: false,
YesterdayGameData: NewPlayerGameCtrlData(), BeUnderAgentCode: promoter,
TodayGameData: NewPlayerGameCtrlData(), PackageID: packTag,
TotalGameData: make(map[int][]*PlayerGameTotal), YesterdayGameData: NewPlayerGameCtrlData(),
GDatas: make(map[string]*PlayerGameInfo), TodayGameData: NewPlayerGameCtrlData(),
TagKey: tagkey, TotalGameData: make(map[int][]*PlayerGameTotal),
ShopTotal: make(map[int32]*ShopTotal), GDatas: make(map[string]*PlayerGameInfo),
ShopLastLookTime: make(map[int32]int64), TagKey: tagkey,
AccountType: accountType, ShopTotal: make(map[int32]*ShopTotal),
DeviceOS: deviceOS, ShopLastLookTime: make(map[int32]int64),
AccountType: accountType,
DeviceOS: deviceOS,
} }
pd.InitNewData(params) pd.InitNewData(params)

View File

@ -8,14 +8,11 @@ import (
) )
// GenerateOnline 在线统计 // GenerateOnline 在线统计
func GenerateOnline(online map[string]map[string]int) *RabbitMQData { func GenerateOnline(online map[string]int) *RabbitMQData {
m := map[string]map[int]int{} // 渠道:平台:真人数 m := map[int]int{} // 平台:真人数
for k, v := range online { for k, v := range online {
m[k] = map[int]int{} i, _ := strconv.Atoi(k)
for k1, v1 := range v { m[i] = 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,12 +7,12 @@ import (
) )
var PlayerOnlineSington = &PlayerOnlineEvent{ var PlayerOnlineSington = &PlayerOnlineEvent{
OnlineCh: make(map[string]map[string]int), Online: make(map[string]int),
} }
type PlayerOnlineEvent struct { type PlayerOnlineEvent struct {
OnlineCh map[string]map[string]int Online map[string]int
Check bool Check bool
} }
func (p *PlayerOnlineEvent) ModuleName() string { func (p *PlayerOnlineEvent) ModuleName() string {
@ -23,40 +23,30 @@ 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
onlineCh := map[string]map[string]int{} m := 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() {
info, ok := onlineCh[player.Channel] m[player.Platform] = m[player.Platform] + 1
if !ok {
onlineCh[player.Channel] = map[string]int{}
info = onlineCh[player.Channel]
}
info[player.Platform] += 1
} }
} }
if len(onlineCh) == len(p.OnlineCh) { if len(m) == len(p.Online) {
for k, v := range onlineCh { for k, v := range m {
if len(v) != len(p.OnlineCh[k]) { if p.Online[k] != v {
goto here goto here
} }
for k1, v1 := range v {
if v1 != p.OnlineCh[k][k1] {
goto here
}
}
} }
return return
} }
here: here:
p.OnlineCh = onlineCh p.Online = m
LogChannelSingleton.WriteMQData(model.GenerateOnline(p.OnlineCh)) LogChannelSingleton.WriteMQData(model.GenerateOnline(p.Online))
} }
func (p *PlayerOnlineEvent) Shutdown() { func (p *PlayerOnlineEvent) Shutdown() {