From 337adce3b32612903dce4b963c7db6c8ba0202a4 Mon Sep 17 00:00:00 2001
From: w1146869587 <wah1146869587@126.com>
Date: 星期二, 09 十一月 2021 14:11:55 +0800
Subject: [PATCH] bak

---
 mbwatch/mbwatchuserdb.cpp  |  210 +++++++++++++++++++++++++
 mbwatch/mbwatchusermgr.cpp |   18 ++
 mbwatch/efsw.pri           |   10 +
 mbwatch/mbwatch.pro        |   25 ++-
 mbwatch/mbwatchusermgr.h   |    4 
 bak/mb_watch_user.db       |    0 
 mbwatch/mbtaskmgr.h        |   26 +++
 mbwatch/mbwatchuserdb.h    |   22 ++
 mbwatch/mbwatchmgr.h       |   14 +
 mbwatch/mbtasklog.h        |   21 ++
 bak/mbwatch.txt            |    2 
 mbwatch/mbtaskmgr.cpp      |   39 ++++
 mbwatch/mbwatchmain.cpp    |   23 ++
 mbwatch/mbwatchmgr.cpp     |   37 ++++
 mbwatch/mbtasklog.cpp      |   23 ++
 15 files changed, 448 insertions(+), 26 deletions(-)

diff --git a/bak/mb_watch_user.db b/bak/mb_watch_user.db
index 342db2a..7956ab2 100644
--- a/bak/mb_watch_user.db
+++ b/bak/mb_watch_user.db
Binary files differ
diff --git a/bak/mbwatch.txt b/bak/mbwatch.txt
index a7d830a..be63da3 100644
--- a/bak/mbwatch.txt
+++ b/bak/mbwatch.txt
@@ -2,7 +2,7 @@
     CN_S_LOGIN       VARCHAR (128) NOT NULL,
     CN_S_SERVER_ID   VARCHAR (128) NOT NULL,
     CN_S_BACKUP_DIR  VARCHAR (512) NOT NULL,
