game.js 54 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403
  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. houtaiU: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //奖券消费
  190. nowtaskquan:{ type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //当前奖券
  191. todaytime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //统计时间
  192. taskGetU: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //任务获得的U
  193. rechargeusdt: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //充值获得的U
  194. withdrawusdt: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //提现的U
  195. feeconfigusdt: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //提现每次3U的手续费
  196. feeusdt: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //提现第三方扣的手续费
  197. }, { collection: 'sgjusertongji' });
  198. mdbgoose.model('SGJUserTongji', SGJUserTongjiSchema);
  199. //水果机玩家信息
  200. var SGJUserSchema = new mdbgoose.Schema({
  201. _id: { type: String }, // 标识
  202. userId: { type: Number }, // 号码
  203. cost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 消费
  204. win: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 总赢得分
  205. zfbAcc: { type: String , default: ''}, // 支付宝账号
  206. zfbName: { type: String , default: ''}, // 支付宝姓名
  207. zfbBindTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩家支付宝信息正确性验证成功时间(0时表示验证未通过)
  208. gameCount: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 总小局次数
  209. wingames: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 总赢的小局次数
  210. 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到账之后增加
  211. 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到账之后减少
  212. ylzsReward: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 已领取的任务奖励(钻石)
  213. taskQuan: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 任务券(用于领任务)
  214. 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));});}}, // 上局押注列表
  215. // [大苹果个数,大橙子个数,大芒果个数,大铃铛个数,大西瓜个数,大星星个数,大七七个数,大王王个数,幸运运个数,
  216. // 小苹果个数,小橙子个数,小芒果个数,小铃铛个数,小西瓜个数,小星星个数,小七七个数,小王王个数]
  217. 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));});}}, // 获得的列表(用于计算任务是否完成)
  218. getTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 获得列表更新的时间
  219. // 今日可补充带入数量(例如玩家今天第一次进游戏时身上只有2w钻石,玩一会儿之后今日带入剩了1w了,
  220. // 出去充值之后身上钻石变多之后那今日的可带入应该为上次剩的1w+刚刚充值之后的最多9w)
  221. jrkbcdrs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 今日可补充带入数量
  222. 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分)
  223. drTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 带入时间
  224. jzjrldzcz: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩家截至今日零点总充值数量(分),用于判断任务
  225. jzjrldzczjlsj: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩家截至今日零点总充值记录对应的时间戳,用于判断jzjrldzcz是否需要更新
  226. registerTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩家首次进入水果游戏时间
  227. lastJoinTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩家上次进入果游戏时间(留存人数)
  228. lastPlayTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 玩家上次玩水果游戏时间(用于统计游戏人数)
  229. lastYDXTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} } // 玩家上次水果押大小时间(用于统计押大小人数)
  230. }, { collection: 'sgjuser' });
  231. mdbgoose.model('SGJUser', SGJUserSchema);
  232. //水果玩家任务信息
  233. var SGJTaskSchema = new mdbgoose.Schema({
  234. _id: { type: String }, // 标识
  235. playerId: { type: String }, // 玩家标识
  236. userId: { type: Number }, // 号码
  237. des: { type: String }, // 玩家标识
  238. cost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 消费
  239. 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号牌)]]
  240. 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]出现次数]
  241. 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(分)
  242. rewards: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该条任务达成之后的奖品数量
  243. 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:已发奖,
  244. lqTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //领取任务时间
  245. wcTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //完成时间
  246. fjTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //发奖时间
  247. }, { collection: 'sgjtask' });
  248. mdbgoose.model('SGJTask', SGJTaskSchema);
  249. // 水果机玩家今日任务池信息item
  250. var SGJRWCItemchema = new mdbgoose.Schema({
  251. index: { type: Number, default: -1 }, //该条任务编号
  252. des: { type: String, default: "" }, // 任务描述
  253. times: { type: Number, default: 1 }, //该条任务今日可领总次数
  254. cost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 该条任务需要的消耗
  255. 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号牌)]]
  256. 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]出现次数]
  257. 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(分)
  258. rewards: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该条任务达成之后的奖品数量
  259. });
  260. //水果玩家今日任务池信息(为了实现每个玩家每天的任务随机)
  261. var SGJWJJRRWCSchema = new mdbgoose.Schema({
  262. _id: { type: String }, // 标识,玩家的_id
  263. time: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //任务池对应的时间
  264. rwcList: [SGJRWCItemchema] // 该玩家对应时间的任务池列表
  265. }, { collection: 'sgjwjjrrwc' });
  266. mdbgoose.model('SGJWJJRRWC', SGJWJJRRWCSchema);
  267. //水果总统计信息
  268. var SGJTongjiSchema = new mdbgoose.Schema({
  269. _id: { type: String, default: 'sgztj'}, // 主键
  270. allCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家总下注
  271. allwin: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家总赢得
  272. allxh: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家总消耗(总下注-总赢得)
  273. zqqCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家游戏转圈总下注
  274. zqqwin: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家游戏转圈总赢得
  275. zqqxh: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家游戏转圈总消耗(总下注-总赢得)
  276. ydxCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家押大小总下注
  277. ydxwin: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家押大小总赢得
  278. ydxxh: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家押大小总消耗(总下注-总赢得)
  279. allrwq: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有奖券产生总量
  280. rwxhjq1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //钻石任务消耗奖券总量(领任务时记录)
  281. rwxhjq2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //RMB任务消耗奖券总量(领任务时记录)
  282. rwxhjq3: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //备用任务1消耗奖券总量(领任务时记录)
  283. rwxhjq4: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //备用任务2消耗奖券总量(领任务时记录)
  284. rwdcze1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //钻石任务兑出总额(领奖时记录)
  285. rwdcze2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //RMB(分)任务兑出总额(领奖时记录)
  286. rwdcze3: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //备用任务兑出总额(领奖时记录)
  287. rwdcze4: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //备用任务兑出总额(领奖时记录)
  288. // 下面这两个数据是长度为8的数组,分别代表[苹果,橙子,芒果,铃铛,西瓜,星星,七七,王王]
  289. 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));});}}, //总押注总额列表
  290. 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));});}}, //总赢得总额列表(不包含特殊项)
  291. // 下面这数据是长度为16的数组,分别代表[大苹果,大橙子,大芒果,大铃铛,大西瓜,大星星,大七七,大王王,
  292. //小苹果,小橙子,小芒果,小铃铛,小西瓜,小星星,小七七,小王王]
  293. 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));});}}, //各项总赢得总额列表(不包含特殊项)
  294. // 下面这数据是长度为17的数组,分别代表[大苹果,大橙子,大芒果,大铃铛,大西瓜,大星星,大七七,大王王,
  295. //幸运运,小苹果,小橙子,小芒果,小铃铛,小西瓜,小星星,小七七,小王王]
  296. 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));});}}, //各项出现总次数列表(不包含特殊项)
  297. // 下面这两个数据是长度为3的数组,分别代表[小三元,大三元,大四喜]
  298. 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));});}}, //特殊项总赢得总额列表
  299. 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));});}}, //特殊项出现总次数列表
  300. errstr: { type: String, default: ''}, //错误或者异常记录
  301. }, { collection: 'sgjtongji' });
  302. mdbgoose.model('SGJTongji', SGJTongjiSchema);
  303. //水果每日统计信息
  304. var SGJMRTJSchema = new mdbgoose.Schema({
  305. _id: { type: String }, // 标识
  306. zqqCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家游戏转圈总下注
  307. zqqwin: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家游戏转圈总赢得
  308. zqqxh: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家游戏转圈总消耗(总下注-总赢得)
  309. ydxCost: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家押大小总下注
  310. ydxwin: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家押大小总赢得
  311. ydxxh: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有玩家押大小总消耗(总下注-总赢得)
  312. ydxzcs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日押大小总次数
  313. allrwq: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //所有奖券产生总量
  314. rwxhjq1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //钻石任务消耗奖券总量(领任务时记录)
  315. rwxhjq2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //RMB任务消耗奖券总量(领任务时记录)
  316. rwdcze1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //钻石任务兑出总额(领奖时记录)
  317. rwdcze2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //RMB(分)任务兑出总额(领奖时记录)
  318. // 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));});}}, // 本局押注列表
  319. registerTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }// 记录时间(该日0点时间戳)
  320. }, { collection: 'sgjmrtj' });
  321. mdbgoose.model('SGJMRTJ', SGJMRTJSchema);
  322. //水果每日统计信息
  323. var SGJMRRSSchema = new mdbgoose.Schema({
  324. _id: { type: String }, // 标识(日期)
  325. grzcrs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日注册人数(按照进入时间算)
  326. xzyxrs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日新增有效人数(玩过游戏的算为有效)
  327. grzqrs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日转圈人数
  328. ydxzrs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日押大小总人数
  329. grzqcs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日转圈次数
  330. ydxzcs: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日押大小总次数
  331. lcrs1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日的次日留存人数(按照进入算)
  332. lcrs7: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //该日的7日留存人数(按照进入算)
  333. time: { type: Number, default: Date.now },// 精确时间
  334. registerTime: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }// 记录时间(该日0点时间戳)
  335. }, { collection: 'sgjmrrs' });
  336. mdbgoose.model('SGJMRRS', SGJMRRSSchema);
  337. //水果机排行榜信息
  338. var SGJPaiHangSchema = new mdbgoose.Schema({
  339. _id: { type: String }, // 标识
  340. name: { type: String, default: '' }, // 昵称
  341. headurl: { type: String, default: '' }, // 头像
  342. userId: { type: Number }, // 号码
  343. cost1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 最近一天总下注
  344. quan1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 最近一天总得奖券
  345. time1: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 最近游戏那天的0点时间戳
  346. cost2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 次近一天总下注
  347. quan2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 次近一天总得奖券
  348. time2: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, // 次近游戏那天的0点时间戳
  349. registerTime: { type: Number, default: Date.now },// 记录时间
  350. }, { collection: 'sgjpaihang' });
  351. mdbgoose.model('SGJPaiHang', SGJPaiHangSchema);
  352. //水果全局配置信息
  353. var SGJConfigSchema = new mdbgoose.Schema({
  354. _id: { type: String, default: 'sgconfigs'}, // 主键
  355. phbyfjlrq: { type: Number, default: 0, set: function(value) {return Number(Number(value).toFixed(2));}, get: function(value) {return Number(Number(value).toFixed(2));} }, //排行榜已发奖励的日期(0点时间戳)
  356. istelegram: { type: Number, default: 1 }, //排行榜已发奖励的日期(0点时间戳)
  357. withdrawfee: { type: Number, default: 3 }, //排行榜已发奖励的日期(0点时间戳)
  358. withdrawlowlimit: { type: Number, default: 10 }, //排行榜已发奖励的日期(0点时间戳)
  359. registerUstd:{ type: Number, default: 0 }
  360. }, { collection: 'sgjconfig' });
  361. mdbgoose.model('SGJConfig', SGJConfigSchema);
  362. };