public class BaseController<T, V> : Controller where T : class, new() where V : class, new()
{
BaseDal<T, V> baseDal = new BaseDal<T, V>();
#region 通用基础方法
#region 通用扩展方法
/// <summary>
/// 新增
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public virtual ActionResult Insert(T t)
{
try
{
int res = baseDal.Insert(t);
return Content(res.ToString());
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Content("0");
}
}
/// <summary>
/// 新增 如已存在则修改 根据需求重写
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public virtual ActionResult InsertForUpdate(T t)
{
try
{
int res = baseDal.InsertForUpdate(t);
return Content(res.ToString());
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Content("0");
}
}
/// <summary>
/// 批量新增
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public virtual ActionResult InsertBatch(List<T> list)
{
try
{
int[] res = baseDal.InsertBatch(list);
return Content(res.ToJson());
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
}
return Content("0");
}
/// <summary>
/// 修改
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public virtual ActionResult Update(T t)
{
try
{
bool res = baseDal.Update(t);
return Content(res.ToString());
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Content("false");
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public virtual ActionResult Delete(T t)
{
try
{
bool res = baseDal.Delete(t);
return Content(res.ToString());
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Content("false");
}
}
/// <summary>
/// 批量删除
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public virtual ActionResult DeleteBatch(List<T> list)
{
try
{
bool res = baseDal.DeleteBatch(list);
return Content(res.ToString());
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Content("false");
}
}
#endregion
#region 通用SQL方法
/// <summary>
/// SQL语句 自定义增删改
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public virtual ActionResult Execute(T t)
{
try
{
int res = baseDal.Execute(t);
return Content(res.ToString());
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Content("0");
}
}
/// <summary>
/// SQL语句 自定义批量增删改
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public virtual ActionResult ExecuteBatch(List<T> t)
{
try
{
int res = baseDal.ExecuteBatch(t);
return Content(res.ToString());
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Content("0");
}
}
/// <summary>
/// SQL语句 新增
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public virtual ActionResult ExecuteInsert(T t)
{
try
{
int res = baseDal.ExecuteInsert(t);
return Content(res.ToString());
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Content("0");
}
}
/// <summary>
/// SQL语句 修改
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public virtual ActionResult ExecuteUpdate(T t)
{
try
{
int res = baseDal.ExecuteUpdate(t);
return Content(res.ToString());
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Content("0");
}
}
/// <summary>
/// SQL语句更新非空字段\部分字段 默认第一个字段为更新主键
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public virtual ActionResult UpdateNotNull(T t)
{
try
{
bool res = baseDal.UpdateNotNull(t);
return Content(res.ToString());
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Content("false");
}
}
/// <summary>
/// SQL语句 删除
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public virtual ActionResult ExecuteDelete(T t)
{
try
{
int res = baseDal.ExecuteDelete(t);
return Content(res.ToString());
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Content("0");
}
}
#endregion
/// <summary>
/// 查询一个实体
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public virtual ActionResult GetEntity(string id)
{
try
{
T res = baseDal.GetEntity(id);
return Json(res, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Json("", JsonRequestBehavior.AllowGet);
}
}
/// <summary>
/// 查询全部
/// </summary>
/// <returns></returns>
public virtual ActionResult GetListAll()
{
try
{
List<T> res = baseDal.GetListAll();
return Json(res, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Json("", JsonRequestBehavior.AllowGet);
}
}
/// <summary>
/// 查询返回DataTable示例 主要用于 MVC控制器
/// </summary>
/// <param name="v">条件</param>
/// <returns></returns>
public virtual ActionResult GetTable(V v)
{
try
{
DataTable res = baseDal.GetTable(v);
return Content(res.ToJson());
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Content("0");
}
}
/// <summary>
/// 查询统计总数
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public virtual ActionResult Count(FormCollection collection)
{
T t = new T();
TryUpdateModel<T>(t, collection);
int res = baseDal.Count(t);
return Json(res, JsonRequestBehavior.AllowGet);
}
#endregion
#region 示例方法 需重写
/// <summary>
/// 以条件查询
/// </summary>
/// <param name="collection"></param>
/// <returns></returns>
[HttpPost]
public virtual ActionResult GetList(FormCollection collection)
{
try
{
T t = new T();
TryUpdateModel<T>(t, collection);
List<T> res = baseDal.GetList(t);
return Json(res, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Json("", JsonRequestBehavior.AllowGet);
}
}
[HttpPost]
public virtual ActionResult QueryForSQL(FormCollection collection)
{
try
{
V t = new V();
TryUpdateModel<V>(t, collection);
List<V> res = baseDal.QueryForSQL(t);
return Json(res, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Json("", JsonRequestBehavior.AllowGet);
}
}
[HttpPost]
public virtual ActionResult QueryFirstOrDefaultView(FormCollection collection)
{
try
{
V t = new V();
TryUpdateModel<V>(t, collection);
V res = baseDal.QueryFirstOrDefaultView(t);
return Json(res, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LoggerHelper._.Error(ex.ToString());
return Json("", JsonRequestBehavior.AllowGet);
}
}
/// <summary>
/// 获取分页数据
/// Dapper扩展分页
/// </summary>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <param name="Id"></param>
/// <returns></returns>
public virtual ActionResult GetPage(int page, int limit, string Id)
{
long allRowsCount = 0;
List<V> list = baseDal.GetPage(page, limit, out allRowsCount);
LayUIDataResult<V> layUIDataResult = new LayUIDataResult<V>()
{
code = 0,
count = allRowsCount,
msg = "",
data = list
};
return Json(layUIDataResult, JsonRequestBehavior.AllowGet);
}
/// <summary>
/// SQL分页示例
/// </summary>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <param name="Id"></param>
/// <returns></returns>
public virtual ActionResult GetPageListForSQL(int page, int limit, string Id)
{
JObject jObject = new JObject();
PageDataView<V> res = baseDal.GetPageListForSQL(jObject);
LayUIDataResult<V> layUIDataResult = new LayUIDataResult<V>()
{
code = 0,
count = res.TotalNum,
msg = "",
data = res.Items.ToList()
};
return Json(layUIDataResult, JsonRequestBehavior.AllowGet);
}
/// <summary>
/// SQL分页示例 主要用于 MVC控制器 Layui
/// </summary>
/// <param name="collection"></param>
/// <returns></returns>
[HttpPost]
public virtual ActionResult GetPageListForSQL(FormCollection collection)
{
V t = new V();
TryUpdateModel<V>(t, collection);
int CurrentPage = Convert.ToInt32(collection["page"]);
int limit = Convert.ToInt32(collection["limit"]);
PageDataView<V> res = baseDal.GetPageListForSQL(CurrentPage, limit, t);
LayUIDataResult<V> layUIDataResult = new LayUIDataResult<V>()
{
code = 0,
count = res.TotalNum,
msg = "",
data = res.Items.ToList()
};
return Json(layUIDataResult, JsonRequestBehavior.AllowGet);
}
#endregion
}