From 4101dd8904953c7c2f355b8bdf47bd9d84f191ba Mon Sep 17 00:00:00 2001 From: zhaohe Date: Tue, 30 Jul 2024 11:30:57 +0800 Subject: [PATCH 1/3] update --- src/main/java/a8k/appbase/appret/AppRet.java | 147 +++++++++++++++++++++ src/main/java/a8k/appbase/appret/AppRetType.java | 8 ++ src/main/java/a8k/appbase/ecode/AppRet.java | 132 ------------------ .../java/a8k/appbase/ecode/AppRetEcodeInfo.java | 23 ++-- .../java/a8k/controler/A8kExceptionProcesser.java | 2 +- .../controler/engineer/EngineerPageControler.java | 2 +- src/main/java/a8k/db/AppUser.java | 29 ++++ src/main/java/a8k/db/MdbUser.java | 51 ------- .../DeviceInitializationCtrlService.java | 2 +- .../service/hardware/CommonHardwareOpeartion.java | 2 +- .../a8k/service/hardware/HbotControlService.java | 2 +- .../hardware/MotorTubeRackMoveCtrlService.java | 2 +- .../ReactionPlatesTransmitCtrlService.java | 2 +- .../SamplesPreProcessModuleCtrlService.java | 2 +- src/main/java/a8k/service/hardware/TestScript.java | 2 +- .../service/hardware/canbus/protocol/A8kEcode.java | 5 +- .../service/state_service/A8kStateMgrService.java | 8 +- .../java/a8k/service/usermgr/UserMgrService.java | 59 +++++++++ zhaohe_app.db | Bin 487424 -> 487424 bytes 19 files changed, 271 insertions(+), 209 deletions(-) create mode 100644 src/main/java/a8k/appbase/appret/AppRet.java create mode 100644 src/main/java/a8k/appbase/appret/AppRetType.java delete mode 100644 src/main/java/a8k/appbase/ecode/AppRet.java create mode 100644 src/main/java/a8k/db/AppUser.java delete mode 100644 src/main/java/a8k/db/MdbUser.java create mode 100644 src/main/java/a8k/service/usermgr/UserMgrService.java diff --git a/src/main/java/a8k/appbase/appret/AppRet.java b/src/main/java/a8k/appbase/appret/AppRet.java new file mode 100644 index 0000000..8dd4a8c --- /dev/null +++ b/src/main/java/a8k/appbase/appret/AppRet.java @@ -0,0 +1,147 @@ +package a8k.appbase.appret; + +import a8k.appbase.ecode.AppRetEcodeInfo; +import a8k.service.hardware.canbus.protocol.CmdId; +import a8k.service.hardware.canbus.protocol.MId; +import a8k.service.hardware.canbus.protocol.A8kEcode; +import a8k.appbase.HardwareException; + +public class AppRet { + + AppRetType appRetType = AppRetType.NORMAL; + + //错误信息 + AppRetEcodeInfo ecode = null; + String traceInfo = null; + + //携带的对象 + String dataType; + T data; + + //显示给用户的内容 + String message = null; + long timestamp;//接口请求时间 + + + public AppRet() { + this.timestamp = System.currentTimeMillis(); + } + + public boolean isSuccess() { + return !AppRetType.FAILURE.equals(appRetType); + } + + public long getTimestamp() { + return timestamp; + } + + public AppRetEcodeInfo getEcode() { + return ecode; + } + + public T getData() { + return data; + } + + public String getTraceInfo() { + return traceInfo; + } + + public String getMessage() { + return message; + } + + public String getDataType() { + return dataType; + } + + + public static AppRet message(String message) { + AppRet r = new AppRet<>(); + r.appRetType = AppRetType.MESSAGE; + r.message = message; + return r; + } + + public static AppRet reconfirm(String message) { + AppRet r = new AppRet<>(); + r.appRetType = AppRetType.RECONFIRM; + r.message = message; + return r; + } + + public static AppRet success(T data) { + AppRet r = new AppRet<>(); + r.data = data; + r.appRetType = AppRetType.NORMAL; + r.dataType = null == data ? null : data.getClass().getSimpleName(); + return r; + } + + + public static AppRet success() { + AppRet r = new AppRet<>(); + r.appRetType = AppRetType.NORMAL; + return r; + } + + + public static AppRet fail(A8kEcode errorCode, MId mid, CmdId cmd) { + AppRet r = new AppRet<>(); + r.appRetType = AppRetType.FAILURE; + r.ecode = new AppRetEcodeInfo(errorCode, mid, cmd); + r.message = r.ecode.toDisPlayString(); + return r; + } + + public static AppRet fail(A8kEcode errorCode, MId mid) { + AppRet r = new AppRet<>(); + r.appRetType = AppRetType.FAILURE; + + r.ecode = new AppRetEcodeInfo(errorCode, mid, null); + r.message = r.ecode.toDisPlayString(); + return r; + } + + public static AppRet fail(A8kEcode errorCode) { + AppRet r = new AppRet<>(); + r.appRetType = AppRetType.FAILURE; + + r.ecode = new AppRetEcodeInfo(errorCode, null, null); + r.message = r.ecode.toDisPlayString(); + return r; + } + + public static AppRet fail(AppRet ret) { + AppRet r = new AppRet<>(); + r.appRetType = AppRetType.FAILURE; + + r.ecode = new AppRetEcodeInfo(ret.getEcode().errorCode, ret.getEcode().mid, ret.getEcode().cmd); + r.data = null; + r.message = r.ecode.toDisPlayString(); + return r; + } + + public static AppRet fail(Exception e) { + StringBuilder traceSb = new StringBuilder(); + for (var trace : e.getStackTrace()) { + traceSb.append(trace.toString()).append("\n"); + } + String trace = traceSb.toString(); + AppRet r = new AppRet<>(); + r.appRetType = AppRetType.FAILURE; + + if (e instanceof HardwareException hexcep) { + r.ecode = new AppRetEcodeInfo(hexcep.getErrorCode(), hexcep.getModuleId(), hexcep.getCmdId()); + r.traceInfo = r.ecode.toDisPlayString() + hexcep.getExtMessage(); + r.message = r.ecode.toDisPlayString() + hexcep.getExtMessage(); + } else { + r.ecode = new AppRetEcodeInfo(A8kEcode.CodeException, null, null); + r.traceInfo = trace; + r.message = e.getMessage(); + } + return r; + } + + +} diff --git a/src/main/java/a8k/appbase/appret/AppRetType.java b/src/main/java/a8k/appbase/appret/AppRetType.java new file mode 100644 index 0000000..8660a1c --- /dev/null +++ b/src/main/java/a8k/appbase/appret/AppRetType.java @@ -0,0 +1,8 @@ +package a8k.appbase.appret; + +public enum AppRetType { + NORMAL, + FAILURE, + RECONFIRM, + MESSAGE, +} diff --git a/src/main/java/a8k/appbase/ecode/AppRet.java b/src/main/java/a8k/appbase/ecode/AppRet.java deleted file mode 100644 index 7eae2d5..0000000 --- a/src/main/java/a8k/appbase/ecode/AppRet.java +++ /dev/null @@ -1,132 +0,0 @@ -package a8k.appbase.ecode; - -import a8k.service.hardware.canbus.protocol.CmdId; -import a8k.service.hardware.canbus.protocol.MId; -import a8k.service.hardware.canbus.protocol.A8kEcode; -import a8k.appbase.HardwareException; - -public class AppRet { - - boolean success = false; - AppRetEcodeInfo ecode; - String dataType; - T data; - long timestamp;//接口请求时间 - String traceInfo; - String message; - - public AppRet() { - this.timestamp = System.currentTimeMillis(); - } - - public boolean isSuccess() { - return success; - } - - public long getTimestamp() { - return timestamp; - } - - public AppRetEcodeInfo getEcode() { - return ecode; - } - - public T getData() { - return data; - } - - public String getTraceInfo() { - return traceInfo; - } - - public String getMessage() { - return message; - } - - public String getDataType() { - return dataType; - } - - public static AppRet success(T data) { - AppRet r = new AppRet<>(); - r.success = true; - r.ecode = null; - r.data = data; - r.dataType = null == data ? null : data.getClass().getSimpleName(); - return r; - } - - - public static AppRet success() { - AppRet r = new AppRet<>(); - r.success = true; - r.ecode = null; - r.data = null; - return r; - } - - - public static AppRet fail(A8kEcode errorCode, MId mid, CmdId cmd) { - AppRet r = new AppRet<>(); - r.success = false; - r.ecode = new AppRetEcodeInfo(errorCode, mid, cmd); - r.data = null; - - r.message = r.ecode.toDisPlayString(); - return r; - } - - public static AppRet fail(A8kEcode errorCode, MId mid) { - AppRet r = new AppRet<>(); - r.success = false; - r.ecode = new AppRetEcodeInfo(errorCode, mid, null); - r.data = null; - r.message = r.ecode.toDisPlayString(); - return r; - } - - public static AppRet fail(A8kEcode errorCode) { - AppRet r = new AppRet<>(); - r.success = false; - r.ecode = new AppRetEcodeInfo(errorCode, null, null); - r.data = null; - r.message = r.ecode.toDisPlayString(); - return r; - } - - public static AppRet fail(AppRet ret) { - AppRet r = new AppRet<>(); - r.success = false; - r.ecode = new AppRetEcodeInfo(ret.getEcode().errorCode, ret.getEcode().mid, ret.getEcode().cmd); - r.data = null; - r.message = r.ecode.toDisPlayString(); - - return r; - } - - public static AppRet fail(Exception e) { - StringBuilder traceSb = new StringBuilder(); - for (var trace : e.getStackTrace()) { - traceSb.append(trace.toString()).append("\n"); - } - String trace = traceSb.toString(); - AppRet r = new AppRet<>(); - - if (e instanceof HardwareException hexcep) { - r.success = false; - r.ecode = new AppRetEcodeInfo(hexcep.getErrorCode(), hexcep.getModuleId(), hexcep.getCmdId()); - r.data = null; - r.traceInfo = r.ecode.toDisPlayString()+hexcep.getExtMessage(); - r.message = r.ecode.toDisPlayString()+hexcep.getExtMessage(); - } else { - r.success = false; - r.ecode = new AppRetEcodeInfo(A8kEcode.CodeException, null, null); - r.data = null; - r.traceInfo = trace; - r.message = e.getMessage(); - } - return r; - } - - -} diff --git a/src/main/java/a8k/appbase/ecode/AppRetEcodeInfo.java b/src/main/java/a8k/appbase/ecode/AppRetEcodeInfo.java index 8622344..cc4e8b1 100644 --- a/src/main/java/a8k/appbase/ecode/AppRetEcodeInfo.java +++ b/src/main/java/a8k/appbase/ecode/AppRetEcodeInfo.java @@ -5,11 +5,11 @@ import a8k.service.hardware.canbus.protocol.CmdId; import a8k.service.hardware.canbus.protocol.MId; public class AppRetEcodeInfo { - A8kEcode errorCode; - MId mid; - CmdId cmd; + public A8kEcode errorCode; + public MId mid; + public CmdId cmd; - AppRetEcodeInfo(A8kEcode errorCode, MId mid, CmdId cmd) { + public AppRetEcodeInfo(A8kEcode errorCode, MId mid, CmdId cmd) { this.errorCode = errorCode; this.mid = mid; this.cmd = cmd; @@ -76,15 +76,14 @@ public class AppRetEcodeInfo { } public String toDisPlayString() { - if (errorCode != null && mid != null && cmd != null) { - // return String.format("ECode:%s, MID:%s, CMD:%s", errorCode, mid, cmd); - return String.format("[%s]执行[%s]出现[]错误", mid, cmd, errorCode); - } else if (errorCode != null && mid != null) { - return String.format("捕获到模块[%s]的[%s]错误", mid, errorCode); - } else if (errorCode != null) { - return String.format("捕获到[%s]错误", errorCode); + if (mid == null && cmd == null) { + return String.format("%s", errorCode.chname); + } else if (mid == null) { + return String.format("捕获到执行[%s]出现[%s]错误", cmd.chName, errorCode.chname); + } else if (cmd == null) { + return String.format("捕获到模块[%s]的[%s]错误", mid.chname, errorCode.chname); } else { - return String.format("[%s]执行[%s]出现[]错误", mid, cmd, errorCode); + return String.format("捕获到模块[%s]执行[%s]出现[%s]错误", mid.chname, cmd.chName, errorCode.chname); } } } diff --git a/src/main/java/a8k/controler/A8kExceptionProcesser.java b/src/main/java/a8k/controler/A8kExceptionProcesser.java index 99f8314..15fdd49 100644 --- a/src/main/java/a8k/controler/A8kExceptionProcesser.java +++ b/src/main/java/a8k/controler/A8kExceptionProcesser.java @@ -1,6 +1,6 @@ package a8k.controler; -import a8k.appbase.ecode.AppRet; +import a8k.appbase.appret.AppRet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.ControllerAdvice; diff --git a/src/main/java/a8k/controler/engineer/EngineerPageControler.java b/src/main/java/a8k/controler/engineer/EngineerPageControler.java index 8bab774..7d12421 100644 --- a/src/main/java/a8k/controler/engineer/EngineerPageControler.java +++ b/src/main/java/a8k/controler/engineer/EngineerPageControler.java @@ -1,5 +1,5 @@ package a8k.controler.engineer; -import a8k.appbase.ecode.AppRet; +import a8k.appbase.appret.AppRet; import a8k.controler.engineer.utils.*; import a8k.db.HardwareServiceSetting; import a8k.utils.*; diff --git a/src/main/java/a8k/db/AppUser.java b/src/main/java/a8k/db/AppUser.java new file mode 100644 index 0000000..82fff64 --- /dev/null +++ b/src/main/java/a8k/db/AppUser.java @@ -0,0 +1,29 @@ +package a8k.db; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.iflytop.uf.UfActiveRecord; +import com.iflytop.uf.UfActiveRecordField; + +public class AppUser extends UfActiveRecord { + @UfActiveRecordField + public String account; + + @JsonIgnore + @UfActiveRecordField + public String password; + + @UfActiveRecordField + public Integer isAdmin; + + + // get table name + public static String getTableName() { + return "AppUser" + "Table"; + } + + // check if password matches + public Boolean matchPassword(String password) { + return this.password.equals(password); + } + +} diff --git a/src/main/java/a8k/db/MdbUser.java b/src/main/java/a8k/db/MdbUser.java deleted file mode 100644 index 48567f0..0000000 --- a/src/main/java/a8k/db/MdbUser.java +++ /dev/null @@ -1,51 +0,0 @@ -package a8k.db; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.iflytop.uf.UfActiveRecord; -import com.iflytop.uf.UfActiveRecordField; -import org.springframework.util.DigestUtils; -public class MdbUser extends UfActiveRecord { - @UfActiveRecordField - public String account; - - @JsonIgnore - @UfActiveRecordField - public String password; - - @JsonIgnore - @UfActiveRecordField - public String salt; - - @UfActiveRecordField - public Integer isAdmin; - - @UfActiveRecordField - public Integer createdAt; - - @UfActiveRecordField - public String createdBy; - - @JsonIgnore - @UfActiveRecordField - public String accessToken; - - @JsonIgnore - @UfActiveRecordField - public Integer accessTokenExpiredAt; - - // get table name - public static String getTableName() { - return "app_users"; - } - - // check if password matches - public Boolean matchPassword(String password) { - String hash = this.hashPassword(password); - return this.password.equals(hash); - } - - // hash password - public String hashPassword(String password) { - String salt = this.salt; - return DigestUtils.md5DigestAsHex((salt + password + salt).getBytes()); - } -} diff --git a/src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java b/src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java index fbe6d0d..6df12d6 100644 --- a/src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java +++ b/src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java @@ -4,7 +4,7 @@ import a8k.service.hardware.canbus.protocol.A8kEcode; import a8k.service.hardware.canbus.protocol.IOId; import a8k.service.hardware.canbus.protocol.MId; import a8k.appbase.HardwareException; -import a8k.appbase.ecode.AppRet; +import a8k.appbase.appret.AppRet; import a8k.service.hardware.canbus.A8kCanBusService; import a8k.service.hardware.CommonHardwareOpeartion; import a8k.service.hardware.SamplesPreProcessModuleCtrlService; diff --git a/src/main/java/a8k/service/hardware/CommonHardwareOpeartion.java b/src/main/java/a8k/service/hardware/CommonHardwareOpeartion.java index be5e0cf..09b3c84 100644 --- a/src/main/java/a8k/service/hardware/CommonHardwareOpeartion.java +++ b/src/main/java/a8k/service/hardware/CommonHardwareOpeartion.java @@ -2,7 +2,7 @@ package a8k.service.hardware; import a8k.service.hardware.canbus.protocol.MId; import a8k.appbase.HardwareException; -import a8k.appbase.ecode.AppRet; +import a8k.appbase.appret.AppRet; import a8k.service.hardware.canbus.A8kCanBusService; import jakarta.annotation.Resource; import org.springframework.stereotype.Controller; diff --git a/src/main/java/a8k/service/hardware/HbotControlService.java b/src/main/java/a8k/service/hardware/HbotControlService.java index 6536237..e9954c6 100644 --- a/src/main/java/a8k/service/hardware/HbotControlService.java +++ b/src/main/java/a8k/service/hardware/HbotControlService.java @@ -3,7 +3,7 @@ package a8k.service.hardware; import a8k.appbase.ConsumableGroup; import a8k.appbase.HardwareException; import a8k.appbase.cfg.*; -import a8k.appbase.ecode.AppRet; +import a8k.appbase.appret.AppRet; import a8k.controler.engineer.utils.*; import a8k.service.hardware.canbus.A8kCanBusService; import a8k.service.hardware.canbus.protocol.A8kEcode; diff --git a/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java b/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java index 1b5dc84..a279402 100644 --- a/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java +++ b/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java @@ -4,7 +4,7 @@ import a8k.appbase.TargetPosMeasureDirection; import a8k.controler.engineer.utils.*; import a8k.service.hardware.canbus.protocol.*; import a8k.appbase.HardwareException; -import a8k.appbase.ecode.AppRet; +import a8k.appbase.appret.AppRet; import a8k.service.hardware.canbus.A8kCanBusService; import jakarta.annotation.Resource; import org.slf4j.Logger; diff --git a/src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java b/src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java index 60ad142..8a491f5 100644 --- a/src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java +++ b/src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java @@ -6,7 +6,7 @@ import a8k.controler.engineer.utils.*; import a8k.service.hardware.canbus.protocol.A8kEcode; import a8k.service.hardware.canbus.protocol.IOId; import a8k.service.hardware.canbus.protocol.MId; -import a8k.appbase.ecode.AppRet; +import a8k.appbase.appret.AppRet; import a8k.service.hardware.canbus.A8kCanBusService; import a8k.service.hardware.canbus.protocol.RegIndex; import a8k.algo.opt_algo.A8kOptAlgo; diff --git a/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java b/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java index 03e4ca7..c8cdb92 100644 --- a/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java +++ b/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java @@ -5,7 +5,7 @@ import a8k.service.hardware.canbus.protocol.A8kEcode; import a8k.service.hardware.canbus.protocol.MId; import a8k.appbase.A8kTubeType; import a8k.appbase.HardwareException; -import a8k.appbase.ecode.AppRet; +import a8k.appbase.appret.AppRet; import a8k.service.hardware.canbus.A8kCanBusService; import jakarta.annotation.Resource; import org.slf4j.Logger; diff --git a/src/main/java/a8k/service/hardware/TestScript.java b/src/main/java/a8k/service/hardware/TestScript.java index 1fdf41d..f12f965 100644 --- a/src/main/java/a8k/service/hardware/TestScript.java +++ b/src/main/java/a8k/service/hardware/TestScript.java @@ -3,7 +3,7 @@ package a8k.service.hardware; import a8k.appbase.ConsumableGroup; import a8k.appbase.HardwareException; import a8k.appbase.cfg.*; -import a8k.appbase.ecode.AppRet; +import a8k.appbase.appret.AppRet; import a8k.service.hardware.canbus.A8kCanBusService; import a8k.service.hardware.canbus.protocol.A8kEcode; import a8k.service.hardware.canbus.protocol.MId; diff --git a/src/main/java/a8k/service/hardware/canbus/protocol/A8kEcode.java b/src/main/java/a8k/service/hardware/canbus/protocol/A8kEcode.java index 22f7a88..a828fa9 100644 --- a/src/main/java/a8k/service/hardware/canbus/protocol/A8kEcode.java +++ b/src/main/java/a8k/service/hardware/canbus/protocol/A8kEcode.java @@ -8,7 +8,6 @@ public enum A8kEcode { TubeNotHasHat(1, "全血试管未盖帽"), // SampleLiquidLevelWasNotDetected(2, "取样时未探测到液面"),// LargeBufferNotEnough(3, "大瓶缓冲液不足"), // - PasswdError(4, "密码错误"), // UserDoesNotExist(5, "用户不存在"), // GripperMPosError(6, "抓手舵机位置异常"), // GripperZMPosError(8, "抓手升降电机位置异常"), // @@ -33,6 +32,10 @@ public enum A8kEcode { TakeTipFail(27, "取Tip失败"),// PutTipFail(28, "放Tip失败"),// + PasswdError(100, "密码错误"), // + UsrNotExitError(101, "用户不存在"), // + + // // FOR HARDWARE // diff --git a/src/main/java/a8k/service/state_service/A8kStateMgrService.java b/src/main/java/a8k/service/state_service/A8kStateMgrService.java index cb216f7..73be3e5 100644 --- a/src/main/java/a8k/service/state_service/A8kStateMgrService.java +++ b/src/main/java/a8k/service/state_service/A8kStateMgrService.java @@ -31,10 +31,10 @@ public class A8kStateMgrService { @PostConstruct public void init() { - var list = UfActiveRecord.find(A8kStateDB.class); - if (list.isEmpty()) { - updateA8kState(new A8kState()); - } +// var list = UfActiveRecord.find(A8kStateDB.class); +// if (list.isEmpty()) { +// updateA8kState(new A8kState()); +// } } // diff --git a/src/main/java/a8k/service/usermgr/UserMgrService.java b/src/main/java/a8k/service/usermgr/UserMgrService.java new file mode 100644 index 0000000..7357251 --- /dev/null +++ b/src/main/java/a8k/service/usermgr/UserMgrService.java @@ -0,0 +1,59 @@ +package a8k.service.usermgr; + +import a8k.appbase.appret.AppRet; +import a8k.db.AppUser; +import a8k.service.hardware.canbus.protocol.A8kEcode; +import com.iflytop.uf.UfActiveRecord; +import jakarta.annotation.PostConstruct; +import org.slf4j.Logger; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + +@Component +public class UserMgrService { + static Logger logger = org.slf4j.LoggerFactory.getLogger(UserMgrService.class); + + AppUser loginUsr; + + @PostConstruct + public void init() { + logger.info("UserMgrService init"); + + + + } + + List getUserList() { + return UfActiveRecord.find(AppUser.class); + } + + AppUser getUser(String account) { + return UfActiveRecord.findOne(AppUser.class, Map.of("account", account)); + } + + // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + // EXTFUNC + // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + public AppRet login(String account, String password) { + var user = getUser(account); + if (user == null) { + return AppRet.fail(A8kEcode.UsrNotExitError); + } + if (!user.matchPassword(password)) { + return AppRet.fail(A8kEcode.PasswdError); + } + loginUsr = user; + return AppRet.success(user); + } + + public AppRet getLoginUsr() { + return AppRet.success(loginUsr); + } + + public AppRet> loginList() { + return AppRet.success(getUserList()); + } +} diff --git a/zhaohe_app.db b/zhaohe_app.db index e9a50caf40eed012189151f469b193eea468eccd..de035f16de447142cd6922234c26e1f2ff7b2083 100644 GIT binary patch delta 1260 zcma))%Zpq^6o+qD&)j}t_ez7K3D_}-fv&OMj}ZrCbSVy)>q0U*RduUENMIUeGTqZ@ zd)km*kE;SVB8V%&2WZHjAh-y)k*pfCbCIpv)D;(Iq4w%titkjN-#OpO^6bg-?CA@& zN1wg8Q+qVuzq?=iaUXnju+eEg&U)+J$uoC4e{@FeKii}BrPj}_qvqp#=Z4@x6VCHa zUT~a^71mr5DWT8|LByY0MyID0m5iY3<;1|CYtq(V?5 zPGJZ^6YU6+PRHIcxH!1l%8MPGow3xj(pwEnE*)gJq|n&1gu)@Or8hco7r!3^GI*z% z7nf6oMusU92(;V>$OK7$zBJH@fH6|WX|JL=1{dhGkryxFY$6QB!5I!y8UmRr3DgQJ z7(8QKIioPsSFR7={ODj9w~xR^d~1^4o8@_NAys>Uy!U~@kn*HzOQ11SKxuqPj}w8Y ziTnth|9~m32K{k=i()MX{p0=?Vd*;>4-Y=>Z%z86{?=2-bUIwmi}N`9(2|mIjC6H# znu18d3}p^dLrsZF9fC!1?-qD9{yG6?Ht#&Q)+i{>?mizJ#?D&_DGeSnl&;V?^=ge% z-V2MJK=F%1fa1;++^kcA;tx~s%jW#B-l#VA=^ockibO&$(ny$AE)B;sh!If)dm&_5 z#&13WU%n^hpnnbTUUxT&;rqK)B(6|8B2OQw>AV5*;x(KdN^G4)G8K|qcbJKI{}zz(;S5~doR4aa;`P+jyO>$2B~CLhsY$UIhemh}Efr~HEC{b~{QMB` z`1WmJK+5>tZNPsz0c*P(o$hwl`>nU={@(kxyWPFtW8KqUr+clpckkQ-@N##yiq@T1 z>P2l8o7)w*io~r7tlXXbpS;bAT*cW&1+JoJ{#TQKJ2v|-$<`}!6{*%La20pz75GmP e-uO2Yz@>W8T4nQ#C0H!$i{;v4x&HMsKYao}-%nlu delta 1236 zcma))&2NoC6vn61+p9>_hK6brpCK{K=Q}fmL`YaxxE7+(`J^FwgW|ThZId=(RjUab z5n^K@7Bv0&fNII zc+cB${9+S-!Xt!&ae6017b~fq48{}Aw1-iW5f_~$EN1O_NIGa&#%|$*<;x5n z6kzM$&d?0?mR2@fB9&N4q0+<#_~D?aW-(^TTsk|^JaK)pS&rVuTg!*()%|J@cEeC+ zJf|@QVw?&@RxT2!6DN{e6glQ(u8Qmaq=_a}1?A@r~TyiHX~@X7{A1FiyTI8R(=u&A!I3QQ=I zY+1Pd$LA@S$y*%<6@7mDr2H5qm-{WpLT?fKuH+ZfE z;mH*$+yBF|ACx2AV7LZy`qmA2br62~$yobekoAG`c{fniKsenEJiQ=1{VOBK{ssvK Y<=$>CzSzNwo!-SxZL!n$vQuCB0re Date: Tue, 30 Jul 2024 11:41:08 +0800 Subject: [PATCH 2/3] update --- src/main/java/a8k/db/AppUser.java | 9 +++ .../a8k/service/usermgr/AppUserMgrService.java | 66 +++++++++++++++++++++ .../java/a8k/service/usermgr/UserMgrService.java | 59 ------------------ .../V100_3__create_table_AppUserTable.sql | 9 +++ zhaohe_app.db | Bin 487424 -> 487424 bytes 5 files changed, 84 insertions(+), 59 deletions(-) create mode 100644 src/main/java/a8k/service/usermgr/AppUserMgrService.java delete mode 100644 src/main/java/a8k/service/usermgr/UserMgrService.java create mode 100644 src/main/resources/db/migration/V100_3__create_table_AppUserTable.sql diff --git a/src/main/java/a8k/db/AppUser.java b/src/main/java/a8k/db/AppUser.java index 82fff64..7aa5970 100644 --- a/src/main/java/a8k/db/AppUser.java +++ b/src/main/java/a8k/db/AppUser.java @@ -15,6 +15,8 @@ public class AppUser extends UfActiveRecord { @UfActiveRecordField public Integer isAdmin; + @UfActiveRecordField + public Integer isBuiltInUser; // get table name public static String getTableName() { @@ -26,4 +28,11 @@ public class AppUser extends UfActiveRecord { return this.password.equals(password); } + public Boolean isAdmin() { + return isAdmin != 0; + } + + public Boolean isBuiltInUser() { + return isBuiltInUser != 0; + } } diff --git a/src/main/java/a8k/service/usermgr/AppUserMgrService.java b/src/main/java/a8k/service/usermgr/AppUserMgrService.java new file mode 100644 index 0000000..5698c27 --- /dev/null +++ b/src/main/java/a8k/service/usermgr/AppUserMgrService.java @@ -0,0 +1,66 @@ +package a8k.service.usermgr; + +import a8k.appbase.appret.AppRet; +import a8k.db.AppUser; +import a8k.service.hardware.canbus.protocol.A8kEcode; +import com.iflytop.uf.UfActiveRecord; +import jakarta.annotation.PostConstruct; +import org.slf4j.Logger; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + +@Component +public class AppUserMgrService { + static Logger logger = org.slf4j.LoggerFactory.getLogger(AppUserMgrService.class); + + AppUser loginUsr; + + @PostConstruct + public void init() { + logger.info("UserMgrService init"); + AppUser admin = getUser("管理员"); + if (admin == null) { + admin = new AppUser(); + admin.account = "管理员"; + admin.password = "0000"; + admin.isAdmin = 1; + admin.isBuiltInUser = 1; + admin.save(); + } + + } + + List getUserList() { + return UfActiveRecord.find(AppUser.class); + } + + AppUser getUser(String account) { + return UfActiveRecord.findOne(AppUser.class, Map.of("account", account)); + } + + // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + // EXT FUNC + // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + public AppRet login(String account, String password) { + var user = getUser(account); + if (user == null) { + return AppRet.fail(A8kEcode.UsrNotExitError); + } + if (!user.matchPassword(password)) { + return AppRet.fail(A8kEcode.PasswdError); + } + loginUsr = user; + return AppRet.success(user); + } + + public AppRet getLoginUsr() { + return AppRet.success(loginUsr); + } + + public AppRet> loginList() { + return AppRet.success(getUserList()); + } +} diff --git a/src/main/java/a8k/service/usermgr/UserMgrService.java b/src/main/java/a8k/service/usermgr/UserMgrService.java deleted file mode 100644 index 7357251..0000000 --- a/src/main/java/a8k/service/usermgr/UserMgrService.java +++ /dev/null @@ -1,59 +0,0 @@ -package a8k.service.usermgr; - -import a8k.appbase.appret.AppRet; -import a8k.db.AppUser; -import a8k.service.hardware.canbus.protocol.A8kEcode; -import com.iflytop.uf.UfActiveRecord; -import jakarta.annotation.PostConstruct; -import org.slf4j.Logger; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.Map; - -@Component -public class UserMgrService { - static Logger logger = org.slf4j.LoggerFactory.getLogger(UserMgrService.class); - - AppUser loginUsr; - - @PostConstruct - public void init() { - logger.info("UserMgrService init"); - - - - } - - List getUserList() { - return UfActiveRecord.find(AppUser.class); - } - - AppUser getUser(String account) { - return UfActiveRecord.findOne(AppUser.class, Map.of("account", account)); - } - - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - // EXTFUNC - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - public AppRet login(String account, String password) { - var user = getUser(account); - if (user == null) { - return AppRet.fail(A8kEcode.UsrNotExitError); - } - if (!user.matchPassword(password)) { - return AppRet.fail(A8kEcode.PasswdError); - } - loginUsr = user; - return AppRet.success(user); - } - - public AppRet getLoginUsr() { - return AppRet.success(loginUsr); - } - - public AppRet> loginList() { - return AppRet.success(getUserList()); - } -} diff --git a/src/main/resources/db/migration/V100_3__create_table_AppUserTable.sql b/src/main/resources/db/migration/V100_3__create_table_AppUserTable.sql new file mode 100644 index 0000000..a49d373 --- /dev/null +++ b/src/main/resources/db/migration/V100_3__create_table_AppUserTable.sql @@ -0,0 +1,9 @@ +CREATE TABLE "AppUserTable" +( + "id" text NOT NULL, + "account" text, + "password" text, + "isAdmin" integer, + "isBuiltInUser" integer, + PRIMARY KEY ("id") +); \ No newline at end of file diff --git a/zhaohe_app.db b/zhaohe_app.db index de035f16de447142cd6922234c26e1f2ff7b2083..b169a858db3492089e468d6600ed578f4c43129f 100644 GIT binary patch delta 787 zcmZp8AlvXjc7n9vTLuP(av&}NVs0RwKT*e+^(}*5S;xkd1^fbRypat22l;LI&hbU? zp5%?(tSI2hTc5|q%_wd!9L~aP&B)1SXkegcoLrQeSdywxl9-f}s^C~q5L%pC6awM| z2l|8oRm2;|$3xV_gVn?%tI;bi%z3r>(@rA;BNJT%b6sNt1p{L%V@oSzLp^hIQ@%zX zR-lEk!lhsfSvTL1)nO7~@nURr=ZSoU+1)ze* zAO+v~Kk>iif5HD4sNg(5D+@CxBU|$e`}P<1jN4z>Gf7_H=0DEB$lu4n-^bs#S<#@0 z-`1RoEmU5VlheR5EyWRH@8(#>e1W}*X(QWw=0eux%zE3EJ}|Q|^Jg${0yQ!)m^U)A ziF>O~|JcbWA&(r!@rKAeW9AbKoZE9gGutvUG6HS;8`D_Q$iObHs>;}`4UQmW)yQlk z=O9Y7P|8eE0?|+~*^pf{TPZO)IlnZo1SV0ET2Z0{ zRbG%-TwI=C1k;2pm09eVlAD{ObWQ{tHiN^eREP}%7RXEMsP s&;P~@#4JF}x_$mPwhT)~uIU^G?ApA>z;FU#P`WPz#?Ar$We)5H0Cc|N!TVvwvoRQfnb1p%&UZLmU2dc6PQ@%H8#D zTjA+QeIWXz;bCK9s80m-MXaIzdBGSX5dWYLCWwEC^r4y<2}X>@7=L>l;WVZ_bD7-S z?#yStzwi8hb94OKn&a2jys*0Ex+F=@K=Yv`p`Cj1VN!EldL;AiS@#vCsU~?*Qr=g# zG=18%H+gZc9nUA{F0R=uH`OQ$lJci=OSz%^s4UF2T>e5ixzM#1o-c;ae^YKMKPijw z{7dE8#hw$3J(2mv9(mQ};YK1g$0e!ZQUk01tNx{Wz3#KRTwO!$tF=25KO~+{JQTkW zAB6#<|MwG&TfV?b&Rp8g7kZ7RrJ@KO$fBL#Ul>}?7z z73383BHst=e0d*Ch|CxRk`gpsg$b|uvKhWy8!Y&x3DO5a@08qG?~B4?*`ve#+j7Bd zLGGx-V2alr&U+5#t#~5CryS;I^MhHR`J&IyPuv}PV0Ao=_DC(kn=o|C&>?nM^i8lM zx$(@{?rdQQdK03sJ1=(Uvs@Gk{aJTvqJ$U{`RQ>kRP5a!Pj`oet3cRRBEYEI-$Opj zxX!VvNH!i_6;F5V0e@m&%j>uHvE0rncT8*(6YN-O{D@dy48i!oeev|hJyKhMfU%{Q z`{UWnz_iHwRRIi)@&1)1LTm685H>%aAJ64Pejq0@RYjp1_~43C7%f2&0NrIkDm0em zs$v+%{8s)9=GzqQz0~oy( zaipdkQ5{CJ47~rIax5L+-1T!r!YFqZCUhWTdKiC^2|*88cOZ z3AbgadW=mCu9PvS{)O35J;ow7Yl^4UFsP3JQ>-u-lBDX8#*(GdYqf-GV%M>d;Sh#& z=3wMlwt-B?W|nO+lXJJcM5&}o5mzi!T)M`oX^l1BUdhJr!^0*rRGlK7dpfcWp&~|9 zsxwvPg6owll}xEv>Ax2$PLxj*!&W6J`pL%aQk$g_gLuqDOqd?hp|lZYj*VR1Qe9zU z!G!nE^6t;V85eHCAmfMov(uHw6va3s7sz(0l`&VNp6wt{6+osYEh3wk7Ibw+ZAz)j zoscucStb;gO=a_wQ(`GT92|geLm(V`8W&(Y62j$3SGk9%MJ&V#RXxIVYU%6_y?ini zmt?DOC`pq1P6ucwjv%^FT?9rGq3bOHqkUL$S$Ftj%?rR5%k|8Y&%fjt~LVdyrL9%$u411D@DK(OgT>FK7$n9Yf2 zq Date: Tue, 30 Jul 2024 11:48:14 +0800 Subject: [PATCH 3/3] update --- src/main/java/a8k/db/AppUser.java | 12 ++++-- .../service/hardware/canbus/protocol/A8kEcode.java | 3 +- .../a8k/service/usermgr/AppUserMgrService.java | 41 +++++++++++++++++++++ zhaohe_app.db | Bin 487424 -> 487424 bytes 4 files changed, 52 insertions(+), 4 deletions(-) diff --git a/src/main/java/a8k/db/AppUser.java b/src/main/java/a8k/db/AppUser.java index 7aa5970..8a97350 100644 --- a/src/main/java/a8k/db/AppUser.java +++ b/src/main/java/a8k/db/AppUser.java @@ -10,13 +10,13 @@ public class AppUser extends UfActiveRecord { @JsonIgnore @UfActiveRecordField - public String password; + public String password = ""; @UfActiveRecordField - public Integer isAdmin; + public Integer isAdmin = 0; @UfActiveRecordField - public Integer isBuiltInUser; + public Integer isBuiltInUser = 0; // get table name public static String getTableName() { @@ -29,10 +29,16 @@ public class AppUser extends UfActiveRecord { } public Boolean isAdmin() { + if (isAdmin == null) { + return false; + } return isAdmin != 0; } public Boolean isBuiltInUser() { + if (isBuiltInUser == null) { + return false; + } return isBuiltInUser != 0; } } diff --git a/src/main/java/a8k/service/hardware/canbus/protocol/A8kEcode.java b/src/main/java/a8k/service/hardware/canbus/protocol/A8kEcode.java index a828fa9..39382d4 100644 --- a/src/main/java/a8k/service/hardware/canbus/protocol/A8kEcode.java +++ b/src/main/java/a8k/service/hardware/canbus/protocol/A8kEcode.java @@ -34,7 +34,8 @@ public enum A8kEcode { PasswdError(100, "密码错误"), // UsrNotExitError(101, "用户不存在"), // - + UsrExistError(102, "用户已存在"), // + UsrNotAllowBeDeleted(103, "用户不允许被删除"), // // // FOR HARDWARE diff --git a/src/main/java/a8k/service/usermgr/AppUserMgrService.java b/src/main/java/a8k/service/usermgr/AppUserMgrService.java index 5698c27..a0da737 100644 --- a/src/main/java/a8k/service/usermgr/AppUserMgrService.java +++ b/src/main/java/a8k/service/usermgr/AppUserMgrService.java @@ -63,4 +63,45 @@ public class AppUserMgrService { public AppRet> loginList() { return AppRet.success(getUserList()); } + + public AppRet addUser(String account, String password, int isAdmin) { + if (getUser(account) != null) { + return AppRet.fail(A8kEcode.UsrExistError); + } + var user = new AppUser(); + user.account = account; + user.password = password; + user.isAdmin = isAdmin; + user.save(); + return AppRet.success(user); + } + + public AppRet delUser(String account) { + var user = getUser(account); + if (user == null) { + return AppRet.fail(A8kEcode.UsrNotExitError); + } + if (user.isBuiltInUser == 1) { + return AppRet.fail(A8kEcode.UsrNotAllowBeDeleted); + } + user.delete(); + return AppRet.success(user); + } + + public AppRet modifyUser(String account, String password, int isAdmin) { + var user = getUser(account); + if (user == null) { + return AppRet.fail(A8kEcode.UsrNotExitError); + } + user.password = password; + user.isAdmin = isAdmin; + user.save(); + return AppRet.success(user); + } + + public AppRet getLoginUsrInfo() { + return AppRet.success(loginUsr); + } + + } diff --git a/zhaohe_app.db b/zhaohe_app.db index b169a858db3492089e468d6600ed578f4c43129f..465c4ef0897593e604671e29fcb5a91d40ef692f 100644 GIT binary patch delta 44 zcmZp8AlvXjc7inH`-w8ntnV50@^&?*w5Bk&rZBapFt?_#w5G7Orm$^IVV{!^0EPn) AYXATM delta 44 zcmZp8AlvXjc7inH+leyHtZy0g$~qcTT2mNXQ