/// <summary> /// /// </summary> /// <param name="code"></param> /// <param name="t"></param> /// <param name="count"></param> public ResponseModel(ErrorCode code, T t, long count = 0) { if (t is string) { string str = t.ToString(); if ((str.Contains("{") && str.Contains("}")) || (str.Contains("[") && str.Contains("]"))) { } else { str = JsonSerializerHelper.Serialize(t); } Content = "{\"code\":" + (int)code + ",\"message\":\"" + code.ToString() + "\",\"result\":" + str + ",\"count\":" + count + "}"; } else { Content = "{\"code\":" + (int)code + ",\"message\":\"" + code.ToString() + "\",\"result\":" + JsonSerializerHelper.Serialize(t) + ",\"count\":" + count + "}"; } ContentEncoding = Encoding.UTF8; ContentType = "application/json"; }
/// <summary> /// 获取from列表 /// </summary> /// <returns></returns> public ServiceModel <List <FromCountModel> > GetFromList() { var result = requestHelper.Get(baseUrl + "/log/getfromlist", null); return(JsonSerializerHelper.Deserialize <ServiceModel <List <FromCountModel> > >(result)); }
/// <summary> /// /// </summary> /// <param name="context"></param> public void OnActionExecuted(ActionExecutedContext context) { var actionDescriptor = (ControllerActionDescriptor)context.ActionDescriptor; IEnumerable <CustomAttributeData> methodAttributes = actionDescriptor.MethodInfo.CustomAttributes; IEnumerable <CustomAttributeData> controllerAttributes = actionDescriptor.ControllerTypeInfo.CustomAttributes; //是否记录日志标记 bool isLog = true; foreach (CustomAttributeData item in controllerAttributes) { if (item.AttributeType.Name == "NoneLogRecordAttribute") { isLog = false; } if (item.AttributeType.Name == "LogRecordAttribute") { isLog = true; } } foreach (CustomAttributeData c in methodAttributes) { if (c.AttributeType.Name == "NoneLogRecordAttribute") { isLog = false; } if (c.AttributeType.Name == "LogRecordAttribute") { isLog = true; } } if (!isLog) { return; } MessageCenterService messageService = new MessageCenterService(BaseUrl); HttpRequest request = context.HttpContext.Request; //日志调用api var to = AppSettings.GetApplicationUrl(request).ReplaceHttpPrefix().TrimEnd('/').ToLower(); //不使用路由中的字符串因为用户可能输入大小写,不利于统计 var controller = actionDescriptor.ControllerName; var action = actionDescriptor.ActionName; //路由,解决 home/index/1 后面的1无法记录 var route = ""; foreach (var item in context.RouteData.Values) { var value = item.Value.ToString().ToLower(); if (value == controller.ToLower() || value == action.ToLower()) { continue; } route += item.Key + "=" + item.Value.ToString() + "&"; } route = route.TrimEnd('&'); var querystring = "*"; if (RecordQuerystring) { querystring = request.QueryString.Value; } var requestContent = "*"; if (RecordRequestContent) { var hasForm = request.HasFormContentType; if (hasForm && request.Form.Files.Count > 0) { List <string> fileNames = new List <string>(); for (var i = 0; i < request.Form.Files.Count; i++) { fileNames.Add(request.Form.Files[i].FileName); } requestContent = string.Join(",", fileNames); } else { request.Body.Seek(0, SeekOrigin.Begin); var reader = new StreamReader(request.Body); requestContent = reader.ReadToEndAsync().Result.Replace("\n", "").Replace("\t", "").Replace("\r", ""); request.Body.Seek(0, SeekOrigin.Begin); } } var responseContent = "*"; if (RecordResponseContent) { var result = context.Result; if (result is JsonResult) { responseContent = JsonSerializerHelper.Serialize(((JsonResult)result).Value); } if (result is ViewResult) { responseContent = "ViewResult"; } if (result is ContentResult) { responseContent = ((ContentResult)result).Content; } if (result is StatusCodeResult) { responseContent = ((StatusCodeResult)result).StatusCode + "-"; } if (result is FileResult) { responseContent = ((FileResult)result).FileDownloadName; } if (result is ObjectResult) { responseContent = JsonSerializerHelper.Serialize(((ObjectResult)result).Value); } if (result is EmptyResult) { responseContent = ""; } if (result is RedirectResult) { responseContent = "redirect:" + ((RedirectResult)result).Url; } if (result is RedirectToRouteResult) { responseContent = "route:" + ((RedirectToRouteResult)result).RouteName; } } string userId = "", userName = "", from = "";; string authorization = JwtManager.GetAuthorization(request, CookieKey); if (!authorization.IsNullOrEmpty()) { ClaimsPrincipal claimsPrincipal = JwtManager.ParseAuthorization(authorization, SecretKey, request.HttpContext); UserData userData = JwtManager.ParseUserData(claimsPrincipal); userId = userData.UserId; userName = userData.UserName; from = userData.From.ReplaceHttpPrefix().TrimEnd('/').ToLower(); } string userHost = request.HttpContext.Connection.RemoteIpAddress.ToString(); string userAgent = request.Headers["User-Agent"]; var time = DateTime.UtcNow.MillisecondTimeStamp() - (long)context.HttpContext.Items["log_time_start"]; bool exception = context.Exception != null; messageService.InsertLog(from, to, controller, action, route, querystring, requestContent, responseContent, userId, userName, userHost, userAgent, time, exception); }
/// <summary> /// 通过id获取日志详情 /// </summary> /// <param name="id"></param> /// <returns></returns> public ServiceModel <LogModel> GetById(string id) { var result = requestHelper.Get(baseUrl + "/log/getbyid/" + id, null); return(JsonSerializerHelper.Deserialize <ServiceModel <LogModel> >(result)); }
/// <summary> /// 获取最新的日志,按天统计 /// </summary> /// <param name="last">最近多少天</param> /// <returns></returns> public ServiceModel <List <LogOpCountModel> > GetOpRecordByDay(int last = 30) { var result = requestHelper.Get(baseUrl + "/log/recordbyday?last=" + last, null); return(JsonSerializerHelper.Deserialize <ServiceModel <List <LogOpCountModel> > >(result)); }
/// <summary> /// 获取from中action列表 /// </summary> /// <param name="to"></param> /// <param name="controllerName"></param> /// <returns></returns> public ServiceModel <List <ActionCountModel> > GetActionsByController(string to, string controllerName) { var result = requestHelper.Get(baseUrl + "/log/getactionsbycontroller?to=" + to + "&controllerName=" + controllerName, null); return(JsonSerializerHelper.Deserialize <ServiceModel <List <ActionCountModel> > >(result)); }
/// <summary> /// 统计昨天,上月,全部日志 /// </summary> /// <returns></returns> public ServiceModel <OperationsCountModel> GetOperations() { var result = requestHelper.Get(baseUrl + "/log/getoperations", null); return(JsonSerializerHelper.Deserialize <ServiceModel <OperationsCountModel> >(result)); }
/// <summary> /// 获取角色列表 /// </summary> /// <param name="filter"></param> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <returns></returns> public ServiceModel <List <RoleItem> > GetRoleList(string filter = "", int pageIndex = 1, int pageSize = 10) { string roles = requestHelper.Get(RemoteUrl + "/role/getlist?filter=" + filter + "&pageIndex=" + pageIndex + "&pageSize=" + pageSize, headers); return(JsonSerializerHelper.Deserialize <ServiceModel <List <RoleItem> > >(roles)); }
/// <summary> /// 获取to中Controller列表 /// </summary> /// <param name="to"></param> /// <returns></returns> public ServiceModel <List <ControllerCountModel> > GetControllersByTo(string to) { var result = requestHelper.Get(baseUrl + "/log/getcontrollersbyto?to=" + to, null); return(JsonSerializerHelper.Deserialize <ServiceModel <List <ControllerCountModel> > >(result)); }
/// <summary> /// 获取指定department列表 /// </summary> /// <param name="companyCode"></param> /// <returns></returns> public ServiceModel <List <DepartmentItem> > GetAllDepartment(string companyCode) { string departments = requestHelper.Get(RemoteUrl + "/department/getDepartments?companyCode=" + companyCode, headers); return(JsonSerializerHelper.Deserialize <ServiceModel <List <DepartmentItem> > >(departments)); }
/// <summary> /// 获取user列表 /// </summary> /// <param name="filter"></param> /// <param name="companyCode"></param> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <returns></returns> public ServiceModel <List <UserItem> > GetUserList(string companyCode = "", string filter = "", int pageIndex = 1, int pageSize = 10) { string users = requestHelper.Get(RemoteUrl + "/user/getBasic?companyCode=" + companyCode + "&filter=" + filter + "&orderField=UserName&orderType=asc&pageIndex=" + pageIndex + "&pageSize=" + pageSize, headers); return(JsonSerializerHelper.Deserialize <ServiceModel <List <UserItem> > >(users)); }
/// <summary> /// 获取所有company /// </summary> /// <returns></returns> public ServiceModel <List <CompanyItem> > GetAllCompany() { string companys = requestHelper.Get(RemoteUrl + "/company/getall", headers); return(JsonSerializerHelper.Deserialize <ServiceModel <List <CompanyItem> > >(companys)); }
/// <summary> /// 替换权限项 /// </summary> /// <param name="origin">项目标记</param> /// <param name="names">权限列表</param> /// <returns></returns> public ServiceModel <string> ReplacePermissions(string origin, IEnumerable <string> names) { string result = requestHelper.Post(RemoteUrl + "/permission/add", new { Origin = origin, Names = names }, headers); return(JsonSerializerHelper.Deserialize <ServiceModel <string> >(result)); }
/// <summary> /// 获取user详情 /// </summary> /// <param name="userId"></param> /// <returns></returns> public ServiceModel <UserDetail> GetUserDetail(string userId) { string user = requestHelper.Get(RemoteUrl + "/user/getByUserId?userId=" + userId, headers); return(JsonSerializerHelper.Deserialize <ServiceModel <UserDetail> >(user)); }
/// <summary> /// 添加调度任务 /// </summary> /// <param name="machineName"></param> /// <param name="schedulingId"></param> /// <param name="triggerId"></param> /// <param name="schedulingState"></param> /// <returns></returns> public ServiceModel <string> InsertTaskScheduling(string machineName, int schedulingId, int triggerId, int schedulingState) { var result = requestHelper.Post(baseUrl.TrimEnd('/') + "/TaskScheduling/insert", new { machineName, schedulingId, triggerId, schedulingState }, null); return(JsonSerializerHelper.Deserialize <ServiceModel <string> >(result)); }
/// <summary> /// 添加转换任务 /// </summary> /// <param name="machineName">发往那个机器</param> /// <param name="collectionName"></param> /// <param name="collectionId"></param> /// <returns></returns> public ServiceModel <string> InsertConvertTask(string machineName, string collectionName, string collectionId) { var result = requestHelper.Post(baseUrl.TrimEnd('/') + "/filetask/insert", new { machineName, collectionName, collectionId }, null); return(JsonSerializerHelper.Deserialize <ServiceModel <string> >(result)); }