Browse Source

update

storage-in-realtime
zhaohe 12 months ago
parent
commit
6c24a2cdb9
  1. 2
      app_protocols/apperrorcode/apperrorcode.hpp
  2. 5
      appsrc/baseservice/baseservice.hpp
  3. 0
      appsrc/baseservice/udisk_mgr_service.cpp
  4. 0
      appsrc/baseservice/udisk_mgr_service.hpp
  5. 94
      appsrc/service/audit_mgr_service.cpp
  6. 30
      appsrc/service/audit_mgr_service.hpp
  7. 1
      appsrc/service/disinfection_logs_service.hpp
  8. 4
      appsrc/service/main_control_service.cpp

2
app_protocols/apperrorcode/apperrorcode.hpp

@ -56,6 +56,8 @@ typedef enum {
kappe_not_detect_udisk = 10013, kappe_not_detect_udisk = 10013,
// U盘读写错误 // U盘读写错误
kappe_udisk_wr_fail = 10014, kappe_udisk_wr_fail = 10014,
//
kappe_file_operate_error = 10015,
} apperror_t; } apperror_t;
} }

5
appsrc/baseservice/baseservice.hpp

@ -1,9 +1,10 @@
#pragma once #pragma once
#include "appbase/dep.hpp" #include "appbase/dep.hpp"
// //
#include "appcomponents/app_errorcode_mgr/app_errorcode_mgr.hpp"
#include "appcomponents/canchannel/transmit_disinfection_can_master.hpp"
#include "db/db_service.hpp" #include "db/db_service.hpp"
#include "devicestate/device_state_service.hpp" #include "devicestate/device_state_service.hpp"
#include "front_msg_processer/front_msg_processer.hpp" #include "front_msg_processer/front_msg_processer.hpp"
#include "iflytop_front_end_service/iflytop_front_end_service.hpp" #include "iflytop_front_end_service/iflytop_front_end_service.hpp"
#include "appcomponents/app_errorcode_mgr/app_errorcode_mgr.hpp"
#include "appcomponents/canchannel/transmit_disinfection_can_master.hpp"
#include "udisk_mgr_service.hpp"

0
appsrc/service/udisk_mgr_service.cpp → appsrc/baseservice/udisk_mgr_service.cpp

0
appsrc/service/udisk_mgr_service.hpp → appsrc/baseservice/udisk_mgr_service.hpp

94
appsrc/service/audit_mgr_service.cpp

@ -0,0 +1,94 @@
#include "audit_mgr_service.hpp"
using namespace iflytop;
#define EXPORT_PATH "/mnt/exportdata/Transmit/"
#define IF_ERROR_RETURN(x) \
if (!x) { \
return err::kappe_udisk_wr_fail; \
}
static string getTime() {
struct tm tm = {0};
time_t t = ::time(nullptr);
struct tm* tmp = localtime_r(&t, &tm);
return fmt::format("{:0>4}{:0>2}{:0>2}{:0>2}{:0>2}{:0>2}", tm.tm_year + 1900, //
tm.tm_mon + 1, //
tm.tm_mday, //
tm.tm_hour, //
tm.tm_min, tm.tm_sec);
}
void AuditMgrService::initialize() {
GET_TO_SERVICE(m_db);
GET_TO_SERVICE(m_udiskMgr);
REGFN(AuditMgrService, exportData);
}
int AuditMgrService::callExportData() {
string diskpath;
if (!m_udiskMgr->isDetectedUDisk(diskpath)) {
logger->error("no disk detected");
return err::kappe_not_detect_udisk;
}
logger->info("diskpath: {}", diskpath);
/**
* @brief csv
*/
auto records = m_db->getAllUserBehaviorRecord();
string filename = fmt::format("/tmp/AUDIT{}.csv", getTime());
ofstream ofs(filename);
if (!ofs.is_open()) {
logger->error("open file {} failed", filename);
// return err::ksys_open_file_error;
return err::kappe_file_operate_error;
}
ofs << "date,uid,operation" << endl;
for (auto& record : records) {
ofs << fmt::format("{},{},\"{}{}\"", record->date, record->uid, db::user_behavior_to_str((user_behavior_t)record->behavior), record->behaviorinfo) << endl;
}
ofs.close();
// 文件编码转换
IF_ERROR_RETURN(dosystem(fmt::format("iconv -f UTF-8 -tgb18030 {} -o {}", filename, filename + ".1")));
dosystem(fmt::format("mv {} {}", filename + ".1", filename));
/**
* @brief U盘
*/
// 创建目录
IF_ERROR_RETURN(dosystem(fmt::format("rm -rf /mnt/exportdata")));
IF_ERROR_RETURN(dosystem(fmt::format("mkdir -p /mnt/exportdata")));
// 挂载目录
IF_ERROR_RETURN(dosystem(fmt::format("mount {} /mnt/exportdata", diskpath)));
// 拷贝文件
IF_ERROR_RETURN(dosystem(fmt::format("mkdir -p /mnt/exportdata/Transmit/")));
IF_ERROR_RETURN(dosystem(fmt::format("cp -rf {} /mnt/exportdata/Transmit/", filename)));
// 卸载目录
IF_ERROR_RETURN(dosystem(fmt::format("umount /mnt/exportdata")));
// 删除目录
IF_ERROR_RETURN(dosystem(fmt::format("rm -rf /mnt/exportdata")));
return err::ksucc;
}
void AuditMgrService::exportData(shared_ptr<MsgProcessContext> cxt) {
int ret = callExportData();
if (ret != err::ksucc) {
cxt->ackcode = ret;
}
}
bool AuditMgrService::dosystem(string cmd) {
logger->info("do cmd: {}", cmd);
int ret = system(cmd.c_str());
if (ret == 0) {
return true;
} else {
logger->error("do cmd: {} failed,{}", cmd, ret);
return false;
}
}

