示例#1
0
        public IActionResult GetDetails([FromQuery] OperateLogDetailQueryModel queryModel)
        {
            var result = _operateLogService.GetPagingOperateDetail(queryModel);

            return(Ok(result));
        }
        /// <summary>
        /// 获取操作日志内容
        /// </summary>
        public PagingResultModel <OperateLogDetailResultModel> GetPagingOperateDetail(OperateLogDetailQueryModel queryModel)
        {
            // 查询
            var query = from detail in _logDetailRepository.Get(false)
                        join setting in _logSettingRepository.Get(false) on detail.SettingId equals setting.Id
                        select new OperateLogDetailResultModel
            {
                Id = detail.Id,
                OperatorAccount = detail.OperatorAccount,
                OperatorName    = detail.OperatorName,
                OperateAt       = detail.OperateAt,
                ResultCode      = detail.ResultCode,
                Uri             = detail.Uri,
                UpdateField     = detail.UpdateField,
                OldValue        = detail.OldValue,
                NewValue        = detail.NewValue,
                Content         = detail.Content,

                ModuleName    = setting.ModuleName,
                SubModuleName = setting.SubModuleName,
                Function      = setting.Function,
                Method        = setting.Method,
                SaveTime      = setting.SaveTime
            };

            query = query
                    .AndIfHaveValue(queryModel.Module, s => s.ModuleName.Contains(queryModel.Module))
                    .AndIfHaveValue(queryModel.Submodule, s => s.SubModuleName.Contains(queryModel.Submodule))
                    .AndIfHaveValue(queryModel.Operator, s => s.OperatorName.Contains(queryModel.Operator))
                    .AndIfHaveValue(queryModel.StartAt, s => s.OperateAt > queryModel.StartAt)
                    .AndIfHaveValue(queryModel.EndAt, s => s.OperateAt < queryModel.EndAt);

            // 排序
            var sortFieldDic = new Dictionary <string, Expression <Func <OperateLogDetailResultModel, object> > >();

            sortFieldDic["module"]       = t => t.ModuleName;
            sortFieldDic["subModule"]    = t => t.SubModuleName;
            sortFieldDic["operatorName"] = t => t.OperatorAccount;
            sortFieldDic["operateAt"]    = t => t.OperateAt;
            sortFieldDic["id"]           = t => t.Id;
            queryModel.Sort  = JoinString(queryModel.Sort, "id");
            queryModel.Order = JoinString(queryModel.Order, "ascend");
            query            = GetOrderQuery(query, queryModel.Sort, queryModel.Order, sortFieldDic);

            // 分页
            var skip   = queryModel.Size * (queryModel.Page - 1);
            var result = query.Skip(skip).Take(queryModel.Size).ToList();

            return(new PagingResultModel <OperateLogDetailResultModel>
            {
                Count = query.Count(),
                Data = result
            });
        }