/// <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(','); }
/// <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); }
/// <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); }
/// <summary> /// 按照门店数据权限设置 /// </summary> /// <param name="dataLimitShop"></param> /// <param name="request"></param> private static void HandleRequestByShop(string dataLimitShop, IDataLimitRequest request) { request.LimitShops = dataLimitShop; }