'use strict'; module.exports = function (app) { var mdbgoose = app.memdb.goose; // 基础属性 var PlayerSchema = new mdbgoose.Schema({ _id: { type: String }, // 标识 account: { type: String }, // 账号 userId: { type: Number }, // 号码 openId: { type: String, default: '' }, // openid mpId: { type: String, default: '' }, // 公众号ID name: { type: String, default: '' }, // 昵称 sex: { type: String, default: '1' }, // 性别 headurl: { type: String, default: '' }, // 头像 myurl: { type: String, default: ''}, grade: { type: Number, default: 1}, // 等级 diamond: { type: Number, default: 5 }, // 钻石 cost: { type: Number, default: 0 }, // 消费 usdt: { type: Number, default: 0 }, // ustd address: { type: String, default: '' }, score: { type: Number, default: 0 }, // 积分 nnLuck: { type: Number, default: 0 }, // 运气(牛牛) tableId: { type: String, default: '' }, // 桌子 rTableId: { type: Number, default: 0 }, // 重入的房间号 gameId: { type: Number, default: 0 }, // 游戏 gameServerId: { type: String, default: '' }, // 游戏点 connectorId: { type: String, default: '' }, // 连接点 totalMoney: { type: Number, default: 0 }, // 总充值 payReward: { type: Number, default: 0 }, // 充值奖励 registerIp: { type: String, default: '' }, // 注册IP registerTime: { type: Number, default: Date.now }, // 注册时间 roleTime: { type: Number, default: 0 }, // 角色时间 lastLoginIp: { type: String, default: '' }, // 登陆IP lastLoginTime: { type: Number, default: 0 }, // 最近登录 offlineTime: { type: Number, default: 0 }, // 离线时间 enable: { type: Number, default: 1 }, // (0表示该玩家不可用被冻结,1正常) regression: { type: Number, default: 0 }, // (0表示该玩家不是回归用户,1:是回归用户) getacttime: { type: Number, default: 0 }, // (毫秒级时间戳类型,用于记录该玩家上次领取回归奖励的时间,和regression 搭配起来使用) tel: { type: String, default: '' }, // 手机号码 pwd: { type: String, default: '' }, // 密码 _class: { type: String, default: '' }, spreadId: { type: String, default: '' }, // 推荐人id spreadCount: { type: Number, default: 0 }, // 推荐 人数 spreadRebate: { type: Number, default: 0 }, // 推荐 返利 spreadRebateOut: { type: Number, default: 0 }, // 推荐 已经提现 formId: { type: Number, default: 0 }, // 来源平台 0为微信 1为闲聊 form: { type: String, default: '' }, // 来源,新用户来源(如果是来自于推广的链接这里存储agentNo) smName: { type: String, default: '' }, // 实名认证姓名 smCardId: { type: String, default: '' }, // 实名认证身份证号 synPlayer: { type: String, default: '' } // 钻石同步的用户 }, { collection: 'player' }); mdbgoose.model('Player', PlayerSchema); // 手机号登录信息表,为了在登陆的时候带手机号参数上来 var TelSchema = new mdbgoose.Schema({ _id: { type: String }, // 标识 tel: { type: String, default: '' }, // 手机号码 pwd: { type: String, default: '' }, // 密码 bindTime: { type: Number, default: 0 } // 验证通过时间,=0时表示短信过去了待验证 }, { collection: 'tel' }); mdbgoose.model('Tel', TelSchema); // 登录信息时间表,为了统计留存率 var LoginSchema = new mdbgoose.Schema({ _id: { type: String }, // 标识 playerId: { type: String }, // 玩家标识 loginTime: { type: Number, default: Date.now } // 最近登录 }, { collection: 'login' }); mdbgoose.model('Login', LoginSchema); // 邀请信息表,用于邀请新人按比例送钻这个活动 var InviteSchema = new mdbgoose.Schema({ _id: { type: String }, // 被邀请人标识 yId: { type: String }, // 邀请人标识 yuId: { type: String, default: 0 }, // 邀请人用户id yTime: { type: Number, default: Date.now } // 邀请时间 }, { collection: 'invite' }); mdbgoose.model('Invite', InviteSchema); // 活动期间邀请的新人产生的消耗,用于邀请新人按比例送钻这个活动 var InvitesCostSchema = new mdbgoose.Schema({ _id: { type: String }, // UUID pId: { type: String }, // 邀请人标识 uId: { type: Number }, // 邀请人用户id all: { type: Number, default: 0 }, // 邀请人邀请的所有新人在该天的全部消耗 isSend: { type: Number, default: 0 }, //该天产生的奖励是否通过邮件已发送出去 dayTime: { type: Number, default: Date.now } // 统计时间,以天为单位 }, { collection: 'invitesCost' }); mdbgoose.model('InvitesCost', InvitesCostSchema); // 钻石记录 var DiamondRecordSchema = new mdbgoose.Schema({ _id: { type: String }, // UUID playerId: { type: String }, // 玩家标识 /* dType:类型 1为注册2为充值3坐下4退分5礼物6活动7后台 8同步转出 9同步转入10签到11每日奖励12分享赠送, 13活动期间累充送钻石,14活动期间组局领钻,15活动期间回归用户每日领钻, 16活动期间回归用户每日充值奖励钻石,17绑定手机,18邀新人按消耗比例返钻, 19比赛4~10名送钻,20水果游戏,21水果任务,22水果排行榜, 只有11没有统计 */ dType: { type: Number }, dSource: { type: Number, default: 0 }, // 原钻石 dSwap: { type: Number, default: 0 }, // 变化钻石 游戏 dNow: { type: Number, default: 0 }, // 新钻石 tableId: { type: String, default: '' }, // 房间标识 registerTime: { type: Number, default: Date.now } // 记录时间 }, { collection: 'diamondRecord' }); mdbgoose.model('DiamondRecord', DiamondRecordSchema); // taskquan记录 var TaskQuanRecordSchema = new mdbgoose.Schema({ _id: { type: String }, // UUID playerId: { type: String }, // 玩家标识 /* dType:类型 1为注册2为充值3坐下4退分5礼物6活动7后台 8同步转出 9同步转入10签到11每日奖励12分享赠送, 13活动期间累充送钻石,14活动期间组局领钻,15活动期间回归用户每日领钻, 16活动期间回归用户每日充值奖励钻石,17绑定手机,18邀新人按消耗比例返钻, 19比赛4~10名送钻,20水果游戏,21水果任务,22水果排行榜, 只有11没有统计 */ dType: { type: Number }, dSource: { type: Number, default: 0 }, // 原钻石 dSwap: { type: Number, default: 0 }, // 变化钻石 游戏 dNow: { type: Number, default: 0 }, // 新钻石 tableId: { type: String, default: '' }, // 房间标识 registerTime: { type: Number, default: Date.now } // 记录时间 }, { collection: 'taskQuanRecord' }); mdbgoose.model('TaskQuanRecord', TaskQuanRecordSchema); // 代理 基础属性 var AgenterSchema = new mdbgoose.Schema({ _id: { type: String }, // 标识 agentNo: { type: Number }, // 代理编号 agentName: { type: String, default: '' }, // 代理名称 playerId: { type: String, default: '' }, // 玩家标识 // playerIdXL: { type: String, default: '' }, // 玩家标识闲聊 // openId: { type: String, default: '' }, // openid提现用 mpId: { type: String, default: '' }, // 公众号ID contact: { type: String, default: '' }, // 联系人 tel: { type: String, default: '' }, // 手机号码 pwd: { type: String, default: '' }, // 密码 rewardRate: { type: Number, default: 70}, //奖励比例(0~100)占比业绩 myUrl: { type: String,default: '' }, levelFlag: { type: Number, default: 0}, // 推广等级0:实习,1:普通推广,2:金牌推广,3:比赛推广,4:传单推广 enabled: { type: Number, default: 1}, // 是否可用,0:不可用,1:可用, parentAgenterId: { type: String, default: '' }, // 上级推广ID,没有上级的此值为"" parentRate: { type: Number, default: 0 }, // 上级推广的比例,无上级时此值为0,有上级此值才可能不为0 rebateAll2: { type: Number, default: 0 }, // 自己小组可提现总返利(包括审核中的) 单位是钻石且乘过比例的 在每局结束后增加 rebateNow2: { type: Number, default: 0 }, // 自己小组(下级推广)的可提现返利 verifyRebate2: { type: Number, default: 0 }, // 自己小组(下级推广)的审核的返利 verifyDate2: { type: Number, default: 0 }, // 自己小组(下级推广) 审核日期 rebateOut2: { type: Number, default: 0 }, // 自己小组(下级推广)的已提现返利 agentRate: { type: Number, default: 0}, // 额外返利的比例 rebateOther: { type: Number, default: 0 }, // 其他 额外返利 rebateCount: { type: Number, default: 0 }, // 返利合计 = 基础 + 额外 单位是钻石且乘过比例的 rebateAll: { type: Number, default: 0 }, // 可提现总返利(不包含额外)单位是钻石且乘过比例的 rebateNow: { type: Number, default: 0 }, // 可提现返利(已审核的自己基础的+额外的), rebateOut: { type: Number, default: 0 }, // 已提现返利 verifyDate: { type: Number, default: 0 }, // 审核日期 verifyRebate: { type: Number, default: 0 }, // 审核的返利 //以下字段是用来展示和计算额外返利使用的,目前没有额外比例所以去掉以下字段 // dateGameTimes02: { type: Number, default: 0 }, // 冲刺游戏次数 // dateGameTimes03: { type: Number, default: 0 }, // 冲刺游戏次数 // dateGameTimes0: { type: Number, default: 0 }, // 冲刺游戏次数 // dateGameTimes42: { type: Number, default: 0 }, // 4局游戏游戏次数 // dateGameTimes43: { type: Number, default: 0 }, // 4局游戏游戏次数 // dateGameTimes4: { type: Number, default: 0 }, // 4局游戏游戏次数 // dateGameTimes82: { type: Number, default: 0 }, // 8局游戏次数 // dateGameTimes83: { type: Number, default: 0 }, // 8局游戏次数 // dateGameTimes8: { type: Number, default: 0 }, // 8局游戏次数 // dateGameTimes162: { type: Number, default: 0 }, // 16局游戏次数 // dateGameTimes163: { type: Number, default: 0 }, // 16局游戏次数 // dateGameTimes164: { type: Number, default: 0 }, // 16局游戏次数 // dateGameCost0: { type: Number, default: 0 }, // 冲刺游戏消耗 // dateGameCost4: { type: Number, default: 0 }, // 4局游戏消耗 // dateGameCost8: { type: Number, default: 0 }, // 8局游戏消耗 // dateGameCost16: { type: Number, default: 0 }, // 16局游戏消耗 registerTime: { type: Number, default: Date.now } // 注册时间 }, { collection: 'agenter' }); mdbgoose.model('Agenter', AgenterSchema); // 白名单人员信息 var AgreeInfoSchema = new mdbgoose.Schema({ _id: { type: String, default: '' }, // 标识 数据库中player(用户)数据表的主键(_id) playerId: { type: String, default: '' }, // 标识 数据库中player(用户)数据表的主键(_id) agreeState: { type: String, default: '' }, // 对该玩家的同意情况0:申请中,1:已同意,2:已拒绝, userId: { type: Number }, // 用户编号 name: { type: String, default: '' }, // 代理名称 headurl: { type: String, default: '' } // 玩家头像 }); // // 代理白名单信息 var AgenterAgreeSchema = new mdbgoose.Schema({ _id: { type: String }, // 标识 数据库中agenter(推广员)数据表的主键(_id) isOpenAgree: { type: String, default: '0' }, //推广员是否开启白名单验证0:未开启,1:已开启, infoList: [AgreeInfoSchema] // 实时战绩 }, { collection: 'agenterAgree' }); mdbgoose.model('AgenterAgree', AgenterAgreeSchema); // 返利记录 var RebateRecordSchema = new mdbgoose.Schema({ _id: { type: String }, // UUID agentId: { type: String, default: '' }, // 代理标识 tableId: { type: String, default: '' }, // 房间标识 rType: { type: Number, default: 0 }, // 类型 1为锁定返利增加 2为提现 3为前日结算 4为小组锁定返利增加 5为小组前日结算 6为小组提现 rCount: { type: Number, default: 0 }, // 合计 rOther: { type: Number, default: 0 }, // 总奖励 rAll: { type: Number, default: 0 }, // 总返利 rNow: { type: Number, default: 0 }, // 可提取返利 rOut: { type: Number, default: 0 }, // 已经提取返利 rSwap: { type: Number, default: 0 }, // 返利金额 rKouZuan: { type: Number, default: 0 }, // 扣业绩钻石数量 rDateSwap: { type: Number, default: 0 }, // 日奖励 rVerifyDate: { type: Number, default: 0 }, // 审核返利日期 rVerifyRebate: { type: Number, default: 0 }, // 审核返利金额 registerTime: { type: Number, default: Date.now } // 记录时间 }, { collection: 'rebateRecord' }); mdbgoose.model('RebateRecord', RebateRecordSchema); // 日期返利记录 var DateRebateRecordSchema = new mdbgoose.Schema({ _id: { type: String }, // UUID agentId: { type: String, default: '' }, // 代理标识 verifyDate: { type: Number, default: 0 }, // 数据的日期 verifyRebate: { type: Number, default: 0 }, // 返利金额(该日期自己的返利,单位是钻石,已乘过自己比例) dateAgentRate: { type: Number, default: 0 }, // 该日期当日额外返利的比例 dateRebate: { type: Number, default: 0 }, // 该日期 额外返利金额 dateRewardRate: { type: Number, default: 0 }, // 进行日结当日该推广自己的返利的比例 parentaId: { type: String, default: '' }, // 代理上级的标识 dateParentRate: { type: Number, default: 0 }, // 进行日结当日该推广上级的返利的比例 parentRebate: { type: Number, default: 0 }, // 该日期 该推广上级的返利金额 allGameCost: { type: Number, default: 0 }, // 该日期该推广产生的总游戏消耗 allGiftCost: { type: Number, default: 0 }, // 该日期该推广产生的总礼物消耗 allGameTimes1: { type: Number, default: 0 }, // 该日期该推广产生的总游戏1次数 allGameTimes2: { type: Number, default: 0 }, // 该日期该推广产生的总游戏2次数 allGameTimes3: { type: Number, default: 0 }, // 该日期该推广产生的总游戏3次数 allGameTimes4: { type: Number, default: 0 }, // 该日期该推广产生的总游戏4次数 allPlayeCount: { type: Number, default: 0 }, // 该日期该推广活跃玩家个数 // dateGameTimes02: { type: Number, default: 0 }, // 冲刺游戏次数 // dateGameTimes03: { type: Number, default: 0 }, // 冲刺游戏次数 // dateGameTimes0: { type: Number, default: 0 }, // 冲刺游戏次数 // dateGameTimes42: { type: Number, default: 0 }, // 4局游戏游戏次数 // dateGameTimes43: { type: Number, default: 0 }, // 4局游戏游戏次数 // dateGameTimes4: { type: Number, default: 0 }, // 4局游戏游戏次数 // dateGameTimes82: { type: Number, default: 0 }, // 8局游戏次数 // dateGameTimes83: { type: Number, default: 0 }, // 8局游戏次数 // dateGameTimes8: { type: Number, default: 0 }, // 8局游戏次数 // dateGameTimes162: { type: Number, default: 0 }, // 16局游戏次数 // dateGameTimes163: { type: Number, default: 0 }, // 16局游戏次数 // dateGameTimes16: { type: Number, default: 0 }, // 16局游戏次数 // dateGameCost0: { type: Number, default: 0 }, // 冲刺游戏消耗 // dateGameCost4: { type: Number, default: 0 }, // 4局游戏消耗 // dateGameCost8: { type: Number, default: 0 }, // 8局游戏消耗 // dateGameCost16: { type: Number, default: 0 }, // 16局游戏消耗 registerTime: { type: Number, default: Date.now } // 记录时间 }, { collection: 'daterebateRecord' }); mdbgoose.model('DateRebateRecord', DateRebateRecordSchema); // 玩家局数统计 var PlayerCountSchema = new mdbgoose.Schema({ _id: { type: String }, // UUID agentId: { type: String, default: '' }, // 代理标识 playerId: { type: String, default: '' }, // 玩家标识 userId: { type: Number, default: 0 }, // 玩家号码 name: { type: String, default: '' }, // 昵称 date: { type: Number, default: 0 }, // 日期 gameCount: { type: Number, default: 0}, // 局数统计 gameCost: { type: Number, default: 0 }, // 游戏消耗 agentRebate: { type: Number, default: 0 }, // 代理返利 time: { type: Number, default: 0 } // 记录时间 }, { collection: 'playercount' }); mdbgoose.model('PlayerCount', PlayerCountSchema); // // 日期推广信息记录 // var DateAgentInfoSchema = new mdbgoose.Schema({ // _id: { type: String }, // UUID // agentId: { type: String, default: '' }, // 代理标识 // dataDate: { type: Number, default: 0 }, // 数据产生的日期 // allCost: { type: Number, default: 0 }, // 该日该推广总消耗 单位是钻石 在每局结束之后修改,增量=该局消耗 // zjjcRebate: { type: Number, default: 0 }, // 该日该推广自己的基础返利 单位是钻石 在每局结束之后修改,增量=该局消耗*rewardRate // otherRebate: { type: Number, default: 0 }, // 该日该推广自己的额外返利 单位是钻石 在每局结束之后修改,增量=该局消耗*agentRate // parentRebate: { type: Number, default: 0 }, // 该日该推广贡献给自己上级的返利 单位是钻石 在每局结束之后修改,增量=该局消耗*parentRate // pCount: { type: Number, default: 0 }, // 该日该推广活跃人数 // gameCount: { type: Number, default: 0}, //该日该推广局数统计 在每局结束之后修改,增量=1 // registerTime: { type: Number, default: Date.now }// 记录时间 // }, { collection: 'dateAgentInfo' }); // mdbgoose.model('DateAgentInfo', DateAgentInfoSchema); // 提现申请 var OutRebateSchema = new mdbgoose.Schema({ _id: { type: String }, // UUID agentId: { type: String, default: '' }, // 代理标识 outType: { type: Number, default: 1 }, // 提现类型:1为提取自己的,2为提取自己下级的 outSwap: { type: Number, default: 0 }, // 提现金额 kouZuan: { type: Number, default: 0 }, // 扣业绩钻石数量 totalFee: { type: Number, default: 0 }, // 发放金额 payState: { type: Number, default: 1 }, // 支付状态 1为未支付 2人工支付 3支付成功 registerTime: { type: Number, default: Date.now } // 记录时间 }, { collection: 'outRebate' }); mdbgoose.model('OutRebate', OutRebateSchema); // 申请推广员TL++10月16日 var applyTGchema = new mdbgoose.Schema({ _id: { type: String }, // 标识 // userId: { type: Number, default: 0 }, // 玩家号码 applyType: { type: Number, default: 1 }, // 申请推广的类型,1:普通,通过大厅自主申请,2:金牌推广员邀请小组新成员申请 parenteId:{ type: String, default: '' }, // 申请推广的上级id,目前只有applyType=2时此值为操作邀请的推广id tgName: { type: String, default: '' }, // 申请推广的姓名 tgPhone: { type: String, default: '' }, // 申请推广的手机号码 tgWXNumber: { type: String, default: '' },// 申请推广的微信号 tgState: { type: Number, default: 1 }, // 未申请=1;正在审核=2;审核成功=3,审核失败=4 registerTime: { type: Number, default: Date.now } // 日期 }, { collection: 'applyTG' }); mdbgoose.model('tgApply', applyTGchema); // 某一单款或玩法后台可配置维护中 var WHZGameSchema = new mdbgoose.Schema({ _id: { type: String, default: '' }, // 记录标识 gameId: { type: Number, default: 0}, // 维护中的游戏id whAll: { type: Number, default: 0}, // 1:表示整个游戏的所有玩法均维护,0:部分玩法维护 round: { type: Number, default: 0}, // 维护中的游戏局数 playerCount: { type: Number, default: 0}, // 维护中的游戏人数 other: { type: Number, default: 0}, // 维护中的游戏规则 type: { type: Number, default: 0}, // 维护中的游戏type gameKind: { type: Number, default: 0} // 维护中的游戏gameKind }); // 活动的达成条件和奖励信息列表 // var ActiveReachAndRewardInfoSchema = new mdbgoose.Schema({ // _id: { type: String, default: '' }, // 记录标识 // reachType: { type: Number, default: 0}, // 达成条件类型1:邀新,2:完成游戏局数,3:充值,4:回归 // reachCount: { type: Number, default: 0}, // 达成条件所需数量 // reachType: { type: Number, default: 0}, // 奖励类型1:钻石, // reachType: { type: Number, default: 0} // 达成之后奖励的数量 // }); // // 活动配置信息 // var ActiveSchema = new mdbgoose.Schema({ // _id: { type: String, default: '' }, // 记录标识 // type: { type: Number, default: 0}, // 1:邀新送钻,2:累充送钻,3:组局领钻,4回归福利 // des: { type: String, default: '' }, // 活动描述 // open: { type: Number, default: 0}, // 0关闭,1:开启 // startTime: { type: Number, default: Date.now }, // 开始日期 // endTime: { type: Number, default: Date.now }, // 结束日期 // reachAndRewardInfo: [ActiveReachAndRewardInfoSchema]// 该活动的达成条件和奖励信息列表 // }); // 是否维护 var WHstatechema = new mdbgoose.Schema({ _id: { type: String, default: 'wh'}, // UUID stateWH: {type: Number, default: 0}, // 维护状态0为正常1为维护中 whTip: { type: String, default: '游戏正在维护,请稍后创建房间' }, // 维护提示 rebaterate: { type: Number, default: 60}, // 返利比例 shareGive: { type: Number, default: 50}, // 分享赠钻 yxndlbTime: {type: Number, default: 0}, // 游戏内大喇叭(跑马灯)通知间隔时间 yxndlbTip: { type: String, default: '' }, // 游戏内大喇叭(跑马灯)通知内容 whzGame: [WHZGameSchema] // 某一单款或玩法后台可配置维护中 }, { collection: 'whstate' }); mdbgoose.model('WHstate', WHstatechema); // 不能在一起(同一桌)游戏的玩家信息 TL++ var NotGameTogtherSchema = new mdbgoose.Schema({ _id: { type: String }, // UUID uidList: [Number], //不能在同一桌的玩家userid列表 pidList: [String], //不能在同一桌的玩家_id列表 }, { collection: 'notGameTogther' }); mdbgoose.model('NotGameTogther', NotGameTogtherSchema); // 每日峰值统计 TL++ var EverytopSchema = new mdbgoose.Schema({ _id: { type: String }, // UUID daytime: { type: Number, default: Date.now }, // 写入时间 onlineList: [Number], // 整点在线人数列表 onlineTop: { type: Number , default: 0}, // 今日在线峰值 onlineTop_t: { type: Number, default: Date.now }, // 今日在线峰值出现时间 registCount: { type: Number , default: 0}, // 今日注册的用户数量 loginCount: { type: Number , default: 0}, // 今日登录过的用户数量 payCount: { type: Number , default: 0}, // 今日充值总额 outRebateCount: { type: Number , default: 0} // 今日提现总额 }, { collection: 'everytop' }); mdbgoose.model('EveryTop', EverytopSchema); // 记牌器购买信息 var JiPaiQiSchema = new mdbgoose.Schema({ _id: { type: String }, // 标识 userId: { type: Number }, // 用户编号 times0: { type: Number, default: 0 }, // 免费试用次数 times1: { type: Number, default: 0 }, // 7天卡购买次数 times2: { type: Number, default: 0 }, // 30天卡购买次数 jpqdqsj: { type: Number, default: 0 }, // 记牌器到期时间 lastBuyTime: { type: Number, default: 0 }, // 最近试用或购买时间 registerTime: { type: Number, default: Date.now } // 首次试用或购买时间 }, { collection: 'jipaiqi' }); mdbgoose.model('JiPaiQi', JiPaiQiSchema); };