-    CN_S_SERVER_PATH VARCHAR (512) NOT NULL,
+    CN_S_SERVER_PATH VARCHAR (512),
     CN_S_ISLOGIN     CHAR (2)      DEFAULT N,
     PRIMARY KEY (
         CN_S_LOGIN,
diff --git a/mbwatch/efsw.pri b/mbwatch/efsw.pri
new file mode 100644
index 0000000..e5020c7
--- /dev/null
+++ b/mbwatch/efsw.pri
@@ -0,0 +1,10 @@
+INCLUDEPATH += $$PWD/../efsw
+
+CONFIG(debug, debug|release) {
+    LIBS += -L$$PWD/../debug -lefsw
+} else {
+    LIBS += -L$$PWD/../release -lefsw
+}
+
+
+
diff --git a/mbwatch/mbtasklog.cpp b/mbwatch/mbtasklog.cpp
new file mode 100644
index 0000000..02adc5a
--- /dev/null
+++ b/mbwatch/mbtasklog.cpp
@@ -0,0 +1,23 @@
+#include "mbtasklog.h"
+#include <QMutex>
+
+CMBTaskLog::CMBTaskLog()
+{
+
+}
+
+CMBTaskLog::~CMBTaskLog()
+{
+}
+
+
+void CMBTaskLog::run()
+{
+
+}
+
+
+
+
+
+
diff --git a/mbwatch/mbtasklog.h b/mbwatch/mbtasklog.h
new file mode 100644
index 0000000..940444e
--- /dev/null
+++ b/mbwatch/mbtasklog.h
@@ -0,0 +1,21 @@
+#ifndef MBTASKLOG_H
+#define MBTASKLOG_H
+
+#include <QRunnable>
+#include <QWaitCondition>
+#include <QMutex>
+
+/************************************************************************/
+/*   鏃ュ織浠诲姟锛岀敤鏉ヨ褰曞浠界洰褰曚笅鐨勬枃浠跺彉鍖�                                   */
+/************************************************************************/
+class CMBTaskLog
+        : public QRunnable
+{
+public:
+    CMBTaskLog();
+    ~CMBTaskLog();
+public:
+    virtual          void run();
+};
+
+#endif // MBTASKLOG_H
diff --git a/mbwatch/mbtaskmgr.cpp b/mbwatch/mbtaskmgr.cpp
new file mode 100644
index 0000000..6451fa0
--- /dev/null
+++ b/mbwatch/mbtaskmgr.cpp
@@ -0,0 +1,39 @@
+#include "mbtaskmgr.h"
+
+CMBTaskMgr::CMBTaskMgr()
+{
+    //绾跨▼姹犳渶澶�涓嚎绋�+    m_threadPool.setMaxThreadCount(1);
+}
+
+CMBTaskMgr::~CMBTaskMgr()
+{
+
+}
+
+void CMBTaskMgr::stopThread()
+{
+    m_threadPool.waitForDone(100); // 100姣
+}
+
+void CMBTaskMgr::logTask(QString login, QString svrID, QString backupDir, QString svrPath)
+{
+
+}
+
+
+//void CMBTaskMgr::loginOrgTask(QString ip, int nPort, QString session)
+//{
+//    CMBLoginOrgTask *pTask = new CMBLoginOrgTask();
+//    pTask->setMDWare(m_pMDWare);
+//    pTask->setUserInfo(m_login,m_loginName);
+//    pTask->setSvrInfo(ip, nPort, session);
+//    pTask->setAutoDelete(true);
+
+//    m_threadPool.start(pTask);
+//}
+
+
+
+
+
diff --git a/mbwatch/mbtaskmgr.h b/mbwatch/mbtaskmgr.h
new file mode 100644
index 0000000..b2a0cc8
--- /dev/null
+++ b/mbwatch/mbtaskmgr.h
@@ -0,0 +1,26 @@
+#ifndef MBTASKMGR_H
+#define MBTASKMGR_H
+
+#include <QThreadPool>
+
+
+/************************************************************************/
+/*  浠诲姟绠$悊鍣�                                                           */
+/************************************************************************/
+class CMBTaskMgr
+{
+public:
+    CMBTaskMgr();
+    ~CMBTaskMgr();
+private:
+    QThreadPool     m_threadPool;
+public:
+    void             stopThread();
+public:
+    void             logTask( QString login, QString svrID,
+                               QString backupDir, QString svrPath );
+};
+
+
+
+#endif // MBTASKMGR_H
diff --git a/mbwatch/mbwatch.pro b/mbwatch/mbwatch.pro
index d8e120c..a481683 100644
--- a/mbwatch/mbwatch.pro
+++ b/mbwatch/mbwatch.pro
@@ -1,5 +1,6 @@
 QT -= gui
 QT += network
+QT += sql
 
 CONFIG += c++11 console
 CONFIG -= app_bundle
@@ -15,6 +16,8 @@
         main.cpp \
         mbcommfunc.cpp \
         mbfileutil.cpp \
+        mbtasklog.cpp \
+        mbtaskmgr.cpp \
         mbwatchapp.cpp \
         mbwatchconst.cpp \
         mbwatchfile.cpp \
@@ -24,18 +27,11 @@
         mbwatchuserdb.cpp \
         mbwatchusermgr.cpp
 
-# Default rules for deployment.
-qnx: target.path = /tmp/$${TARGET}/bin
-else: unix:!android: target.path = /opt/$${TARGET}/bin
-!isEmpty(target.path): INSTALLS += target
-
-# cfg
-include(mbwatch.pri)
-include(qtservice/qtservice.pri)
-
 HEADERS += \
     mbcommfunc.h \
     mbfileutil.h \
+    mbtasklog.h \
+    mbtaskmgr.h \
     mbwatchapp.h \
     mbwatchconst.h \
     mbwatchfile.h \
@@ -45,3 +41,14 @@
     mbwatchuserdb.h \
     mbwatchusermgr.h
 
+# Default rules for deployment.
+qnx: target.path = /tmp/$${TARGET}/bin
+else: unix:!android: target.path = /opt/$${TARGET}/bin
+!isEmpty(target.path): INSTALLS += target
+
+# cfg
+include(mbwatch.pri)
+include(qtservice/qtservice.pri)
+include(efsw.pri)
+
+
diff --git a/mbwatch/mbwatchmain.cpp b/mbwatch/mbwatchmain.cpp
index d7c5287..6db4ef7 100644
--- a/mbwatch/mbwatchmain.cpp
+++ b/mbwatch/mbwatchmain.cpp
@@ -49,7 +49,7 @@
 
 void CMBWatchMain::stop()
 {
-
+    m_pMgr->stop();
 }
 
 void CMBWatchMain::pause()
@@ -78,10 +78,31 @@
         std::cout << errInfo.toStdString() << std::endl;
         return ;
     }