30
appsrc/service/audit_mgr_service.hpp

@ -0,0 +1,30 @@
#pragma once
#include <fstream>
#include <iostream>
#include <list>
#include <map>
#include <memory>
#include <set>
#include <sstream>
#include <string>
#include <vector>
//
#include "baseservice/baseservice.hpp"
namespace iflytop {
class AuditMgrService : public enable_shared_from_this<AuditMgrService> {
ENABLE_LOGGER(AuditMgrService);
shared_ptr<DBService> m_db;
shared_ptr<UDiskMgrService> m_udiskMgr;
public:
void initialize();
private:
void exportData(shared_ptr<MsgProcessContext> cxt);
int callExportData();
bool dosystem(string cmd);
};
} // namespace iflytop

1
appsrc/service/disinfection_logs_service.hpp

@ -12,7 +12,6 @@
#include "appbase/dep.hpp" #include "appbase/dep.hpp"
#include "baseservice/baseservice.hpp" #include "baseservice/baseservice.hpp"
#include "iflytop/core/components/zcsv/zcsv.hpp" #include "iflytop/core/components/zcsv/zcsv.hpp"
#include "udisk_mgr_service.hpp"
namespace iflytop { namespace iflytop {

4
appsrc/service/main_control_service.cpp

@ -2,13 +2,13 @@
#include "appbase/project_setting_mgr.hpp" #include "appbase/project_setting_mgr.hpp"
#include "baseservice/baseservice.hpp" #include "baseservice/baseservice.hpp"
#include "service/audit_mgr_service.hpp"
#include "service/device_info_mgr_service.hpp" #include "service/device_info_mgr_service.hpp"
#include "service/disinfection_logs_service.hpp" #include "service/disinfection_logs_service.hpp"
#include "service/os_mgr_service.hpp" #include "service/os_mgr_service.hpp"
#include "service/setting_mgr_service.hpp" #include "service/setting_mgr_service.hpp"
#include "service/test_page_mgr_service.hpp" #include "service/test_page_mgr_service.hpp"
#include "service/user_mgr_service.hpp" #include "service/user_mgr_service.hpp"
#include "udisk_mgr_service.hpp"
using namespace iflytop; using namespace iflytop;
using namespace core; using namespace core;
@ -28,9 +28,11 @@ void MainControlService::initialize() {
BUILD_AND_REG_SERRVICE(FrontMsgProcesser); BUILD_AND_REG_SERRVICE(FrontMsgProcesser);
BUILD_AND_REG_SERRVICE(DBService); BUILD_AND_REG_SERRVICE(DBService);
BUILD_AND_REG_SERRVICE(DeviceStateService); BUILD_AND_REG_SERRVICE(DeviceStateService);
// //
BUILD_AND_REG_SERRVICE(UDiskMgrService); BUILD_AND_REG_SERRVICE(UDiskMgrService);
// //
BUILD_AND_REG_SERRVICE(AuditMgrService);
BUILD_AND_REG_SERRVICE(DisinfectionLogsService); BUILD_AND_REG_SERRVICE(DisinfectionLogsService);
// Device // Device
BUILD_AND_REG_SERRVICE(UartPrinter); BUILD_AND_REG_SERRVICE(UartPrinter);

Loading…
Cancel
Save