Ejemplo n.º 1
0
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            if (Session["UserInfo"] != null)
            {
                userInfo             = (UserInfo)Session["UserInfo"];
                ViewData["UserInfo"] = userInfo;
            }
            if (Session["screenResult"] != null)
            {
                screenResult = (ScreenResultModel)Session["screenResult"];
            }
            else
            {
                screenResult            = new ScreenResultModel(1, "", Accessibility.Public, TempletType.WordTemplet);
                Session["screenResult"] = screenResult;
            }
            if (Session["modifyScreenResult"] != null)
            {
                modifyScreenResult = (ScreenResultModel)Session["modifyScreenResult"];
            }
            else
            {
                modifyScreenResult            = new ScreenResultModel(1, "", Accessibility.Private, TempletType.WordTemplet);
                Session["modifyScreenResult"] = modifyScreenResult;
            }

            if (Session["UserInfo"] == null && Request.Path != "/Home/Index" && Request.Path != "/Home/AddonDownload" && Request.Path.Contains("/Home/"))
            {
                filterContext.Result = Redirect("/Home/Index");
            }
        }
Ejemplo n.º 2
0
        private async Task FullList(ScreenResultModel screen)
        {
            templets = await WebHelper.GetJson <ScreenResultModel, List <TempletForJson> >(screen, FormFactory.userMsg.IPAddress + "/JsonAPI/GetList");

            lstTemp.Invoke(new Action(() =>
            {
                lstTemp.Items.Clear();
                foreach (TempletForJson templet in templets)
                {
                    lstTemp.Items.Add(templet.TempletName);
                }
            }));
        }
Ejemplo n.º 3
0
 private async void TempletList_Load(object sender, EventArgs e)
 {
     if (!Enum.TryParse(tmpType, out TempletType type))
     {
         MessageBox.Show("模板类型不正确");
         Close();
         return;
     }
     if (!Enum.TryParse(tmpAccess, out Model.Accessibility access))
     {
         MessageBox.Show("模板权限信息不正确");
         Close();
         return;
     }
     screen = new ScreenResultModel()
     {
         TokenValue = FormFactory.JWTToken.TokenValue, TempletType = type, Accessable = access, PageIndex = 1, StateCode = StateCode.request
     };
     await FullList(screen);
 }
