Browse Source

fix some bug

v2
zhaohe 8 months ago
parent
commit
779dac2808
  1. 2
      uappbase/bean/dbtype/user.hpp
  2. BIN
      ui/hand_acid_mainboard_ui.HMI
  3. 31
      usrc/db/dao/acid_distrubt_record_dao.cpp
  4. 2
      usrc/db/dao/acid_distrubt_record_dao.hpp
  5. 13
      usrc/db/dao/acid_use_record_dao.cpp
  6. 2
      usrc/db/dao/acid_use_record_dao.hpp
  7. 2
      usrc/db/dao/user_dao.cpp
  8. 8
      usrc/uicontroler/page/login_page.cpp
  9. 36
      usrc/uicontroler/page/mupage/muAcidType_page.cpp
  10. 23
      usrc/uicontroler/page/mupage/muUsrMgr_page.cpp
  11. 2
      usrc/uicontroler/page/popwin_page.cpp

2
uappbase/bean/dbtype/user.hpp

@ -8,7 +8,7 @@ namespace iflytop {
typedef struct { typedef struct {
uint32_t id; uint32_t id;
char name[MAX_USR_NAME_SIZE]; char name[MAX_USR_NAME_SIZE];
char passwd[6];
char passwd[6 + 1];
uint8_t role; uint8_t role;
bool effective; bool effective;
bool builtIn; bool builtIn;

BIN
ui/hand_acid_mainboard_ui.HMI

31
usrc/db/dao/acid_distrubt_record_dao.cpp

@ -19,7 +19,7 @@ using namespace iflytop;
static zhdb_table_t* table; static zhdb_table_t* table;
static bool module_inited; static bool module_inited;
static acid_distrubt_record_table_t* acid_distrubt_record_table; static acid_distrubt_record_table_t* acid_distrubt_record_table;
static zmutex lock(TABLE_NAME);
static zmutex lock(TABLE_NAME);
/*********************************************************************************************************************** /***********************************************************************************************************************
* FUNCTION * * FUNCTION *
@ -50,6 +50,24 @@ void AcidDistrubtRecordDao::init() {
ZLOGI(TAG, "init success"); ZLOGI(TAG, "init success");
} }
bool AcidDistrubtRecordDao::isHasRecordRelevantThisUser(uint8_t userid) {
zlock_guard l(lock);
ZASSERT_INFO(module_inited, "%s not inited", TABLE_NAME);
for (int i = 0; i < acid_distrubt_record_table->recordNum; i++) {
if (acid_distrubt_record_table->record[i].distrubtAcidUsrid == userid) {
return true;
}
if(acid_distrubt_record_table->record[i].takeAcidUsrid == userid) {
return true;
}
}
return false;
}
void AcidDistrubtRecordDao::addRecordSync(const acid_distrubt_record_t& record) { void AcidDistrubtRecordDao::addRecordSync(const acid_distrubt_record_t& record) {
zlock_guard l(lock); zlock_guard l(lock);
ZASSERT_INFO(module_inited, "%s not inited", TABLE_NAME); ZASSERT_INFO(module_inited, "%s not inited", TABLE_NAME);
@ -60,7 +78,7 @@ void AcidDistrubtRecordDao::addRecordSync(const acid_distrubt_record_t& record)
} }
int recordNum = acid_distrubt_record_table->recordNum; int recordNum = acid_distrubt_record_table->recordNum;
acid_distrubt_record_table->record[recordNum] = record; acid_distrubt_record_table->record[recordNum] = record;
acid_distrubt_record_table->maxid++; acid_distrubt_record_table->maxid++;
acid_distrubt_record_table->recordNum++; acid_distrubt_record_table->recordNum++;
@ -73,7 +91,6 @@ void AcidDistrubtRecordDao::addRecordSync(const acid_distrubt_record_t& record)
storgeItem(recordNum); storgeItem(recordNum);
} }
acid_distrubt_record_table_t* AcidDistrubtRecordDao::getRecordTable() { acid_distrubt_record_table_t* AcidDistrubtRecordDao::getRecordTable() {
zlock_guard l(lock); zlock_guard l(lock);
ZASSERT_INFO(module_inited, "%s not inited", TABLE_NAME); ZASSERT_INFO(module_inited, "%s not inited", TABLE_NAME);
@ -117,10 +134,12 @@ void AcidDistrubtRecordDao::clearRecord() {
} }
bool AcidDistrubtRecordDao::isAlmostFull() { bool AcidDistrubtRecordDao::isAlmostFull() {
zlock_guard l(lock); zlock_guard l(lock);
return acid_distrubt_record_table->recordNum >= ACID_DISTRUBT_ALMOST_FULL; }
bool AcidDistrubtRecordDao::isFull() {
return acid_distrubt_record_table->recordNum >= ACID_DISTRUBT_ALMOST_FULL;
}
bool AcidDistrubtRecordDao::isFull() {
zlock_guard l(lock); zlock_guard l(lock);
return acid_distrubt_record_table->recordNum >= ACID_DISTRUBT_RECORD_NUM; }
return acid_distrubt_record_table->recordNum >= ACID_DISTRUBT_RECORD_NUM;
}
int AcidDistrubtRecordDao::getRecordNum() { int AcidDistrubtRecordDao::getRecordNum() {
zlock_guard l(lock); zlock_guard l(lock);

2
usrc/db/dao/acid_distrubt_record_dao.hpp

@ -36,6 +36,8 @@ class AcidDistrubtRecordDao {
static bool isFull(); static bool isFull();
static void clearRecord(); static void clearRecord();
static int getRecordNum(); static int getRecordNum();
static bool isHasRecordRelevantThisUser(uint8_t userid);
}; };
} // namespace iflytop } // namespace iflytop

13
usrc/db/dao/acid_use_record_dao.cpp

@ -51,6 +51,19 @@ void AcidUseRecordDao::init() {
ZLOGI(TAG, "init success"); ZLOGI(TAG, "init success");
} }
bool AcidUseRecordDao::isHasRecordRelevantThisUser(uint8_t userid) {
zlock_guard l(lock);
ZASSERT_INFO(module_inited, "acid use record dao not inited");
for (int i = 0; i < m_table->recordNum; i++) {
if (m_table->record[i].usrid == userid) {
return true;
}
}
return false;
}
void AcidUseRecordDao::addRecord(const acid_use_record_t& record) { void AcidUseRecordDao::addRecord(const acid_use_record_t& record) {
zlock_guard l(lock); zlock_guard l(lock);
ZASSERT_INFO(module_inited, "acid use record dao not inited"); ZASSERT_INFO(module_inited, "acid use record dao not inited");

2
usrc/db/dao/acid_use_record_dao.hpp

@ -43,6 +43,8 @@ class AcidUseRecordDao {
static bool isFull(); static bool isFull();
static void clearRecord(); static void clearRecord();
static int getRecordNum(); static int getRecordNum();
static bool isHasRecordRelevantThisUser(uint8_t userid);
}; };
} // namespace iflytop } // namespace iflytop

2
usrc/db/dao/user_dao.cpp

@ -9,7 +9,7 @@ using namespace iflytop;
/*********************************************************************************************************************** /***********************************************************************************************************************
* MARCO * * MARCO *
***********************************************************************************************************************/ ***********************************************************************************************************************/
#define TABLE_VERSION (TABLE_BASE_VERSION + 4)
#define TABLE_VERSION (TABLE_BASE_VERSION + 5)
#define TABLE_NAME "user_table" #define TABLE_NAME "user_table"
/*********************************************************************************************************************** /***********************************************************************************************************************

8
usrc/uicontroler/page/login_page.cpp

@ -9,8 +9,6 @@ namespace iflytop {
using namespace std; using namespace std;
#define TAG "LoginPage" #define TAG "LoginPage"
class LoginPage : public IPageProcesser { class LoginPage : public IPageProcesser {
private: private:
char userName[20] = {0}; char userName[20] = {0};
@ -26,7 +24,7 @@ class LoginPage : public IPageProcesser {
private: private:
virtual void onPageLoad(OnPageLoadContext* cxt) override {} virtual void onPageLoad(OnPageLoadContext* cxt) override {}
virtual void onChangePageEvent() override{
virtual void onChangePageEvent() override {
resetPage(); resetPage();
return; return;
}; };
@ -58,14 +56,13 @@ class LoginPage : public IPageProcesser {
UIS->setTxt(thisPage, ob_login_uNameEMsg, "Óû§Ãû²»´æÔÚ"); UIS->setTxt(thisPage, ob_login_uNameEMsg, "Óû§Ãû²»´æÔÚ");
return; return;
} }
ZLOGI(TAG, "login %s(%d) role:%d passwd:%s", userName, user->id, user->role, user->passwd);
if (strcmp(user->passwd, passwd) != 0) { if (strcmp(user->passwd, passwd) != 0) {
UIS->setTxt(thisPage, ob_login_pwdEMsg, "ÃÜÂë´íÎó"); UIS->setTxt(thisPage, ob_login_pwdEMsg, "ÃÜÂë´íÎó");
return; return;
} }
login(user); login(user);
} }
} }
@ -86,7 +83,6 @@ class LoginPage : public IPageProcesser {
GStateMgr::ins()->setLogin(user->id, userName, (user_role_t)user->role); GStateMgr::ins()->setLogin(user->id, userName, (user_role_t)user->role);
AppEventBus::ins()->pushSimpleEvent(kAE_LoginEvent); AppEventBus::ins()->pushSimpleEvent(kAE_LoginEvent);
UIControler::ins()->chpage(pg_home, true); UIControler::ins()->chpage(pg_home, true);
} }
}; };

36
usrc/uicontroler/page/mupage/muAcidType_page.cpp

@ -46,37 +46,43 @@ class MuAcidType : public IPageProcesser {
virtual void onBackKey() override { UIControler::ins()->chpage(pg_navi, true); }; virtual void onBackKey() override { UIControler::ins()->chpage(pg_navi, true); };
virtual void onChangePageEvent() override {}; virtual void onChangePageEvent() override {};
void updateAcidName(int bid, int id, const char* text) {
AcidNameDao::updateAcidName(id, text);
setText(bid, AcidNameDao::getAcidName(id));
}
virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) { virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) {
if (bid == ob_muAcidType_t1) { if (bid == ob_muAcidType_t1) {
AcidNameDao::updateAcidName(1 - 1, text);
updateAcidName(bid, 1 - 1, text);
} else if (bid == ob_muAcidType_t2) { } else if (bid == ob_muAcidType_t2) {
AcidNameDao::updateAcidName(2 - 1, text);
updateAcidName(bid, 2 - 1, text);
} else if (bid == ob_muAcidType_t3) { } else if (bid == ob_muAcidType_t3) {
AcidNameDao::updateAcidName(3 - 1, text);
updateAcidName(bid, 3 - 1, text);
} else if (bid == ob_muAcidType_t4) { } else if (bid == ob_muAcidType_t4) {
AcidNameDao::updateAcidName(4 - 1, text);
updateAcidName(bid, 4 - 1, text);
} else if (bid == ob_muAcidType_t5) { } else if (bid == ob_muAcidType_t5) {
AcidNameDao::updateAcidName(5 - 1, text);
updateAcidName(bid, 5 - 1, text);
} else if (bid == ob_muAcidType_t6) { } else if (bid == ob_muAcidType_t6) {
AcidNameDao::updateAcidName(6 - 1, text);
updateAcidName(bid, 6 - 1, text);
} else if (bid == ob_muAcidType_t7) { } else if (bid == ob_muAcidType_t7) {
AcidNameDao::updateAcidName(7 - 1, text);
updateAcidName(bid, 7 - 1, text);
} else if (bid == ob_muAcidType_t8) { } else if (bid == ob_muAcidType_t8) {
AcidNameDao::updateAcidName(8 - 1, text);
updateAcidName(bid, 8 - 1, text);
} else if (bid == ob_muAcidType_t9) { } else if (bid == ob_muAcidType_t9) {
AcidNameDao::updateAcidName(9 - 1, text);
updateAcidName(bid, 9 - 1, text);
} else if (bid == ob_muAcidType_t10) { } else if (bid == ob_muAcidType_t10) {
AcidNameDao::updateAcidName(10 - 1, text);
updateAcidName(bid, 10 - 1, text);
} else if (bid == ob_muAcidType_t11) { } else if (bid == ob_muAcidType_t11) {
AcidNameDao::updateAcidName(11 - 1, text);
updateAcidName(bid, 11 - 1, text);
} else if (bid == ob_muAcidType_t12) { } else if (bid == ob_muAcidType_t12) {
AcidNameDao::updateAcidName(12 - 1, text);
updateAcidName(bid, 12 - 1, text);
} else if (bid == ob_muAcidType_t13) { } else if (bid == ob_muAcidType_t13) {
AcidNameDao::updateAcidName(13 - 1, text);
updateAcidName(bid, 13 - 1, text);
} else if (bid == ob_muAcidType_t14) { } else if (bid == ob_muAcidType_t14) {
AcidNameDao::updateAcidName(14 - 1, text);
updateAcidName(bid, 14 - 1, text);
} else if (bid == ob_muAcidType_t15) { } else if (bid == ob_muAcidType_t15) {
AcidNameDao::updateAcidName(15 - 1, text);
updateAcidName(bid, 15 - 1, text);
} }
}; };
virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override { virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override {

23
usrc/uicontroler/page/mupage/muUsrMgr_page.cpp

@ -151,10 +151,6 @@ class MuUsrMgr : public IPageProcesser {
} else if (bid == ob_muUsrMgr_save) { } else if (bid == ob_muUsrMgr_save) {
saveUsr(); saveUsr();
} else if (bid == ob_muUsrMgr_del) { } else if (bid == ob_muUsrMgr_del) {
if (AcidDistrubtRecordDao::getRecordNum() > 0 || AcidUseRecordDao::getRecordNum() > 1) {
UIControler::ins()->popWarningWin("无法删除用户名,领酸记录或用酸记录不为空");
return;
}
delUsr(); delUsr();
} }
} }
@ -222,6 +218,16 @@ class MuUsrMgr : public IPageProcesser {
return; return;
} }
if (AcidDistrubtRecordDao::isHasRecordRelevantThisUser(user->id)) {
UIControler::ins()->popWarningWin("无法删除用户,部分领酸记录与这个用户相关.");
return;
}
if (AcidUseRecordDao::isHasRecordRelevantThisUser(user->id)) {
UIControler::ins()->popWarningWin("无法删除用户,部分用酸记录与这个用户相关.");
return;
}
UIControler::ins()->doBlockWork("删除用户...", [this, user]() { UIControler::ins()->doBlockWork("删除用户...", [this, user]() {
UserDao::delUser(user->id); UserDao::delUser(user->id);
fillUsrStateUICache(); fillUsrStateUICache();
@ -258,8 +264,13 @@ class MuUsrMgr : public IPageProcesser {
} }
if (strcmp(m_editContext.name, user->name) != 0) { if (strcmp(m_editContext.name, user->name) != 0) {
if (AcidDistrubtRecordDao::getRecordNum() > 0 || AcidUseRecordDao::getRecordNum() > 1) {
UIControler::ins()->popWarningWin("无法修改用户名,领酸记录或用酸记录不为空.");
if (AcidDistrubtRecordDao::isHasRecordRelevantThisUser(user->id)) {
UIControler::ins()->popWarningWin("无法修改用户名,部分领酸记录与这个用户相关.");
return;
}
if (AcidUseRecordDao::isHasRecordRelevantThisUser(user->id)) {
UIControler::ins()->popWarningWin("无法修改用户名,部分用酸记录与这个用户相关.");
return; return;
} }
} }

2
usrc/uicontroler/page/popwin_page.cpp

@ -81,8 +81,8 @@ class PopWinPage : public IPageProcesser {
handupInfoFlag = true; handupInfoFlag = true;
if (UIControler::ins()->getNowPage() != thisPage) { if (UIControler::ins()->getNowPage() != thisPage) {
lastPage = UIControler::ins()->getNowPage(); lastPage = UIControler::ins()->getNowPage();
UIControler::ins()->chpage(pg_popwin, false);
} }
UIControler::ins()->chpage(pg_popwin, false);
} }
void visPopWin(bool state) { void visPopWin(bool state) {

Loading…
Cancel
Save