Пример #1
0
        public static void Download(JObject request, ref JObject result, string language, ref Session session)
        {
            string fileName;
            try
            {
                fileName = request[DownloadFieldKeyword.FileName].ToString();
            }
            catch (Exception)
            {
                AddBadParameterInfo(ref result, Functions.Download, language);
                return;
            }

            var path = Path.Combine(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"File"), fileName);
            System.Diagnostics.Debug.WriteLine(path);
            if(File.Exists(path))
            {
                var fileInfo = new FileInfo(path);
                var data = File.ReadAllBytes(path);
                var md5 = KORT.Util.Tools.GetMD5(data);
                result.Add(FieldKeyword.Success, true);
                result.Add(FieldKeyword.ResultType, ResultType.Object);
                var resultObject = new DownloadResult
                                       {
                                           Length = fileInfo.Length,
                                           MD5 = md5,
                                           Data = data
                                       };
                result.Add(FieldKeyword.Result, JObject.FromObject(resultObject));
            }
            else
            {
                AddFailInfo(ref result, ErrorNumber.SeeDetail.ToString(), MessageHelper.GetMessage(ErrorNumber.FileNotExist, language, fileName));
            }
        }
Пример #2
0
        public static void ModifyUser(JObject request, ref JObject result, string language, ref Session session)
        {
            User user;
            try
            {
                user = JsonConvert.DeserializeObject<User>(request[AddUserFieldKeyword.User].ToString());
            }
            catch (Exception)
            {
                AddBadParameterInfo(ref result, Functions.ModifyUser, language);
                return;
            }

            string message;
            if (UserHelper.Modify(session.UserType, session.UserName, user, language, out message))
            {
                var resultObject = new ModifyUserResult
                                       {
                                           User = user
                                       };
                AddSuccessInfo(ref result, ResultType.Object, resultObject, message);
            }
            else
            {
                AddFailInfo(ref result, ErrorNumber.SeeDetail.ToString(), message);
            }
        }
Пример #3
0
        public static void GetLog(JObject request, ref JObject result, string language, ref Session session)
        {
            DateTime from;
            DateTime to;
            string userName;
            string functionName;
            int pageSize;
            long pageIndex;
            try
            {
                from = DateTime.Parse(request[GetLogFieldKeyword.From].ToString());
                to = DateTime.Parse(request[GetLogFieldKeyword.To].ToString());
                userName = request[GetLogFieldKeyword.UserName].ToString();
                functionName = request[GetLogFieldKeyword.FunctionName].ToString();
                pageSize = int.Parse(request[GetLogFieldKeyword.PageSize].ToString());
                pageIndex = long.Parse(request[GetLogFieldKeyword.PageIndex].ToString());
            }
            catch (Exception)
            {
                AddBadParameterInfo(ref result, Functions.GetLog, language);
                return;
            }

            string message;
            var logs = LogHelper.GetLogs(from, to, userName, functionName, pageSize, pageIndex, language, out message);
            var resultObject = new GetLogResult
                                   {
                                       Logs = logs
                                   };
            AddSuccessInfo(ref result, ResultType.Array, resultObject, message);
        }
