player.js 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. 'use strict';
  2. module.exports = function (app) {
  3. var mdbgoose = app.memdb.goose;
  4. // 基础属性
  5. var PlayerSchema = new mdbgoose.Schema({
  6. _id: { type: String }, // 标识
  7. account: { type: String }, // 账号
  8. userId: { type: Number }, // 号码
  9. openId: { type: String, default: '' }, // openid
  10. mpId: { type: String, default: '' }, // 公众号ID
  11. name: { type: String, default: '' }, // 昵称
  12. sex: { type: String, default: '1' }, // 性别
  13. headurl: { type: String, default: '' }, // 头像
  14. myurl: { type: String, default: ''},
  15. grade: { type: Number, default: 1}, // 等级
  16. //diamond: { type: Number, default: 5 }, // 钻石
  17. status: { type: Number, default: 0},
  18. diamond: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 消费
  19. cost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 消费
  20. usdt: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // ustd
  21. address: { type: String, default: '' },
  22. score: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 积分
  23. nnLuck: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 运气(牛牛)
  24. tableId: { type: String, default: '' }, // 桌子
  25. rTableId: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 重入的房间号
  26. gameId: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 游戏
  27. gameServerId: { type: String, default: '' }, // 游戏点
  28. connectorId: { type: String, default: '' }, // 连接点
  29. totalMoney: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 总充值
  30. payReward: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 充值奖励
  31. registerIp: { type: String, default: '' }, // 注册IP
  32. registerTime: { type: Number, default: Date.now }, // 注册时间
  33. roleTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 角色时间
  34. lastLoginIp: { type: String, default: '' }, // 登陆IP
  35. lastLoginTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 最近登录
  36. offlineTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 离线时间
  37. enable: { type: Number, default: 1 }, // (0表示该玩家不可用被冻结,1正常)
  38. regression: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // (0表示该玩家不是回归用户,1:是回归用户)
  39. getacttime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // (毫秒级时间戳类型,用于记录该玩家上次领取回归奖励的时间,和regression 搭配起来使用)
  40. tel: { type: String, default: '' }, // 手机号码
  41. pwd: { type: String, default: '' }, // 密码
  42. _class: { type: String, default: '' },
  43. spreadId: { type: String, default: '' }, // 推荐人id
  44. spreadCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 推荐 人数
  45. spreadRebate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 推荐 返利
  46. spreadRebateOut: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 推荐 已经提现
  47. formId: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 来源平台 0为微信 1为闲聊
  48. form: { type: String, default: '' }, // 来源,新用户来源(如果是来自于推广的链接这里存储agentNo)
  49. smName: { type: String, default: '' }, // 实名认证姓名
  50. smCardId: { type: String, default: '' }, // 实名认证身份证号
  51. synPlayer: { type: String, default: '' } // 钻石同步的用户
  52. }, { collection: 'player' });
  53. mdbgoose.model('Player', PlayerSchema);
  54. // 手机号登录信息表,为了在登陆的时候带手机号参数上来
  55. var TelSchema = new mdbgoose.Schema({
  56. _id: { type: String }, // 标识
  57. tel: { type: String, default: '' }, // 手机号码
  58. pwd: { type: String, default: '' }, // 密码
  59. bindTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} } // 验证通过时间,=0时表示短信过去了待验证
  60. }, { collection: 'tel' });
  61. mdbgoose.model('Tel', TelSchema);
  62. // 登录信息时间表,为了统计留存率
  63. var LoginSchema = new mdbgoose.Schema({
  64. _id: { type: String }, // 标识
  65. playerId: { type: String }, // 玩家标识
  66. loginTime: { type: Number, default: Date.now } // 最近登录
  67. }, { collection: 'login' });
  68. mdbgoose.model('Login', LoginSchema);
  69. // 邀请信息表,用于邀请新人按比例送钻这个活动
  70. var InviteSchema = new mdbgoose.Schema({
  71. _id: { type: String }, // 被邀请人标识
  72. yId: { type: String }, // 邀请人标识
  73. yuId: { type: String, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 邀请人用户id
  74. yTime: { type: Number, default: Date.now } // 邀请时间
  75. }, { collection: 'invite' });
  76. mdbgoose.model('Invite', InviteSchema);
  77. // 活动期间邀请的新人产生的消耗,用于邀请新人按比例送钻这个活动
  78. var InvitesCostSchema = new mdbgoose.Schema({
  79. _id: { type: String }, // UUID
  80. pId: { type: String }, // 邀请人标识
  81. uId: { type: Number }, // 邀请人用户id
  82. all: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 邀请人邀请的所有新人在该天的全部消耗
  83. isSend: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该天产生的奖励是否通过邮件已发送出去
  84. dayTime: { type: Number, default: Date.now } // 统计时间,以天为单位
  85. }, { collection: 'invitesCost' });
  86. mdbgoose.model('InvitesCost', InvitesCostSchema);
  87. // 钻石记录
  88. var DiamondRecordSchema = new mdbgoose.Schema({
  89. _id: { type: String }, // UUID
  90. playerId: { type: String }, // 玩家标识
  91. /* dType:类型 1为注册2为充值3坐下4退分5礼物6活动7后台 8同步转出 9同步转入10签到11每日奖励12分享赠送,
  92. 13活动期间累充送钻石,14活动期间组局领钻,15活动期间回归用户每日领钻,
  93. 16活动期间回归用户每日充值奖励钻石,17绑定手机,18邀新人按消耗比例返钻,
  94. 19比赛4~10名送钻,20水果游戏,21水果任务,22水果排行榜, 只有11没有统计
  95. */
  96. dType: { type: Number },
  97. gameType: { type: String },
  98. dSource: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 原钻石
  99. dSwap: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 变化钻石 游戏
  100. dNow: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 新钻石
  101. tableId: { type: String, default: '' }, // 房间标识
  102. registerTime: { type: Number, default: Date.now } // 记录时间
  103. }, { collection: 'diamondRecord' });
  104. mdbgoose.model('DiamondRecord', DiamondRecordSchema);
  105. // taskquan记录
  106. var TaskQuanRecordSchema = new mdbgoose.Schema({
  107. _id: { type: String }, // UUID
  108. playerId: { type: String }, // 玩家标识
  109. /* dType:类型 1为注册2为充值3坐下4退分5礼物6活动7后台 8同步转出 9同步转入10签到11每日奖励12分享赠送,
  110. 13活动期间累充送钻石,14活动期间组局领钻,15活动期间回归用户每日领钻,
  111. 16活动期间回归用户每日充值奖励钻石,17绑定手机,18邀新人按消耗比例返钻,
  112. 19比赛4~10名送钻,20水果游戏,21水果任务,22水果排行榜, 只有11没有统计
  113. */
  114. dType: { type: Number },
  115. dSource: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 原钻石
  116. dSwap: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 变化钻石 游戏
  117. dNow: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 新钻石
  118. tableId: { type: String, default: '' }, // 房间标识
  119. registerTime: { type: Number, default: Date.now } // 记录时间
  120. }, { collection: 'taskQuanRecord' });
  121. mdbgoose.model('TaskQuanRecord', TaskQuanRecordSchema);
  122. // 代理 基础属性
  123. var AgenterSchema = new mdbgoose.Schema({
  124. _id: { type: String }, // 标识
  125. agentNo: { type: Number }, // 代理编号
  126. agentName: { type: String, default: '' }, // 代理名称
  127. playerId: { type: String, default: '' }, // 玩家标识
  128. // playerIdXL: { type: String, default: '' }, // 玩家标识闲聊
  129. // openId: { type: String, default: '' }, // openid提现用
  130. mpId: { type: String, default: '' }, // 公众号ID
  131. contact: { type: String, default: '' }, // 联系人
  132. tel: { type: String, default: '' }, // 手机号码
  133. pwd: { type: String, default: '' }, // 密码
  134. rewardRate: { type: Number, default: 70}, //奖励比例(0~100)占比业绩
  135. myUrl: { type: String,default: '' },
  136. levelFlag: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 推广等级0:实习,1:普通推广,2:金牌推广,3:比赛推广,4:传单推广
  137. enabled: { type: Number, default: 1}, // 是否可用,0:不可用,1:可用,
  138. parentAgenterId: { type: String, default: '' }, // 上级推广ID,没有上级的此值为""
  139. parentRate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 上级推广的比例,无上级时此值为0,有上级此值才可能不为0
  140. rebateAll2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 自己小组可提现总返利(包括审核中的) 单位是钻石且乘过比例的 在每局结束后增加
  141. rebateNow2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 自己小组(下级推广)的可提现返利
  142. verifyRebate2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 自己小组(下级推广)的审核的返利
  143. verifyDate2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 自己小组(下级推广) 审核日期
  144. rebateOut2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 自己小组(下级推广)的已提现返利
  145. agentRate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 额外返利的比例
  146. rebateOther: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 其他 额外返利
  147. rebateCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 返利合计 = 基础 + 额外 单位是钻石且乘过比例的
  148. rebateAll: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 可提现总返利(不包含额外)单位是钻石且乘过比例的
  149. rebateNow: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 可提现返利(已审核的自己基础的+额外的),
  150. rebateOut: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 已提现返利
  151. verifyDate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 审核日期
  152. verifyRebate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 审核的返利
  153. //以下字段是用来展示和计算额外返利使用的,目前没有额外比例所以去掉以下字段
  154. // dateGameTimes02: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 冲刺游戏次数
  155. // dateGameTimes03: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 冲刺游戏次数
  156. // dateGameTimes0: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 冲刺游戏次数
  157. // dateGameTimes42: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 4局游戏游戏次数
  158. // dateGameTimes43: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 4局游戏游戏次数
  159. // dateGameTimes4: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 4局游戏游戏次数
  160. // dateGameTimes82: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 8局游戏次数
  161. // dateGameTimes83: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 8局游戏次数
  162. // dateGameTimes8: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 8局游戏次数
  163. // dateGameTimes162: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 16局游戏次数
  164. // dateGameTimes163: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 16局游戏次数
  165. // dateGameTimes164: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 16局游戏次数
  166. // dateGameCost0: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 冲刺游戏消耗
  167. // dateGameCost4: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 4局游戏消耗
  168. // dateGameCost8: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 8局游戏消耗
  169. // dateGameCost16: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 16局游戏消耗
  170. registerTime: { type: Number, default: Date.now } // 注册时间
  171. }, { collection: 'agenter' });
  172. mdbgoose.model('Agenter', AgenterSchema);
  173. // 白名单人员信息
  174. var AgreeInfoSchema = new mdbgoose.Schema({
  175. _id: { type: String, default: '' }, // 标识 数据库中player(用户)数据表的主键(_id)
  176. playerId: { type: String, default: '' }, // 标识 数据库中player(用户)数据表的主键(_id)
  177. agreeState: { type: String, default: '' }, // 对该玩家的同意情况0:申请中,1:已同意,2:已拒绝,
  178. userId: { type: Number }, // 用户编号
  179. name: { type: String, default: '' }, // 代理名称
  180. headurl: { type: String, default: '' } // 玩家头像
  181. });
  182. // // 代理白名单信息
  183. var AgenterAgreeSchema = new mdbgoose.Schema({
  184. _id: { type: String }, // 标识 数据库中agenter(推广员)数据表的主键(_id)
  185. isOpenAgree: { type: String, default: '0' }, //推广员是否开启白名单验证0:未开启,1:已开启,
  186. infoList: [AgreeInfoSchema] // 实时战绩
  187. }, { collection: 'agenterAgree' });
  188. mdbgoose.model('AgenterAgree', AgenterAgreeSchema);
  189. // 返利记录
  190. var RebateRecordSchema = new mdbgoose.Schema({
  191. _id: { type: String }, // UUID
  192. agentId: { type: String, default: '' }, // 代理标识
  193. tableId: { type: String, default: '' }, // 房间标识
  194. rType: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 类型 1为锁定返利增加 2为提现 3为前日结算 4为小组锁定返利增加 5为小组前日结算 6为小组提现
  195. rCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 合计
  196. rOther: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 总奖励
  197. rAll: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 总返利
  198. rNow: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 可提取返利
  199. rOut: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 已经提取返利
  200. rSwap: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 返利金额
  201. rKouZuan: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 扣业绩钻石数量
  202. rDateSwap: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 日奖励
  203. rVerifyDate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 审核返利日期
  204. rVerifyRebate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 审核返利金额
  205. registerTime: { type: Number, default: Date.now } // 记录时间
  206. }, { collection: 'rebateRecord' });
  207. mdbgoose.model('RebateRecord', RebateRecordSchema);
  208. // 日期返利记录
  209. var DateRebateRecordSchema = new mdbgoose.Schema({
  210. _id: { type: String }, // UUID
  211. agentId: { type: String, default: '' }, // 代理标识
  212. verifyDate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 数据的日期
  213. verifyRebate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 返利金额(该日期自己的返利,单位是钻石,已乘过自己比例)
  214. dateAgentRate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日期当日额外返利的比例
  215. dateRebate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日期 额外返利金额
  216. dateRewardRate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 进行日结当日该推广自己的返利的比例
  217. parentaId: { type: String, default: '' }, // 代理上级的标识
  218. dateParentRate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 进行日结当日该推广上级的返利的比例
  219. parentRebate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日期 该推广上级的返利金额
  220. allGameCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日期该推广产生的总游戏消耗
  221. allGiftCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日期该推广产生的总礼物消耗
  222. allGameTimes1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日期该推广产生的总游戏1次数
  223. allGameTimes2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日期该推广产生的总游戏2次数
  224. allGameTimes3: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日期该推广产生的总游戏3次数
  225. allGameTimes4: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日期该推广产生的总游戏4次数
  226. allPlayeCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日期该推广活跃玩家个数
  227. // dateGameTimes02: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 冲刺游戏次数
  228. // dateGameTimes03: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 冲刺游戏次数
  229. // dateGameTimes0: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 冲刺游戏次数
  230. // dateGameTimes42: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 4局游戏游戏次数
  231. // dateGameTimes43: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 4局游戏游戏次数
  232. // dateGameTimes4: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 4局游戏游戏次数
  233. // dateGameTimes82: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 8局游戏次数
  234. // dateGameTimes83: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 8局游戏次数
  235. // dateGameTimes8: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 8局游戏次数
  236. // dateGameTimes162: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 16局游戏次数
  237. // dateGameTimes163: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 16局游戏次数
  238. // dateGameTimes16: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 16局游戏次数
  239. // dateGameCost0: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 冲刺游戏消耗
  240. // dateGameCost4: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 4局游戏消耗
  241. // dateGameCost8: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 8局游戏消耗
  242. // dateGameCost16: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 16局游戏消耗
  243. registerTime: { type: Number, default: Date.now } // 记录时间
  244. }, { collection: 'daterebateRecord' });
  245. mdbgoose.model('DateRebateRecord', DateRebateRecordSchema);
  246. // 玩家局数统计
  247. var PlayerCountSchema = new mdbgoose.Schema({
  248. _id: { type: String }, // UUID
  249. agentId: { type: String, default: '' }, // 代理标识
  250. playerId: { type: String, default: '' }, // 玩家标识
  251. userId: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩家号码
  252. name: { type: String, default: '' }, // 昵称
  253. date: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 日期
  254. gameCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 局数统计
  255. gameCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 游戏消耗
  256. agentRebate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 代理返利
  257. time: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} } // 记录时间
  258. }, { collection: 'playercount' });
  259. mdbgoose.model('PlayerCount', PlayerCountSchema);
  260. // // 日期推广信息记录
  261. // var DateAgentInfoSchema = new mdbgoose.Schema({
  262. // _id: { type: String }, // UUID
  263. // agentId: { type: String, default: '' }, // 代理标识
  264. // dataDate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 数据产生的日期
  265. // allCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日该推广总消耗 单位是钻石 在每局结束之后修改,增量=该局消耗
  266. // zjjcRebate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日该推广自己的基础返利 单位是钻石 在每局结束之后修改,增量=该局消耗*rewardRate
  267. // otherRebate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日该推广自己的额外返利 单位是钻石 在每局结束之后修改,增量=该局消耗*agentRate
  268. // parentRebate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日该推广贡献给自己上级的返利 单位是钻石 在每局结束之后修改,增量=该局消耗*parentRate
  269. // pCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该日该推广活跃人数
  270. // gameCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, //该日该推广局数统计 在每局结束之后修改,增量=1
  271. // registerTime: { type: Number, default: Date.now }// 记录时间
  272. // }, { collection: 'dateAgentInfo' });
  273. // mdbgoose.model('DateAgentInfo', DateAgentInfoSchema);
  274. // 提现申请
  275. var OutRebateSchema = new mdbgoose.Schema({
  276. _id: { type: String }, // UUID
  277. agentId: { type: String, default: '' }, // 代理标识
  278. outType: { type: Number, default: 1 }, // 提现类型:1为提取自己的,2为提取自己下级的
  279. outSwap: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 提现金额
  280. kouZuan: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 扣业绩钻石数量
  281. totalFee: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 发放金额
  282. payState: { type: Number, default: 1 }, // 支付状态 1为未支付 2人工支付 3支付成功
  283. registerTime: { type: Number, default: Date.now } // 记录时间
  284. }, { collection: 'outRebate' });
  285. mdbgoose.model('OutRebate', OutRebateSchema);
  286. // 申请推广员TL++10月16日
  287. var applyTGchema = new mdbgoose.Schema({
  288. _id: { type: String }, // 标识
  289. // userId: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩家号码
  290. applyType: { type: Number, default: 1 }, // 申请推广的类型,1:普通,通过大厅自主申请,2:金牌推广员邀请小组新成员申请
  291. parenteId:{ type: String, default: '' }, // 申请推广的上级id,目前只有applyType=2时此值为操作邀请的推广id
  292. tgName: { type: String, default: '' }, // 申请推广的姓名
  293. tgPhone: { type: String, default: '' }, // 申请推广的手机号码
  294. tgWXNumber: { type: String, default: '' },// 申请推广的微信号
  295. tgState: { type: Number, default: 1 }, // 未申请=1;正在审核=2;审核成功=3,审核失败=4
  296. registerTime: { type: Number, default: Date.now } // 日期
  297. }, { collection: 'applyTG' });
  298. mdbgoose.model('tgApply', applyTGchema);
  299. // 某一单款或玩法后台可配置维护中
  300. var WHZGameSchema = new mdbgoose.Schema({
  301. _id: { type: String, default: '' }, // 记录标识
  302. gameId: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 维护中的游戏id
  303. whAll: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 1:表示整个游戏的所有玩法均维护,0:部分玩法维护
  304. round: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 维护中的游戏局数
  305. playerCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 维护中的游戏人数
  306. other: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 维护中的游戏规则
  307. type: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 维护中的游戏type
  308. gameKind: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}} // 维护中的游戏gameKind
  309. });
  310. // 活动的达成条件和奖励信息列表
  311. // var ActiveReachAndRewardInfoSchema = new mdbgoose.Schema({
  312. // _id: { type: String, default: '' }, // 记录标识
  313. // reachType: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 达成条件类型1:邀新,2:完成游戏局数,3:充值,4:回归
  314. // reachCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 达成条件所需数量
  315. // reachType: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 奖励类型1:钻石,
  316. // reachType: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}} // 达成之后奖励的数量
  317. // });
  318. // // 活动配置信息
  319. // var ActiveSchema = new mdbgoose.Schema({
  320. // _id: { type: String, default: '' }, // 记录标识
  321. // type: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 1:邀新送钻,2:累充送钻,3:组局领钻,4回归福利
  322. // des: { type: String, default: '' }, // 活动描述
  323. // open: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 0关闭,1:开启
  324. // startTime: { type: Number, default: Date.now }, // 开始日期
  325. // endTime: { type: Number, default: Date.now }, // 结束日期
  326. // reachAndRewardInfo: [ActiveReachAndRewardInfoSchema]// 该活动的达成条件和奖励信息列表
  327. // });
  328. // 是否维护
  329. var WHstatechema = new mdbgoose.Schema({
  330. _id: { type: String, default: 'wh'}, // UUID
  331. stateWH: {type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 维护状态0为正常1为维护中
  332. whTip: { type: String, default: '游戏正在维护,请稍后创建房间' }, // 维护提示
  333. rebaterate: { type: Number, default: 60}, // 返利比例
  334. shareGive: { type: Number, default: 50}, // 分享赠钻
  335. yxndlbTime: {type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 游戏内大喇叭(跑马灯)通知间隔时间
  336. yxndlbTip: { type: String, default: '' }, // 游戏内大喇叭(跑马灯)通知内容
  337. whzGame: [WHZGameSchema] // 某一单款或玩法后台可配置维护中
  338. }, { collection: 'whstate' });
  339. mdbgoose.model('WHstate', WHstatechema);
  340. // 不能在一起(同一桌)游戏的玩家信息 TL++
  341. var NotGameTogtherSchema = new mdbgoose.Schema({
  342. _id: { type: String }, // UUID
  343. uidList: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});},get: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, //不能在同一桌的玩家userid列表
  344. pidList: [String], //不能在同一桌的玩家_id列表
  345. }, { collection: 'notGameTogther' });
  346. mdbgoose.model('NotGameTogther', NotGameTogtherSchema);
  347. // 每日峰值统计 TL++
  348. var EverytopSchema = new mdbgoose.Schema({
  349. _id: { type: String }, // UUID
  350. daytime: { type: Number, default: Date.now }, // 写入时间
  351. onlineList: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});},get: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 整点在线人数列表
  352. onlineTop: { type: Number , default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 今日在线峰值
  353. onlineTop_t: { type: Number, default: Date.now }, // 今日在线峰值出现时间
  354. registCount: { type: Number , default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 今日注册的用户数量
  355. loginCount: { type: Number , default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 今日登录过的用户数量
  356. payCount: { type: Number , default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 今日充值总额
  357. outRebateCount: { type: Number , default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}} // 今日提现总额
  358. }, { collection: 'everytop' });
  359. mdbgoose.model('EveryTop', EverytopSchema);
  360. // 记牌器购买信息
  361. var JiPaiQiSchema = new mdbgoose.Schema({
  362. _id: { type: String }, // 标识
  363. userId: { type: Number }, // 用户编号
  364. times0: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 免费试用次数
  365. times1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 7天卡购买次数
  366. times2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 30天卡购买次数
  367. jpqdqsj: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 记牌器到期时间
  368. lastBuyTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 最近试用或购买时间
  369. registerTime: { type: Number, default: Date.now } // 首次试用或购买时间
  370. }, { collection: 'jipaiqi' });
  371. mdbgoose.model('JiPaiQi', JiPaiQiSchema);
  372. };