Esempio n. 1
0
        public OperationResult <PaginatedList <SYS_MSGUSER> > GetMsg(string api_account, long timeStamp, string sign, string token, int onlyUnread, int pi, int ps)
        {
            if (string.IsNullOrWhiteSpace(token))
            {
                return(new OperationResult <PaginatedList <SYS_MSGUSER> >(OperationCode.Error_Param_Empty));
            }

            if (!_parameterValidateService.CheckTimestamp(timeStamp))
            {
                return(new OperationResult <PaginatedList <SYS_MSGUSER> >(OperationCode.Error_TimeStamp));
            }

            if (!TokenHelper.CheckToken(token))
            {
                return(new OperationResult <PaginatedList <SYS_MSGUSER> >(OperationCode.Error_TokenExpiration));
            }

            var apiAccount = _apiRepository.GetSingleByAccount(api_account);

            if (apiAccount == null)
            {
                return(new OperationResult <PaginatedList <SYS_MSGUSER> >(OperationCode.Error_ApiAccountNotExist));
            }

            if (!CheckSignForGetMsg(api_account, timeStamp, sign, token, onlyUnread, pi, ps, apiAccount.Api_SecretKey))
            {
                return(new OperationResult <PaginatedList <SYS_MSGUSER> >(OperationCode.Error_Sign));
            }

            var theToken     = TokenHelper.GetToken(token);
            var theCompanyId = new Guid(apiAccount.CompanyId);
            var user         = _userRepository.GetSingleByKey(theToken.UserId);

            if (user == null)
            {
                return(new OperationResult <PaginatedList <SYS_MSGUSER> >(OperationCode.Error_UserNotExist));
            }

            List <SYS_MSGUSER> data = null;
            int t = 0;

            if (onlyUnread == 1)
            {
                data = GetUnreadMsgs(user.Key.ToString(), pi, ps, out t);
            }
            else
            {
                data = QueryMsg(user.Key.ToString(), null, pi, ps, out t);
            }

            PaginatedList <SYS_MSGUSER> result = new PaginatedList <SYS_MSGUSER>(pi, ps, t, data);

            return(new OperationResult <PaginatedList <SYS_MSGUSER> >(OperationCode.Success, result));
        }
        /// <summary>
        /// 获取最新版本信息
        /// </summary>
        /// <param name="api_account"></param>
        /// <param name="timeStamp"></param>
        /// <param name="sign"></param>
        /// <param name="appType"></param>
        /// <returns>OperationResult实例</returns>
        public OperationResult <APP_Version> GetLastVersion(string api_account, long timeStamp, string sign, string appType)
        {
            if (!_parameterValidateService.CheckTimestamp(timeStamp))
            {
                return(new OperationResult <APP_Version>(OperationCode.Error_TimeStamp));
            }

            var apiAccount = _apiRepository.GetSingleByAccount(api_account);

            if (apiAccount == null)
            {
                return(new OperationResult <APP_Version>(OperationCode.Error_ApiAccountNotExist));
            }

            if (!checkSignForGetLastVersion(api_account, timeStamp, sign, appType, apiAccount.Api_SecretKey))
            {
                return(new OperationResult <APP_Version>(OperationCode.Error_Sign));
            }

            var version = GetLastVersion(appType);
            var result  = new OperationResult <APP_Version>(OperationCode.Success);

            result.Entity = version;

            return(result);
        }
        public OperationResult <IEnumerable <CompanyContactDetail> > GetCompanyContacts(string api_account, long timeStamp, string sign, int flag)
        {
            if (!_parameterValidateService.CheckTimestamp(timeStamp))
            {
                return(new OperationResult <IEnumerable <CompanyContactDetail> >(OperationCode.Error_TimeStamp));
            }

            var apiAccount = _apiRepository.GetSingleByAccount(api_account);

            if (apiAccount == null)
            {
                return(new OperationResult <IEnumerable <CompanyContactDetail> >(OperationCode.Error_ApiAccountNotExist));
            }

            if (!checkSignForGetCompanyContacts(api_account, timeStamp, sign, apiAccount.Api_SecretKey, flag))
            {
                return(new OperationResult <IEnumerable <CompanyContactDetail> >(OperationCode.Error_Sign));
            }

            var result = new List <CompanyContactDetail>();

            if (flag == 0)
            {
                result = _companyContactDetailRepository.GetAll().OrderBy(x => x.DisplayOrder).ToList();
            }
            else
            {
                result.Add(_companyContactDetailRepository.GetAll().OrderBy(x => x.DisplayOrder).FirstOrDefault());
            }

            return(new OperationResult <IEnumerable <CompanyContactDetail> >(OperationCode.Success, result));
        }
        /// <summary>
        /// 获取指定用户的微网信息
        /// </summary>
        /// <param name="api_account">api账号</param>
        /// <param name="timeStamp">时间戳</param>
        /// <param name="sign">签名</param>
        /// <param name="username">用户名</param>
        /// <returns>OperationResult&lt;MicrogridInfo&gt;实例</returns>
        public OperationResult <MicrogridInfo> GetMicrogridInfoByUserId(string api_account, long timeStamp, string sign, string username)
        {
            if (!_parameterValidateService.CheckTimestamp(timeStamp))
            {
                return(new OperationResult <MicrogridInfo>(OperationCode.Error_TimeStamp));
            }

            var apiAccount = _apiRepository.GetSingleByAccount(api_account);

            if (apiAccount == null)
            {
                return(new OperationResult <MicrogridInfo>(OperationCode.Error_ApiAccountNotExist));
            }

            if (!checkSignForGetMicrogridInfo(api_account, timeStamp, sign, username, apiAccount.Api_SecretKey))
            {
                return(new OperationResult <MicrogridInfo>(OperationCode.Error_Sign));
            }

            var user = _userRepository.GetSingleByUserName(username);

            if (user == null || !user.USERTYPE.Equals(MicrogridManagerRoleName, StringComparison.OrdinalIgnoreCase))
            {
                return(new OperationResult <MicrogridInfo>(OperationCode.Error_UserNotExist));
            }

            var mi = GetMicrogridInfoByUserId(user.Key);

            if (mi != null)
            {
                return(new OperationResult <MicrogridInfo>(OperationCode.Success, mi));
            }
            else
            {
                return(new OperationResult <MicrogridInfo>(OperationCode.Error_NoMicrogridInfo));
            }
        }
        public OperationResult <DeviceCV> GetDeviceCV(string api_account, long timeStamp, string sign, string deviceID, string localDate)
        {
            if (!checkSignForGetDeviceCV(api_account, timeStamp, sign, deviceID, localDate))
            {
                var result4 = new OperationResult <DeviceCV>(OperationCode.Error_Sign);
                result4.Entity = null;

                return(result4);
            }


            if (!_parameterValidateService.CheckTimestamp(timeStamp))
            {
                var result2 = new OperationResult <DeviceCV>(OperationCode.Error_TimeStamp);
                result2.Entity = null;

                return(result2);
            }

            Guid theCompanyId;

            if (!_parameterValidateService.ApiAccountExist(api_account, out theCompanyId))
            {
                var result3 = new OperationResult <DeviceCV>(OperationCode.Error_ApiAccountNotExist);
                result3.Entity = null;

                return(result3);
            }

            DeviceCV cv     = new DeviceCV();
            DevInfo  info   = _devInfoRepository.FindBy(x => x.DeviceID == deviceID).Where(x => x.Delete_Flag == 0).FirstOrDefault();
            var      result = new OperationResult <DeviceCV>(OperationCode.Success);

            if (info == null)
            {
                result     = new OperationResult <DeviceCV>(OperationCode.Success);
                cv.Status  = "Failed1";
                cv.Time    = null;
                cv.CVTotal = null;
                cv.CV1     = null;
                cv.CV2     = null;
                cv.CV3     = null;

                result.Entity = cv;

                return(result);
            }

            var dataLst = _devDataRepository.GetDeviceCVByDeviceID(deviceID, localDate).ToList();

            if (dataLst == null || dataLst.Count == 0)
            {
                result     = new OperationResult <DeviceCV>(OperationCode.Success);
                cv.Status  = "Failed2";
                cv.Time    = null;
                cv.CVTotal = null;
                cv.CV1     = null;
                cv.CV2     = null;
                cv.CV3     = null;

                result.Entity = cv;

                return(result);
            }

            int num = dataLst.Count;

            string[]  times    = new string[num];
            decimal[] CVTotals = new decimal[num];
            decimal[] CVs1     = new decimal[num];
            decimal[] CVs2     = new decimal[num];
            decimal[] CVs3     = new decimal[num];

            for (int i = 0; i < num; i++)
            {
                times[i]    = dataLst[i].Upload_DateTime.ToString();
                CVTotals[i] = dataLst[i].CV;
                CVs1[i]     = dataLst[i].CV1 == null ? 0 : (decimal)dataLst[i].CV1;
                CVs2[i]     = dataLst[i].CV2 == null ? 0 : (decimal)dataLst[i].CV2;
                CVs3[i]     = dataLst[i].CV3 == null ? 0 : (decimal)dataLst[i].CV3;
            }

            result     = new OperationResult <DeviceCV>(OperationCode.Success);
            cv.Status  = "Success";
            cv.Time    = times;
            cv.CVTotal = CVTotals;
            cv.CV1     = CVs1;
            cv.CV2     = CVs2;
            cv.CV3     = CVs3;

            result.Entity = cv;

            return(result);
        }
        public OperationResult AddNewComplaints(string api_account, long timeStamp, string sign, string token, string title, string description, string complaintsTyps, string email, string contactNumber, string sn, string attachment1, string attachment2, string attachment3)
        {
            if (string.IsNullOrWhiteSpace(token))
            {
                return(new OperationResult(OperationCode.Error_Param_Empty));
            }

            if (!_parameterValidateService.CheckTimestamp(timeStamp))
            {
                return(new OperationResult(OperationCode.Error_TimeStamp));
            }

            if (!TokenHelper.CheckToken(token))
            {
                return(new OperationResult(OperationCode.Error_TokenExpiration));
            }

            var apiAccount = _apiRepository.GetSingleByAccount(api_account);

            if (apiAccount == null)
            {
                return(new OperationResult(OperationCode.Error_ApiAccountNotExist));
            }

            if (!checkSignForAddNewComplaints(api_account, timeStamp, sign, token, title, description, complaintsTyps, email, contactNumber, sn, attachment1, attachment2, attachment3, apiAccount.Api_SecretKey))
            {
                return(new OperationResult(OperationCode.Error_Sign));
            }

            var theNewComplaint = new Complaints {
                Title = title, ComplaintsType = complaintsTyps, Email = email, ContactNumber = contactNumber, SysSn = sn, Attachment = HttpUtility.UrlDecode(attachment1), Attachment3 = HttpUtility.UrlDecode(attachment3), Attachment2 = HttpUtility.UrlDecode(attachment2)
            };

            theNewComplaint.Description = !string.IsNullOrWhiteSpace(description) ? HttpUtility.UrlDecode(description).Replace("\n", HttpUtility.HtmlEncode("<br/>")) : string.Empty;
            var s = _systemRepository.GetSystemBySn(sn);

            if (s != null)
            {
                if (!string.IsNullOrWhiteSpace(s.CountryCode))
                {
                    theNewComplaint.Area           = GetCountryCode(s.CountryCode);
                    theNewComplaint.SystemLicense  = s.LicNo;
                    theNewComplaint.SystemMinv     = s.Minv;
                    theNewComplaint.SystemPostcode = s.PostCode;
                }
            }

            var tk = TokenHelper.GetToken(new Guid(token));
            var u  = _userRepository.GetSingleByKey(tk.UserId);

            if (tk.UserTypes.Contains("installer"))
            {
                theNewComplaint.SystemLicense = u.LICNO;
            }
            theNewComplaint.Creator = u.USERNAME;

            theNewComplaint.ComplaintsProcessing.Add(new ComplaintsProcessing {
                CurrentStatus = ComplaintStatus.Open.ToString(), ProcessFlowNumber = 0, ProcessingTime = DateTime.Now, Processor = u.USERNAME
            });
            if (AddNewComplaint(theNewComplaint) == null)
            {
                return(new OperationResult(OperationCode.Error_AddNewComplaintsFailed));
            }

            SYS_USER theCustomer = null;

            if (tk.UserTypes.Contains("customer"))
            {
                theCustomer = u;
            }
            else if (s != null && s.UserId.HasValue)
            {
                theCustomer = _userRepository.GetSingleByKey(s.UserId.Value);
            }

            if (theCustomer != null)
            {
                var customerInfo = new CustomerInfo
                {
                    ComplaintId     = theNewComplaint.Key, SysSn = theNewComplaint.SysSn, CustomerContactNumber = theCustomer.CELLPHONE,
                    CustomerCountry = GetCountryCode(theCustomer.COUNTRYCODE), CustomerEmail = theCustomer.EMAIL, ContactName = theCustomer.LINKMAN,
                    CustomerAddress = theCustomer.ADDRESS, CustomerPostcode = theCustomer.POSTCODE, CustomerName = theCustomer.USERNAME, CreateTime = DateTime.Now
                };
                _customerInfoRepository.Add(customerInfo);
                _customerInfoRepository.Save();
            }

            return(new OperationResult(OperationCode.Success));
        }