Пример #4
0
        /// <summary>
        /// Logins the specified request.
        /// 服务端处理登录请求
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="result">The result.</param>
        /// <param name="language">The language.</param>
        public static void Login(JObject request, ref JObject result, string language, ref Session session)
        {
            var context = OperationContext.Current;//提供方法执行的上下文环境
            var properties = context.IncomingMessageProperties;//获取传进的消息属性
            var endpoint = properties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;//获取消息发送的远程终结点IP和端口
            if(endpoint==null)
            {
                AddFailInfo(ref result, ErrorNumber.SeeDetail.ToString(), MessageHelper.GetMessage(ErrorNumber.FailToGetClientInfo, language));
                return;
            }

            string message;
            UserType type;
            User user = new User { Name = request[LoginFieldKeyword.User].ToString(), Passwd = request[LoginFieldKeyword.Passwd].ToString() };
            if (UserHelper.VerifyUser(user, out type, language, out message))
            {
                if(!user.IsEnabled)
                {
                    AddFailInfo(ref result, ErrorNumber.SeeDetail.ToString(), MessageHelper.GetMessage(ErrorNumber.UserIsDisabled, language, user.Name));
                    return;
                }
                var loginTime = DateTime.Now;
                var lastuser = UserHelper.Get(user.Name, out message, language);
                session = new Session
                              {
                                  UserType = type,
                                  UserName = lastuser.Name,
                                  Language = language
                              };

                string token = _session.Join(request[LoginFieldKeyword.User].ToString(), session);

                var resultObject = new LoginResult
                {
                    Token = token,
                    UserType = type.ToString(),
                    LastAddress = lastuser.LastLoginIP,
                    LastDatetime = lastuser.LastLoginTime,
                    Address = endpoint.Address,
                    Datetime = loginTime,
                    UserName = lastuser.Name
                };
                if (!UserHelper.UpdateLoginInfo(user, loginTime, endpoint.Address, language, out message))
                {
                    AddFailInfo(ref result, ErrorNumber.SeeDetail.ToString(), message);
                }

                AddSuccessInfo(ref result, ResultType.List, resultObject, MessageHelper.GetMessage(ErrorNumber.LoginSuccess, language));

            }
            else
            {
                AddFailInfo(ref result, ErrorNumber.SeeDetail.ToString(), message);
            }
        }
Пример #5
0
 /// <summary>
 /// Logouts the specified request.
 /// 服务端处理登录请求
 /// </summary>
 /// <param name="request">The request.</param>
 /// <param name="result">The result.</param>
 /// <param name="language">The language.</param>
 public static void Logout(JObject request, ref JObject result, string language, ref Session session)
 {
     try
     {
         _session.Leave(session.Token);
         string message = "";
         AddSuccessInfo(ref result, ResultType.Boolean, true, message);
     }
     catch(Exception exception)
     {
         throw new Exception(exception.Message);
     }
 }
Пример #6
0
        public static void GetUser(JObject request, ref JObject result, string language, ref Session session)
        {
            long userId;
            string userName;
            try
            {
                userId = long.Parse(request[GetUserFieldKeyword.UserId].ToString());
                userName = request[GetUserFieldKeyword.UserName].ToString();
            }
            catch (Exception)
            {
                AddBadParameterInfo(ref result, Functions.GetUser, language);
                return;
            }

            string message;
            User user = null;
            if (!String.IsNullOrEmpty(userName))
            {
                user = UserHelper.Get(userName, out message, language);
            }
            else
            {
                user = UserHelper.Get(userId, out message, language);
            }

            if (user != null)
            {
                var resultObject = new GetUserResult
                                       {
                                           User = user
                                       };
                AddSuccessInfo(ref result, ResultType.Object, resultObject, message);
            }
            else
            {
                AddFailInfo(ref result, ErrorNumber.SeeDetail.ToString(), message);
            }
        }
Пример #7
0
        public static void GetUserList(JObject request, ref JObject result, string language, ref Session session)
        {
            int pageSize;
            long pageIndex;
            try
            {
                pageSize = int.Parse(request[GetUserListFieldKeyword.PageSize].ToString());
                pageIndex = long.Parse(request[GetUserListFieldKeyword.PageIndex].ToString());
            }
            catch (Exception)
            {
                AddBadParameterInfo(ref result, Functions.GetUserList, language);
                return;
            }

            string message;
            var users = UserHelper.GetList(pageSize, pageIndex, language, out message);
            var resultObject = new GetUserListResult
                                   {
                                       Users = users
                                   };
            AddSuccessInfo(ref result, ResultType.Array, resultObject, message);
        }
