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)); } }
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); } }
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); }
/// <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); } }
/// <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); } }
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); } }
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); }
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()))); }
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); }