game.js 54 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
  1. 'use strict';
  2. module.exports = function (app) {
  3. var mdbgoose = app.memdb.goose;
  4. var Types = mdbgoose.Schema.Types;
  5. // // ts++房间创建记录
  6. // var CTableRecordSchema = new mdbgoose.Schema({
  7. // _id: { type: String }, // 房间标识
  8. // playerId: { type: String, default: '' }, // 玩家标识
  9. // registerTime: { type: Number, default: Date.now } // 记录时间
  10. // }, { collection: 'ctableRecord' });
  11. // mdbgoose.model('CTableRecord', CTableRecordSchema);
  12. // 玩家战绩
  13. var UserSchema = new mdbgoose.Schema({
  14. _id: { type: String }, // 玩家标识
  15. chairId: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 椅子号
  16. userId: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 玩家号码
  17. name: { type: String, default: ''}, // 昵称
  18. sex: { type: String, default: ''}, // 性别
  19. headurl: { type: String, default: ''}, // 头像
  20. over: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));}}, // 游戏局数
  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. //gameCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 游戏消耗
  23. //giftCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 礼物消耗
  24. //diamond: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} } // 最新钻石
  25. //extend: { type: Types.Mixed, default: {} } // 扩展
  26. });
  27. // 实时战绩
  28. var SSZJSchema = new mdbgoose.Schema({
  29. _id: { type: String }, // 子局数
  30. sszjScore: [String], // 本局成绩
  31. sszjAllScore: [String], // 总成绩
  32. banker: { type: Number, default: -1 }, // 庄家
  33. hu: { type: Number, default: -1 }, // 胡
  34. pao: { type: Number, default: -1 } // 放炮
  35. //fName: { type: String, default: '' } // 实时战绩文件
  36. });
  37. // 奉化麻将(10007)
  38. var FHMJTablesSchema = new mdbgoose.Schema({
  39. _id: { type: String }, // ts++标识
  40. gameId: { type: Number , default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 游戏id,10006为长沙麻将,10007为红中麻将,10008为跑得快
  41. tableNo: { type: String , default: ''}, // ts++房间号
  42. ownerId: { type: String, default: '' }, // 房主标识
  43. agentId: { type: String, default: '' }, // 代理ID
  44. type: { type: Number , default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 类型
  45. kind: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩法
  46. other: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 其他玩法
  47. playerCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 游戏人数
  48. round: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 总局数
  49. over: { type: Number , default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 游戏局数
  50. ctime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 创建时间
  51. stime: { type: Number , default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 开始时间
  52. time: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 结束时间
  53. endMode: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 结束模式
  54. gameCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 游戏消耗
  55. giftCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 礼物消耗
  56. agentRebate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 代理返利
  57. sszjFile: [String], // 实时战绩文件
  58. sszj: [SSZJSchema], // 实时战绩
  59. users: [UserSchema] // 玩家
  60. }, { collection: 'fhmjtables' });
  61. mdbgoose.model('FHMJTables', FHMJTablesSchema);
  62. //ts++ 游戏记录 仅在创建房间时候添加,仅用于判断近期内某个玩家是否创建过多的房间
  63. var GameTableSchema = new mdbgoose.Schema({
  64. _id: { type: String }, // ts++标识
  65. tableNo: { type: String , default: ''}, // ts++房间号
  66. ownerId: { type: String, default: '' }, // 房主标识
  67. agentId: { type: String, default: '' }, // 代理ID
  68. type: { type: Number , default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 类型
  69. kind: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩法
  70. other: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 其他玩法
  71. playerCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 游戏人数
  72. round: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 总局数
  73. over: { type: Number , default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 游戏局数
  74. ctime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 创建时间
  75. // stime: { type: Number , default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 开始时间
  76. // time: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 结束时间
  77. endMode: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 结束模式
  78. // gameCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 游戏消耗
  79. // agentRebate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 代理返利
  80. }, { collection: 'gametable' });
  81. mdbgoose.model('GameTable', GameTableSchema);
  82. var SXGamerSchema = new mdbgoose.Schema({
  83. _id: { type: String }, // 玩家ID+时期[20190707]
  84. playerId: { type: String, default: '' }, // 玩家标识
  85. gameDate: { type: String, default: '' }, // 日期
  86. ttCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 总场数
  87. noCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 平局数
  88. winCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 胜场数
  89. runCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 逃跑数
  90. history: [String] // 历史记录
  91. //pjhffileName: [String] //ts-- 牌局回放记录的文件名
  92. }, { collection: 'sxgamer' });
  93. mdbgoose.model('SXGamer', SXGamerSchema);
  94. // 全局记录
  95. var RecordSchema = new mdbgoose.Schema({
  96. _id: { type: String }, // UUID
  97. gameId: { type: Number }, // 游戏ID
  98. tableId: { type: String }, // 房间号
  99. type: { type: Number }, // 类型
  100. round: { type: Number }, // 局数
  101. ctime: { type: Number }, // 创建时间
  102. stime: { type: Number }, // 开始时间
  103. time: { type: Number }, // 记录时间
  104. users: [UserSchema] // 玩家
  105. }, { collection: 'records' });
  106. mdbgoose.model('Record', RecordSchema);
  107. ////下面是水果机相关的数据
  108. // 水果机奖池
  109. var SGJJCchema = new mdbgoose.Schema({
  110. _id: { type: String, default: ''}, // 主键
  111. pools: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 奖池列表(单位:1/100钻石)(奖池分为几个等级,数组就有几个元素)
  112. cspools: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 初始奖池列表(单位:1/100钻石)(奖池分为几个等级,数组就有几个元素)
  113. levels: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 挡位数组(单位:钻石)(奖池分为几个等级,数组就有几个元素)
  114. kouchus: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 扣除列表(单位:1/100钻石)(奖池分为几个等级,数组就有几个元素)
  115. topLimits1: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的上限1调控数值(奖池分为几个等级,数组就有几个元素)
  116. topLimits2: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的上限2调控数值(奖池分为几个等级,数组就有几个元素)
  117. topLimits3: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的上限3调控数值(奖池分为几个等级,数组就有几个元素)
  118. lowLimits1: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的下限1调控数值(奖池分为几个等级,数组就有几个元素)
  119. lowLimits2: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的下限2调控数值(奖池分为几个等级,数组就有几个元素)
  120. lowLimits3: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的下限3调控数值(奖池分为几个等级,数组就有几个元素)
  121. paiTopRate1: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的牌上限1调控比例(奖池分为几个等级,数组就有几个元素)
  122. paiTopRate2: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的牌上限2调控比例(奖池分为几个等级,数组就有几个元素)
  123. paiTopRate3: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的牌上限3调控比例(奖池分为几个等级,数组就有几个元素)
  124. paiLowRate1: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的牌下限1调控比例(奖池分为几个等级,数组就有几个元素)
  125. paiLowRate2: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的牌下限2调控比例(奖池分为几个等级,数组就有几个元素)
  126. paiLowRate3: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的牌下限3调控比例(奖池分为几个等级,数组就有几个元素)
  127. bsTopRate1: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的倍数上限1调控比例(奖池分为几个等级,数组就有几个元素)
  128. bsTopRate2: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的倍数上限2调控比例(奖池分为几个等级,数组就有几个元素)
  129. bsTopRate3: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的倍数上限3调控比例(奖池分为几个等级,数组就有几个元素)
  130. bsLowRate1: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的倍数下限1调控比例(奖池分为几个等级,数组就有几个元素)
  131. bsLowRate2: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的倍数下限2调控比例(奖池分为几个等级,数组就有几个元素)
  132. bsLowRate3: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 各个挡位对应的倍数下限3调控比例(奖池分为几个等级,数组就有几个元素)
  133. ydxpools: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小奖池列表(单位:1/100钻石)(奖池分为几个等级,数组就有几个元素)
  134. ydxcspools: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小初始奖池列表(单位:1/100钻石)(奖池分为几个等级,数组就有几个元素)
  135. ydxlevels: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小挡位数组(单位:钻石)(奖池分为几个等级,数组就有几个元素)
  136. ydxkouchus: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小扣除列表(单位:1/100钻石)(奖池分为几个等级,数组就有几个元素)
  137. ydxtopLimits1: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小各个挡位对应的上限1调控数值(奖池分为几个等级,数组就有几个元素)
  138. ydxtopLimits2: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小各个挡位对应的上限2调控数值(奖池分为几个等级,数组就有几个元素)
  139. ydxtopLimits3: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小各个挡位对应的上限3调控数值(奖池分为几个等级,数组就有几个元素)
  140. ydxlowLimits1: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小各个挡位对应的下限1调控数值(奖池分为几个等级,数组就有几个元素)
  141. ydxlowLimits2: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小各个挡位对应的下限2调控数值(奖池分为几个等级,数组就有几个元素)
  142. ydxlowLimits3: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小各个挡位对应的下限3调控数值(奖池分为几个等级,数组就有几个元素)
  143. ydxTopRate1: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小各个挡位对应的牌上限1调控比例(奖池分为几个等级,数组就有几个元素)
  144. ydxTopRate2: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小各个挡位对应的牌上限2调控比例(奖池分为几个等级,数组就有几个元素)
  145. ydxTopRate3: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小各个挡位对应的牌上限3调控比例(奖池分为几个等级,数组就有几个元素)
  146. ydxLowRate1: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小各个挡位对应的牌下限1调控比例(奖池分为几个等级,数组就有几个元素)
  147. ydxLowRate2: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小各个挡位对应的牌下限2调控比例(奖池分为几个等级,数组就有几个元素)
  148. ydxLowRate3: {type: [Number],set: function(arr) {if (!Array.isArray(arr)) return arr;return arr.map(num => {return Number(Number(num).toFixed(2));});}}, // 押大小各个挡位对应的牌下限3调控比例(奖池分为几个等级,数组就有几个元素)
  149. }, { collection: 'sgjjc' });
  150. mdbgoose.model('SGJJC', SGJJCchema);
  151. // 划分战绩
  152. var HUAFENchema = new mdbgoose.Schema({
  153. yddx: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 本次划分玩家押的大小,1代表押小 = 2代表押大
  154. hfxz: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 本次划分的下注
  155. hfjg: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 本次划分的发牌结果:区间[1,12]
  156. bcyd: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 本次划分赢的
  157. ksfs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 本次划分开始时的钻石(下注之前的)
  158. jsfs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 本次划分结束时的钻石(jsfs = ksfs-hfxz+bcyd)
  159. time: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 本条划分记录时间
  160. });
  161. // 水果机战绩
  162. var SGJTablesSchema = new mdbgoose.Schema({
  163. _id: { type: String }, // ts++标识
  164. tableNo: { type: String , default: ''}, // ts++房间号
  165. ownerId: { type: String, default: '' }, // 玩家标识
  166. agentId: { type: String, default: '' }, // 代理ID
  167. over: { type: Number , default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 游戏局数
  168. time: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 结束时间
  169. gameCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 游戏消耗(本局下注总额)
  170. giftCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 礼物消耗
  171. agentRebate: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 代理返利
  172. yazhuList: {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));});}}, // 本局押注列表
  173. resultList: {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));});}}, // 本局结果列表
  174. winsList: {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));});}}, // 本局结果赢的列表
  175. win: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 本局结果赢得分数(不包含下注的即winsList元素总和)
  176. bsIndex: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //本次发牌对应的倍数下标["10/20","15/30","20/40"];
  177. huafenList: [HUAFENchema], // 本局划分数据列表
  178. scoreBefore: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 本局开始前的分数(钻石)
  179. scoreEnd: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 本局结束后的分数(=scoreBefore-押注总额+win)
  180. }, { collection: 'sgjtables' });
  181. mdbgoose.model('SGJTables', SGJTablesSchema);
  182. var SGJUserTongjiSchema = new mdbgoose.Schema({
  183. _id: { type: String }, // ts++标识
  184. userId: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} },
  185. usdt: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 当前身上usdt
  186. sgjwinlose: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //水果机盈亏
  187. taskquanget: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //获得的奖券
  188. taskquanlose: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //奖券消费
  189. nowtaskquan:{ type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //当前奖券
  190. todaytime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //统计时间
  191. taskGetU: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //任务获得的U
  192. rechargeusdt: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //充值获得的U
  193. withdrawusdt: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //提现的U
  194. feeconfigusdt: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //提现每次3U的手续费
  195. feeusdt: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //提现第三方扣的手续费
  196. }, { collection: 'sgjusertongji' });
  197. mdbgoose.model('SGJUserTongji', SGJUserTongjiSchema);
  198. //水果机玩家信息
  199. var SGJUserSchema = new mdbgoose.Schema({
  200. _id: { type: String }, // 标识
  201. userId: { type: Number }, // 号码
  202. cost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 消费
  203. win: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 总赢得分
  204. zfbAcc: { type: String , default: ''}, // 支付宝账号
  205. zfbName: { type: String , default: ''}, // 支付宝姓名
  206. zfbBindTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩家支付宝信息正确性验证成功时间(0时表示验证未通过)
  207. gameCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 总小局次数
  208. wingames: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 总赢的小局次数
  209. taskReward: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 已获得的任务奖励(RMB)在zfb到账之后增加
  210. jxzReward: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 进行中的任务奖励(RMB)在领取任务时增加,在zfb到账之后减少
  211. ylzsReward: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 已领取的任务奖励(钻石)
  212. taskQuan: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 任务券(用于领任务)
  213. yazhuList: {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));});}}, // 上局押注列表
  214. // [大苹果个数,大橙子个数,大芒果个数,大铃铛个数,大西瓜个数,大星星个数,大七七个数,大王王个数,幸运运个数,
  215. // 小苹果个数,小橙子个数,小芒果个数,小铃铛个数,小西瓜个数,小星星个数,小七七个数,小王王个数]
  216. getList: {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));});}}, // 获得的列表(用于计算任务是否完成)
  217. getTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 获得列表更新的时间
  218. // 今日可补充带入数量(例如玩家今天第一次进游戏时身上只有2w钻石,玩一会儿之后今日带入剩了1w了,
  219. // 出去充值之后身上钻石变多之后那今日的可带入应该为上次剩的1w+刚刚充值之后的最多9w)
  220. jrkbcdrs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 今日可补充带入数量
  221. drCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 带入数量(钻石)(1分=10钻石,每日上限1w分)
  222. drTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 带入时间
  223. jzjrldzcz: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩家截至今日零点总充值数量(分),用于判断任务
  224. jzjrldzczjlsj: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩家截至今日零点总充值记录对应的时间戳,用于判断jzjrldzcz是否需要更新
  225. registerTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩家首次进入水果游戏时间
  226. lastJoinTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩家上次进入果游戏时间(留存人数)
  227. lastPlayTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩家上次玩水果游戏时间(用于统计游戏人数)
  228. lastYDXTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} } // 玩家上次水果押大小时间(用于统计押大小人数)
  229. }, { collection: 'sgjuser' });
  230. mdbgoose.model('SGJUser', SGJUserSchema);
  231. //水果玩家任务信息
  232. var SGJTaskSchema = new mdbgoose.Schema({
  233. _id: { type: String }, // 标识
  234. playerId: { type: String }, // 玩家标识
  235. userId: { type: Number }, // 号码
  236. des: { type: String }, // 玩家标识
  237. cost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 消费
  238. reachs: {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));});}}, //达成该条任务所需的条件列表[1(1号牌),2(2号牌)]]
  239. reachC: {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));});}}, //达成该条任务所需的个数列表[reachs[0]出现次数,reachs[1]出现次数]
  240. rewardt: { 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:RMB(分)
  241. rewards: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该条任务达成之后的奖品数量
  242. state: { 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:已发奖,
  243. lqTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //领取任务时间
  244. wcTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //完成时间
  245. fjTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //发奖时间
  246. }, { collection: 'sgjtask' });
  247. mdbgoose.model('SGJTask', SGJTaskSchema);
  248. // 水果机玩家今日任务池信息item
  249. var SGJRWCItemchema = new mdbgoose.Schema({
  250. index: { type: Number, default: -1 }, //该条任务编号
  251. des: { type: String, default: "" }, // 任务描述
  252. times: { type: Number, default: 1 }, //该条任务今日可领总次数
  253. cost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该条任务需要的消耗
  254. reachs: {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));});}}, //达成该条任务所需的条件列表[1(1号牌),2(2号牌)]]
  255. reachC: {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));});}}, //达成该条任务所需的个数列表[reachs[0]出现次数,reachs[1]出现次数]
  256. rewardt: { 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:RMB(分)
  257. rewards: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该条任务达成之后的奖品数量
  258. });
  259. //水果玩家今日任务池信息(为了实现每个玩家每天的任务随机)
  260. var SGJWJJRRWCSchema = new mdbgoose.Schema({
  261. _id: { type: String }, // 标识,玩家的_id
  262. time: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //任务池对应的时间
  263. rwcList: [SGJRWCItemchema] // 该玩家对应时间的任务池列表
  264. }, { collection: 'sgjwjjrrwc' });
  265. mdbgoose.model('SGJWJJRRWC', SGJWJJRRWCSchema);
  266. //水果总统计信息
  267. var SGJTongjiSchema = new mdbgoose.Schema({
  268. _id: { type: String, default: 'sgztj'}, // 主键
  269. allCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家总下注
  270. allwin: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家总赢得
  271. allxh: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家总消耗(总下注-总赢得)
  272. zqqCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家游戏转圈总下注
  273. zqqwin: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家游戏转圈总赢得
  274. zqqxh: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家游戏转圈总消耗(总下注-总赢得)
  275. ydxCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家押大小总下注
  276. ydxwin: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家押大小总赢得
  277. ydxxh: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家押大小总消耗(总下注-总赢得)
  278. allrwq: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有奖券产生总量
  279. rwxhjq1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //钻石任务消耗奖券总量(领任务时记录)
  280. rwxhjq2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //RMB任务消耗奖券总量(领任务时记录)
  281. rwxhjq3: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //备用任务1消耗奖券总量(领任务时记录)
  282. rwxhjq4: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //备用任务2消耗奖券总量(领任务时记录)
  283. rwdcze1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //钻石任务兑出总额(领奖时记录)
  284. rwdcze2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //RMB(分)任务兑出总额(领奖时记录)
  285. rwdcze3: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //备用任务兑出总额(领奖时记录)
  286. rwdcze4: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //备用任务兑出总额(领奖时记录)
  287. // 下面这两个数据是长度为8的数组,分别代表[苹果,橙子,芒果,铃铛,西瓜,星星,七七,王王]
  288. allyzze: {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));});}}, //总押注总额列表
  289. allydze: {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));});}}, //总赢得总额列表(不包含特殊项)
  290. // 下面这数据是长度为16的数组,分别代表[大苹果,大橙子,大芒果,大铃铛,大西瓜,大星星,大七七,大王王,
  291. //小苹果,小橙子,小芒果,小铃铛,小西瓜,小星星,小七七,小王王]
  292. gxzydze: {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));});}}, //各项总赢得总额列表(不包含特殊项)
  293. // 下面这数据是长度为17的数组,分别代表[大苹果,大橙子,大芒果,大铃铛,大西瓜,大星星,大七七,大王王,
  294. //幸运运,小苹果,小橙子,小芒果,小铃铛,小西瓜,小星星,小七七,小王王]
  295. gxcxzcs: {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));});}}, //各项出现总次数列表(不包含特殊项)
  296. // 下面这两个数据是长度为3的数组,分别代表[小三元,大三元,大四喜]
  297. tsxzydze: {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));});}}, //特殊项总赢得总额列表
  298. tsxcxzcs: {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));});}}, //特殊项出现总次数列表
  299. errstr: { type: String, default: ''}, //错误或者异常记录
  300. }, { collection: 'sgjtongji' });
  301. mdbgoose.model('SGJTongji', SGJTongjiSchema);
  302. //水果每日统计信息
  303. var SGJMRTJSchema = new mdbgoose.Schema({
  304. _id: { type: String }, // 标识
  305. zqqCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家游戏转圈总下注
  306. zqqwin: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家游戏转圈总赢得
  307. zqqxh: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家游戏转圈总消耗(总下注-总赢得)
  308. ydxCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家押大小总下注
  309. ydxwin: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家押大小总赢得
  310. ydxxh: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家押大小总消耗(总下注-总赢得)
  311. ydxzcs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日押大小总次数
  312. allrwq: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有奖券产生总量
  313. rwxhjq1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //钻石任务消耗奖券总量(领任务时记录)
  314. rwxhjq2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //RMB任务消耗奖券总量(领任务时记录)
  315. rwdcze1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //钻石任务兑出总额(领奖时记录)
  316. rwdcze2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //RMB(分)任务兑出总额(领奖时记录)
  317. // yazhuList: {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));});}}, // 本局押注列表
  318. registerTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }// 记录时间(该日0点时间戳)
  319. }, { collection: 'sgjmrtj' });
  320. mdbgoose.model('SGJMRTJ', SGJMRTJSchema);
  321. //水果每日统计信息
  322. var SGJMRRSSchema = new mdbgoose.Schema({
  323. _id: { type: String }, // 标识(日期)
  324. grzcrs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日注册人数(按照进入时间算)
  325. xzyxrs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日新增有效人数(玩过游戏的算为有效)
  326. grzqrs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日转圈人数
  327. ydxzrs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日押大小总人数
  328. grzqcs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日转圈次数
  329. ydxzcs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日押大小总次数
  330. lcrs1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日的次日留存人数(按照进入算)
  331. lcrs7: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日的7日留存人数(按照进入算)
  332. time: { type: Number, default: Date.now },// 精确时间
  333. registerTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }// 记录时间(该日0点时间戳)
  334. }, { collection: 'sgjmrrs' });
  335. mdbgoose.model('SGJMRRS', SGJMRRSSchema);
  336. //水果机排行榜信息
  337. var SGJPaiHangSchema = new mdbgoose.Schema({
  338. _id: { type: String }, // 标识
  339. name: { type: String, default: '' }, // 昵称
  340. headurl: { type: String, default: '' }, // 头像
  341. userId: { type: Number }, // 号码
  342. cost1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 最近一天总下注
  343. quan1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 最近一天总得奖券
  344. time1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 最近游戏那天的0点时间戳
  345. cost2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 次近一天总下注
  346. quan2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 次近一天总得奖券
  347. time2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 次近游戏那天的0点时间戳
  348. registerTime: { type: Number, default: Date.now },// 记录时间
  349. }, { collection: 'sgjpaihang' });
  350. mdbgoose.model('SGJPaiHang', SGJPaiHangSchema);
  351. //水果全局配置信息
  352. var SGJConfigSchema = new mdbgoose.Schema({
  353. _id: { type: String, default: 'sgconfigs'}, // 主键
  354. phbyfjlrq: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //排行榜已发奖励的日期(0点时间戳)
  355. istelegram: { type: Number, default: 1 }, //排行榜已发奖励的日期(0点时间戳)
  356. withdrawfee: { type: Number, default: 3 }, //排行榜已发奖励的日期(0点时间戳)
  357. withdrawlowlimit: { type: Number, default: 10 }, //排行榜已发奖励的日期(0点时间戳)
  358. }, { collection: 'sgjconfig' });
  359. mdbgoose.model('SGJConfig', SGJConfigSchema);
  360. };