Пример #8
0
        public Stream Method(string funcName, Stream stream)
        {
            var timer = new System.Diagnostics.Stopwatch();
            timer.Start();
            if (_tracer.IsInfoEnabled) _tracer.InfoFormat("Call function {0}.", funcName);
            var result = new JObject();

            WebOperationContext context = WebOperationContext.Current;
            #region check context
            if (context==null)
            {
                if(_tracer.IsErrorEnabled)_tracer.Error(ErrorNumber.CommonBadContext.ToString());
                AddFailInfo(ref result, ErrorNumber.CommonBadContext.ToString(), null);
                return new MemoryStream(KORT.Util.Tools.GZipCompress(Encoding.UTF8.GetBytes(result.ToString())));
            }
            else
            {
                context.OutgoingResponse.ContentType = "application/json";
            }
            #endregion

            if (!DBHelper.IsWorking())
            {
                AddFailInfo(ref result, ErrorNumber.ServerInMaintenance.ToString(), null);
                return new MemoryStream(KORT.Util.Tools.GZipCompress(Encoding.UTF8.GetBytes(result.ToString())));
            }

            Functions func;

            #region check function
            try
            {
                 func = (Functions)Enum.Parse(typeof(Functions), funcName);
            }
            catch (Exception)
            {
                if (_tracer.IsErrorEnabled) _tracer.Error(ErrorNumber.CommonFunctionNotExist.ToString());
                AddFailInfo(ref result, ErrorNumber.CommonFunctionNotExist.ToString(), null);
                return new MemoryStream(KORT.Util.Tools.GZipCompress(Encoding.UTF8.GetBytes(result.ToString())));
            }

            if(!MethodDictionary.ContainsKey(func))
            {
                if (_tracer.IsErrorEnabled) _tracer.Error(ErrorNumber.CommonFunctionNotExist.ToString());
                AddFailInfo(ref result, ErrorNumber.CommonFunctionNotExist.ToString(), null);
                return new MemoryStream(KORT.Util.Tools.GZipCompress(Encoding.UTF8.GetBytes(result.ToString())));
            }
            #endregion

            JObject request;
            #region parse request
            try
            {
                using (var decompressStream = new MemoryStream())
                {
                    KORT.Util.Tools.GZipDecompress(stream, decompressStream);
                    decompressStream.Position = 0;
                    StreamReader reader = new StreamReader(decompressStream, Encoding.UTF8);
                    string text = reader.ReadToEnd();
                    request = JObject.Parse(text);
                }
            }
            catch (Exception e)
            {
                if (_tracer.IsErrorEnabled) _tracer.Error(ErrorNumber.CommonBadRequest.ToString(), e);
                AddFailInfo(ref result, ErrorNumber.CommonBadRequest.ToString(), funcName);
                return new MemoryStream(KORT.Util.Tools.GZipCompress(Encoding.UTF8.GetBytes(result.ToString())));
            }
            #endregion
            if (_tracer.IsDebugEnabled) _tracer.Debug(request.ToString(Formatting.Indented));

            string token = request[FieldKeyword.Token] != null ? request[FieldKeyword.Token].ToString() : null;
            #region check token
            if (func != Functions.Login && (string.IsNullOrEmpty(token) || !_session.Hit(token)))
            {
                //no token or expires token
                if (_tracer.IsInfoEnabled) _tracer.Info(ErrorNumber.CommonExpireToken.ToString());
                AddFailInfo(ref result, ErrorNumber.CommonExpireToken.ToString(), null);
                return new MemoryStream(KORT.Util.Tools.GZipCompress(Encoding.UTF8.GetBytes(result.ToString())));
            }
            #endregion

            #region call functions
            currentSession = _session.GetSession(token);

            if (func != Functions.Login
                && (currentSession == null || !FunctionKeyword.CheckFunction(currentSession.UserType, func)))
            {
                if (_tracer.IsInfoEnabled) _tracer.Info(ErrorNumber.CommonWrongAuthority.ToString());
                AddFailInfo(ref result, ErrorNumber.CommonWrongAuthority.ToString(), funcName);
            }
            else if (MethodDictionary[func].CheckRequest != null
                && !MethodDictionary[func].CheckRequest(request))
            {
                if (_tracer.IsInfoEnabled) _tracer.Info(ErrorNumber.CommonBadParameter.ToString());
                AddFailInfo(ref result, ErrorNumber.CommonBadParameter.ToString(), funcName);
            }
            else
            {
                try
                {
                    var currentLanguage = request[FieldKeyword.Language] != null ? request[FieldKeyword.Language].ToString().ToLower() : null;
                    if (currentSession == null && !MessageHelper.IsSupport(currentLanguage)) currentLanguage = SupportLanguage.Default;
                    if (currentSession != null)
                    {
                        if (MessageHelper.IsSupport(currentLanguage)) currentSession.Language = currentLanguage;
                        else currentLanguage = currentSession.Language;
                    }
                    System.Diagnostics.Debug.WriteLine("use language:" + currentLanguage);
                    MethodDictionary[func].Logic(request, ref result, currentLanguage, ref currentSession);
                }
                catch (Exception e)
                {
                    if (_tracer.IsErrorEnabled) _tracer.Error(ErrorNumber.Other.ToString(), e);
                    AddFailInfo(ref result, ErrorNumber.Other.ToString(), e.Message);
                }
            }
            #endregion

            if(currentSession!=null)
                try
                {
                    timer.Stop();
                    LogHelper.SaveLog(currentSession.UserName, func.ToString(), request.ToString(), result.ToString(), timer.ElapsedMilliseconds);
                }
                catch (Exception e)
                {
                    if (_tracer.IsErrorEnabled) _tracer.Error(ErrorNumber.Other.ToString(), e);
                    AddFailInfo(ref result, ErrorNumber.Other.ToString(), e.Message);
                }

            if (_tracer.IsInfoEnabled) _tracer.InfoFormat("End function {0}.", funcName);
            return new MemoryStream(KORT.Util.Tools.GZipCompress(Encoding.UTF8.GetBytes(result.ToString())));
        }
