v7.3.2018.0614   重构高性能资源池,减少GC压力,增加线程池,让异步任务得到平等竞争CPU的机会
大石头 authored at 2018-06-14 17:56:44
3.14 KiB
X
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Web.Mvc;
using NewLife.Common;
using NewLife.Web;
using XCode;
using XCode.Membership;
using XCode.Statistics;

namespace NewLife.Cube.Admin.Controllers
{
    /// <summary>访问统计控制器</summary>
    [DisplayName("访问统计")]
    [Description("每个页面每天的访问统计信息")]
    public class VisitStatController : EntityController<VisitStat>
    {
        static VisitStatController()
        {
            MenuOrder = 50;
        }

        /// <summary>搜索数据集</summary>
        /// <param name="p"></param>
        /// <returns></returns>
        protected override IEnumerable<VisitStat> Search(Pager p)
        {
            var model = new VisitStatModel();
            model.Fill(p.Params, StatLevels.Day);
            model.Page = p["p"];

            return VisitStat.Search(model, p["dtStart"].ToDateTime(), p["dtEnd"].ToDateTime(), p);
        }

        /// <summary>不允许添加修改</summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [DisplayName()]
        public override ActionResult Add(VisitStat entity)
        {
            //return base.Save(entity);
            throw new Exception("不允许添加/修改");
        }

        /// <summary>不允许添加修改</summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [DisplayName()]
        public override ActionResult Edit(VisitStat entity)
        {
            //return base.Save(entity);
            throw new Exception("不允许添加/修改");
        }

        /// <summary>不允许删除</summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [DisplayName()]
        public override ActionResult Delete(Int32 id)
        {
            //return base.Delete(id);
            throw new Exception("不允许删除");
        }

        ///// <summary>不允许删除</summary>
        ///// <param name="id"></param>
        ///// <returns></returns>
        //[DisplayName()]
        //public override JsonResult DeleteAjax(Int32 id)
        //{
        //    var url = Request.UrlReferrer + "";

        //    return Json(new { msg = "不允许删除!", code = -1, url = url }, JsonRequestBehavior.AllowGet);
        //}

        /// <summary>清空全表数据</summary>
        /// <returns></returns>
        [EntityAuthorize(PermissionFlags.Delete)]
        [DisplayName("清空")]
        public override ActionResult Clear()
        {
            if (!SysConfig.Current.Develop || !Setting.Current.Debug || ManageProvider.User?.Role?.Name != "管理员") throw new Exception("不允许删除");

            return base.Clear();
        }

        /// <summary>菜单不可见</summary>
        /// <param name="menu"></param>
        /// <returns></returns>
        protected override IDictionary<MethodInfo, Int32> ScanActionMenu(IMenu menu)
        {
            if (menu.Visible)
            {
                menu.Visible = false;
                (menu as IEntity).Save();
            }

            return base.ScanActionMenu(menu);
        }
    }
}