/** * TL++整个文件 * 此类是关于存放牌局回放的json文件 */ 'use strict'; var quick = require('quick-pomelo'); var P = quick.Promise; var fs = require('fs');//////TL++ var uuid = require('node-uuid'); var pjhfpath = "D:\\web\\root80\\hnmj\\";////牌局回放记录的json文件所在目录 var tableScorePath = "D:\\web\\root80\\tableScore_hnmj\\";////牌局回放记录的json文件所在目录 var tablexpPath = "D:\\web\\root80\\tablexp_hnmj\\";////牌局洗牌记录的json文件所在目录 // var pjhfpath = "D:\\phpServer\\WWW\\PJHF\\fhmj\\";////牌局回放记录的json文件所在目录 服务端的路径 var jsonFileName = "";/////本次记录的json文件名(包括文件夹) var pathName = "";/////本次记录的json文件的文件夹路径 // 构造方法 var paiJuHuiFang = function () { // this.app = table.game.app; }; // 导出类 module.exports = paiJuHuiFang; // 原型对象 var proto = paiJuHuiFang.prototype; //////从本地json文件中读取记录游戏过程中的记录数据 proto.readPaijuHuiFangData = function (_tableID,_Index){ let path = pjhfpath let filename = path + _tableID.toString() + "_" + _Index.toString() + ".json"; // console.warn("从本地json文件中读取记录游戏过程中的记录数据",filename); if(!this.pathIsExit(filename)) return;/////非法地址直接返回 var result=JSON.parse(fs.readFileSync( filename)); }; //////删除保存超过 n 天的文件夹 proto.getADirAllChirdenName = function (path,days){ //////得到参加路径文件夹下面一层的所有文件夹名以及文件名的数组 var nameList = fs.readdirSync(pjhfpath); ////[ '20190614', '20190615', '210013_2_xxxx.json' ] for(var i = 0;i < nameList.length;i++){ let creatTime = nameList[i]; let currTime = this.getTimeStr(); if (currTime - creatTime > days){ var url = path + "/" +nameList[i]; // console.log("因过期被删除的文件夹",url); this.delDir(url) } } return nameList; }; //////得到当前的年月日时间字符串 proto.getTimeStr = function (_data){ // let date = new Date(Date.now()); let date = new Date(_data); let year = date.getFullYear() + ''; let month = (date.getMonth() + 1) + ''; let day = date.getDate() + ''; if (parseInt(month) < 10) { month = '0' + month; } if (parseInt(day) < 10) { day = '0' + day; } let wjjm = year + month + day return wjjm; }; //////删除指定文件夹 delDir(pjhfpath+"20190606") proto.delDir = function (url){ if(!this.pathIsExit(url)) return;/////非法地址直接返回 var data = fs.readdirSync(url); for(var i = 0;i < data.length;i++){ // console.log(data[i]) var path = url + "/" +data[i]; console.log(path); var stat = fs.statSync(path); if(stat.isFile()){ fs.unlinkSync(path); }else{ this.delDir(path); } } fs.rmdirSync(url); }; //////本次记录的json文件名 相对路径 是要记录进数据库的 从日期开头 在table里面调用 proto.getjsonFileName = function (_index,_tableid,ctime){ let index = _index; let tableid = _tableid; let timeStr = this.getTimeStr(ctime) let path = pjhfpath + timeStr + "\\"; pathName = path let curUUid = uuid.v1(); // jsonFileName = timeStr + "\\" + tableid.toString() + "_" + index.toString() + "_" + curUUid + ".json"; jsonFileName = timeStr + "\\" + tableid + "_" + index.toString() + ".json"; // console.warn("bbbbccccc",jsonFileName); return jsonFileName; }; //////本次记录的牌局写分情况 json文件名 相对路径 是要记录进数据库的 从日期开头 在table里面调用 proto.getTSjsonFileName = function (_index,_tableid,cTime){ let index = _index; let tableid = _tableid; let timeStr = this.getTimeStr(cTime) let path = tableScorePath + timeStr + "\\"; pathName = path //let curUUid = uuid.v1(); // jsonFileName = timeStr + "\\" + tableid.toString() + "_" + index.toString() + "_" + curUUid + ".json"; jsonFileName = timeStr + "\\" + tableid + "_" + index.toString() + ".json"; // console.warn("bbbbccccc",jsonFileName); return jsonFileName; }; //////本次记录的json文件名 决对路径 从D盘开始记录 proto.getjsonFileName22 = function (_index,_tableid){ let index = _index; let tableid = _tableid; // let path = "../../PJHF/fhmj/"; let timeStr = this.getTimeStr() let path = pjhfpath + timeStr + "\\"; pathName = path let curUUid = uuid.v1(); // jsonFileName = path + tableid.toString() + "_" + index.toString() + "_" + curUUid + ".json"; jsonFileName = timeStr + "\\" + + tableid + "_" + index.toString() + ".json"; // console.warn("222bbbbccccc",jsonFileName); return jsonFileName; }; //////写入用于存放本局的牌局回放json文件 _index = 0 表示牌桌上玩家信息,局属等公共数据 否则表示该桌子的第_index局的牌局记录 proto.writePJHFJson = function (_data,_index,_tableid){ let data = _data; let filename = pjhfpath + jsonFileName; // if(filename == "") filename = this.getjsonFileName22(_index,_tableid); /////判断文件夹是否存在,不存在则需要创建 fs.exists(pathName,function (exists) { if(exists){ // console.error("filename",filename); fs.writeFileSync(filename, JSON.stringify(data)); }else { fs.mkdir(pathName,function (err) { if(err){ return console.log(err); }else { // console.error("222filename",filename); fs.writeFileSync(filename, JSON.stringify(data)); } }) } }) }; //////写入用于存放本局的牌局写分json文件 _index = 0 表示牌桌上玩家信息,局属等公共数据 否则表示该桌子的第_index局的牌局记录 proto.writeTSJson = function (_data,_index,_tableid){ let data = _data; let filename = tableScorePath + jsonFileName; // if(filename == "") filename = this.getjsonFileName22(_index,_tableid); /////判断文件夹是否存在,不存在则需要创建 fs.exists(pathName,function (exists) { if(exists){ // console.error("filename",filename); fs.writeFileSync(filename, JSON.stringify(data)); }else { fs.mkdir(pathName,function (err) { if(err){ return console.log(err); }else { // console.error("222filename",filename); fs.writeFileSync(filename, JSON.stringify(data)); } }) } }) }; //////判断地址是否存在,防止删除文件夹的时候传参错误而程序报错 proto.pathIsExit = function (path){ fs.exists(path,function (exists) { return exists; }) }; //////从本地json文件中读取记录游戏的结算数据 proto.readJSONData = function (path,_filename){ // console.warn("000",path,_filename); // let timeStr = this.getTimeStr(time) if(!fs.existsSync(path)) return;////"文件夹不存在" let filename = path + _filename + ".json"; // console.warn("1111",filename); if(!fs.existsSync(filename)) return;////"文件不存在" // console.warn("222"); var result=JSON.parse(fs.readFileSync( filename)); return result; }; //////写入用于存放本局的洗牌json文件 _index = 表示局数, proto.writexpJson = function (_data,_index,tableid,_ctime){ // console.warn("222hhhhhhhhhhhhhhhhhh"); let data = _data; let timeStr = this.getTimeStr(_ctime) let pathName = tablexpPath + timeStr + "\\"; let filename = pathName + tableid + "_" + _index.toString() + ".json"; /////判断文件夹是否存在,不存在则需要创建 fs.exists(pathName,function (exists) { if(exists){ // console.error("filename",filename); fs.writeFileSync(filename, JSON.stringify(data)); // console.warn("666hhhhhhhhhhhhhhhhhh"); }else { fs.mkdir(pathName,function (err) { if(err){ return console.log(err); }else { // console.error("222filename",filename); fs.writeFileSync(filename, JSON.stringify(data)); // console.warn("444hhhhhhhhhhhhhhhhhh"); } }) } }) }; //////从本地json文件中读取记录游戏的结算数据 proto.readxpJSONData = function (time,_filename){ let path = tablexpPath + time + "\\"; if(!fs.existsSync(path)) return;////"文件夹不存在" let filename = path + _filename + ".json"; if(!fs.existsSync(filename)) return;////"文件不存在" var result=JSON.parse(fs.readFileSync( filename)); return result; };