+    // 姣旇緝 鏃ュ織锛屽啓
+    QString login, svrID, backupDir, svrPath;
+
+    CMBWatchUserVector::iterator	it;
+    CMBWatchUser *pUser = NULL;
+
+    CMBWatchUserVector tmpVector;
+    m_pMgr->getUserMgr()->getVector(tmpVector);
+    for( it = tmpVector.begin();it != tmpVector.end();it++ )
+    {
+        pUser = *it;
+
+        login     = pUser->getLogin();
+        svrID     = pUser->getSvrID();
+        backupDir = pUser->getBackupDir();
+        svrPath   = pUser->getSvrPath();
+
+        m_pMgr->getTaskMgr()->logTask(login, svrID, backupDir, svrPath);
+    }
+
 }
 
 void CMBWatchMain::onSigFileChange(QString fileName)
 {
 
+    //
 }
 
diff --git a/mbwatch/mbwatchmgr.cpp b/mbwatch/mbwatchmgr.cpp
index 0ac6cdd..8b38156 100644
--- a/mbwatch/mbwatchmgr.cpp
+++ b/mbwatch/mbwatchmgr.cpp
@@ -3,7 +3,11 @@
 CMBWatchMgr::CMBWatchMgr()
 {
     m_pConst     = new CMBWatchConst();
+    m_pTaskMgr   = new CMBTaskMgr();
+
+    m_pUserMgr   = new CMBWatchUserMgr();
     m_pUserDb    = new CMBWatchUserDb();
+    m_pUserDb->setUserMgr(m_pUserMgr);
 }
 
 CMBWatchMgr::~CMBWatchMgr()
@@ -16,7 +20,14 @@
         delete m_pUserDb;
         m_pUserDb = NULL;
     }
-
+    if(m_pUserMgr){
+        delete m_pUserMgr;
+        m_pUserMgr = NULL;
+    }
+    if( m_pTaskMgr ){
+        delete m_pTaskMgr;
+        m_pTaskMgr = NULL;
+    }
 }
 
 CMBWatchConst *CMBWatchMgr::getConst()
@@ -24,12 +35,28 @@
     return m_pConst;
 }
 
+CMBWatchUserMgr *CMBWatchMgr::getUserMgr()
+{
+    return m_pUserMgr;
+}
+
+CMBTaskMgr *CMBWatchMgr::getTaskMgr()
+{
+    return m_pTaskMgr;
+}
+
 bool CMBWatchMgr::init(QString &errInfo)
 {
-     QString watchUserDB = m_pConst->getWatchUserDB();
-     if(!m_pUserDb->init(watchUserDB,errInfo))
-         return false;
+    QString watchUserDB = m_pConst->getWatchUserDB();
+    if(!m_pUserDb->init(watchUserDB,errInfo))
+        return false;
 
+    return true;
+}
 
-     return true;
+bool CMBWatchMgr::stop()
+{
+    m_pTaskMgr->stopThread();
+
+    return true;
 }
