Ejemplo n.º 1
0
        //此SellOrderService.cs类由代码生成器生成,默认是没有任何代码,如果需要写业务代码,请在此类中实现
        //如果默认的增、删、改、查、导入、导出、审核满足不了业务,请参考下面的方法进行业务代码扩展(扩展代码是对ServiceFunFilter.cs的实现)

        //==============常用操作=======================
        //访问数据库
        //1、使用 repository. 使用原生EF  repository.DbContext
        //    repository.DbContext.Set<Sys_User>().Find()
        //    SellOrderRepository.Instance.Find()
        //    SellOrderListRepository.Instance.Find()
        //    DBServerProvider.SqlDapper
        //    DBServerProvider.DbContext
        //    以上方式都能访问数据库

        //2、使用EF事务 repository.DbContextBeginTransaction或 SellOrderRepository.Instance.DbContextBeginTransaction

        //3、Dapper 使用:repository.DapperContext , DBServerProvider.SqlDapper

        //4、获取Memory/Redis对象
        // base.CacheContext
        // AutofacContainerModule.GetService<ICacheService>()
        // VOL.Core.Utilities.HttpContext.Current.RequestServices
        // VOL.Core.Utilities.HttpContext.Current.RequestServices.GetService(typeof(ICacheService))

        //5、使用HttpContext:VOL.Core.Utilities.HttpContext

        //获取用户信息/权限
        //6、UserContext.Current/UserContext.Current.Permissions

        //7、获取配置信息appsettings.json
        // AppSetting   /    AppSetting.Configuration

        //8、查看权限验证规则 Vol.Core->Filters文件夹下权限控制类

        //9、其他封装了大量的常用扩展方法Vol.Core->Extensions文件夹下(如:字符串扩展、表达式扩展、实体验证(EntityProperties)扩展方法)

        //10、实体数据合法性校验(ServiceBase.cs有大量实体校验示例)
        //SellOrder order = new SellOrder();
        //校验指定字段x.TranNo, x.Auditor的类型、长度等合法性
        //order.ValidationEntity(x => new { x.TranNo, x.Auditor});

        //11、获取实体的配置信息,如:字段中文名称、最大长度、字段主键等信息
        // Type type = typeof(SellOrder);
        //获取主键字段
        // PropertyInfo key = type.GetKeyProperty();
        //获取主键字段名
        // type.GetKeyName();
        //判断某个字段是否有EditableAttribute属性
        //  key.ContainsCustomAttributes(typeof(EditableAttribute));

        //12、常用工具类Vol.Core->Utilities

        //写入日志 : Logger.Info();

        //其中有一部分真实扩展代码实现:Partial->Sys_UserService.cs  , Partial->Sys_RoleService ,Partial->Sys_DictionaryService


        public override PageGridData <SellOrder> GetPageData(PageDataOptions options)
        {
            //查询前可以自已设定查询表达式的条件
            QueryRelativeExpression = (IQueryable <SellOrder> queryable) =>
            {
                //当前用户只能操作自己(与下级角色)创建的数据,如:查询、删除、修改等操作
                IQueryable <int> userQuery = RoleContext.GetCurrentAllChildUser();
                queryable = queryable.Where(x => x.CreateID == UserContext.Current.UserId || userQuery.Contains(x.CreateID ?? 0));
                return(queryable);
            };

            //此处是从前台提交的原生的查询条件,这里可以自己过滤
            QueryRelativeList = (List <SearchParameters> parameters) =>
            {
            };
            //指定多个字段进行排序
            OrderByExpression = x => new Dictionary <object, QueryOrderBy>()
            {
                { x.CreateDate, QueryOrderBy.Desc },
                { x.SellNo, QueryOrderBy.Desc }
            };

            //查询完成后,在返回页面前可对查询的数据进行操作
            GetPageDataOnExecuted = (PageGridData <SellOrder> grid) =>
            {
                //可对查询的结果的数据操作
                List <SellOrder> sellOrders = grid.rows;
            };
            return(base.GetPageData(options));
        }
