BaseController.cs

妖狐鬼魅 / 2023-05-04 / 原文

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using PT.BLL;
using PT.Common;
using PT.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;


namespace PT.Web.Mvc.Controllers
{
    public class BaseController<T, V> : Controller where T : class, new() where V : class, new()
    {

        BaseBll<T, V> baseBll = new BaseBll<T, V>();

        #region 查询

        /// <summary>
        /// 查询表所有数据
        /// </summary>
        /// <returns></returns>
        public virtual IActionResult Queryable()
        {
            LayuiDataResult<T> dataResult = new LayuiDataResult<T>()
            {
                code = 0,
                msg = "成功",
                count = 0,
                data = new List<T>()

            };
            try
            {
                List<T> list = baseBll.Queryable();
                dataResult.count = list.Count;
                dataResult.data = list;

            }
            catch (Exception ex)
            {

                dataResult.code = -1;
                dataResult.msg = ex.Message;
            }

            var res = new JsonResult(dataResult);
            return res;

        }


        /// <summary>
        /// 查询表未删除数据
        /// </summary>
        /// <returns></returns>
        public virtual IActionResult QueryableNotDeleted()
        {
            LayuiDataResult<T> dataResult = new LayuiDataResult<T>()
            {
                code = 0,
                msg = "成功",
                count = 0,
                data = new List<T>()

            };
            try
            {
                List<T> list = baseBll.QueryableNotDeleted();
                dataResult.count = list.Count;
                dataResult.data = list;

            }
            catch (Exception ex)
            {

                dataResult.code = -1;
                dataResult.msg = ex.Message;
            }

            var res = new JsonResult(dataResult);
            return res;

        }


        /// <summary>
        /// 查询表未删除数据  按条件查询
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public virtual IActionResult QueryableNotDeletedWhere(T t)
        {
            LayuiDataResult<T> dataResult = new LayuiDataResult<T>()
            {
                code = 0,
                msg = "成功",
                count = 0,
                data = new List<T>()

            };
            try
            {
                List<T> list = baseBll.QueryableNotDeleted(t);
                dataResult.count = list.Count;
                dataResult.data = list;

            }
            catch (Exception ex)
            {

                dataResult.code = -1;
                dataResult.msg = ex.Message;
            }

            var res = new JsonResult(dataResult);
            return res;

        }


        /// <summary>
        /// 单主键查询
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        public virtual IActionResult QueryableInSingle(string Id)
        {
            ResponseResult result = new ResponseResult()
            {
                code = 0,
                msg = "成功",
                data = 0

            };
            try
            {
                T t = baseBll.QueryableInSingle(Id);
                result.data = t;

            }
            catch (Exception ex)
            {

                result.code = -1;
                result.msg = ex.Message;
            }

            var res = new JsonResult(result);
            return res;

        }


        /// <summary>
        /// 查询单条  没有返回Null,如果结果大于1条会抛出错误 (根据业务重写)
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public virtual IActionResult QueryableSingle(UserList t)
        {
            ResponseResult result = new ResponseResult()
            {
                code = 0,
                msg = "成功",
                data = 0

            };
            try
            {
                UserList data = baseBll.QueryableSingle(t);
                result.data = data;

            }
            catch (Exception ex)
            {

                result.code = -1;
                result.msg = ex.Message;
            }

            var res = new JsonResult(result);
            return res;

        }


        /// <summary>
        /// 是否存在记录
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public virtual IActionResult IsExist(T t)
        {
            ResponseResult result = new ResponseResult()
            {
                code = 0,
                msg = "成功",
                data = 0

            };
            try
            {
                bool b = baseBll.IsExist(t);
                result.data = b;

            }
            catch (Exception ex)
            {

                result.code = -1;
                result.msg = ex.Message;
            }

            var res = new JsonResult(result);
            return res;

        }

        #endregion


        #region 插入


        /// <summary>
        /// 插入 忽略null列
        /// </summary>
        /// <param name="t"></param>
        /// <returns>返回自增id</returns>
        public virtual IActionResult InsertableIgnoreColumns(T t)
        {
            ResponseResult result = new ResponseResult()
            {
                code = 0,
                msg = "成功",
                data = 0

            };
            try
            {
                result.data = baseBll.InsertableIgnoreColumns(t);

            }
            catch (Exception ex)
            {

                result.code = -1;
                result.msg = ex.Message;
            }

            var res = new JsonResult(result);
            return res;

        }

        #endregion


        #region 更新



        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public virtual IActionResult Updateable(T t)
        {
            ResponseResult result = new ResponseResult()
            {
                code = 0,
                msg = "成功",
                data = 0

            };
            try
            {
                result.data = baseBll.Updateable(t);

            }
            catch (Exception ex)
            {

                result.code = -1;
                result.msg = ex.Message;
            }

            var res = new JsonResult(result);
            return res;

        }



