BaseController

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


    }

 

posted @ 2023-04-18 20:30  妖狐鬼魅  阅读(31)  评论(0)    收藏  举报