Esempio n. 7
0
        /// <summary>
        /// 获取最新的系统常规运行数据
        /// </summary>
        /// <param name="sn"></param>
        /// <param name="username">用户名</param>
        /// <returns></returns>
        public OperationResult <PaginatedList <VT_COLDATA> > GetRunningNewData(string api_Account, long timeStamp, string sign, string sn, string token, string ipAddress)
        {
            Guid key = Guid.Empty;

            Guid.TryParse(token, out key);
            var userCache = TokenService.GetCache(key);

            #region 判断
            if (userCache == null || userCache.ExpirationTime < DateTime.Now)
            {
                return(new OperationResult <PaginatedList <VT_COLDATA> >(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.RunningDataService", MESSAGE = "用户更换设备", EXCEPTION = "ipAddress_1:" + userCache.ipAddress + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(new OperationResult <PaginatedList <VT_COLDATA> >(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 (!checkSignForRunningData(api_Account, timeStamp, sign, sn, token))
            {
                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.RunningDataService", 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 <PaginatedList <VT_COLDATA> >(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.RunningDataService", 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 <PaginatedList <VT_COLDATA> >(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.RunningDataService", 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 <PaginatedList <VT_COLDATA> >(OperationCode.Error_ApiAccountNotExist));
            }
            #endregion

            int pIndex     = 1;
            int pSize      = int.MaxValue;
            int totalCount = 0;
            PaginatedList <VT_COLDATA> coldataList = new PaginatedList <VT_COLDATA>(pIndex, pSize, null);

            #region 获取用户系统列表
            IList <VT_SYSTEM> systems = new List <VT_SYSTEM>();
            if (user_Types.Contains("customer"))
            {
                systems = GetSystemByUser(pIndex, pSize, userCache.UserId, this.CompanyId, out totalCount);
            }
            else if (user_Types.Contains("installer"))
            {
                SYS_USER user = _userRepository.GetAll().Where(x => x.Key == userCache.UserId).FirstOrDefault();
                if (user != null)
                {
                    systems = GetSystemByInstaller(pIndex, pSize, user.LICNO, this.CompanyId, out totalCount);
                }
            }
            else if (user_Types.Contains("servicer"))
            {
                systems = GetSystemByServicer(pIndex, pSize, userCache.UserId, this.CompanyId, out totalCount);
            }
            else if (user_Types.Contains("admin"))
            {
                systems = GetSystemByManager(pIndex, pSize, this.CompanyId, out totalCount);
            }
            else if (user_Types.Contains("systemmanager"))
            {
                systems = systems = GetSystemByManager(pIndex, pSize, this.CompanyId, out totalCount);
            }
            else if (user_Types.Contains("reseller"))
            {
                systems = GetSystemByReseller(pIndex, pSize, userCache.UserId, this.CompanyId, out totalCount);
            }
            else if (user_Types.Contains("servicepartner"))
            {
                systems = GetSystemByServicepartner(pIndex, pSize, userCache.UserId, this.CompanyId, out totalCount);
            }
            #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.RunningDataService", 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 <PaginatedList <VT_COLDATA> >(OperationCode.Error_SNNotExist));
                }

                if (systems.Where(x => x.SYS_SN == sn).Count() == 0)
                {
                    SYS_USER user     = _userRepository.GetAll().Where(x => x.Key == userCache.UserId).FirstOrDefault();
                    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.RunningDataService", 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 <PaginatedList <VT_COLDATA> >(OperationCode.Error_NoPermissionsToQuery));
                }

                coldataList = GetRunningDataBySn(api_Account, timeStamp, sign, sn, this.CompanyId, pIndex, pSize, out totalCount);
            }
            else
            {
                coldataList = GetRunningDataByUsername(api_Account, timeStamp, sign, systems, pIndex, pSize, out totalCount);
            }

            coldataList.TotalCount     = totalCount;
            coldataList.TotalPageCount = (int)Math.Ceiling(coldataList.TotalCount / (double)pSize);
            var plColdata = new OperationResult <PaginatedList <VT_COLDATA> >(OperationCode.Success);
            plColdata.Entity = coldataList;

            return(plColdata);
        }
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="username">用户名</param>
        /// <param name="password">密码</param>
        /// <returns></returns>
        public OperationResult <UserLogin> LoginForUser(string api_Account, long timeStamp, string sign, string username, string password, string ipAddress)
        {
            if (!_parameterValidateService.CheckTimestamp(timeStamp))
            {
                return(new OperationResult <UserLogin>(OperationCode.Error_TimeStamp));
            }

            if (!_parameterValidateService.ApiAccountExist(api_Account))
            {
                return(new OperationResult <UserLogin>(OperationCode.Error_ApiAccountNotExist));
            }

            if (!checkSignForUser(api_Account, timeStamp, sign, username, password))
            {
                return(new OperationResult <UserLogin>(OperationCode.Error_Sign));
            }

            var user = _userRepository.GetSingleByUserName(username, this.CompanyId);

            if (user == null || !(user.USERTYPE.Equals(MicrogridManagerRoleName, StringComparison.OrdinalIgnoreCase) || user.USERTYPE.Equals(SharerRoleName, StringComparison.OrdinalIgnoreCase) ||
                                  user.USERTYPE.Equals(InstallerRoleName, StringComparison.OrdinalIgnoreCase) || user.USERTYPE.Equals(CustomerRoleName, StringComparison.OrdinalIgnoreCase)))
            {
                return(new OperationResult <UserLogin>(OperationCode.Error_UserNotExist));
            }

            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
            {
                var result6 = new OperationResult <UserLogin>(OperationCode.Error_Param_Empty);
                result6.Entity = null;

                var ul = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_Param_Empty.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.AlphaESSV2Service", MESSAGE = "参数为空", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ", username" + username + ", password:"******",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(result6);
            }

            if (!isUserValid(user, password, username))
            {
                var result5 = new OperationResult <UserLogin>(OperationCode.Error_PasswordNotMatch);
                result5.Entity = null;

                var ul = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_PasswordNotMatch.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.AlphaESSV2Service", MESSAGE = "密码不匹配", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ", username" + username + ", password:"******",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(result5);
            }

            UserLogin u = null;

            try
            {
                var query = from a1 in _sys_ROLE.GetAll()
                            join r1 in _sys_ROLEUSER.GetAll() on a1.Key equals r1.ROLEID
                            where r1.USERID == user.Key
                            select new
                {
                    userType = a1.ROLENAME
                };

                string userTypes = string.Empty;
                foreach (var q in query)
                {
                    userTypes += q.userType + ",";
                }
                if (userTypes.Length > 0)
                {
                    userTypes = userTypes.Substring(0, userTypes.Length - 1);
                }

                //过期时间
                DateTime expiryTime = DateTime.Now.AddMinutes(ExpiryTime);

                Guid token = Guid.NewGuid();
                TokenService.SetCache(token, user.Key, expiryTime, ipAddress);

                u = new UserLogin()
                {
                    userType = userTypes, token = token
                };
            }
            catch (Exception ex)
            {
                var ul = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_Unknown.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.AlphaESSV2Service", MESSAGE = "失败", EXCEPTION = ex.ToString(), CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();
            }

            var result = new OperationResult <UserLogin>(OperationCode.Success);

            result.Entity = u;

            return(result);
        }
        public OperationResult <DeviceInfo> GetDeviceInfo(string api_account, long timeStamp, string sign, string deviceID)
        {
            if (!checkSignForGetDeviceInfo(api_account, timeStamp, sign, deviceID))
            {
                var result4 = new OperationResult <DeviceInfo>(OperationCode.Error_Sign);
                result4.Entity = null;

                return(result4);
            }


            if (!_parameterValidateService.CheckTimestamp(timeStamp))
            {
                var result2 = new OperationResult <DeviceInfo>(OperationCode.Error_TimeStamp);
                result2.Entity = null;

                return(result2);
            }

            Guid theCompanyId;

            if (!_parameterValidateService.ApiAccountExist(api_account, out theCompanyId))
            {
                var result3 = new OperationResult <DeviceInfo>(OperationCode.Error_ApiAccountNotExist);
                result3.Entity = null;

                return(result3);
            }

            DeviceInfo inf = new DeviceInfo();

            DevInfo info = _devInfoRepository.GetDeviceInfoByDeviceID(deviceID);
            DevData data = _devDataRepository.GetLastUpdateTimeByDeviceID(deviceID);

            if (data != null)
            {
                inf.UpdateTime = data.Upload_DateTime.ToString();
            }
            else
            {
                inf.UpdateTime = string.Empty;
                inf.Status     = "Failed2";
            }

            if (info != null)
            {
                inf.DeviceID = info.DeviceID;
                inf.Voltage  = info.Voltage;
                inf.TimeZone = info.TimeZone;
            }
            else
            {
                inf.DeviceID = string.Empty;
                inf.Voltage  = 0;
                inf.TimeZone = string.Empty;
                inf.Status   = "Failed1";
            }

            if (string.IsNullOrEmpty(inf.Status))
            {
                inf.Status = "Success";
            }


            var result = new OperationResult <DeviceInfo>(OperationCode.Success);

            result.Entity = inf;

            return(result);
        }
        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));
            }
        }
