public IHttpActionResult CheckVersion(string mac, string version) { if (string.IsNullOrEmpty(mac) || string.IsNullOrEmpty(version)) { return(Failure("mac or version can't be empty")); } var cabinet = Cabinet.GetByMac(mac); if (cabinet == null) { return(Failure("this cabinet is not register")); } if (string.IsNullOrEmpty(cabinet.AndroidVersion)) { cabinet.AndroidVersion = version; Cabinet.Update(cabinet); } if (version != cabinet.AndroidVersion) { return(Success("/files/" + cabinet.AndroidVersion + ".apk")); } else { return(Success("")); } }
public IHttpActionResult AddCabinet(Cabinet cabinet) { try { string valiate = ValiateCabinetModel(cabinet); if (!string.IsNullOrEmpty(valiate)) { return(Failure(valiate)); } if (Cabinet.GetByName(cabinet.Name) != null) { return(Failure("该名称已经被使用")); } if (Cabinet.GetByMac(cabinet.AndroidMac) != null) { return(Failure("该硬件编码已经被使用")); } if (!UserController.LoginDictionary.ContainsKey(GetCookie("token"))) { return(Logout()); } UserInfo userCookie = UserController.LoginDictionary[GetCookie("token")]; if (userCookie == null) { return(Logout()); } SystemLog.Add(new SystemLog { Action = "AddCabinet", LogContent = userCookie.Name + "-新增保险柜-" + cabinet.Name, CreateTime = DateTime.Now, UserID = userCookie.ID, RoleID = userCookie.RoleID, DepartmentID = userCookie.DepartmentID, ClientIP = GetIP(), UserName = userCookie.Name, RealName = userCookie.RealName }); cabinet.CreateTime = DateTime.Now; cabinet.IsOnline = false; if (!string.IsNullOrEmpty(cabinet.FirstContactPassword)) { cabinet.FirstContactPassword = AESAlgorithm.Encrypto(cabinet.FirstContactPassword); } if (!string.IsNullOrEmpty(cabinet.SecondContactPassword)) { cabinet.SecondContactPassword = AESAlgorithm.Encrypto(cabinet.SecondContactPassword); } Cabinet.Add(cabinet); return(Success(true)); } catch (Exception ex) { _logger.Error(ex); return(Failure("新增失败")); } }
public IHttpActionResult EditCabinet(Cabinet cabinet) { try { string valiate = ValiateCabinetModel(cabinet); if (!string.IsNullOrEmpty(valiate)) { return(Failure(valiate)); } if (!UserController.LoginDictionary.ContainsKey(GetCookie("token"))) { return(Logout()); } UserInfo userCookie = UserController.LoginDictionary[GetCookie("token")]; if (userCookie == null) { return(Logout()); } if (cabinet.ID == 0) { return(Failure("未指定保险柜")); } var cab = Cabinet.GetOne(cabinet.ID); if (cab == null) { return(Failure("未找到指定保险柜")); } var old = Cabinet.GetByName(cabinet.Name); if (old != null && old.ID != cabinet.ID) { return(Failure("该名称已经被使用")); } old = Cabinet.GetByMac(cabinet.AndroidMac); if (old != null && old.ID != cabinet.ID) { return(Failure("该硬件编码已经被使用")); } SystemLog.Add(new SystemLog { Action = "EditCabinet", LogContent = userCookie.Name + "-编辑保险柜-" + cabinet.ID, CreateTime = DateTime.Now, UserID = userCookie.ID, RoleID = userCookie.RoleID, DepartmentID = userCookie.DepartmentID, ClientIP = GetIP(), UserName = userCookie.Name, RealName = userCookie.RealName }); cab.Address = cabinet.Address; cab.AndroidMac = cabinet.AndroidMac; cab.Code = cabinet.Code; cab.DepartmentID = cabinet.DepartmentID; cab.FirstContact = cabinet.FirstContact; cab.FirstContactPassword = AESAlgorithm.Encrypto(cabinet.FirstContactPassword); cab.FirstContactPhone = cabinet.FirstContactPhone; cab.IP = cabinet.IP; cab.Name = cabinet.Name; cab.NeedConfirm = cabinet.NeedConfirm; cab.Remark = cabinet.Remark; cab.SecondContact = cabinet.SecondContact; cab.SecondContactPassword = AESAlgorithm.Encrypto(cabinet.SecondContactPassword); cab.SecondContactPhone = cabinet.SecondContactPhone; Cabinet.Update(cab); return(Success(true)); } catch (Exception ex) { _logger.Error(ex); return(Failure("修改失败")); } }
public IHttpActionResult Command(CommandRequest request) { if (request == null) { return(Failure("请求命令无效")); } if (string.IsNullOrEmpty(request.Mac)) { return(Failure("必须指定mac地址")); } try { _logger.Info(JsonConvert.SerializeObject(request)); var cabinet = Cabinet.GetByMac(request.Mac); if (cabinet == null) { return(Failure("未找到指定保险柜")); } #region 心跳 if (request.OperatorType == (int)OperatorTypeEnum.心跳) { if (HeartDictionary.ContainsKey(cabinet.ID)) { HeartDictionary[cabinet.ID] = DateTime.Now; } else { HeartDictionary.TryAdd(cabinet.ID, DateTime.Now); } CommandResponse res = null; int type = -1; lock (CommandDictionaryLock) { var item = CommandDictionary.Find(m => m.ID == cabinet.ID); if (item != null) { res = item; CommandDictionary.Remove(item); } } if (res != null) { type = res.OperationType; var msg = "AuthCode-" + res.AuthCode; if (type == (int)OperatorTypeEnum.允许开门) { //cabinet.Status = (int)OperatorTypeEnum.允许开门; //cabinet.Alarm = ""; //cabinet.IsOpen = true; //Cabinet.Update(cabinet); return(Success1("允许开门", msg)); } else if (type == (int)OperatorTypeEnum.拒绝开门) { return(Success1("拒绝开门", msg)); } else if (type == (int)OperatorTypeEnum.拒绝语音) { return(Success1("拒绝语音", msg)); } else if (type == (int)OperatorTypeEnum.接受语音) { return(Success1("接受语音", msg)); } else if (type == (int)OperatorTypeEnum.允许终端修改信息) { return(Success1("允许终端修改信息", msg)); } else if (type == (int)OperatorTypeEnum.拒绝终端修改信息) { return(Success1("拒绝终端修改信息", msg)); } else if (type == (int)OperatorTypeEnum.允许人员注册) { return(Success1("允许人员注册", msg)); } else if (type == (int)OperatorTypeEnum.拒绝人员注册) { return(Success1("拒绝人员注册", msg)); } } return(Success()); } #endregion #region 增加请求日志 var log = new CabinetLog { CabinetID = cabinet.ID, DepartmentID = cabinet.DepartmentID, OperatorName = request.UserName, OperateTime = DateTime.Now, OperationType = request.OperatorType, CreateTime = DateTime.Now, CabinetIP = GetIP(), EventContent = JsonConvert.SerializeObject(request), Remark = request.AuthCode }; CabinetLog.Add(log); #endregion #region 开门申请 if (request.OperatorType == (int)OperatorTypeEnum.申请开门) { if (!(cabinet.NeedConfirm ?? true)) { lock (CommandDictionaryLock) { CommandDictionary.Add(new CommandResponse { OperationType = (int)OperatorTypeEnum.允许开门, AuthCode = request.AuthCode, ID = cabinet.ID, CreateTime = DateTime.Now }); } request.OperatorType = (int)OperatorTypeEnum.允许开门; request.EventContent = "不需要审核自动开门"; AddLog(cabinet, request); return(Success()); } #region 密码开门 else if (request.Method == 0) { if (string.IsNullOrEmpty(request.Password)) { CabinetLog.Add(new CabinetLog { CabinetID = cabinet.ID, DepartmentID = cabinet.DepartmentID, OperatorName = request.UserName, OperateTime = DateTime.Now, OperationType = (int)OperatorTypeEnum.密码错误, CreateTime = DateTime.Now, CabinetIP = GetIP(), EventContent = JsonConvert.SerializeObject(request) }); _loggerError.Error("密码不得为空"); return(Failure("密码不得为空")); } var first = string.IsNullOrEmpty(cabinet.FirstContactPassword) ? "" : AESAlgorithm.Decrypto(cabinet.FirstContactPassword); var second = string.IsNullOrEmpty(cabinet.SecondContactPassword) ? "" : AESAlgorithm.Decrypto(cabinet.SecondContactPassword); if (first != request.Password && second != request.Password) { CabinetLog.Add(new CabinetLog { CabinetID = cabinet.ID, DepartmentID = cabinet.DepartmentID, OperatorName = request.UserName, OperateTime = DateTime.Now, OperationType = (int)OperatorTypeEnum.密码错误, CreateTime = DateTime.Now, CabinetIP = GetIP(), EventContent = JsonConvert.SerializeObject(request) }); _loggerError.Error("密码错误 " + request.Password + " [" + cabinet.FirstContactPassword + ":" + first + "] [" + cabinet.SecondContactPassword + ":" + second + "]"); return(Failure("密码错误")); } } #endregion #region 加入前台提醒 lock (logLock) { msgID++; log.ID = msgID; CabinetLogQueue.Add(log); } return(Success("等待审核")); #endregion } #endregion #region 语音申请||终端修改信息||申请人员注册 else if (request.OperatorType == (int)OperatorTypeEnum.请求语音 || request.OperatorType == (int)OperatorTypeEnum.终端修改信息 || request.OperatorType == (int)OperatorTypeEnum.申请人员注册) { lock (logLock) { msgID++; log.ID = msgID; CabinetLogQueue.Add(log); } return(Success("等待审核")); } #endregion #region 关门确认 else if (request.OperatorType == (int)OperatorTypeEnum.正常关门) { if (DateTime.Now.Hour < 9 || DateTime.Now.Hour > 17 || DateTime.Now.DayOfWeek == DayOfWeek.Sunday || DateTime.Now.DayOfWeek == DayOfWeek.Saturday) { cabinet.Status = (int)OperatorTypeEnum.非工作时间关门; cabinet.Alarm = OperatorTypeEnum.非工作时间关门.ToString(); } else { cabinet.Status = (int)OperatorTypeEnum.正常关门; cabinet.Alarm = ""; } cabinet.IsOpen = false; Cabinet.Update(cabinet); } #endregion #region 开门确认 else if (request.OperatorType == (int)OperatorTypeEnum.正常开门) { if (DateTime.Now.Hour < 9 || DateTime.Now.Hour > 17 || DateTime.Now.DayOfWeek == DayOfWeek.Sunday || DateTime.Now.DayOfWeek == DayOfWeek.Saturday) { cabinet.Status = (int)OperatorTypeEnum.非工作时间开门; cabinet.Alarm = OperatorTypeEnum.非工作时间开门.ToString(); } else { cabinet.Status = (int)OperatorTypeEnum.正常开门; cabinet.Alarm = ""; } cabinet.IsOpen = true; Cabinet.Update(cabinet); } #endregion #region 应急钥匙开门 else if (request.OperatorType == (int)OperatorTypeEnum.应急钥匙开门) { cabinet.Status = (int)OperatorTypeEnum.应急钥匙开门; cabinet.Alarm = OperatorTypeEnum.应急钥匙开门.ToString(); cabinet.IsOpen = true; Cabinet.Update(cabinet); } #endregion #region 其他请求 else { cabinet.Status = request.OperatorType; cabinet.Alarm = Enum.GetName(typeof(OperatorTypeEnum), cabinet.Status); Cabinet.Update(cabinet); } #endregion lock (logLock) { msgID++; log.ID = msgID; CabinetLogQueue.Add(log); } return(Success()); } catch (Exception ex) { logger.Error(ex); return(Failure("上报失败")); } }