diff --git a/mbwatch/mbwatchmgr.h b/mbwatch/mbwatchmgr.h
index e80f60c..2772fe8 100644
--- a/mbwatch/mbwatchmgr.h
+++ b/mbwatch/mbwatchmgr.h
@@ -2,6 +2,7 @@
 #define MBWATCHMGR_H
 #include "mbwatchconst.h"
 #include "mbwatchuserdb.h"
+#include "mbtaskmgr.h"
 
 class CMBWatchMgr
 {
@@ -9,13 +10,20 @@
     CMBWatchMgr();
     ~CMBWatchMgr();
 private:
-    CMBWatchConst  *m_pConst;
+    CMBWatchConst   *m_pConst;
 private:
-    CMBWatchUserDb *m_pUserDb;
+    CMBWatchUserDb   *m_pUserDb;
+    CMBWatchUserMgr  *m_pUserMgr;
+private:
+    CMBTaskMgr       *m_pTaskMgr;
 public:
-    CMBWatchConst *getConst();
+    CMBWatchConst    *getConst();
+    CMBWatchUserMgr  *getUserMgr();
+    CMBTaskMgr       *getTaskMgr();
 public:
     bool           init(QString &errInfo);
+public:
+    bool           stop();
 };
 
 #endif // MBWATCHMGR_H
diff --git a/mbwatch/mbwatchuserdb.cpp b/mbwatch/mbwatchuserdb.cpp
index 7ebc64c..ee78f5c 100644
--- a/mbwatch/mbwatchuserdb.cpp
+++ b/mbwatch/mbwatchuserdb.cpp
@@ -1,22 +1,224 @@
 #include "mbwatchuserdb.h"
