<form id="frmSearch" method="get" class="form-inline" enctype="application/x-www-form-urlencoded">
<input type="hidden" id="pageIndex" name="pageIndex" value="@Model.Pager.PageIndex" />
<input type="hidden" id="pageSize" name="pageSize" value="@Model.Pager.PageSize" />
<div class="form-group">
<div class="input-group">
<select class="form-control" name="operateType" id="operateType">
<option value="">请选择</option>
@foreach (var dict in ViewBag.Type)
{
<option value="@dict.Key" @Html.Raw(Model.OperateType == dict.Key ? " selected=\"selected\"" : "")>@dict.Value</option>
}
</select>
@*<select id="OperateType" name="OperateType" class="form-control" style="height:30px;">
<option value="">--操作类型--</option>
</select>*@
</div>
</div>
<div class="form-group">
<div class="input-group input-group-sm" style="width: 300px;">
<input type="text" name="kw" class="form-control pull-right" placeholder="Search" value="@ViewBag.kw">
<div class="input-group-btn">
<button type="submit" class="btn btn-default">
<i class="fa fa-search"></i>
</button>
</div>
</div>
</div>
</form>
/// <summary>
/// 用户操作日志
/// </summary>
/// <param name="type"></param>
/// <param name="kw"></param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
public ActionResult UsersOperateLogIndex(int userId=0, string kw = "", int pageIndex = 1, int pageSize = 15,int operateType=0)
{
var model = new UsersOperateLogIndexModel(userId, kw, pageIndex, pageSize);
base.RenderOutputBaseModel(model, new Tuple<string, string>("用户日志管理", Url.Action("UsersOperateLogIndex", "UsersOperateLog", new { area = "Member" })));
var usersOperateLog = base.UsersOperateLogService.Value.PageEntities(userId,model.Pager, kw, operateType);
if (usersOperateLog != null)
{
var users = new List<VM<Users_OperateLog>>();
foreach (var item in usersOperateLog)
{
var vm = new VM<Users_OperateLog>(item);
//验证枚举是否存在默认值
if (Enum.IsDefined(typeof(ModuleType),item.ModuleName==null?"":item.ModuleName))
{
//获取模块名称
vm.ViewBag.Moudou = EnumUtility.GetEnumDescription((Enum)Enum.Parse(typeof(ModuleType), item.ModuleName.ToString()));
}
//获取操作类型
//vm.ViewBag.Type = EnumUtility.GetEnumDescription((Enum)Enum.Parse(typeof(OperateType), ((OperateType)item.OperateType).ToString()));
ViewBag.Type = EnumUtility.GetEnumDescDictionary(typeof(OperateType));
//获取用户名称
vm.ViewBag.UserName = base.UsersService.Value.GetUserName(item.UserId);
//获取监护人名称
vm.ViewBag.GuardianName = base.UsersGuardiansService.Value.GetName(item.GuardianId);
users.Add(vm);
}
model.Results = users;
}
ViewBag.kw = kw;
model.OperateType = operateType;
return View(model);
}
using DeJin.EasyCare.Entities.Member;
using DeJin.EasyCare.WebUI.Models;
using System.Collections.Generic;
namespace DeJin.EasyCare.WebUI.Areas.Member.Models
{
public class UsersOperateLogIndexModel:ListBaseModel
{
public UsersOperateLogIndexModel(int userIf=0, string kw = "", int pageIndex = 1, int pageSize = 10, string title = "用户操作日志管理", string subTitle = "用户操作日志") :
base(title, subTitle)
{
this.Results = new List<VM<Users_OperateLog>>();
this.Keyword = kw;
if (pageIndex < 0) pageIndex = 1;
if (pageSize < 2 || pageSize > 50) pageSize = 15;
base.Pager.PageIndex = pageIndex;
base.Pager.PageSize = pageSize;
this.UserId = UserId;
}
/// <summary>
/// 关键词
/// </summary>
public string Keyword { get; set; }
/// <summary>
/// 操作类型
/// </summary>
public int OperateType { get; set; }
/// <summary>
/// 数据集合
/// </summary>
public List<VM<Users_OperateLog>> Results { get; set; }
/// <summary>
/// 用户id
/// </summary>
public int UserId { get; set; }
}
}
#region 获取枚举成员与值Dictionary
/// <summary>
/// 获取枚举成员与键值对字典
/// </summary>
/// <param name="enumType">typeof(枚举名)</param>
/// <returns>Dictionary(值,枚举名)对</returns>
public static Dictionary<int, string> GetEnumDictionary(Type enumType)
{
Dictionary<int, string> dict = new Dictionary<int, string>();
try
{
string[] names = Enum.GetNames(enumType);
foreach (string n in names)
{
int key = (int)Enum.Parse(enumType, n);
if (!dict.ContainsKey(key))
{
dict.Add(key, n);
}
}
}
catch (Exception ex)
{
throw ex;
}
return dict;
}
/// <summary>
/// 获取枚举成员的中文描述与值对字典 Info界面一般用于数据集合,数组查询使用
/// </summary>
/// <param name="enumType">typeof(枚举名)</param>
/// <returns>Dictionary(值,枚举中文描述)对</returns>
public static Dictionary<int, string> GetEnumDescDictionary(Type enumType)
{
Dictionary<int, string> dict = new Dictionary<int, string>();
try
{
string[] names = Enum.GetNames(enumType);
foreach (string n in names)
{
int key = (int)Enum.Parse(enumType, n);
if (!dict.ContainsKey(key))
{
dict.Add(key, GetEnumDescription((Enum)Enum.Parse(enumType, n)));
}
}
}
catch (Exception ex)
{
throw ex;
}
return dict;
}
#endregion
/// <summary>
/// 获取一个枚举值的中文描述 一般用于Index列表显示
/// </summary>
/// <param name="obj">枚举值</param>
/// <returns></returns>
public static string GetEnumDescription(Enum obj)
{
FieldInfo fi = obj.GetType().GetField(obj.ToString());
if (fi == null) return "";
DescriptionAttribute[] arrDesc = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
return arrDesc.Length > 0 ? arrDesc[0].Description : "";
}
using DeJin.EasyCare.Entities;
using DeJin.EasyCare.Entities.Member;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DeJin.EasyCare.Services.Service.Member
{
public class UsersOperateLogService : BaseService
{
/// <summary>
/// 分页获取数据集合
/// </summary>
/// <param name="pager"></param>
/// <returns></returns>
public List<Users_OperateLog> PageEntities(int userId, PageInfo pager, string kw,int operateType)
{
return base.UsersOperateLogAccess.Value.PageEntities(userId,pager, kw, operateType);
}
}
}
using System.Collections.Generic;
using System.Linq;
using DeJin.EasyCare.DataNhibernate.Helpers;
using DeJin.EasyCare.Entities;
using DeJin.EasyCare.Entities.Member;
namespace DeJin.EasyCare.DBAccess.Member
{
/// <summary>
/// 用户操作记录数据访问仓储
/// </summary>
public class Users_OperateLogAccess : BaseAccess<Users_OperateLog, int>
{
/// <summary>
/// 分页获取用户操作记录数据集合
/// </summary>
/// <param name="pager"></param>
/// <param name="kw"></param>
/// <param name="type"></param>
/// <param name="state"></param>
/// <returns></returns>
public List<Users_OperateLog> PageEntities(int userId, PageInfo pager, string kw,int operateType)
{
var expr = PredicateBuilder.True<Users_OperateLog>();
if (!string.IsNullOrEmpty(kw))
{
expr =
expr.And(
x =>
x.Operate.Contains(kw)
);
}
if (userId > 0)
{
expr = expr.And(x => x.UserId == userId);
}
if (operateType > 0)
{
expr = expr.And(x => x.OperateType == operateType);
}
var list = base.Query().Where(expr).OrderByDescending(p => p.Id).Skip(pager.Skip).Take(pager.PageSize).ToList();
pager.Total = base.Query().Where(expr).Count();
return list;
}
}
}