Ejemplo n.º 4
0
        public ActionResult GetList(ScreenResultModel screen)
        {
            UserForTemplet user = new ValidateToken().CheckUser(screen.TokenValue);

            if (user.StateCode != StateCode.normal)
            {
                return(Json(new List <TempletForJson>()
                {
                    new TempletForJson()
                    {
                        StateCode = user.StateCode, StateDescription = user.StateDescription
                    }
                }));
            }
            IQueryable <BaseTemplet> templets = util.GetScreenResult(user, screen, int.MaxValue, out int totalcount); //根据筛选条件查询结果
            List <BaseTemplet>       temp     = templets.ToList();                                                    //由于直接使用IQueryable赋值会抛出DataReader未释放的异常,故先转换为List。推测是IQueryable的数据库访问是用时查询,缺少异步封装导致的(就是懒得写异步了)
            List <TempletForJson>    result   = new List <TempletForJson>();                                          //由于外键链接,直接使用Json实例化查询结果会导致重复引用,所以这里建立新模型以方便Json传输

            foreach (BaseTemplet templet in temp)
            {
                result.Add(new TempletForJson()
                {
                    ID                  = templet.ID,
                    UserID              = templet.User.ID,
                    Organization        = templet.Organization == null ? new Guid() : templet.Organization.ID,
                    Accessibility       = templet.Accessibility,
                    TempletName         = templet.TempletName,
                    TempletIntroduction = templet.TempletIntroduction,
                    ImagePath           = templet.ImagePath,
                    FilePath            = templet.FilePath,
                    ModTime             = templet.ModTime,
                    StateCode           = StateCode.normal,
                    StateDescription    = "获取成功"
                });
            }

            return(Json(result));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 通过筛选对象筛选数据信息
        /// </summary>
        /// <param name="user">用户信息</param>
        /// <param name="screenResult">筛选选项</param>
        /// <param name="pageCount">每页记录条数</param>
        /// <param name="totalCount">记录总数</param>
        /// <returns>查询到的记录集合</returns>
        public IQueryable <BaseTemplet> GetScreenResult(UserForTemplet user, ScreenResultModel screenResult, int pageCount, out int totalCount)
        {
            #region 初始化变量
            Func <ParameterExpression, BinaryExpression> whereLambda;
            IQueryable <BaseTemplet> templets;
            int pageIndex = screenResult.PageIndex;
            pageIndex = pageIndex < 1 ? 1 : pageIndex;
            #endregion

            #region 判断筛选选项,动态构造lambda表达式
            if (user == null)
            #region p=>p.Accessibility == Accessibility.Public
            {
                whereLambda = (parameter) =>
                {
                    BinaryExpression b = Expression.Equal(Expression.PropertyOrField(parameter, "Accessibility"), Expression.Constant(Accessibility.Public));
                    return(b);
                }
            };
            #endregion
            else if (screenResult.Accessable == Accessibility.Private)
            #region p=>p.Accessibility == Accessibility.Private && p.User.ID == userInfo.ID
            {
                whereLambda = (parameter) =>
                {
                    //p=>p.Accessibility == Accessibility.Private
                    BinaryExpression query1 = Expression.Equal(Expression.PropertyOrField(parameter, "Accessibility"), Expression.Constant(Accessibility.Private));
                    //p.User.ID == userInfo.ID
                    MemberExpression e      = Expression.PropertyOrField(parameter, "User");
                    MemberExpression e2     = Expression.PropertyOrField(e, "ID");
                    BinaryExpression query2 = Expression.Equal(e2, Expression.Constant(user.ID));
                    return(Expression.And(query1, query2));
                }
            };
            #endregion
            else if (user.OrganizationID == null || user.OrganizationID == new Guid())
            #region p=>p.Accessibility == Accessibility.Public || (p.Accessibility == Accessibility.Private&&p.User.ID == userInfo.ID)
            {
                whereLambda = (parameter) =>
                {
                    //p=>p.Accessibility == Accessibility.Public
                    BinaryExpression query1 = Expression.Equal(Expression.PropertyOrField(parameter, "Accessibility"), Expression.Constant(Accessibility.Public));
                    //p.Accessibility == Accessibility.Private
                    BinaryExpression query2_1 = Expression.Equal(Expression.PropertyOrField(parameter, "Accessibility"), Expression.Constant(Accessibility.Private));
                    MemberExpression e        = Expression.PropertyOrField(parameter, "User");
                    MemberExpression e2       = Expression.PropertyOrField(e, "ID");
                    //p.User.ID == userInfo.ID
                    BinaryExpression query2_2 = Expression.Equal(e2, Expression.Constant(user.ID));
                    //p.Accessibility == Accessibility.Private&&p.User.ID == userInfo.ID
                    BinaryExpression query2 = Expression.And(query2_1, query2_2);
                    return(Expression.Or(query1, query2));
                }
            };
            #endregion
            else if (screenResult.Accessable == Accessibility.Protected)
            #region p=>p.Accessibility == Accessibility.Protected && p.Organization.ID == userInfo.Organization.ID
            {
                whereLambda = (parameter) =>
                {
                    //p=>p.Accessibility == Accessibility.Protected
                    BinaryExpression query1 = Expression.Equal(Expression.PropertyOrField(parameter, "Accessibility"), Expression.Constant(Accessibility.Protected));
                    MemberExpression e      = Expression.PropertyOrField(parameter, "Organization");
                    MemberExpression e2     = Expression.PropertyOrField(e, "ID");
                    //p.Organization.ID == userInfo.Organization.ID
                    BinaryExpression query2 = Expression.Equal(e2, Expression.Constant(user.OrganizationID));
                    return(Expression.And(query1, query2));
                }
            };
            #endregion
            else
            #region p.Accessibility == Accessibility.Public || (p.Accessibility == Accessibility.Private && p.User.ID == userInfo.ID) || (p.Accessibility == Accessibility.Protected &&p.Organization.ID == userInfo.Organization.ID )
            {
                whereLambda = (parameter) =>
                {
                    //p=>p.Accessibility == Accessibility.Public
                    BinaryExpression query1 = Expression.Equal(Expression.PropertyOrField(parameter, "Accessibility"), Expression.Constant(Accessibility.Public));
                    //p.Accessibility == Accessibility.Private
                    BinaryExpression query2_1 = Expression.Equal(Expression.PropertyOrField(parameter, "Accessibility"), Expression.Constant(Accessibility.Private));
                    MemberExpression e        = Expression.PropertyOrField(parameter, "User");
                    MemberExpression e2       = Expression.PropertyOrField(e, "ID");
                    //p.User.ID == userInfo.ID
                    BinaryExpression query2_2 = Expression.Equal(e2, Expression.Constant(user.ID));
                    //p.Accessibility == Accessibility.Private && p.User.ID == userInfo.ID
                    BinaryExpression query2 = Expression.And(query2_1, query2_2);
                    //p.Accessibility == Accessibility.Protected
                    BinaryExpression query3_1 = Expression.Equal(Expression.PropertyOrField(parameter, "Accessibility"), Expression.Constant(Accessibility.Protected));
                    e  = Expression.PropertyOrField(parameter, "Organization");
                    e2 = Expression.PropertyOrField(e, "ID");
                    //p.Organization.ID == userInfo.Organization.ID
                    BinaryExpression query3_2 = Expression.Equal(e2, Expression.Constant(user.OrganizationID));
                    //p.Accessibility == Accessibility.Protected &&p.Organization.ID == userInfo.Organization.ID
                    BinaryExpression query3 = Expression.And(query3_1, query3_2);
                    //p.Accessibility == Accessibility.Public || (p.Accessibility == Accessibility.Private && p.User.ID == userInfo.ID)
                    BinaryExpression b = Expression.Or(query1, query2);
                    return(Expression.Or(b, query3));
                }
            };
            #endregion

            #endregion

            #region 判断模板类型并取值
            if (screenResult.TempletType == TempletType.PPTTemplet)
            {
                templets = ServiceSessionFactory.ServiceSession.PPTService.LoadEntityPage(pageIndex, pageCount, out totalCount, MakeWhereLambda <PPTTemplet>(whereLambda), w => w.TempletName, true);
            }
            else if (screenResult.TempletType == TempletType.ExcelTemplet)
            {
                templets = ServiceSessionFactory.ServiceSession.ExcelService.LoadEntityPage(pageIndex, pageCount, out totalCount, MakeWhereLambda <ExcelTemplet>(whereLambda), w => w.TempletName, true);
            }
            else if (screenResult.TempletType == TempletType.ImageTemplet)
            {
                templets = ServiceSessionFactory.ServiceSession.ImageService.LoadEntityPage(pageIndex, pageCount, out totalCount, MakeWhereLambda <ImageTemplet>(whereLambda), w => w.TempletName, true);
            }
            else if (screenResult.TempletType == TempletType.AudioTemplet)
            {
                templets = ServiceSessionFactory.ServiceSession.AudioService.LoadEntityPage(pageIndex, pageCount, out totalCount, MakeWhereLambda <AudioTemplet>(whereLambda), w => w.TempletName, true);
            }
            else if (screenResult.TempletType == TempletType.VideoTemplet)
            {
                templets = ServiceSessionFactory.ServiceSession.VideoService.LoadEntityPage(pageIndex, pageCount, out totalCount, MakeWhereLambda <VideoTemplet>(whereLambda), w => w.TempletName, true);
            }
            else
            {
                templets = ServiceSessionFactory.ServiceSession.WordTempletService.LoadEntityPage(pageIndex, pageCount, out totalCount, MakeWhereLambda <WordTemplet>(whereLambda), w => w.TempletName, true);
            }
            #endregion

            #region 判断搜索选项
            if (!string.IsNullOrWhiteSpace(screenResult.Search))
            {
                templets = from t in templets
                           where (t.TempletName.Contains(screenResult.Search))
                           select t;
                totalCount = templets.Count();
            }
            #endregion

            return(templets);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 通过筛选对象筛选数据信息
 /// </summary>
 /// <param name="user">用户信息</param>
 /// <param name="screenResult">筛选选项</param>
 /// <param name="totalCount">记录总数</param>
 /// <returns>查询到的记录集合</returns>
 public IQueryable <BaseTemplet> GetScreenResult(UserForTemplet user, ScreenResultModel screenResult, out int totalCount)
 {
     return(GetScreenResult(user, screenResult, 6, out totalCount));
 }