        /// <summary>
        /// 更新 忽略null列
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public virtual IActionResult UpdateableIgnoreColumns(T t)
        {
            ResponseResult result = new ResponseResult()
            {
                code = 0,
                msg = "成功",
                data = 0

            };
            try
            {

                result.data = baseBll.UpdateableIgnoreColumns(t);

            }
            catch (Exception ex)
            {

                result.code = -1;
                result.msg = ex.Message;
            }

            var res = new JsonResult(result);
            return res;

        }


        /// <summary>
        /// 更新 忽略null列 批量
        /// </summary>
        /// <param name="ts"></param>
        /// <returns></returns>
        [HttpPost]
        public virtual IActionResult UpdateableIgnoreColumnsBatch(List<T> ts)
        {
            ResponseResult result = new ResponseResult()
            {
                code = 0,
                msg = "成功",
                data = 0

            };
            try
            {

                result.data = baseBll.UpdateableIgnoreColumns(ts);

            }
            catch (Exception ex)
            {

                result.code = -1;
                result.msg = ex.Message;
            }

            var res = new JsonResult(result);
            return res;

        }


        /// <summary>
        /// 更新 根据自定义条件 忽略null列  (根据业务重写)
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public virtual IActionResult UpdateableIgnoreColumnsWhere(T t)
        {
            ResponseResult result = new ResponseResult()
            {
                code = 0,
                msg = "成功",
                data = 0

            };
            try
            {

                result.data = baseBll.UpdateableIgnoreColumnsWhere(t);

            }
            catch (Exception ex)
            {

                result.code = -1;
                result.msg = ex.Message;
            }

            var res = new JsonResult(result);
            return res;

        }

        #endregion


        #region 删除


        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public virtual IActionResult Deleteable(T t)
        {
            ResponseResult result = new ResponseResult()
            {
                code = 0,
                msg = "成功",
                data = 0

            };
            try
            {
                result.data = baseBll.Deleteable(t);

            }
            catch (Exception ex)
            {

                result.code = -1;
                result.msg = ex.Message;
            }

            var res = new JsonResult(result);
            return res;

        }

        /// <summary>
        /// 逻辑删除
        /// </summary>
        /// <param name="Ids"></param>
        /// <returns></returns>
        [HttpPost]
        public virtual IActionResult DeleteableLogic(List<int> Ids)
        {
            string ModifyBy = "admin作者";
            ResponseResult result = new ResponseResult()
            {
                code = 0,
                msg = "成功",
                data = 0

            };
            try
            {
                result.data = baseBll.DeleteableLogic(ModifyBy, Ids);

            }
            catch (Exception ex)
            {

                result.code = -1;
                result.msg = ex.Message;
            }

            var res = new JsonResult(result);
            return res;

        }

        #endregion


        #region 业务查询,根据业务需要重写方法


        /// <summary>
        /// 视图 多表联查 查询表未删除数据 (根据业务重写)
        /// </summary>
        /// <returns></returns>
        public virtual IActionResult QueryableNotDeletedV()
        {
            LayuiDataResult<UserListV> dataResult = new LayuiDataResult<UserListV>()
            {
                code = 0,
                msg = "成功",
                count = 0,
                data = new List<UserListV>()

            };
            try
            {
                List<UserListV> list = baseBll.QueryableNotDeletedV();
                dataResult.count = list.Count;
                dataResult.data = list;

            }
            catch (Exception ex)
            {

                dataResult.code = -1;
                dataResult.msg = ex.Message;
            }

            var res = new JsonResult(dataResult);
            return res;

        }


        /// <summary>
        /// 视图 多表联查 查询表未删除数据 按条件查询 (根据业务重写)
        /// </summary>
        /// <returns></returns>
        public virtual IActionResult QueryableNotDeletedVWhere(IPListV v)
        {
            LayuiDataResult<IPListV> dataResult = new LayuiDataResult<IPListV>()
            {
                code = 0,
                msg = "成功",
                count = 0,
                data = new List<IPListV>()

            };
            try
            {
                List<IPListV> list = baseBll.QueryableNotDeletedV(v);
                dataResult.count = list.Count;
                dataResult.data = list;

            }
            catch (Exception ex)
            {

                dataResult.code = -1;
                dataResult.msg = ex.Message;
            }

            var res = new JsonResult(dataResult);
            return res;

        }


        /// <summary>
        /// 视图 多表联查 分页查询 查询表未删除数据 按条件查询 (根据业务重写)
        /// </summary>
        /// <param name="where"></param>
        /// <param name="page"></param>
        /// <param name="limit"></param>
        /// <returns></returns>
        public virtual IActionResult QueryablePageList(IPListV where, int page, int limit)
        {
            LayuiDataResult<IPListV> dataResult = new LayuiDataResult<IPListV>()
            {
                code = 0,
                msg = "成功",
                count = 0,
                data = new List<IPListV>()

            };
            try
            {
                int totalCount = 0;
                List<IPListV> list = baseBll.QueryablePageList(where, page, limit, out totalCount);
                dataResult.count = totalCount;
                dataResult.data = list;

            }
            catch (Exception ex)
            {

                dataResult.code = -1;
                dataResult.msg = ex.Message;
            }

            var res = new JsonResult(dataResult);
            return res;

        }

        #endregion
    }
}