BaseApiController(Dapper)


public class BaseApiController : ApiController where T : class
    {

        BaseDal baseDal = new BaseDal();

        #region 通用Api

        /// 
        /// 新增
        /// 
        /// 
        /// 
        [System.Web.Http.HttpPost]
        public virtual HttpResponseMessage Insert([FromBody] JObject value)
        {
            T model = value.ToObject();

            int res = DbHelper.Insert(model);

            JObject obj = new JObject();
            obj.Add("code", "0");
            obj.Add("msg", "成功");
            obj.Add("data", res);

            HttpResponseMessage result = new HttpResponseMessage
            {
                Content = new StringContent(obj.ToString(), Encoding.UTF8, "application/json")
            };
            return result;

        }


        /// 
        /// 批量新增
        /// 
        /// 
        /// 
        [System.Web.Http.HttpPost]
        public virtual HttpResponseMessage InsertBatch([FromBody] List value)
        {


            bool res = DbHelper.InsertBatch(value);

            JObject obj = new JObject();
            obj.Add("code", "0");
            obj.Add("msg", "成功");
            obj.Add("data", res);

            HttpResponseMessage result = new HttpResponseMessage
            {
                Content = new StringContent(obj.ToString(), Encoding.UTF8, "application/json")
            };
            return result;

        }

        /// 
        /// 修改
        /// 
        /// 
        /// 
        [System.Web.Http.HttpPost]
        public virtual HttpResponseMessage Update([FromBody] JObject value)
        {
            T model = value.ToObject();

            bool res = DbHelper.Update(model);

            JObject obj = new JObject();
            obj.Add("code", "0");
            obj.Add("msg", "成功");
            obj.Add("data", res);

            HttpResponseMessage result = new HttpResponseMessage
            {
                Content = new StringContent(obj.ToString(), Encoding.UTF8, "application/json")
            };
            return result;

        }

        /// 
        /// 更新非空字段\部分字段  默认第一个字段为更新主键
        /// 
        /// 
        /// 
        [System.Web.Http.HttpPost]
        public virtual HttpResponseMessage UpdateNotNull([FromBody] JObject value)
        {

            T model = value.ToObject();

            bool res = baseDal.UpdateNotNull(model);

            JObject obj = new JObject();
            obj.Add("code", "0");
            obj.Add("msg", "成功");
            obj.Add("data", res);

            HttpResponseMessage result = new HttpResponseMessage
            {
                Content = new StringContent(obj.ToString(), Encoding.UTF8, "application/json")
            };
            return result;

        }


        /// 
        /// 删除
        /// 
        /// 
        /// 
        [System.Web.Http.HttpPost]
        public virtual HttpResponseMessage Delete([FromBody] JObject value)
        {
            T model = value.ToObject();

            bool res = DbHelper.Delete(model);

            JObject obj = new JObject();
            obj.Add("code", "0");
            obj.Add("msg", "成功");
            obj.Add("data", res);

            HttpResponseMessage result = new HttpResponseMessage
            {
                Content = new StringContent(obj.ToString(), Encoding.UTF8, "application/json")
            };
            return result;

        }

        /// 
        /// 批量删除
        /// 
        /// 
        /// 
        [System.Web.Http.HttpPost]
        //public virtual HttpResponseMessage DeleteBatch([FromBody] T  value)
        public virtual HttpResponseMessage DeleteBatch([FromBody] List value)
        {


            //List model = value.ToObject>();

            bool res = DbHelper.DeleteBatch(value);

            JObject obj = new JObject();
            obj.Add("code", "0");
            obj.Add("msg", "成功");
            obj.Add("data", res);

            HttpResponseMessage result = new HttpResponseMessage
            {
                Content = new StringContent(obj.ToString(), Encoding.UTF8, "application/json")
            };
            return result;

        }

        /// 
        /// 查询一个实体
        /// 
        /// 
        /// 
        [System.Web.Http.HttpGet]
        public virtual HttpResponseMessage Get(string id)
        {

            T res = DbHelper.Get(id);

            JObject obj = new JObject();
            obj.Add("code", "0");
            obj.Add("msg", "成功");
            obj.Add("data", res.ToJson());

            HttpResponseMessage result = new HttpResponseMessage
            {
                Content = new StringContent(obj.ToString(), Encoding.UTF8, "application/json")
            };
            return result;

        }

        /// 
        /// 查询全部
        /// 
        /// 
        [System.Web.Http.HttpGet]
        public virtual HttpResponseMessage GetListAll()
        {

            List res = DbHelper.GetListAll();

            JObject obj = new JObject();
            obj.Add("code", "0");
            obj.Add("msg", "成功");
            obj.Add("data", res.ToJson());

            HttpResponseMessage result = new HttpResponseMessage
            {
                Content = new StringContent(obj.ToString(), Encoding.UTF8, "application/json")
            };
            return result;

        }

        #endregion



        #region 示例Api需重写


        /// 
        /// 以条件查询
        /// 
        /// 条件
        /// 
        [System.Web.Http.HttpPost]
        public virtual HttpResponseMessage GetList([FromBody] JObject where)
        {
            var v = new { UserID = 5 };
            List res = baseDal.GetList(where);

            JObject obj = new JObject();
            obj.Add("code", "0");
            obj.Add("msg", "成功");
            obj.Add("data", res.ToJson());

            HttpResponseMessage result = new HttpResponseMessage
            {
                Content = new StringContent(obj.ToString(), Encoding.UTF8, "application/json")
            };
            return result;

        }


        /// 
        /// SQL分页示例
        /// 
        /// 
        [System.Web.Http.HttpPost]
        public virtual HttpResponseMessage GetPageListForSQL([FromBody] JObject value)
        {

            PageCriteria pageCriteria = new PageCriteria();

            StringBuilder sb = new StringBuilder();
            sb.Append("UserName like @UserName");
            pageCriteria.ParameterList.Add(new ParameterDict() { ParamName = "UserName", ParamValue = "%jack%" });
            sb.Append(" and State=@State");
            pageCriteria.ParameterList.Add(new ParameterDict() { ParamName = "State", ParamValue = 0 });
            pageCriteria.Condition = sb.ToString();

            pageCriteria.CurrentPage = 5;
            pageCriteria.Fields = " * ";
            pageCriteria.PageSize = 10;
            //pageCriteria.PrimaryKey = " id";
            pageCriteria.Sort = " UserID desc";
            pageCriteria.TableName = "UserInfo";


            PageDataView res = baseDal.GetPageListForSQL(value);

            JObject obj = new JObject();
            obj.Add("code", "0");
            obj.Add("msg", "成功");
            obj.Add("data", res.ToJson());

            HttpResponseMessage result = new HttpResponseMessage
            {
                Content = new StringContent(obj.ToString(), Encoding.UTF8, "application/json")
            };
            return result;


        }


        /// 
        /// Dapper扩展分页
        /// 
        /// 
        /// 
        [System.Web.Http.HttpPost]
        public virtual HttpResponseMessage GetPage([FromBody] Object value)
        {

            //Object model = value.ToObject();

            int pageIndex = 0;
            int pageSize = 5;


            List res = baseDal.GetPage(pageIndex, pageSize, out long allRowsCount);

            long t = allRowsCount;

            JObject obj = new JObject();
            obj.Add("code", "0");
            obj.Add("msg", "成功");
            obj.Add("data", res.ToJson());
            obj.Add("allRowsCount", allRowsCount);

            HttpResponseMessage result = new HttpResponseMessage
            {
                Content = new StringContent(obj.ToString(), Encoding.UTF8, "application/json")
            };
            return result;


        }


        #endregion


    }