+#include <QSqlQuery>
+#include <QSqlError>
+#include <QRandomGenerator>
+#include <QDebug>
 
 CMBWatchUserDb::CMBWatchUserDb()
 {
-    m_pMgr = new CMBWatchUserMgr();
+    m_pMgr      = NULL;
+    m_tableName = "TN_WATCH_USER";
 }
 
 CMBWatchUserDb::~CMBWatchUserDb()
 {
-    if( m_pMgr ){
-        delete m_pMgr;
-        m_pMgr = NULL;
+
+}
+
+void CMBWatchUserDb::setUserMgr(CMBWatchUserMgr *pMgr)
+{
+    m_pMgr = pMgr;
+}
+
+QSqlDatabase CMBWatchUserDb::openDataBase()
+{
+    quint32 value = QRandomGenerator::global()->generate();
+    QSqlDatabase db;
+    if ( true == QSqlDatabase::contains(QString::number(value)))
+    {
+        db = QSqlDatabase::database(QString::number(value));
+    }
+    else
+    {
+        db = QSqlDatabase::addDatabase("QSQLITE", QString::number(value));
+        db.setDatabaseName(m_path);
+    }
+
+    if (false == db.open())
+    {
+        qDebug() << db.lastError().text();
+    }
+    return db;
+}
+
+void CMBWatchUserDb::closeDataBase(QString connectionName)
+{
+    if( QSqlDatabase::contains(connectionName) ){
+       QSqlDatabase::removeDatabase(connectionName);
     }
 }
 
+bool CMBWatchUserDb::execSql(QString sql, QString &errInfo)
+{
+    QMutexLocker locker(&m_mutex);
+
+    QString connectionName;
+    {
+        QSqlDatabase db = openDataBase();
+        connectionName = db.connectionName();
+
+        QSqlQuery query(db);
+        query.prepare(sql);
+
+        if( !query.exec()){
+            errInfo = query.lastError().text();
+            return false;
+        }
+        query.clear();
+    }
+
+    closeDataBase(connectionName);
+
+    return true;
+}
+
+bool CMBWatchUserDb::execSql(QSqlDatabase &db, QString sql, QString &errInfo)
+{
+    QSqlQuery query(db);
+    query.prepare(sql);
+
+    if( !query.exec()){
+        errInfo = query.lastError().text();
+        return false;
+    }
+    query.clear();
+
+    return true;
+}
+
+bool CMBWatchUserDb::getTmpFiledSql(QString sql, QString &tmpValue, QString &errInfo)
+{
+    QMutexLocker locker(&m_mutex);
+
+    QString connectionName;
+    {
+        QSqlDatabase db = openDataBase();
+        connectionName = db.connectionName();
+
+        QSqlQuery query(db);
+        query.prepare(sql);
+
+        if( !query.exec()){
+            errInfo = query.lastError().text();
+            return false;
+        }
+        while(query.next())
+        {
+            tmpValue = query.value("TmpFiled").toString();
+        }
+
+        query.clear();
+    }
+
+    closeDataBase(connectionName);
+
+    return true;
+}
+
+bool CMBWatchUserDb::exsitSql(QString sql, bool &bExsit, QString &errInfo)
+{
+    QMutexLocker locker(&m_mutex);
+
+    bExsit = false;
+
+    QString connectionName;
+    {
+        QSqlDatabase db = openDataBase();
+        connectionName = db.connectionName();
+
+        QSqlQuery query(db);
+        query.prepare(sql);
+
+        if( !query.exec()){
+            errInfo = query.lastError().text();
+            return false;
+        }
+        // 鑾峰彇澶у皬
+        int initialPos = query.at();
+        int nCount = 0;
+        if (query.last())
+            nCount = query.at() + 1;
+        else
+            nCount = 0;
+        query.seek(initialPos);
+        // end 鑾峰彇澶у皬
+        if( nCount >= 1 ){
+            bExsit = true;
+        }
+
+        query.clear();
+    }
+
+    closeDataBase(connectionName);
+    return true;
+}
+
+
 bool CMBWatchUserDb::init(QString path,QString &errInfo)
 {
+    m_path = path;
+
     m_pMgr->removeAll();
 
+    if( !queryDB(errInfo) )
+        return false;
+
+    return true;
+}
+
+bool CMBWatchUserDb::loadDB(QSqlQuery &query)
+{
+    while(query.next())
+    {
+        QString login     = query.value("CN_S_LOGIN").toString();
+        QString svrID     = query.value("CN_S_SERVER_ID").toString();
+        QString backupDir = query.value("CN_S_BACKUP_DIR").toString();
+        QString svrPath   = query.value("CN_S_SERVER_PATH").toString();
+        QString isLogin   = query.value("CN_S_ISLOGIN").toString();
+
+        CMBWatchUser *pUser = new CMBWatchUser();
+        pUser->setLogin(login);
+        pUser->setSvrID(svrID);
+        pUser->setBackupDir(backupDir);
+        pUser->setSvrPath(svrPath);
+        pUser->setIsLogin(isLogin);
+
+        if( !m_pMgr->add(pUser) ){
+            delete pUser;
+            pUser = NULL;
+        }
+    }
+
+    return true;
+}
+
+bool CMBWatchUserDb::queryDB(QString &errInfo)
+{
+    QMutexLocker locker(&m_mutex);
+
+    QString connectionName,sql;
+
+    sql = QString("select * from %1 where CN_S_ISLOGIN='Y'").arg(m_tableName);
+
+    {
+        QSqlDatabase db = openDataBase();
+        connectionName = db.connectionName();
+
+        QSqlQuery query(db);
+        query.prepare(sql);
+
+        if( !query.exec()){
+            errInfo = query.lastError().text();
+            return false;
+        }
+
+        if(!loadDB(query))
+            return false;
+
+        query.clear();
+    }
+
+    closeDataBase(connectionName);
 
     return true;
 }
diff --git a/mbwatch/mbwatchuserdb.h b/mbwatch/mbwatchuserdb.h
index c2455aa..d628bdd 100644
--- a/mbwatch/mbwatchuserdb.h
+++ b/mbwatch/mbwatchuserdb.h
@@ -2,6 +2,7 @@
 #define MBWATCHUSERDB_H
 #include "mbwatchusermgr.h"
 #include <QObject>
+#include <QSqlDatabase>
 
 class CMBWatchUserDb
 {
@@ -9,9 +10,28 @@
     CMBWatchUserDb();
     ~CMBWatchUserDb();
 private:
+    QMutex           m_mutex;
+private:
     CMBWatchUserMgr *m_pMgr;
+private:
+    QString          m_path;
+    QString          m_tableName;
 public:
-    bool init(QString path,QString &errInfo);
+    void             setUserMgr(CMBWatchUserMgr *pMgr);
+private:
+    QSqlDatabase openDataBase();
+    void         closeDataBase(QString connectionName);
+private:
+    bool         execSql( QString sql,QString &errInfo );  // 鎵цsql
+    bool         execSql(QSqlDatabase &db,QString sql,QString &errInfo );  // 鎵цsql
+    bool         getTmpFiledSql( QString sql,QString &tmpValue,QString &errInfo );  // 鑾峰彇tmp瀛楁鐨勫�
+    bool         exsitSql( QString sql,bool &bExsit,QString &errInfo );
+public:
+    bool         init(QString path,QString &errInfo);
+private:
+    bool         loadDB(QSqlQuery &query);
+public:
+    bool         queryDB(QString &errInfo);
 };
 
 #endif // MBWATCHUSERDB_H
diff --git a/mbwatch/mbwatchusermgr.cpp b/mbwatch/mbwatchusermgr.cpp
index 9b3729a..1b4df07 100644
--- a/mbwatch/mbwatchusermgr.cpp
+++ b/mbwatch/mbwatchusermgr.cpp
@@ -2,16 +2,18 @@
 
 CMBWatchUserMgr::CMBWatchUserMgr()
 {
-
+    removeAll();
 }
 
 CMBWatchUserMgr::~CMBWatchUserMgr()
 {
-
+    removeAll();
 }
 
 bool CMBWatchUserMgr::add(CMBWatchUser *pUser)
 {
+    QMutexLocker locker(&m_mutex);
+
     if( NULL == pUser )
         return false;
 
@@ -28,6 +30,8 @@
 
 CMBWatchUser *CMBWatchUserMgr::get(QString login, QString svrID)
 {
+    QMutexLocker locker(&m_mutex);
+
     login = login.trimmed();
     svrID = svrID.trimmed();
     if( login.isEmpty() || svrID.isEmpty() )
@@ -52,6 +56,8 @@
 
 bool CMBWatchUserMgr::removeAll()
 {
+    QMutexLocker locker(&m_mutex);
+
     qDeleteAll(m_vector.begin(),m_vector.end());
 
     m_vector.clear();
@@ -61,9 +67,17 @@
 
 bool CMBWatchUserMgr::is(QString login, QString svrID)
 {
+    QMutexLocker locker(&m_mutex);
+
     CMBWatchUser *pUser = get(login, svrID);
     if( NULL == pUser )
         return false;
 
     return true;
 }
+
+void CMBWatchUserMgr::getVector(CMBWatchUserVector &vector)
+{
+    vector.clear();
+    vector = m_vector;
+}
diff --git a/mbwatch/mbwatchusermgr.h b/mbwatch/mbwatchusermgr.h
index 6a798f8..0c99558 100644
--- a/mbwatch/mbwatchusermgr.h
+++ b/mbwatch/mbwatchusermgr.h
@@ -1,6 +1,7 @@
 #ifndef MBWATCHUSERMGR_H
 #define MBWATCHUSERMGR_H
 #include "mbwatchuser.h"
+#include <QMutex>
 
 class CMBWatchUserMgr
 {
@@ -9,11 +10,14 @@
     ~CMBWatchUserMgr();
 private:
     CMBWatchUserVector m_vector;
+private:
+     QMutex   m_mutex;
 public:
     bool                add(CMBWatchUser *pUser );        // 娣诲姞鏁版嵁
     CMBWatchUser       *get(QString login,QString svrID);
     bool                removeAll();                    // 绉婚櫎
     bool                is(QString login,QString svrID);
+    void                getVector(CMBWatchUserVector &vector);
 };
 
 #endif // MBWATCHUSERMGR_H

--
Gitblit v1.9.1