Пример #9
0
        public static void Upload(JObject request, ref JObject result, string language, ref Session session)
        {
            string name;
            string data;
            bool isImport;
            UploadImportType importType;
            string languageInChange;
            DateTime time;
            try
            {
                name = request[UploadFieldKeyword.Name].ToString();
                data = request[UploadFieldKeyword.Data].ToString();
                isImport = bool.Parse(request[UploadFieldKeyword.IsImport].ToString());
                importType = (UploadImportType)Enum.Parse(typeof(UploadImportType), request[UploadFieldKeyword.ImportType].ToString());
                languageInChange = request[UploadFieldKeyword.LanguageInChange].ToString();
                time = DateTime.Parse(request[UploadFieldKeyword.Time].ToString());
            }
            catch (Exception)
            {
                AddBadParameterInfo(ref result, Functions.Upload, language);
                return;
            }

            string message = "";

            //save data
            if (!string.IsNullOrEmpty(name)
                && data.Length > 0)
            {
                byte[] d = Convert.FromBase64String(data);

                if(isImport)
                {
                    if (!SaveDataToFile(name, "Import", d, out message, language))
                    {
                        AddFailInfo(ref result, ErrorNumber.SeeDetail.ToString(), message);
                        return;
                    }
                    var path = Path.Combine(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Import"), name);
                    bool r = true;
                    switch (importType)
                    {
                            case UploadImportType.BinaryData:
                            //r = EmployeeHelper.UltraImportEmployeeData(path, companyId, languageInChange, language, out message);
                            break;
                    }
                    if (!r)
                    {
                        AddFailInfo(ref result, ErrorNumber.SeeDetail.ToString(), message);
                        return;
                    }
                }
                else
                {
                    if (!SaveDataToFile(name, d, out message, language))
                    {
                        AddFailInfo(ref result, ErrorNumber.SeeDetail.ToString(), message);
                        return;
                    }
                }
            }
            AddSuccessInfo(ref result, ResultType.Boolean, true, message);
        }