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 {
uint32_t id;
char name[MAX_USR_NAME_SIZE];
char passwd[6];
char passwd[6 + 1];
uint8_t role;
bool effective;
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 bool module_inited;
static acid_distrubt_record_table_t* acid_distrubt_record_table;
static zmutex lock(TABLE_NAME);
static zmutex lock(TABLE_NAME);
/***********************************************************************************************************************
* FUNCTION *
@ -50,6 +50,24 @@ void AcidDistrubtRecordDao::init() {
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) {
zlock_guard l(lock);
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;
acid_distrubt_record_table->record[recordNum] = record;
acid_distrubt_record_table->maxid++;
acid_distrubt_record_table->recordNum++;
@ -73,7 +91,6 @@ void AcidDistrubtRecordDao::addRecordSync(const acid_distrubt_record_t& record)
storgeItem(recordNum);
}
acid_distrubt_record_table_t* AcidDistrubtRecordDao::getRecordTable() {
zlock_guard l(lock);
ZASSERT_INFO(module_inited, "%s not inited", TABLE_NAME);
@ -117,10 +134,12 @@ void AcidDistrubtRecordDao::clearRecord() {
}
bool AcidDistrubtRecordDao::isAlmostFull() {
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);
return acid_distrubt_record_table->recordNum >= ACID_DISTRUBT_RECORD_NUM; }
return acid_distrubt_record_table->recordNum >= ACID_DISTRUBT_RECORD_NUM;
}
int AcidDistrubtRecordDao::getRecordNum() {
zlock_guard l(lock);

2
usrc/db/dao/acid_distrubt_record_dao.hpp

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

13
usrc/db/dao/acid_use_record_dao.cpp

@ -51,6 +51,19 @@ void AcidUseRecordDao::init() {
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) {
zlock_guard l(lock);
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 void clearRecord();
static int getRecordNum();
static bool isHasRecordRelevantThisUser(uint8_t userid);
};
} // namespace iflytop

2
usrc/db/dao/user_dao.cpp

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

8
usrc/uicontroler/page/login_page.cpp

@ -9,8 +9,6 @@ namespace iflytop {
using namespace std;
#define TAG "LoginPage"
class LoginPage : public IPageProcesser {
private:
char userName[20] = {0};
@ -26,7 +24,7 @@ class LoginPage : public IPageProcesser {
private:
virtual void onPageLoad(OnPageLoadContext* cxt) override {}
virtual void onChangePageEvent() override{
virtual void onChangePageEvent() override {
resetPage();
return;
};
@ -58,14 +56,13 @@ class LoginPage : public IPageProcesser {
UIS->setTxt(thisPage, ob_login_uNameEMsg, "Óû§Ãû²»´æÔÚ");
return;
}
ZLOGI(TAG, "login %s(%d) role:%d passwd:%s", userName, user->id, user->role, user->passwd);
if (strcmp(user->passwd, passwd) != 0) {
UIS->setTxt(thisPage, ob_login_pwdEMsg, "ÃÜÂë´íÎó");
return;
}
login(user);
}
}
@ -86,7 +83,6 @@ class LoginPage : public IPageProcesser {
GStateMgr::ins()->setLogin(user->id, userName, (user_role_t)user->role);
AppEventBus::ins()->pushSimpleEvent(kAE_LoginEvent);
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 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) {
if (bid == ob_muAcidType_t1) {
AcidNameDao::updateAcidName(1 - 1, text);
updateAcidName(bid, 1 - 1, text);
} else if (bid == ob_muAcidType_t2) {
AcidNameDao::updateAcidName(2 - 1, text);
updateAcidName(bid, 2 - 1, text);
} else if (bid == ob_muAcidType_t3) {
AcidNameDao::updateAcidName(3 - 1, text);
updateAcidName(bid, 3 - 1, text);
} else if (bid == ob_muAcidType_t4) {
AcidNameDao::updateAcidName(4 - 1, text);
updateAcidName(bid, 4 - 1, text);
} else if (bid == ob_muAcidType_t5) {
AcidNameDao::updateAcidName(5 - 1, text);
updateAcidName(bid, 5 - 1, text);
} else if (bid == ob_muAcidType_t6) {
AcidNameDao::updateAcidName(6 - 1, text);
updateAcidName(bid, 6 - 1, text);
} else if (bid == ob_muAcidType_t7) {
AcidNameDao::updateAcidName(7 - 1, text);
updateAcidName(bid, 7 - 1, text);
} else if (bid == ob_muAcidType_t8) {
AcidNameDao::updateAcidName(8 - 1, text);
updateAcidName(bid, 8 - 1, text);
} else if (bid == ob_muAcidType_t9) {
AcidNameDao::updateAcidName(9 - 1, text);
updateAcidName(bid, 9 - 1, text);
} else if (bid == ob_muAcidType_t10) {
AcidNameDao::updateAcidName(10 - 1, text);
updateAcidName(bid, 10 - 1, text);
} else if (bid == ob_muAcidType_t11) {
AcidNameDao::updateAcidName(11 - 1, text);
updateAcidName(bid, 11 - 1, text);
} else if (bid == ob_muAcidType_t12) {
AcidNameDao::updateAcidName(12 - 1, text);
updateAcidName(bid, 12 - 1, text);
} else if (bid == ob_muAcidType_t13) {
AcidNameDao::updateAcidName(13 - 1, text);
updateAcidName(bid, 13 - 1, text);
} else if (bid == ob_muAcidType_t14) {
AcidNameDao::updateAcidName(14 - 1, text);
updateAcidName(bid, 14 - 1, text);
} 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 {

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

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

2
usrc/uicontroler/page/popwin_page.cpp

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

Loading…
Cancel
Save