public static RemoteDispatchDto ToRemoteDispatchDto(this Sys_RemoteDispatch ms) { return(new RemoteDispatchDto { Id = ms.Key, ActivePower = ms.ActivePower, ControlMode = ms.ControlMode, CreateTime = ms.CreateTime, DELETE_FLAG = ms.DELETE_FLAG, ReactivePower = ms.ReactivePower, SN = ms.SN, SOC = ms.SOC, Status = ms.Status, UpdateTime = ms.UpdateTime, UserName = ms.UserName }); }
public OperationResult <Sys_RemoteDispatch> AddRemoteDispatch(string api_Account, long timeStamp, string sign, string token, string sn, int activePower, int reactivePower, decimal soc, int status, int controlMode, string ipAddress) { Guid key = Guid.Empty; Guid.TryParse(token, out key); var userCache = TokenService.GetCache(key); bool flag = false; #region 判断 if (userCache == null || userCache.ExpirationTime < DateTime.Now) { return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_LoginFailed)); } if (userCache.ipAddress != ipAddress) { var ul = new SYS_LOG { Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_UserChangesDevice.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "用户更换设备", EXCEPTION = "ipAddress_1:" + userCache.ipAddress + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = "" }; _sysLogService.Add(ul); _sysLogService.Save(); return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_UserChangesDevice)); } var query = from a1 in _sys_ROLE.GetAll() join r1 in _sys_ROLEUSER.GetAll() on a1.Key equals r1.ROLEID where r1.USERID == userCache.UserId select new { userType = a1.ROLENAME }; List <string> user_Types = new List <string>(); foreach (var q in query) { user_Types.Add(q.userType); } if (!checkSignForRemoteDispatch(api_Account, timeStamp, sign, token, sn, activePower, reactivePower, soc, status, controlMode)) { string secretKey = _cryptoService.GetSecretKey(api_Account); var ul = new SYS_LOG { Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_Sign.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "签名错误", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress + ",SecretKey:" + secretKey, CREATE_ACCOUNT = "", LOG_CONTENT = "" }; _sysLogService.Add(ul); _sysLogService.Save(); return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_Sign)); } if (!_parameterValidateService.CheckTimestamp(timeStamp)) { var ul = new SYS_LOG { Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_TimeStamp.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "时间戳错误", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = "" }; _sysLogService.Add(ul); _sysLogService.Save(); return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_TimeStamp)); } if (!_parameterValidateService.ApiAccountExist(api_Account)) { var ul = new SYS_LOG { Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_ApiAccountNotExist.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "api账号不存在", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = "" }; _sysLogService.Add(ul); _sysLogService.Save(); return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_ApiAccountNotExist)); } #endregion SYS_USER user = _userRepository.GetAll().Where(x => x.Key == userCache.UserId).FirstOrDefault(); #region 获取用户系统列表 int pIndex = 1; int pSize = int.MaxValue; int totalCount = 0; IList <VT_SYSTEM> result = new List <VT_SYSTEM>(); if (user_Types.Contains("customer")) { result = GetSystemByUser(pIndex, pSize, userCache.UserId, this.CompanyId, out totalCount); } else if (user_Types.Contains("installer")) { if (user != null) { result = GetSystemByInstaller(pIndex, pSize, user.LICNO, this.CompanyId, out totalCount); } } else if (user_Types.Contains("servicer")) { return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_NoPermissionsToQuery)); } else if (user_Types.Contains("admin")) { return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_NoPermissionsToQuery)); } else if (user_Types.Contains("systemmanager")) { return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_NoPermissionsToQuery)); } else if (user_Types.Contains("reseller")) { result = GetSystemByReseller(pIndex, pSize, userCache.UserId, this.CompanyId, out totalCount); } else if (user_Types.Contains("servicepartner")) { return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_NoPermissionsToQuery)); } if (result == null || result.Count == 0) { return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_NoPermissionsToQuery)); } #endregion if (!string.IsNullOrWhiteSpace(sn)) { if (_snRepository.GetAll().Where(x => x.SN_NO == sn.Trim() && x.CompanyId == this.CompanyId && x.DELETE_FLAG == 0).FirstOrDefault() == null) { var ul = new SYS_LOG { Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_SNNotExist.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "sn不存在", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = "" }; _sysLogService.Add(ul); _sysLogService.Save(); return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_SNNotExist)); } if (result.Where(x => x.SYS_SN == sn).Count() == 0) { string username = user == null ? "" : user.USERNAME; var ul = new SYS_LOG { Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_NoPermissionsToQuery.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "用户无此权限,调取用户:" + username, EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = "" }; _sysLogService.Add(ul); _sysLogService.Save(); return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_NoPermissionsToQuery)); } Sys_RemoteDispatch rd = new Sys_RemoteDispatch(); rd.Key = Guid.NewGuid(); rd.SN = sn; rd.UserName = user.USERNAME; rd.ActivePower = activePower; rd.ReactivePower = reactivePower; rd.SOC = soc; rd.Status = status; rd.ControlMode = controlMode; rd.DELETE_FLAG = 0; rd.CreateTime = DateTime.Now; try { _remotedispatchRepository.Add(rd); _remotedispatchRepository.Save(); flag = true; } catch { flag = false; } } else { if (user != null) { IList <Sys_RemoteDispatch> rDList = new List <Sys_RemoteDispatch>(); foreach (var item in result) { Sys_RemoteDispatch rd = new Sys_RemoteDispatch(); rd.Key = Guid.NewGuid(); rd.SN = item.SYS_SN; rd.UserName = user.USERNAME; rd.ActivePower = activePower; rd.ReactivePower = reactivePower; rd.SOC = soc; rd.Status = status; rd.ControlMode = controlMode; rd.DELETE_FLAG = 0; rd.CreateTime = DateTime.Now; rDList.Add(rd); } try { _remotedispatchRepository.AddBulk(rDList); _remotedispatchRepository.Save(); flag = true; } catch { flag = false; } } } if (flag) { var ul = new SYS_LOG { Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Success.ToString(), LEVEL = LogLevel.INFO.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "命令发送成功", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress + ",activePower:" + activePower + ",reactivePower:" + reactivePower + ",soc:" + soc + ",status:" + status + ",controlMode:" + controlMode, CREATE_ACCOUNT = user.USERNAME, LOG_CONTENT = "" }; _sysLogService.Add(ul); _sysLogService.Save(); return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Success)); } else { var ul = new SYS_LOG { Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_SendCommandFailed.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "命令发送失败", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = "" }; _sysLogService.Add(ul); _sysLogService.Save(); return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_SendCommandFailed)); } }