kaoqin-utils
Version:
考勤系统工具库
1 lines • 2.01 kB
JavaScript
"use strict";const fs=require("fs"),path=require("path"),dayjs=require("dayjs");class StateManager{constructor(a={}){this.stateFilePath=a.stateFilePath||path.resolve(process.cwd(),"kaoqin-state.json"),this.state={lastDate:"",hasSentMorningSuccess:!1,hasSentEveningSuccess:!1,hasSentHolidayGreeting:!1},this.loadState()}loadState(){try{if(fs.existsSync(this.stateFilePath)){const a=fs.readFileSync(this.stateFilePath,"utf8"),b=JSON.parse(a);this.state=b,console.log(`已从文件加载状态,状态日期: ${this.state.lastDate}`)}else console.log("\u72B6\u6001\u6587\u4EF6\u4E0D\u5B58\u5728\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u72B6\u6001"),this.resetState();return this.state}catch(a){return console.error("\u8BFB\u53D6\u72B6\u6001\u6587\u4EF6\u5931\u8D25:",a),this.resetState(),this.state}}saveState(){try{return this.state.lastDate||(this.state.lastDate=dayjs().format("YYYY-MM-DD")),fs.writeFileSync(this.stateFilePath,JSON.stringify(this.state,null,2)),console.log("\u72B6\u6001\u5DF2\u4FDD\u5B58\u5230\u6587\u4EF6"),!0}catch(a){return console.error("\u4FDD\u5B58\u72B6\u6001\u6587\u4EF6\u5931\u8D25:",a),!1}}resetState(a){const b={...this.state};this.state={lastDate:a||dayjs().format("YYYY-MM-DD"),hasSentMorningSuccess:!1,hasSentEveningSuccess:!1,hasSentHolidayGreeting:!1},console.log(`状态重置:上班提醒[${b.hasSentMorningSuccess?"\u5DF2\u53D1\u9001":"\u672A\u53D1\u9001"}] => [未发送], 下班提醒[${b.hasSentEveningSuccess?"\u5DF2\u53D1\u9001":"\u672A\u53D1\u9001"}] => [未发送], 节假日问候[${b.hasSentHolidayGreeting?"\u5DF2\u53D1\u9001":"\u672A\u53D1\u9001"}] => [未发送]`)}get(a,b=void 0){return this.state[a]===void 0?b:this.state[a]}set(a,b,c=!0){const d=this.state[a];return this.state[a]=b,("hasSentMorningSuccess"===a||"hasSentEveningSuccess"===a)&&console.log(`状态更新: ${a} [${d?"\u5DF2\u53D1\u9001":"\u672A\u53D1\u9001"}] => [${b?"\u5DF2\u53D1\u9001":"\u672A\u53D1\u9001"}]`),c&&this.saveState(),this}getAll(){return{...this.state}}}module.exports=StateManager;