Пример #1
0
        /// <summary>
        /// 按照地区数据权限设置
        /// </summary>
        /// <param name="dataLimitArea"></param>
        /// <param name="request"></param>
        private static void HandleRequestByArea(string dataLimitArea, IDataLimitRequest request)
        {
            var limitAreas    = dataLimitArea.Split(',');
            var limitProvince = new StringBuilder();
            var limitCity     = new StringBuilder();
            var limitDistrict = new StringBuilder();

            foreach (var limitArea in limitAreas)
            {
                if (string.IsNullOrEmpty(limitArea))
                {
                    continue;
                }
                var temp = limitArea.Split('|');
                switch (temp[1])
                {
                case AreaLevelEnum.Province:
                    limitProvince.AppendFormat("{0},", temp[0]);
                    break;

                case AreaLevelEnum.City:
                    limitCity.AppendFormat("{0},", temp[0]);
                    break;

                case AreaLevelEnum.District:
                    limitDistrict.AppendFormat("{0},", temp[0]);
                    break;
                }
            }
            request.LimitProvince = limitProvince.ToString().TrimEnd(',');
            request.LimitCity     = limitCity.ToString().TrimEnd(',');
            request.LimitDistrict = limitDistrict.ToString().TrimEnd(',');
        }
Пример #2
0
        /// <summary>
        /// 处理查询条件
        /// 把数据权限限制条件带入
        /// </summary>
        /// <param name="httpContext"></param>
        /// <param name="request"></param>
        /// <returns>是否允许查看数据</returns>
        public static bool HandleRequest(HttpContext httpContext, IDataLimitRequest request)
        {
            request.LimitShops = request.LimitProvince = request.LimitCity = request.LimitDistrict = string.Empty;
            var ticket = AppTicket.GetAppTicket(httpContext);

            switch (ticket.DataLimitType)
            {
            case (int)DataLimitTypeEnum.All:
                return(true);

            case (int)DataLimitTypeEnum.Area:
                if (string.IsNullOrEmpty(ticket.DataLimitArea))
                {
                    return(false);
                }
                HandleRequestByArea(ticket.DataLimitArea, request);
                return(true);

            case (int)DataLimitTypeEnum.Shop:
                if (string.IsNullOrEmpty(ticket.DataLimitShop))
                {
                    return(false);
                }
                HandleRequestByShop(ticket.DataLimitShop, request);
                return(true);
            }
            return(false);
        }
Пример #3
0
        /// <summary>
        /// 获取地区过滤条件
        /// </summary>
        /// <param name="request"></param>
        /// <param name="sql"></param>
        /// <param name="prefix"></param>
        /// <returns></returns>
        public static StringBuilder GetAreaLimitSql(this IDataLimitRequest request, StringBuilder sql, string prefix = "")
        {
            var areaSql = new StringBuilder();

            if (!string.IsNullOrEmpty(request.LimitProvince))
            {
                areaSql.AppendFormat(" {0}province IN ({1}) OR", prefix, request.LimitProvince);
            }
            if (!string.IsNullOrEmpty(request.LimitCity))
            {
                areaSql.AppendFormat(" {0}city IN ({1}) OR", prefix, request.LimitCity);
            }
            if (!string.IsNullOrEmpty(request.LimitDistrict))
            {
                areaSql.AppendFormat(" {0}district IN ({1}) OR", prefix, request.LimitDistrict);
            }
            if (areaSql.Length > 0)
            {
                sql.AppendFormat(" AND ({0})", areaSql.ToString().TrimEnd('R').TrimEnd('O'));
            }
            return(sql);
        }
Пример #4
0
 /// <summary>
 /// 按照门店数据权限设置
 /// </summary>
 /// <param name="dataLimitShop"></param>
 /// <param name="request"></param>
 private static void HandleRequestByShop(string dataLimitShop, IDataLimitRequest request)
 {
     request.LimitShops = dataLimitShop;
 }