Ejemplo n.º 2
0
        //此SellOrderService.cs类由代码生成器生成,默认是没有任何代码,如果需要写业务代码,请在此类中实现
        //如果默认的增、删、改、查、导入、导出、审核满足不了业务,请参考下面的方法进行业务代码扩展(扩展代码是对ServiceFunFilter.cs的实现)

        //==============常用操作=======================
        //访问数据库
        //1、使用 repository. 使用原生EF  repository.DbContext
        //    repository.DbContext.Set<Sys_User>().Find()
        //    SellOrderRepository.Instance.Find()
        //    SellOrderListRepository.Instance.Find()
        //    DBServerProvider.SqlDapper
        //    DBServerProvider.DbContext
        //    以上方式都能访问数据库

        //2、使用EF事务 repository.DbContextBeginTransaction或 SellOrderRepository.Instance.DbContextBeginTransaction

        //3、Dapper 使用:repository.DapperContext , DBServerProvider.SqlDapper

        //4、获取Memory/Redis对象
        // base.CacheContext
        // AutofacContainerModule.GetService<ICacheService>()
        // VOL.Core.Utilities.HttpContext.Current.RequestServices
        // VOL.Core.Utilities.HttpContext.Current.RequestServices.GetService(typeof(ICacheService))

        //5、使用HttpContext:VOL.Core.Utilities.HttpContext

        //获取用户信息/权限
        //6、UserContext.Current/UserContext.Current.Permissions

        //7、获取配置信息appsettings.json
        // AppSetting   /    AppSetting.Configuration

        //8、查看权限验证规则 Vol.Core->Filters文件夹下权限控制类

        //9、其他封装了大量的常用扩展方法Vol.Core->Extensions文件夹下(如:字符串扩展、表达式扩展、实体验证(EntityProperties)扩展方法)

        //10、实体数据合法性校验(ServiceBase.cs有大量实体校验示例)
        //SellOrder order = new SellOrder();
        //校验指定字段x.TranNo, x.Auditor的类型、长度等合法性
        //order.ValidationEntity(x => new { x.TranNo, x.Auditor});

        //11、获取实体的配置信息,如:字段中文名称、最大长度、字段主键等信息
        // Type type = typeof(SellOrder);
        //获取主键字段
        // PropertyInfo key = type.GetKeyProperty();
        //获取主键字段名
        // type.GetKeyName();
        //判断某个字段是否有EditableAttribute属性
        //  key.ContainsCustomAttributes(typeof(EditableAttribute));

        //12、常用工具类Vol.Core->Utilities

        //写入日志 : Logger.Info();

        //其中有一部分真实扩展代码实现:Partial->Sys_UserService.cs  , Partial->Sys_RoleService ,Partial->Sys_DictionaryService

        /// <summary>
        /// 查询业务代码编写
        /// </summary>
        /// <param name="pageData"></param>
        /// <returns></returns>
        public override object GetDetailPage(PageDataOptions pageData)
        {
            //此处是从前台提交的原生的查询条件,这里可以自己过滤
            QueryRelativeList = (List <SearchParameters> parameters) =>
            {
            };
            //查询前可以自已设定查询表达式的条件
            QueryRelativeExpression = (IQueryable <SellOrder> queryable) =>
            {
                queryable = queryable.Where(x => 1 == 1);
                return(queryable);
            };
            //指定多个字段进行排序
            OrderByExpression = x => new Dictionary <object, QueryOrderBy>()
            {
                { x.CreateDate, QueryOrderBy.Desc },
                { x.SellNo, QueryOrderBy.Desc }
            };

            //查询完成后,在返回页面前可对查询的数据进行操作
            GetPageDataOnExecuted = (PageGridData <SellOrder> grid) =>
            {
                //可对查询的结果的数据操作
                List <SellOrder> sellOrders = grid.rows;
            };

            return(base.GetDetailPage(pageData));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 查询采集日志
        /// </summary>
        public object CrawlingLog(PageDataOptions options)
        {
            var searchParametersList = options.Wheres.DeserializeObject <List <SearchParameters> >();
            var name    = searchParametersList.FirstOrDefault(m => m.Name == "Name" && m.Value.IsNotNullOrEmpty());
            var statues = searchParametersList.FirstOrDefault(m => m.Name == "Status" && m.Value.IsNotNullOrEmpty());
            var list    = IMovieCrawlerFactory.movieCrawlingEntities.Where(m => true);

            if (name != null)
            {
                list = list.Where(m => m.Name.Contains(name.Value));
            }
            if (statues != null)
            {
                list = list.Where(m => statues.Value.Contains(m.Status.GetEnumValue <CurrentStatus>().ToString()));
            }
            var    result = list.Select(m => new { m.Name, m.SourceUrl, m.Status, m.CrawlingMessage }).Skip((options.Page - 1) * options.Rows).Take(options.Rows).ToList();
            string msg    = "暂无采集任务";

            if (IMovieCrawlerFactory.movieCrawlingEntities.Count > 0)
            {
                msg = $"第{(IMovieCrawlerFactory.taskStatus > 0 ? IMovieCrawlerFactory.taskStatus : 1)}步:" +
                      $"当前共采集[{IMovieCrawlerFactory.moviePageCrawlingEntities.Where(m => m.IsSuccess).Count()}]页数据," +
                      $"[{IMovieCrawlerFactory.movieCrawlingEntities.Where(m => m.Status == CurrentStatus.Crawling).Count()}]条影视待采集," +
                      $"[{IMovieCrawlerFactory.movieCrawlingEntities.Where(m => m.Status == CurrentStatus.CrawlingToDb).Count()}]条已同步数据库";
            }
            return(new { rows = result, total = list.Count(), extra = msg });
        }
Ejemplo n.º 4
0
        private PageGridData <Detail> GetDetailPage <Detail>(PageDataOptions options) where Detail : class
        {
            //校验查询值,排序字段,分页大小规则待完
            PageGridData <Detail> gridData = new PageGridData <Detail>();

            if (options.Value == null)
            {
                return(gridData);
            }
            //主表主键字段
            string keyName = typeof(T).GetKeyName();

            //生成查询条件
            Expression <Func <Detail, bool> > whereExpression = keyName.CreateExpression <Detail>(options.Value, LinqExpressionType.Equal);

            var queryeable = repository.DbContext.Set <Detail>().Where(whereExpression);

            gridData.total = queryeable.Count();
            //生成排序字段
            var sort = (options.Sort ?? typeof(Detail).GetKeyName()).GetExpression <Detail>();

            gridData.rows = queryeable
                            .OrderByDescending(sort)
                            .Skip((options.Page - 1) * options.Rows)
                            .Take(options.Rows)
                            .ToList();
            return(gridData);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 网站列表
        /// </summary>
        /// <param name="options"></param>
        /// <returns></returns>
        public object GetList(PageDataOptions options)
        {
            var result = base.GetPageData(options);
            var data   = from news in result.rows
                         join users in repository.DbContext.Set <Sys_User>()
                         on news.CreateID equals users.User_Id
                         select new
            {
                news.NewsId,
                news.CoverImageUrls,
                news.Type,
                news.Title,
                news.Tags,
                news.Summary,
                news.VideoUrl,
                news.VoiceUrl,
                news.CreateDate,
                users.UserTrueName,
                users.HeadImageUrl,
                PraiseCount  = newsPraiseRepository.FindAsIQueryable(m => m.NewsId == news.NewsId).Count(),
                CommentCount = newsCommentRepository.FindAsIQueryable(m => m.RelationId == news.NewsId).Count()
            };

            return(new { data, result.total, size = options.Rows });
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 查询业务代码编写(从表(明细表查询))
        /// </summary>
        /// <param name="pageData"></param>
        /// <returns></returns>
        public override object GetDetailPage(PageDataOptions pageData)
        {
            //自定义查询胆细表

            ////明细表自定义查询方式一:EF
            //var query = SellOrderListRepository.Instance.IQueryablePage<SellOrderList>(
            //     pageData.Page,
            //     pageData.Rows,
            //     out int count,
            //     x => x.Order_Id == pageData.Value.GetGuid(),
            //      orderBy: x => new Dictionary<object, QueryOrderBy>() { { x.CreateDate, QueryOrderBy.Desc } }
            //    );
            //PageGridData<SellOrderList> detailGrid = new PageGridData<SellOrderList>();
            //detailGrid.rows = query.ToList();
            //detailGrid.total = count;

            ////明细表自定义查询方式二:dapper
            //string sql = "select count(1) from SellOrderList where Order_Id=@orderId";
            //detailGrid.total = repository.DapperContext.ExecuteScalar(sql, new { orderId = pageData.Value }).GetInt();

            //sql = @$"select * from (
            //              select *,ROW_NUMBER()over(order by createdate desc) as rowId
            //           from SellOrderList where Order_Id=@orderId
            //        ) as s where s.rowId between {((pageData.Page - 1) * pageData.Rows + 1)} and {pageData.Page * pageData.Rows} ";
            //detailGrid.rows = repository.DapperContext.QueryList<SellOrderList>(sql, new { orderId = pageData.Value });

            //return detailGrid;

            return(base.GetDetailPage(pageData));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 导出处理
        /// </summary>
        /// <param name="pageData"></param>
        /// <returns></returns>
        public override WebResponseContent Export(PageDataOptions pageData)
        {
            //限定只能导出当前角色能看到的所有用户
            QueryRelativeExpression = (IQueryable <Sys_User> queryable) =>
            {
                if (UserContext.Current.IsSuperAdmin)
                {
                    return(queryable);
                }
                List <int> roleIds = Sys_RoleService
                                     .Instance
                                     .GetAllChildrenRoleId(UserContext.Current.RoleId);
                return(queryable.Where(x => roleIds.Contains(x.Role_Id) || x.User_Id == UserContext.Current.UserId));
            };

            base.ExportOnExecuting = (List <Sys_User> list, List <string> ignoreColumn) =>
            {
                if (!ignoreColumn.Contains("Role_Id"))
                {
                    ignoreColumn.Add("Role_Id");
                }
                if (!ignoreColumn.Contains("RoleName"))
                {
                    ignoreColumn.Remove("RoleName");
                }
                WebResponseContent responseData = new WebResponseContent(true);
                return(responseData);
            };
            return(base.Export(pageData));
        }
Ejemplo n.º 8
0
        public virtual async Task <MessageModel <object> > GetDetailPageData([FromBody] PageDataOptions pageDataOptions)
        {
            //return await _service.GetDetailPageData(pageDataOptions);

            object pageData = await Task.FromResult(_service.GetDetailPageData(pageDataOptions));

            return(MessageModel <object> .Success(pageData, "OK"));
        }
Ejemplo n.º 9
0
 public override PageGridData <NewsComment> GetPageData(PageDataOptions options)
 {
     GetPageDataOnExecuted = (PageGridData <NewsComment> data) =>
     {
         data.rows.ForEach(item => { item.ReCount = repository.DbContext.Set <NewsComment>().Count(m => m.ParentId == item.Id); });
     };
     return(base.GetPageData(options));
 }
Ejemplo n.º 10
0
 public override ActionResult GetPageData([FromBody] PageDataOptions loadData)
 {
     //获取根节点数据
     if (loadData.Value.GetInt() == 1)
     {
         return(GetTreeTableRootData(loadData).Result);
     }
     return(base.GetPageData(loadData));
 }
Ejemplo n.º 11
0
        public virtual object GetDetailPage(PageDataOptions pageData)
        {
            Type   detailType = typeof(T).GetCustomAttribute <EntityAttribute>().DetailTable[0];
            object obj        = typeof(ServiceBase <T, TRepository>)
                                .GetMethod("GetDetailPage", BindingFlags.Instance | BindingFlags.NonPublic)
                                .MakeGenericMethod(new Type[] { detailType }).Invoke(this, new object[] { pageData });

            return(obj);
        }
Ejemplo n.º 12
0
 public override PageGridData <Sys_Role> GetPageData(PageDataOptions pageData)
 {
     //角色Id=1默认为超级管理员角色,界面上不显示此角色
     QueryRelativeExpression = (IQueryable <Sys_Role> queryable) =>
     {
         return(queryable.Where(x => x.Role_Id > 1));
     };
     return(base.GetPageData(pageData));
 }
Ejemplo n.º 13
0
 public override ActionResult GetPageData([FromBody] PageDataOptions loadData)
 {
     //获取根节点数据(对应Sys_Role1.js中searchBefore方法)
     if (loadData.Value.GetInt() == 1)
     {
         return GetTreeTableRootData(loadData).Result;
     }
     return base.GetPageData(loadData);
 }
Ejemplo n.º 14
0
 public override PageGridData <Sys_Dictionary> GetPageData(PageDataOptions pageData)
 {
     //增加查询条件
     base.QueryRelativeExpression = (IQueryable <Sys_Dictionary> fun) =>
     {
         return(fun.Where(x => 1 == 1));
     };
     return(base.GetPageData(pageData));
 }
Ejemplo n.º 15
0
        public object GetMovies(PageDataOptions options)
        {
            var result = base.GetPageData(options);

            return(new
            {
                data = result.rows.Select(m => new { m.Id, m.Name, m.ImgUrl, m.NewestSet }).ToList(),
                result.total
            });
        }
Ejemplo n.º 16
0
        public virtual ActionResult Export([FromBody] PageDataOptions loadData)
        {
            var result = InvokeService("Export", new object[] { loadData }) as WebResponseContent;

            return(File(
                       System.IO.File.ReadAllBytes(result.Data.ToString().MapPath()),
                       System.Net.Mime.MediaTypeNames.Application.Octet,
                       Path.GetFileName(result.Data.ToString())
                       ));
        }
Ejemplo n.º 17
0
        //查询
        public override PageGridData <SellOrder> GetPageData(PageDataOptions options)
        {
            //2020.08.15
            //设置原生查询的sql语句,这里必须返回select * 表所有字段
            //(先内部过滤数据,内部调用EF方法FromSqlRaw,自己写的sql注意sql注入的问题),不会影响界面上提交的查询

            /*
             *  string date = DateTime.Now.AddYears(-10).ToString("yyyy-MM-dd");
             *  QuerySql = $@"select * from SellOrder
             *                         where createdate>'{date}'
             *                             and  Order_Id in (select Order_Id from SellOrderList)
             *                             and CreateID={UserContext.Current.UserId}";
             */

            //2020.08.15
            //此处与上面QuerySql只需要实现其中一个就可以了
            //查询前可以自已设定查询表达式的条件
            QueryRelativeExpression = (IQueryable <SellOrder> queryable) =>
            {
                //当前用户只能操作自己(与下级角色)创建的数据,如:查询、删除、修改等操作
                IQueryable <int> userQuery = RoleContext.GetCurrentAllChildUser();
                queryable = queryable.Where(x => x.CreateID == UserContext.Current.UserId || userQuery.Contains(x.CreateID ?? 0));
                return(queryable);
            };

            //此处是从前台提交的原生的查询条件,这里可以自己过滤
            QueryRelativeList = (List <SearchParameters> parameters) =>
            {
            };
            //指定多个字段进行排序
            OrderByExpression = x => new Dictionary <object, QueryOrderBy>()
            {
                { x.CreateDate, QueryOrderBy.Desc },
                { x.SellNo, QueryOrderBy.Desc }
            };

            //查询完成后,在返回页面前可对查询的数据进行操作
            GetPageDataOnExecuted = (PageGridData <SellOrder> grid) =>
            {
                //可对查询的结果的数据操作
                List <SellOrder> sellOrders = grid.rows;
            };
            //查询table界面显示求和
            SummaryExpress = (IQueryable <SellOrder> queryable) =>
            {
                return(queryable.GroupBy(x => 1).Select(x => new
                {
                    //AvgPrice注意大小写和数据库字段大小写一样
                    Qty = x.Sum(o => o.Qty).ToString("f2")
                })
                       .FirstOrDefault());
            };

            return(base.GetPageData(options));
        }
Ejemplo n.º 18
0
        public IList GetTypes(PageDataOptions options)
        {
            var types = GetPageData(options);

            return(types.rows.Where(m => m.Pid == 0).Select(m =>
                                                            new
            {
                value = m.Id,
                label = m.Name,
                children = types.rows.Where(c => c.Pid == m.Id).Select(cc => new { value = cc.Id, label = cc.Name })
            }).ToList());
        }
Ejemplo n.º 19
0
 /// <summary>
 /// 导出
 /// </summary>
 /// <param name="pageData"></param>
 /// <returns></returns>
 public override WebResponseContent Export(PageDataOptions pageData)
 {
     //设置最大导出的数量
     Limit = 1000;
     //查询要导出的数据后,在生成excel文件前处理
     //list导出的实体,ignore过滤不导出的字段
     ExportOnExecuting = (List <SellOrder> list, List <string> ignore) =>
     {
         return(new WebResponseContent().OK());
     };
     return(base.Export(pageData));
 }
Ejemplo n.º 20
0
        /// <summary>
        /// 验证排序与查询字段合法性
        /// </summary>
        /// <param name="options"></param>
        /// <param name="queryable"></param>
        /// <returns></returns>
        private PageDataOptions ValidatePageOptions(PageDataOptions options, out IQueryable <T> queryable)
        {
            options = options ?? new PageDataOptions();
            GetPageDataSort(options, TProperties);
            List <SearchParameters> searchParametersList = new List <SearchParameters>();

            if (!string.IsNullOrEmpty(options.Wheres))
            {
                try
                {
                    searchParametersList = options.Wheres.DeserializeObject <List <SearchParameters> >();
                }
                catch { }
            }
            QueryRelativeList?.Invoke(searchParametersList);
            //  Connection
            queryable = repository.DbContext.Set <T>();
            //判断列的数据类型数字,日期的需要判断值的格式是否正确
            for (int i = 0; i < searchParametersList.Count; i++)
            {
                SearchParameters x = searchParametersList[i];
                x.DisplayType = x.DisplayType.GetDBCondition();
                if (string.IsNullOrEmpty(x.Value))
                {
                    searchParametersList.Remove(x);
                    continue;
                }

                PropertyInfo property = TProperties.Where(c => c.Name.ToUpper() == x.Name.ToUpper()).FirstOrDefault();
                // property
                //移除查询的值与数据库类型不匹配的数据
                // x.Value = string.Join(",", dbType.ValidationVal(x.Value.Split(',')).Where(q => q != ""));
                object[] values = property.ValidationValueForDbType(x.Value.Split(',')).Where(q => q.Item1).Select(s => s.Item3).ToArray();
                // if (string.IsNullOrEmpty(x.Value))
                if (values == null || values.Length == 0)
                {
                    searchParametersList.Remove(x);
                    continue;
                }
                if (x.DisplayType == HtmlElementType.Contains)
                {
                    x.Value = string.Join(",", values);
                }
                LinqExpressionType expressionType = x.DisplayType.GetLinqCondition();
                queryable = LinqExpressionType.In == expressionType
                              ? queryable.Where(x.Name.CreateExpression <T>(values, expressionType))
                              : queryable.Where(x.Name.CreateExpression <T>(x.Value, expressionType));
            }
            options.Wheres    = searchParametersList.GetEntitySql();
            options.TableName = base.TableName ?? typeof(T).Name;
            return(options);
        }
Ejemplo n.º 21
0
 public override PageGridData <App_TransactionAvgPrice> GetPageData(PageDataOptions options)
 {
     SummaryExpress = (IQueryable <App_TransactionAvgPrice> queryable) =>
     {
         return(queryable.GroupBy(x => 1).Select(x => new
         {
             AvgPrice = x.Average(o => o.AvgPrice),
             Enable = x.Sum(o => o.Enable)
         })
                .FirstOrDefault());
     };
     return(base.GetPageData(options));
 }
 public override PageGridData <Sys_DictionaryList> GetPageData(PageDataOptions pageData)
 {
     base.OrderByExpression = x => new Dictionary <object, QueryOrderBy>()
     {
         {
             x.OrderNo, QueryOrderBy.Desc
         },
         {
             x.DicList_ID, QueryOrderBy.Asc
         }
     };
     return(base.GetPageData(pageData));
 }
Ejemplo n.º 23
0
        public virtual PageResponse <T> GetPageData(PageDataOptions request)
        {
            var props = typeof(T).GetProperties();
            //过滤掉参数名不正确的
            var conditions      = request.Wheres.Where(w => props.Select(t => t.Name.ToUpper()).Contains(w.Name.ToUpper()));
            var orderConditions = request.Orders.Where(w => props.Select(t => t.Name.ToUpper()).Contains(w.Name.ToUpper()));
            //传入条件转换为表达式目录树
            Expression <Func <T, bool> > query = PressCondition(conditions);
            IOrder <T> order    = PressOrders(orderConditions);
            var        pageData = repository.GetPageData(query, order, request.Pager);

            return(PageResult(pageData));
        }
Ejemplo n.º 24
0
 public override PageGridData <Sys_Role> GetPageData(PageDataOptions pageData)
 {
     //角色Id=1默认为超级管理员角色,界面上不显示此角色
     QueryRelativeExpression = (IQueryable <Sys_Role> queryable) =>
     {
         if (UserContext.Current.IsSuperAdmin)
         {
             return(queryable);
         }
         List <int> roleIds = GetAllChildrenRoleIdAndSelf();
         return(queryable.Where(x => roleIds.Contains(x.Role_Id)));
     };
     return(base.GetPageData(pageData));
 }
Ejemplo n.º 25
0
        /// <summary>
        /// 导出
        /// </summary>
        /// <param name="pageData"></param>
        /// <returns></returns>
        public override WebResponseContent Export(PageDataOptions pageData)
        {
            //设置最大导出的数量
            Limit = 1000;
            //指定导出的字段(2020.05.07)
            ExportColumns = x => new { x.SellNo, x.TranNo, x.CreateDate };

            //查询要导出的数据后,在生成excel文件前处理
            //list导出的实体,ignore过滤不导出的字段
            ExportOnExecuting = (List <SellOrder> list, List <string> ignore) =>
            {
                return(new WebResponseContent().OK());
            };

            return(base.Export(pageData));
        }
Ejemplo n.º 26
0
        public object GetPageDataExtends(PageDataOptions options)
        {
            var data = base.GetPageData(options);
            var rows = from p in data.rows
                       join users in repository.DbContext.Set <Sys_User>()
                       on p.CreateID equals users.User_Id
                       select new
            {
                p.Id,
                p.Content,
                p.CreateDate,
                users.HeadImageUrl,
                users.UserTrueName
            };

            return(new { rows, data.total });
        }
Ejemplo n.º 27
0
        public IActionResult GetSelectorDemo([FromBody] PageDataOptions options)
        {
            //1.可以直接调用框架的GetPageData查询
            // PageGridData<App_Expert> data = App_ExpertService.Instance.GetPageData(options);
            //return Json(data);

            //2.下面这里演示手动解析查询返回
            //解析查询条件,查询条件都放在Wheres中,也可以在前端自定义wheres格式
            List <SearchParameters> wheres = options?.Wheres?.DeserializeObject <List <SearchParameters> >();
            //生成查询条件(这里可以不用EF,自己写原生sql)
            IQueryable <App_Expert> query = App_ExpertRepository.Instance.FindAsIQueryable(x => true);

            if (wheres != null)
            {
                string searchValue = wheres.Where(x => x.Name == "expertName").Select(s => s.Value).FirstOrDefault();
                //WhereNotEmpty方法要更新EntityProperties.cs否则用下面的if (!string.IsNullOrEmpty(searchKey))
                //query = query.WhereNotEmpty(x => x.ExpertName, searchValue);
                if (!string.IsNullOrEmpty(searchValue))
                {
                    query = query.Where(x => x.ExpertName.Contains(searchValue));
                }
            }
            var data = new
            {
                total = query.Count(),                             //查询到的总行数
                rows  = query.OrderByDescending(x => x.CreateDate) //返回table列表
                        .Select(s => new
                {
                    s.ExpertId,
                    s.ExpertName,
                    s.HeadImageUrl,
                    s.Resume,
                    s.Enable
                })
                        .Skip(options.Page * (options.Page - 1))
                        .Take(options.Rows).ToList()
            };

            return(Json(data));
            //上面Json(data);返回的字段首字母是小写的,也可以使用JsonNormal返回原大小写不变
            // return JsonNormal(data);
        }
Ejemplo n.º 28
0
        public override WebResponseContent Export(PageDataOptions pageData)
        {
            string             path        = null;
            string             fileName    = null;
            WebResponseContent webResponse = new WebResponseContent();

            ExportOnExecuting = (List <FormCollectionObject> list, List <string> columns) =>
            {
                var formId = list[0].FormId;
                var data   = _designOptionsRepository.FindAsIQueryable(x => x.FormId == formId)
                             .Select(s => new { s.Title, s.FormConfig }).FirstOrDefault();
                try
                {
                    List <FormOptions> formObj = data.FormConfig.DeserializeObject <List <FormOptions> >();
                    List <Dictionary <string, object> > listDic = new List <Dictionary <string, object> >();
                    foreach (var item in list)
                    {
                        Dictionary <string, object> dic = new Dictionary <string, object>();
                        var formData = item.FormData.DeserializeObject <Dictionary <string, string> >();
                        dic.Add("标题", data.Title);

                        dic.Add("提交人", item.Creator);
                        dic.Add("提交时间", item.CreateDate.ToString("yyyy-MM-dd HH:mm:sss"));
                        foreach (var obj in formObj)
                        {
                            dic.Add(obj.Title, formData.Where(x => x.Key == obj.Field).Select(s => s.Value).FirstOrDefault());
                        }
                        listDic.Add(dic);
                    }
                    fileName = data.Title + ".xlsx";
                    path     = EPPlusHelper.ExportGeneralExcel(listDic, fileName);
                }
                catch (Exception ex)
                {
                    Logger.Error($"解析表单出错:{data.Title},表单配置:{data.FormConfig},{ex.Message}");
                    return(webResponse.Error("获取表单出错"));
                }
                webResponse.Code = "-1";
                return(webResponse.OK(null, path.EncryptDES(AppSetting.Secret.ExportFile)));
            };
            return(base.Export(pageData));
        }
Ejemplo n.º 29
0
        /// <summary>
        /// 导出
        /// </summary>
        /// <param name="pageData"></param>
        /// <returns></returns>
        public virtual WebResponseContent Export(PageDataOptions pageData)
        {
            pageData.Export = true;
            List <T>      list         = GetPageData(pageData).rows;
            string        tableName    = typeof(T).GetEntityTableCnName();
            string        fileName     = tableName + DateTime.Now.ToString("yyyyMMddHHssmm") + ".xlsx";
            string        folder       = DateTime.Now.ToString("yyyyMMdd");
            string        savePath     = $"Download/ExcelExport/{folder}/".MapPath();
            List <string> ignoreColumn = new List <string>();

            if (ExportOnExecuting != null)
            {
                Response = ExportOnExecuting(list, ignoreColumn);
                if (!Response.Status)
                {
                    return(Response);
                }
            }
            EPPlusHelper.Export(list, ignoreColumn, savePath, fileName);
            return(Response.OK(null, (savePath + "/" + fileName).EncryptDES(AppSetting.Secret.ExportFile)));
        }
Ejemplo n.º 30
0
        /// <summary>
        /// 获取table2的数据
        /// </summary>
        /// <param name="loadData"></param>
        /// <returns></returns>
        public async Task <object> GetTable2Data(PageDataOptions loadData)
        {
            //App_ReportPriceModelBody.vue中loadTableBefore方法查询前给loadData.Value写入的值
            //获取查询到的总和数
            int total = await repository.DbContext.Set <App_Appointment>().Where(x => 1 == 1).CountAsync();

            //从 loadData.Value取查询条件,分页等信息
            //这里可以自己查询条件,从 loadData.Value找前台自定义传的查询条件
            var data = await repository.DbContext.Set <App_Appointment>().Where(x => 1 == 1)
                       //分页
                       .TakeOrderByPage(1, 10, x => new Dictionary <object, QueryOrderBy>()
            {
                { x.CreateDate, QueryOrderBy.Desc }
            })
                       .Select(s => new { s.Id, s.Name, s.PhoneNo, s.Describe, s.CreateDate })
                       .ToListAsync();

            object gridData = new { rows = data, total };

            return(gridData);
        }