|
@@ -3,6 +3,8 @@ package models
|
|
|
import (
|
|
|
"context"
|
|
|
"fmt"
|
|
|
+ "time"
|
|
|
+
|
|
|
jsoniter "github.com/json-iterator/go"
|
|
|
mhayaString "github.com/mhaya/extend/string"
|
|
|
mhayaTime "github.com/mhaya/extend/time"
|
|
@@ -12,59 +14,59 @@ import (
|
|
|
"github.com/mhaya/game/game_cluster/internal/param"
|
|
|
"github.com/mhaya/game/game_cluster/internal/third"
|
|
|
"github.com/mhaya/game/game_cluster/internal/token"
|
|
|
- "time"
|
|
|
|
|
|
- mhayaLogger "github.com/mhaya/logger"
|
|
|
"math/rand"
|
|
|
"strings"
|
|
|
+
|
|
|
+ mhayaLogger "github.com/mhaya/logger"
|
|
|
)
|
|
|
|
|
|
type Player struct {
|
|
|
- UserName string `json:"userName" bson:"userName"`
|
|
|
- OpenId string `json:"openId" bson:"openId"`
|
|
|
- UserNameMaybe string `json:"userNameMaybe" bson:"userNameMaybe"`
|
|
|
- NickName string `json:"nickName" bson:"nickName"`
|
|
|
- Pid string `json:"pid" bson:"pid"`
|
|
|
- XID string `json:"xID" bson:"xID"`
|
|
|
- TonWall string `json:"tonWall" bson:"tonWall"`
|
|
|
- Email string `json:"email" bson:"email"`
|
|
|
- Mobile string `json:"mobile" bson:"mobile"`
|
|
|
- Avatar string `json:"avatar" bson:"avatar"`
|
|
|
- IsRobot int `json:"isRobot" bson:"isRobot"`
|
|
|
- IsLeader int `json:"isLeader" bson:"isLeader"`
|
|
|
- IsVip int `json:"isVip" bson:"isVip"`
|
|
|
- IsFirstBindingXID int `json:"isFirstBindingXID" bson:"isFirstBindingXID"`
|
|
|
- Level int `json:"level" bson:"level"`
|
|
|
- Exp int `json:"exp" bson:"exp"`
|
|
|
- Gender int `json:"gender" bson:"gender"`
|
|
|
- Birthday string `json:"birthday" bson:"birthday"`
|
|
|
- Successions int `json:"successions" bson:"successions"`
|
|
|
- MaxSuccessions int `json:"maxSuccessions" bson:"maxSuccessions"`
|
|
|
- PrevTime int64 `json:"prevTime" bson:"prevTime"`
|
|
|
- LoginTime int64 `json:"loginTime" bson:"loginTime"`
|
|
|
- LoginIP string `json:"loginIP" bson:"loginIP"`
|
|
|
- LoginFailure int `json:"loginFailure" bson:"loginFailure"`
|
|
|
- JoinIP string `json:"joinIP" bson:"joinIP"`
|
|
|
- Rank int `json:"rank" bson:"rank"`
|
|
|
- JoinTime int64 `json:"joinTime" bson:"joinTime"`
|
|
|
- CreateTime int64 `json:"createTime" bson:"createTime"`
|
|
|
- UpdateTime int64 `json:"updateTime" bson:"updateTime"`
|
|
|
- DailyRefreshTime int64 `json:"dailyRefreshTime" bson:"dailyRefreshTime"`
|
|
|
- WeeklyRefreshTime int64 `json:"weeklyRefreshTime" bson:"weeklyRefreshTime"`
|
|
|
- RollDay int64 `json:"rollDay" bson:"rollDay"`
|
|
|
- Status int `json:"status" bson:"status"`
|
|
|
- Roll *Roll `json:"roll" bson:"roll"`
|
|
|
- Guide int `json:"guide" bson:"guide"`
|
|
|
- Share *Share `json:"share" bson:"share"`
|
|
|
- FirstReward int `json:"firstReward" bson:"firstReward"`
|
|
|
- Index int `json:"-" bson:"index"`
|
|
|
- Item ItemBasePack `json:"item" bson:"item"`
|
|
|
- SinIn SignIn `json:"sinIn" bson:"sinIn"`
|
|
|
- DailyTask DailyTask `json:"dailyTask" bson:"dailyTask"`
|
|
|
- AchieveTask AchieveTask `json:"achieveTask" bson:"achieveTask"`
|
|
|
- RankReward RankReward `json:"rankReward" bson:"rankReward"`
|
|
|
- Invite Invite `json:"invite" bson:"invite"`
|
|
|
- InviteReward *InviteReward `json:"inviteReward" bson:"inviteReward"`
|
|
|
+ UserName string `json:"userName" bson:"userName"` // 用户名
|
|
|
+ OpenId string `json:"openId" bson:"openId"` // 对应tgid
|
|
|
+ UserNameMaybe string `json:"userNameMaybe" bson:"userNameMaybe"` // 昵称
|
|
|
+ NickName string `json:"nickName" bson:"nickName"` // 昵称
|
|
|
+ Pid string `json:"pid" bson:"pid"` // 上级ID
|
|
|
+ XID string `json:"xID" bson:"xID"` // 绑定推特ID
|
|
|
+ TonWall string `json:"tonWall" bson:"tonWall"` // 绑定钱包地址
|
|
|
+ Email string `json:"email" bson:"email"` // 邮箱
|
|
|
+ Mobile string `json:"mobile" bson:"mobile"` // 手机号
|
|
|
+ Avatar string `json:"avatar" bson:"avatar"` // 头像
|
|
|
+ IsRobot int `json:"isRobot" bson:"isRobot"` // 是否为机器人
|
|
|
+ IsLeader int `json:"isLeader" bson:"isLeader"` // 是否是社区长
|
|
|
+ IsVip int `json:"isVip" bson:"isVip"` // 是否为VIP
|
|
|
+ IsFirstBindingXID int `json:"isFirstBindingXID" bson:"isFirstBindingXID"` // 是否是第一次绑定推特
|
|
|
+ Level int `json:"level" bson:"level"` // 等级
|
|
|
+ Exp int `json:"exp" bson:"exp"` // 经验
|
|
|
+ Gender int `json:"gender" bson:"gender"` // 性别
|
|
|
+ Birthday string `json:"birthday" bson:"birthday"` // 生日
|
|
|
+ Successions int `json:"successions" bson:"successions"` // 连续登陆天数
|
|
|
+ MaxSuccessions int `json:"maxSuccessions" bson:"maxSuccessions"` // 最大连续等级天数
|
|
|
+ PrevTime int64 `json:"prevTime" bson:"prevTime"` // 上次登陆时间
|
|
|
+ LoginTime int64 `json:"loginTime" bson:"loginTime"` // 登陆时间
|
|
|
+ LoginIP string `json:"loginIP" bson:"loginIP"` // 登录IP
|
|
|
+ LoginFailure int `json:"loginFailure" bson:"loginFailure"` // 登陆失败次数
|
|
|
+ JoinIP string `json:"joinIP" bson:"joinIP"` // 注册IP
|
|
|
+ Rank int `json:"rank" bson:"rank"` // 排名
|
|
|
+ JoinTime int64 `json:"joinTime" bson:"joinTime"` // 注册时间
|
|
|
+ CreateTime int64 `json:"createTime" bson:"createTime"` // 创建时间
|
|
|
+ UpdateTime int64 `json:"updateTime" bson:"updateTime"` // 更新时间
|
|
|
+ DailyRefreshTime int64 `json:"dailyRefreshTime" bson:"dailyRefreshTime"` // 每日刷新时间
|
|
|
+ WeeklyRefreshTime int64 `json:"weeklyRefreshTime" bson:"weeklyRefreshTime"` // 每周刷新时间
|
|
|
+ RollDay int64 `json:"rollDay" bson:"rollDay"` // 抽奖日期
|
|
|
+ Status int `json:"status" bson:"status"` // 状态
|
|
|
+ Roll *Roll `json:"roll" bson:"roll"` // 抽奖
|
|
|
+ Guide int `json:"guide" bson:"guide"` //
|
|
|
+ Share *Share `json:"share" bson:"share"` // 分享
|
|
|
+ FirstReward int `json:"firstReward" bson:"firstReward"` // 首次登陆奖励
|
|
|
+ Index int `json:"-" bson:"index"` // 索引
|
|
|
+ Item ItemBasePack `json:"item" bson:"item"` // 道具
|
|
|
+ SinIn SignIn `json:"sinIn" bson:"sinIn"` // 签到
|
|
|
+ DailyTask DailyTask `json:"dailyTask" bson:"dailyTask"` // 日常任务
|
|
|
+ AchieveTask AchieveTask `json:"achieveTask" bson:"achieveTask"` // 成就任务
|
|
|
+ RankReward RankReward `json:"rankReward" bson:"rankReward"` // 排行奖励
|
|
|
+ Invite Invite `json:"invite" bson:"invite"` // 邀请
|
|
|
+ InviteReward *InviteReward `json:"inviteReward" bson:"inviteReward"` // 邀请奖励
|
|
|
PlayerReward map[int]*PlayerRewardBase `json:"-" bson:"-"`
|
|
|
}
|
|
|
|
|
@@ -137,13 +139,13 @@ func (p *Player) Init() {
|
|
|
func (p *Player) InitDaily() {
|
|
|
p.DailyRefreshTime = mhayaTime.Now().Add(-24 * time.Hour).Unix()
|
|
|
if !mhayaTime.CreateFromTimestamp(p.DailyRefreshTime).IsToday() {
|
|
|
- //刷新每日任务
|
|
|
+ // 刷新每日任务
|
|
|
p.DailyTask.RefreshDailyTask()
|
|
|
- //刷新抽奖每日分享
|
|
|
+ // 刷新抽奖每日分享
|
|
|
p.Share.RefreshShare()
|
|
|
- //刷新是否有排行榜奖励
|
|
|
+ // 刷新是否有排行榜奖励
|
|
|
p.RankReward.InitRank(p.UserName, 1)
|
|
|
- //更新时间到当天
|
|
|
+ // 更新时间到当天
|
|
|
p.DailyRefreshTime = mhayaTime.Now().Unix()
|
|
|
}
|
|
|
}
|
|
@@ -152,7 +154,7 @@ func (p *Player) InitWeekly() {
|
|
|
if !mhayaTime.CreateFromTimestamp(p.WeeklyRefreshTime).IsThisWeek() {
|
|
|
|
|
|
p.SinIn.RefreshSignIn()
|
|
|
- //刷新是否有排行榜奖励
|
|
|
+ // 刷新是否有排行榜奖励
|
|
|
p.RankReward.InitRank(p.UserName, 2)
|
|
|
|
|
|
p.WeeklyRefreshTime = mhayaTime.Now().Unix()
|
|
@@ -176,7 +178,7 @@ func (p *Player) LevelUp() bool {
|
|
|
p.Item[ItemRoll].CurNum = 0
|
|
|
p.Item[ItemInvite].CurNum = 0
|
|
|
|
|
|
- //升级邀请奖励
|
|
|
+ // 升级邀请奖励
|
|
|
p.SetPassiveInviteReward()
|
|
|
|
|
|
p.SetPlayerRewardLog(SourceLevelUp, p.Level, []data.ItemReward{{ItemID: ItemAllRoll, ItemBaseType: 2, Amount: ret.DiceLimit}}, []data.ItemReward{}, p.Level)
|
|
@@ -221,17 +223,17 @@ func (p *Player) RefreshRoll() bool {
|
|
|
|
|
|
func (p *Player) CheckTaskByType1(userID string, id int) bool {
|
|
|
switch id {
|
|
|
- case 1: //关注关注推特
|
|
|
+ case 1: // 关注关注推特
|
|
|
return true
|
|
|
- case 2: //加入TG频道
|
|
|
+ case 2: // 加入TG频道
|
|
|
if third.GetIfChannel(userID) == 1 {
|
|
|
return true
|
|
|
} else {
|
|
|
return false
|
|
|
}
|
|
|
- case 3: //关注Yutube账号
|
|
|
+ case 3: // 关注Yutube账号
|
|
|
return true
|
|
|
- case 4: //加入DC频道
|
|
|
+ case 4: // 加入DC频道
|
|
|
return true
|
|
|
}
|
|
|
return false
|
|
@@ -239,9 +241,9 @@ func (p *Player) CheckTaskByType1(userID string, id int) bool {
|
|
|
|
|
|
func (p *Player) FinishAchieveTaskByType1(id int) bool {
|
|
|
if a, ok := p.AchieveTask[id]; ok {
|
|
|
- if a.Num == 0 && a.Validate == 1 { //待验证
|
|
|
+ if a.Num == 0 && a.Validate == 1 { // 待验证
|
|
|
if p.CheckTaskByType1(p.UserName, id) {
|
|
|
- p.AchieveTask[id].Validate = 2 //验证成功
|
|
|
+ p.AchieveTask[id].Validate = 2 // 验证成功
|
|
|
p.AchieveTask[id].Num = 1
|
|
|
p.AchieveTask[id].Status = 1
|
|
|
} else {
|
|
@@ -312,7 +314,7 @@ func (p *Player) RollOnce(num int) *param.RollOnce {
|
|
|
r2 := rand.Int31n(5) + 1
|
|
|
r3 := rand.Int31n(5) + 1
|
|
|
|
|
|
- //rule 4
|
|
|
+ // rule 4
|
|
|
if (r1 == 1 && r2 == 1 && r3 == 1) || (r1 == 6 && r2 == 6 && r3 == 6) {
|
|
|
roll.Score = levelConfig.Ratio * levelConfig.Rule4
|
|
|
roll.RollType = constant.RollSpecialTripleBet
|
|
@@ -499,7 +501,7 @@ func (p *Player) SetPassiveInviteReward() {
|
|
|
if !ok || !tok || c != p.Level {
|
|
|
return
|
|
|
}
|
|
|
- //被动邀请
|
|
|
+ // 被动邀请
|
|
|
key := fmt.Sprintf("%v:1:%v", constant.InviteKey, p.UserName)
|
|
|
pUid := mdb.RDB.Get(context.Background(), key).Val()
|
|
|
|
|
@@ -516,7 +518,7 @@ func (p *Player) SetPassiveInviteReward() {
|
|
|
|
|
|
var addItem []data.ItemReward
|
|
|
if p.IsVip == 0 {
|
|
|
- //主动邀请记录
|
|
|
+ // 主动邀请记录
|
|
|
key = fmt.Sprintf("%v:%v:%v", constant.InviteKey, InvitePlayer, pUid)
|
|
|
mdb.RDB.IncrBy(context.Background(), key, 1)
|
|
|
|