player.js 47 KB

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