Esempio n. 11
0
        public async Task <HttpResponseMessage> FileUpload(/*ExternalFileUploadRequestModel req*/)
        {
            var token       = HttpContext.Current.Request.Params["Token"];
            var timestamp   = Convert.ToInt64(HttpContext.Current.Request.Params["timestamp"]);
            var sign        = HttpContext.Current.Request.Params["sign"];
            var api_account = HttpContext.Current.Request.Params["api_account"];

            if (string.IsNullOrWhiteSpace(HttpContext.Current.Request.Params["Token"]) ||
                string.IsNullOrWhiteSpace(HttpContext.Current.Request.Params["timestamp"]) ||
                string.IsNullOrWhiteSpace(HttpContext.Current.Request.Params["sign"]) ||
                string.IsNullOrWhiteSpace(HttpContext.Current.Request.Params["api_account"]))
            {
                return(Request.CreateResponse(HttpStatusCode.OK, new ExternalFileUploadResponseModel {
                    ReturnCode = (int)OperationCode.Error_Param_Empty
                }));
            }

            if (string.IsNullOrWhiteSpace(token))
            {
                return(Request.CreateResponse(HttpStatusCode.OK, new ExternalFileUploadResponseModel {
                    ReturnCode = (int)OperationCode.Error_Param_Empty
                }));
            }

            if (!_parameterValidateService.CheckTimestamp(timestamp))
            {
                return(Request.CreateResponse(HttpStatusCode.OK, new ExternalFileUploadResponseModel {
                    ReturnCode = (int)OperationCode.Error_TimeStamp
                }));
            }

            if (!TokenHelper.CheckToken(token))
            {
                return(Request.CreateResponse(HttpStatusCode.OK, new ExternalFileUploadResponseModel {
                    ReturnCode = (int)OperationCode.Error_TokenExpiration
                }));
            }

            var apiAccount = _apiService.GetByAccount(api_account);

            if (apiAccount == null)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, new ExternalFileUploadResponseModel {
                    ReturnCode = (int)OperationCode.Error_ApiAccountNotExist
                }));
            }

            // Check whether the POST operation is MultiPart?
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            // Prepare CustomMultipartFormDataStreamProvider in which our multipart form
            // data will be loaded.
            string fileSaveLocation        = System.Configuration.ConfigurationManager.AppSettings["filesavelocation"] + DateTime.Now.ToString("yyyyMM");
            string fileSaveLogicalLocation = "~/App_Data/" + DateTime.Now.ToString("yyyyMM");

            Directory.CreateDirectory(fileSaveLocation);
            AlphaEssMultipartFormDataStreamProvider provider = new AlphaEssMultipartFormDataStreamProvider(fileSaveLocation);

            //List<string> files = new List<string>();

            if (Request.Content.Headers.ContentLength > 10485760)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, new ExternalFileUploadResponseModel()
                {
                    ReturnCode = (int)OperationCode.Error_FileIsTooLarge
                }));
            }

            try
            {
                // Read all contents of multipart message into CustomMultipartFormDataStreamProvider.
                await Request.Content.ReadAsMultipartAsync(provider);

                //foreach (MultipartFileData file in provider.FileData)
                //{
                var result = new ExternalFileUploadResponseModel()
                {
                    ReturnCode = (int)OperationCode.Success
                };
                result.FilePath = Path.Combine(fileSaveLogicalLocation, Path.GetFileName(provider.FileData[0].LocalFileName));
                //}

                return(Request.CreateResponse(HttpStatusCode.OK, result));
            }
            catch (Exception exc)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, new ExternalFileUploadResponseModel {
                    ReturnCode = (int)OperationCode.Error_Unknown
                }));
            }
        }