Esempio n. 1
0
 public async Task <ResponseBase> SaveUserDataLimit([FromBody] SaveUserDataLimitRequest request)
 {
     try
     {
         var action = new SaveUserDataLimitAction(_sysUserBll);
         return(await action.ProcessAction(request));
     }
     catch (Exception ex)
     {
         Log.Error(request, ex, this.GetType());
         return(ResponseBase.CodeError());
     }
 }
        /// <summary>
        /// 获取门店限制设置
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        private string GetDataLimitShop(SaveUserDataLimitRequest request)
        {
            var newDataLimitShop = string.Empty;

            if (request.Shops != null && request.Shops.Any())
            {
                var shops = new StringBuilder();
                request.Shops.ForEach(p =>
                {
                    shops.AppendFormat("{0},", p.Id);
                });
                newDataLimitShop = shops.ToString().TrimEnd(',');
            }
            return(newDataLimitShop);
        }
        /// <summary>
        /// 获取地区限制设置
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        private string GetDataLimitArea(SaveUserDataLimitRequest request)
        {
            var newDataLimitArea = string.Empty;

            if (request.Areas != null && request.Areas.Any())
            {
                var areas = new StringBuilder();
                request.Areas.ForEach(p =>
                {
                    areas.AppendFormat("{0}|{1},", p.Id, p.Level);
                });
                newDataLimitArea = areas.ToString().TrimEnd(',');
            }
            return(newDataLimitArea);
        }
        /// <summary>
        /// 设置用户数据权限
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <ResponseBase> ProcessAction(SaveUserDataLimitRequest request)
        {
            var newDataLimitArea = string.Empty;
            var newDataLimitShop = string.Empty;

            switch (request.Type)
            {
            case (int)DataLimitTypeEnum.All:
                break;

            case (int)DataLimitTypeEnum.Area:
                newDataLimitArea = GetDataLimitArea(request);
                break;

            case (int)DataLimitTypeEnum.Shop:
                newDataLimitShop = GetDataLimitShop(request);
                break;
            }
            await _sysUserBll.SetDataLimit(request.UserId, request.Type, newDataLimitArea, newDataLimitShop);

            return(ResponseBase.Success());
        }