diff --git a/src/main/java/a8k/appbase/ecode/AppRet.java b/src/main/java/a8k/appbase/appret/AppRet.java similarity index 62% rename from src/main/java/a8k/appbase/ecode/AppRet.java rename to src/main/java/a8k/appbase/appret/AppRet.java index 7eae2d5..8dd4a8c 100644 --- a/src/main/java/a8k/appbase/ecode/AppRet.java +++ b/src/main/java/a8k/appbase/appret/AppRet.java @@ -1,5 +1,6 @@ -package a8k.appbase.ecode; +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; @@ -7,20 +8,27 @@ import a8k.appbase.HardwareException; public class AppRet { - boolean success = false; - AppRetEcodeInfo ecode; - String dataType; - T data; - long timestamp;//接口请求时间 - String traceInfo; - String message; + 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 success; + return !AppRetType.FAILURE.equals(appRetType); } public long getTimestamp() { @@ -47,60 +55,70 @@ public class AppRet { 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.success = true; - r.ecode = null; - r.data = data; - r.dataType = null == data ? null : data.getClass().getSimpleName(); + 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.success = true; - r.ecode = null; - r.data = null; + r.appRetType = AppRetType.NORMAL; 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(); + 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.success = false; + r.appRetType = AppRetType.FAILURE; + 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.appRetType = AppRetType.FAILURE; + 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.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; } @@ -111,17 +129,14 @@ public class AppRet { } String trace = traceSb.toString(); AppRet r = new AppRet<>(); + r.appRetType = AppRetType.FAILURE; 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(); + 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(); } 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/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 e9a50ca..de035f1 100644 Binary files a/zhaohe_app.db and b/zhaohe_app.db differ