paiJuHuiFang.js 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. /**
  2. * TL++整个文件
  3. * 此类是关于存放牌局回放的json文件
  4. */
  5. 'use strict';
  6. var quick = require('quick-pomelo');
  7. var P = quick.Promise;
  8. var fs = require('fs');//////TL++
  9. var uuid = require('node-uuid');
  10. var pjhfpath = "D:\\web\\root80\\hnmj\\";////牌局回放记录的json文件所在目录
  11. var tableScorePath = "D:\\web\\root80\\tableScore_hnmj\\";////牌局回放记录的json文件所在目录
  12. var tablexpPath = "D:\\web\\root80\\tablexp_hnmj\\";////牌局洗牌记录的json文件所在目录
  13. // var pjhfpath = "D:\\phpServer\\WWW\\PJHF\\fhmj\\";////牌局回放记录的json文件所在目录 服务端的路径
  14. var jsonFileName = "";/////本次记录的json文件名(包括文件夹)
  15. var pathName = "";/////本次记录的json文件的文件夹路径
  16. // 构造方法
  17. var paiJuHuiFang = function () {
  18. // this.app = table.game.app;
  19. };
  20. // 导出类
  21. module.exports = paiJuHuiFang;
  22. // 原型对象
  23. var proto = paiJuHuiFang.prototype;
  24. //////从本地json文件中读取记录游戏过程中的记录数据
  25. proto.readPaijuHuiFangData = function (_tableID,_Index){
  26. let path = pjhfpath
  27. let filename = path + _tableID.toString() + "_" + _Index.toString() + ".json";
  28. // console.warn("从本地json文件中读取记录游戏过程中的记录数据",filename);
  29. if(!this.pathIsExit(filename)) return;/////非法地址直接返回
  30. var result=JSON.parse(fs.readFileSync( filename));
  31. };
  32. //////删除保存超过 n 天的文件夹
  33. proto.getADirAllChirdenName = function (path,days){
  34. //////得到参加路径文件夹下面一层的所有文件夹名以及文件名的数组
  35. var nameList = fs.readdirSync(pjhfpath); ////[ '20190614', '20190615', '210013_2_xxxx.json' ]
  36. for(var i = 0;i < nameList.length;i++){
  37. let creatTime = nameList[i];
  38. let currTime = this.getTimeStr();
  39. if (currTime - creatTime > days){
  40. var url = path + "/" +nameList[i];
  41. // console.log("因过期被删除的文件夹",url);
  42. this.delDir(url)
  43. }
  44. }
  45. return nameList;
  46. };
  47. //////得到当前的年月日时间字符串
  48. proto.getTimeStr = function (_data){
  49. // let date = new Date(Date.now());
  50. let date = new Date(_data);
  51. let year = date.getFullYear() + '';
  52. let month = (date.getMonth() + 1) + '';
  53. let day = date.getDate() + '';
  54. if (parseInt(month) < 10) {
  55. month = '0' + month;
  56. }
  57. if (parseInt(day) < 10) {
  58. day = '0' + day;
  59. }
  60. let wjjm = year + month + day
  61. return wjjm;
  62. };
  63. //////删除指定文件夹 delDir(pjhfpath+"20190606")
  64. proto.delDir = function (url){
  65. if(!this.pathIsExit(url)) return;/////非法地址直接返回
  66. var data = fs.readdirSync(url);
  67. for(var i = 0;i < data.length;i++){
  68. // console.log(data[i])
  69. var path = url + "/" +data[i];
  70. console.log(path);
  71. var stat = fs.statSync(path);
  72. if(stat.isFile()){
  73. fs.unlinkSync(path);
  74. }else{
  75. this.delDir(path);
  76. }
  77. }
  78. fs.rmdirSync(url);
  79. };
  80. //////本次记录的json文件名 相对路径 是要记录进数据库的 从日期开头 在table里面调用
  81. proto.getjsonFileName = function (_index,_tableid,ctime){
  82. let index = _index;
  83. let tableid = _tableid;
  84. let timeStr = this.getTimeStr(ctime)
  85. let path = pjhfpath + timeStr + "\\";
  86. pathName = path
  87. let curUUid = uuid.v1();
  88. // jsonFileName = timeStr + "\\" + tableid.toString() + "_" + index.toString() + "_" + curUUid + ".json";
  89. jsonFileName = timeStr + "\\" + tableid + "_" + index.toString() + ".json";
  90. // console.warn("bbbbccccc",jsonFileName);
  91. return jsonFileName;
  92. };
  93. //////本次记录的牌局写分情况 json文件名 相对路径 是要记录进数据库的 从日期开头 在table里面调用
  94. proto.getTSjsonFileName = function (_index,_tableid,cTime){
  95. let index = _index;
  96. let tableid = _tableid;
  97. let timeStr = this.getTimeStr(cTime)
  98. let path = tableScorePath + timeStr + "\\";
  99. pathName = path
  100. //let curUUid = uuid.v1();
  101. // jsonFileName = timeStr + "\\" + tableid.toString() + "_" + index.toString() + "_" + curUUid + ".json";
  102. jsonFileName = timeStr + "\\" + tableid + "_" + index.toString() + ".json";
  103. // console.warn("bbbbccccc",jsonFileName);
  104. return jsonFileName;
  105. };
  106. //////本次记录的json文件名 决对路径 从D盘开始记录
  107. proto.getjsonFileName22 = function (_index,_tableid){
  108. let index = _index;
  109. let tableid = _tableid;
  110. // let path = "../../PJHF/fhmj/";
  111. let timeStr = this.getTimeStr()
  112. let path = pjhfpath + timeStr + "\\";
  113. pathName = path
  114. let curUUid = uuid.v1();
  115. // jsonFileName = path + tableid.toString() + "_" + index.toString() + "_" + curUUid + ".json";
  116. jsonFileName = timeStr + "\\" + + tableid + "_" + index.toString() + ".json";
  117. // console.warn("222bbbbccccc",jsonFileName);
  118. return jsonFileName;
  119. };
  120. //////写入用于存放本局的牌局回放json文件 _index = 0 表示牌桌上玩家信息,局属等公共数据 否则表示该桌子的第_index局的牌局记录
  121. proto.writePJHFJson = function (_data,_index,_tableid){
  122. let data = _data;
  123. let filename = pjhfpath + jsonFileName;
  124. // if(filename == "") filename = this.getjsonFileName22(_index,_tableid);
  125. /////判断文件夹是否存在,不存在则需要创建
  126. fs.exists(pathName,function (exists) {
  127. if(exists){
  128. // console.error("filename",filename);
  129. fs.writeFileSync(filename, JSON.stringify(data));
  130. }else {
  131. fs.mkdir(pathName,function (err) {
  132. if(err){
  133. return console.log(err);
  134. }else {
  135. // console.error("222filename",filename);
  136. fs.writeFileSync(filename, JSON.stringify(data));
  137. }
  138. })
  139. }
  140. })
  141. };
  142. //////写入用于存放本局的牌局写分json文件 _index = 0 表示牌桌上玩家信息,局属等公共数据 否则表示该桌子的第_index局的牌局记录
  143. proto.writeTSJson = function (_data,_index,_tableid){
  144. let data = _data;
  145. let filename = tableScorePath + jsonFileName;
  146. // if(filename == "") filename = this.getjsonFileName22(_index,_tableid);
  147. /////判断文件夹是否存在,不存在则需要创建
  148. fs.exists(pathName,function (exists) {
  149. if(exists){
  150. // console.error("filename",filename);
  151. fs.writeFileSync(filename, JSON.stringify(data));
  152. }else {
  153. fs.mkdir(pathName,function (err) {
  154. if(err){
  155. return console.log(err);
  156. }else {
  157. // console.error("222filename",filename);
  158. fs.writeFileSync(filename, JSON.stringify(data));
  159. }
  160. })
  161. }
  162. })
  163. };
  164. //////判断地址是否存在,防止删除文件夹的时候传参错误而程序报错
  165. proto.pathIsExit = function (path){
  166. fs.exists(path,function (exists) {
  167. return exists;
  168. })
  169. };
  170. //////从本地json文件中读取记录游戏的结算数据
  171. proto.readJSONData = function (path,_filename){
  172. // console.warn("000",path,_filename);
  173. // let timeStr = this.getTimeStr(time)
  174. if(!fs.existsSync(path)) return;////"文件夹不存在"
  175. let filename = path + _filename + ".json";
  176. // console.warn("1111",filename);
  177. if(!fs.existsSync(filename)) return;////"文件不存在"
  178. // console.warn("222");
  179. var result=JSON.parse(fs.readFileSync( filename));
  180. return result;
  181. };
  182. //////写入用于存放本局的洗牌json文件 _index = 表示局数,
  183. proto.writexpJson = function (_data,_index,tableid,_ctime){
  184. // console.warn("222hhhhhhhhhhhhhhhhhh");
  185. let data = _data;
  186. let timeStr = this.getTimeStr(_ctime)
  187. let pathName = tablexpPath + timeStr + "\\";
  188. let filename = pathName + tableid + "_" + _index.toString() + ".json";
  189. /////判断文件夹是否存在,不存在则需要创建
  190. fs.exists(pathName,function (exists) {
  191. if(exists){
  192. // console.error("filename",filename);
  193. fs.writeFileSync(filename, JSON.stringify(data));
  194. // console.warn("666hhhhhhhhhhhhhhhhhh");
  195. }else {
  196. fs.mkdir(pathName,function (err) {
  197. if(err){
  198. return console.log(err);
  199. }else {
  200. // console.error("222filename",filename);
  201. fs.writeFileSync(filename, JSON.stringify(data));
  202. // console.warn("444hhhhhhhhhhhhhhhhhh");
  203. }
  204. })
  205. }
  206. })
  207. };
  208. //////从本地json文件中读取记录游戏的结算数据
  209. proto.readxpJSONData = function (time,_filename){
  210. let path = tablexpPath + time + "\\";
  211. if(!fs.existsSync(path)) return;////"文件夹不存在"
  212. let filename = path + _filename + ".json";
  213. if(!fs.existsSync(filename)) return;////"文件不存在"
  214. var result=JSON.parse(fs.readFileSync( filename));
  215. return result;
  216. };