Esempio n. 1
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);
        }
Esempio n. 2
0
        public bool DeleteTicket(AppTicket ticket)
        {
            Ticket t     = new Ticket(ticket);
            bool   found = false;

            using (var dbContext = new TheaterContext())
            {
                foreach (Ticket item in dbContext.Tickets)
                {
                    if (item.Id == t.Id && item.Price == t.Price && item.Tag == t.Tag)
                    {
                        t     = item;
                        found = true;
                    }
                }
                if (found)
                {
                    dbContext.Tickets.Remove(t);
                    dbContext.SaveChanges();
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
Esempio n. 3
0
        public int AddTicket(AppTicket ticket)
        {
            Ticket t     = new Ticket(ticket);
            int    oldId = t.Id;

            using (var dbContext = new TheaterContext())
            {
                foreach (Ticket item in dbContext.Tickets)
                {
                    if (item.Id == t.Id)
                    {
                        return(-1);
                    }
                }

                dbContext.Tickets.Add(t);
                dbContext.SaveChanges();
            }
            using (var dbContext = new TheaterContext())
            {
                foreach (TicketItem item in dbContext.TicketItems)
                {
                    if (item.TicketId == oldId)
                    {
                        item.TicketId = t.Id;
                    }
                }

                dbContext.SaveChanges();
                return(dbContext.Tickets.ToList().Last().Id);
            }
        }
 public ChangeTicket(AppTicket ticket)
 {
     InitializeComponent();
     DataContext = new ChangeTicketViewModel(ticket)
     {
         Window = this
     };
 }
Esempio n. 5
0
 /// <summary>
 /// 区域农药销售统计
 /// </summary>
 /// <param name="httpContext"></param>
 /// <param name="request"></param>
 /// <returns></returns>
 public async Task <ResponseBase> ProcessAction(HttpContext httpContext, GetStatisticsRetailRequest request)
 {
     _appTicket = AppTicket.GetAppTicket(httpContext);
     if (request.AreaId == 0 || _appTicket.DataLimitType == (int)DataLimitTypeEnum.Shop)
     {
         return(await GetStatisticsRetailDefault(request));
     }
     return(await GetStatisticsRetailLevel(request));
 }
 public Ticket(AppTicket ticket)
 {
     try
     {
         this.Id = ticket.Id;
     }
     catch { }
     this.Price = int.Parse(ticket.Price);
     this.Tag   = ticket.Tag;
 }
 public void OnChangeTicketUnExecute(object parameter)
 {
     oldTicket = ClientSideWCF.Instance.TicketProxy.GetOne(((AppTicket)parameter).Id);
     if (ClientSideWCF.Instance.TicketProxy.ChangeTicket((AppTicket)parameter, oldTicket))
     {
         LoggerHelper.Instance.LogManagerLogging(LOG_TYPE.INFO, "Change Ticket command undo done.");
         CommandHandler.Instance.redoObjects[CommandHandler.Instance.redoObjects.Count - 1] = new AppTicket(oldTicket);
         MainWindowViewModel.Refresh.Execute(null);
     }
 }
Esempio n. 8
0
        public void CloneTicket(AppTicket ticket)
        {
            Ticket t            = new Ticket(ticket);
            Ticket clonedTicket = (Ticket)t.Clone();

            using (var context = new TheaterContext())
            {
                context.Tickets.Add(clonedTicket);
                context.SaveChanges();
            }
        }
Esempio n. 9
0
        public async Task <string> GetAccessTokenAsync(string targetSite, string authPolicy, CancellationToken cancellationToken, Action <S2SClientEventInfo> instrumentationCallback = null)
        {
            string text = string.Format(CultureInfo.InvariantCulture, "{0}::{1}", new object[]
            {
                targetSite,
                authPolicy
            });
            string      key         = this.ClientSiteId + "-" + text;
            MemoryCache memoryCache = S2SAuthClient.ticketCache;
            AppTicket   appTicket   = memoryCache.Get(key, null) as AppTicket;
            string      result;

            if (appTicket != null)
            {
                result = appTicket.AccessToken;
            }
            else
            {
                try
                {
                    AppTicket appTicket2 = await this.GetAppTicketAsync(text, instrumentationCallback, cancellationToken).ConfigureAwait(false);

                    lock (S2SAuthClient.TicketCacheLock)
                    {
                        appTicket = (memoryCache.Get(key, null) as AppTicket);
                        if (appTicket == null)
                        {
                            DateTimeOffset dateTimeOffset   = appTicket2.TokenIssueTimeUtc;
                            TimeSpan?      maxTokenLifetime = S2SAuthClient.MaxTokenLifetime;
                            if (maxTokenLifetime.HasValue && maxTokenLifetime < appTicket2.ValidFor)
                            {
                                dateTimeOffset += maxTokenLifetime.Value;
                            }
                            else
                            {
                                dateTimeOffset += appTicket2.ValidFor;
                            }
                            memoryCache.Add(key, appTicket2, new CacheItemPolicy
                            {
                                AbsoluteExpiration = dateTimeOffset
                            }, null);
                        }
                    }
                    appTicket = (memoryCache.Get(key, null) as AppTicket);
                    result    = ((appTicket != null) ? appTicket.AccessToken : null);
                }
                catch (Exception innerException)
                {
                    throw new S2SAuthException(S2SAuthErrorCode.GetAccessTokenFailed, string.Format("Failed to get S2S Access Token for ticket scope '{0}' and site id '{1}'.", text, this.ClientSiteId), innerException);
                }
            }
            return(result);
        }
Esempio n. 10
0
        public void OnDeleteTicketUnExecute(object parameter)
        {
            int id;

            if ((id = ClientSideWCF.Instance.TicketProxy.AddTicket((AppTicket)parameter)) != -1)
            {
                LoggerHelper.Instance.LogManagerLogging(LOG_TYPE.INFO, "Delete Ticket command undo done.");
                AppTicket ticket = ClientSideWCF.Instance.TicketProxy.GetOne(id);
                CommandHandler.Instance.redoObjects[CommandHandler.Instance.redoObjects.Count - 1] = new AppTicket(ticket);
                OnRefresh(null);
            }
        }
Esempio n. 11
0
        public bool ChangeTicket2(AppTicket ticket)
        {
            Ticket t     = new Ticket(ticket);
            int    oldId = t.Id;
            bool   found = false;

            using (var dbContext = new TheaterContext())
            {
                foreach (Ticket item in dbContext.Tickets)
                {
                    if (item.Id == t.Id)
                    {
                        item.Tag   = t.Tag;
                        item.Price = t.Price;
                        found      = true;
                        break;
                    }
                }
                if (found)
                {
                    foreach (TicketItem item in dbContext.TicketItems)
                    {
                        if (item.TicketId == t.Id)
                        {
                            item.TotalPrice = t.Price * item.Quantity;
                        }
                    }
                }
                else
                {
                    dbContext.Tickets.Add(t);
                }
                dbContext.SaveChanges();
            }
            using (var dbContext = new TheaterContext())
            {
                foreach (TicketItem item in dbContext.TicketItems)
                {
                    if (item.TicketId == oldId)
                    {
                        item.TicketId = t.Id;
                    }

                    if (item.TicketId == t.Id)
                    {
                        item.TotalPrice = t.Price * item.Quantity;
                    }
                }
                dbContext.SaveChanges();
                return(true);
            }
        }
 public AppTicket GetOne(int id)
 {
     try
     {
         AppTicket ticket = manager.GetOneTicket(id);
         log.LogMessage(LOG_TYPE.INFO, "Get One Ticket executed succesfuly.");
         return(ticket);
     }
     catch
     {
         log.LogMessage(LOG_TYPE.ERROR, "Get One Ticket executed unsuccesfuly.");
         return(null);
     }
 }
 public void CloneTicket(AppTicket ticket)
 {
     try
     {
         lock (x)
         {
             manager.CloneTicket(ticket);
             log.LogMessage(LOG_TYPE.INFO, "Clone Bilateral executed succesfuly.");
         }
     }
     catch
     {
         log.LogMessage(LOG_TYPE.ERROR, "Clone Bilateral executed unsuccesfuly.");
     }
 }
 public void OnChangeTicketExecute(object parameter)
 {
     if (parameter == null)
     {
         LoggerHelper.Instance.LogManagerLogging(LOG_TYPE.INFO, "Change Ticket command.");
         if (Ticket.Price != oldTicket.Price)
         {
             Ticket.Validate();
             if (Ticket.IsValid)
             {
                 if (ClientSideWCF.Instance.TicketProxy.ChangeTicket(Ticket, oldTicket))
                 {
                     LoggerHelper.Instance.LogManagerLogging(LOG_TYPE.INFO, "Change Ticket command done.");
                     CommandHandler.Instance.AddAndExecute(ChangeTicketCommand, oldTicket);
                     MainWindowViewModel.Refresh.Execute(null);
                     Window.Close();
                 }
                 else
                 {
                     if (MessageBox.Show("Would you like to override it?", "Ticket modified or deleted", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                     {
                         if (ClientSideWCF.Instance.TicketProxy.ChangeTicket2(Ticket))
                         {
                             LoggerHelper.Instance.LogManagerLogging(LOG_TYPE.INFO, "Force Change Ticket command done.");
                             CommandHandler.Instance.AddAndExecute(ChangeTicketCommand, oldTicket);
                             MainWindowViewModel.Refresh.Execute(null);
                             Window.Close();
                         }
                     }
                     else
                     {
                         LoggerHelper.Instance.LogManagerLogging(LOG_TYPE.ERROR, "Change Ticket command not done.");
                     }
                 }
             }
         }
     }
     else
     {
         oldTicket = ClientSideWCF.Instance.TicketProxy.GetOne(((AppTicket)parameter).Id);
         if (ClientSideWCF.Instance.TicketProxy.ChangeTicket((AppTicket)parameter, oldTicket))
         {
             LoggerHelper.Instance.LogManagerLogging(LOG_TYPE.INFO, "Change Ticket command redo done.");
             CommandHandler.Instance.undoObjects[CommandHandler.Instance.undoObjects.Count - 1] = new AppTicket((AppTicket)oldTicket);
             MainWindowViewModel.Refresh.Execute(null);
         }
     }
 }
 public bool ChangeTicket(AppTicket ticket, AppTicket oldTicket)
 {
     try
     {
         lock (x)
         {
             bool retVal = manager.ChangeTicket(ticket, oldTicket);
             log.LogMessage(LOG_TYPE.INFO, "Change Ticket executed succesfuly.");
             return(retVal);
         }
     }
     catch
     {
         log.LogMessage(LOG_TYPE.ERROR, "Change Ticket executed unsuccesfuly.");
         return(false);
     }
 }
 public bool DeleteTicket2(AppTicket ticket)
 {
     try
     {
         lock (x)
         {
             bool retVal = manager.DeleteTicket2(ticket);
             log.LogMessage(LOG_TYPE.INFO, "Delete Ticket executed succesfuly.");
             return(retVal);
         }
     }
     catch
     {
         log.LogMessage(LOG_TYPE.ERROR, "Delete Ticket executed unsuccesfuly.");
         return(false);
     }
 }
 public int AddTicket(AppTicket ticket)
 {
     try
     {
         lock (x)
         {
             int retVal = manager.AddTicket(ticket);
             log.LogMessage(LOG_TYPE.INFO, "Add Ticket executed succesfuly.");
             return(retVal);
         }
     }
     catch
     {
         log.LogMessage(LOG_TYPE.ERROR, "Add Ticket executed unsuccesfuly.");
         return(-1);
     }
 }
Esempio n. 18
0
        public AppTicket GetOneTicket(int id)
        {
            AppTicket retVal = new AppTicket();

            using (var dbContext = new TheaterContext())
            {
                foreach (Ticket t in dbContext.Tickets)
                {
                    if (t.Id == id)
                    {
                        retVal = new AppTicket(t);
                    }
                }
            }

            return(retVal);
        }
Esempio n. 19
0
        /// <summary>
        /// 执行方法之前,验证用户角色权限
        /// </summary>
        /// <param name="context"></param>
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            var actionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;

            if (actionDescriptor != null)
            {
                var authorityConfig = MenuLib.MenuConfigs.FirstOrDefault(p => p.Controller == actionDescriptor.ControllerName && p.Action == actionDescriptor.ActionName);
                if (authorityConfig != null)
                {
                    var isCanVisit = new AuthorityCore(AppTicket.GetAppTicket(context.HttpContext).WeightSum).Validation(authorityConfig.Id);
                    if (!isCanVisit)
                    {
                        context.HttpContext.Response.StatusCode = (int)System.Net.HttpStatusCode.Forbidden;
                        context.Result = new JsonResult(new ResponseBase().GetResponseForbidden());
                    }
                }
            }
        }
Esempio n. 20
0
        public BindingList <AppTicket> GetAllTickets()
        {
            BindingList <AppTicket> retVal = new BindingList <AppTicket>();

            using (var dbContext = new TheaterContext())
            {
                List <int> bilateralNums = new List <int>();



                foreach (Ticket t in dbContext.Tickets)
                {
                    AppTicket ticket = new AppTicket(t);
                    retVal.Add(ticket);
                }
            }

            return(retVal);
        }
Esempio n. 21
0
        public bool DeleteTicket2(AppTicket ticket)
        {
            Ticket t = new Ticket(ticket);

            using (var dbContext = new TheaterContext())
            {
                foreach (Ticket item in dbContext.Tickets)
                {
                    if (item.Id == t.Id)
                    {
                        t = item;
                    }
                }

                dbContext.Tickets.Remove(t);
                dbContext.SaveChanges();
                return(true);
            }
        }
Esempio n. 22
0
        /// <summary>
        /// 获取登录者菜单
        /// </summary>
        /// <param name="httpContext"></param>
        /// <returns></returns>
        public ResponseBase ProcessAction(HttpContext httpContext)
        {
            var ticket        = AppTicket.GetAppTicket(httpContext);
            var authorityCore = new AuthorityCore(ticket.WeightSum);

            HandleShowAction(authorityCore);
            InitFatherMenu(authorityCore);
            var menus = MenuLib.MenuConfigs.Where(p => authorityCore.Validation(p.Id)
                                                  )
                        .Select(p => new MenuView()
            {
                Id      = p.Id,
                IsOwner = true,
                Name    = p.Name,
                PerCode = p.PerCode,
                Type    = p.Type
            }).ToList();

            return(ResponseBase.Success(menus));
        }
 public void OnAddTicketExecute(object parameter)
 {
     if (parameter == null)
     {
         LoggerHelper.Instance.LogManagerLogging(LOG_TYPE.INFO, "Add Ticket command.");
         Ticket.Validate();
         if (Ticket.IsValid)
         {
             int id;
             if ((id = ClientSideWCF.Instance.TicketProxy.AddTicket(Ticket)) != -1)
             {
                 LoggerHelper.Instance.LogManagerLogging(LOG_TYPE.INFO, "Add Ticket command done.");
                 AppTicket ticket = ClientSideWCF.Instance.TicketProxy.GetOne(id);
                 CommandHandler.Instance.AddAndExecute(AddTicketCommand, ticket);
                 MainWindowViewModel.Refresh.Execute(null);
                 Window.Close();
             }
             else
             {
                 LoggerHelper.Instance.LogManagerLogging(LOG_TYPE.ERROR, "Add Ticket command (Id alredy exists) not done.");
             }
         }
         else
         {
             LoggerHelper.Instance.LogManagerLogging(LOG_TYPE.ERROR, "Add Ticket command (Ticket info not valid) not done.");
         }
     }
     else
     {
         int id;
         if ((id = ClientSideWCF.Instance.TicketProxy.AddTicket((AppTicket)parameter)) != -1)
         {
             LoggerHelper.Instance.LogManagerLogging(LOG_TYPE.INFO, "Add Ticket command redo done.");
             AppTicket ticket = ClientSideWCF.Instance.TicketProxy.GetOne(id);
             CommandHandler.Instance.undoObjects[CommandHandler.Instance.undoObjects.Count - 1] = new AppTicket(ticket);
             MainWindowViewModel.Refresh.Execute(null);
         }
     }
 }
Esempio n. 24
0
        public bool ChangeTicket(AppTicket ticket, AppTicket oldTicket)
        {
            Ticket t     = new Ticket(ticket);
            Ticket t2    = new Ticket(oldTicket);
            bool   found = false;

            using (var dbContext = new TheaterContext())
            {
                foreach (Ticket item in dbContext.Tickets)
                {
                    if (item.Id == t2.Id && item.Price == t2.Price && item.Tag == t2.Tag)
                    {
                        item.Tag   = t.Tag;
                        item.Price = t.Price;
                        found      = true;
                        break;
                    }
                }
                if (found)
                {
                    foreach (TicketItem item in dbContext.TicketItems)
                    {
                        if (item.TicketId == t.Id)
                        {
                            item.TotalPrice = t.Price * item.Quantity;
                        }
                    }


                    dbContext.SaveChanges();
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
Esempio n. 25
0
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="httpContext"></param>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <ResponseBase> ProcessAction(HttpContext httpContext, LoginRequest request)
        {
            var response = new ResponseBase();

            if (!await CheckUserLoginFailedRecord(request.UserAccount))
            {
                return(response.GetResponseError(StatusCode.Login20003, "登录失败次数超过限制"));
            }
            if (string.IsNullOrEmpty(request.UserAccount) || string.IsNullOrEmpty(request.UserPassword))
            {
                return(response.GetResponseBadRequest());
            }
            var pwd  = CryptogramHelper.Encrypt3DES(request.UserPassword);
            var user = await _sysUserBll.GetSysUser(request.UserAccount, pwd);

            if (user == null)
            {
                await _sysUserBll.AddUserLoginFailedRecord(request.UserAccount, SystemConfig.UserLoginConfig.LoginFailedMaxCount, SystemConfig.UserLoginConfig.LoginFailedTimeOut);

                return(response.GetResponseError(StatusCode.Login20001, "帐号或密码错误"));
            }
            if (user.StatusFlag == (int)UserStatusFlagEnum.Disable)
            {
                return(response.GetResponseError(StatusCode.Login20002, "帐号被禁用"));
            }
            var loginView = await GetLoginView(user);

            var userRole = await _sysUserRoleBll.GetSysUserRole(user.UserRoleId);

            AppTicket.SetAppTicket(httpContext, user, userRole);
            await _sysUserBll.UpdateUserLastLoginTime(user.UserId, DateTime.Now);

            await _sysUserBll.RemoveUserLoginFailedRecord(request.UserAccount);

            AddUserLoginLog(user);
            return(response.GetResponseSuccess(loginView));
        }
 public ChangeTicketViewModel(AppTicket t)
 {
     Ticket              = t;
     oldTicket           = new AppTicket(t);
     ChangeTicketCommand = new MyICommand(OnChangeTicketExecute, OnChangeTicketUnExecute);
 }
Esempio n. 27
0
        /// <summary>
        /// 生成票据
        /// </summary>
        /// <param name="requestModel"></param>
        /// <returns></returns>
        public ApiResultModel <AddAppTicketResponseModel> GetAppTicket(AddAppTicketRequestModel requestModel)
        {
            var result = new ApiResultModel <AddAppTicketResponseModel>()
            {
                Message = "生成票据失败"
            };

            if (requestModel.AppId.IsNullOrEmpty())
            {
                result.Message = "AppId不能为空";
                return(result);
            }
            if (requestModel.DeviceNo.IsNullOrEmpty())
            {
                result.Message = "客户端设备号不能为空";
                return(result);
            }
            var clentType  = requestModel.ClientType.GetEnumDescription();
            var nonce      = Utils.GetNonce();
            var ticket     = AuthenticationHelper.GetTicket(requestModel.AppId, clentType, requestModel.DeviceNo, nonce);
            var secret     = AuthenticationHelper.GetAppSecret(requestModel.AppId, clentType, requestModel.DeviceNo, nonce);
            var resultData = new AddAppTicketResponseModel()
            {
                Ticket    = ticket,
                AppSecret = secret
            };
            AppTicket model = _db.AppTicket.FirstOrDefault(x => x.AppId == requestModel.AppId && x.ClientType == clentType && x.DeviceNo == requestModel.DeviceNo);

            if (model == null)
            {
                model = new AppTicket()
                {
                    Id             = GuidTool.GetGuid(),
                    AppId          = requestModel.AppId,
                    ClientType     = clentType,
                    DeviceNo       = requestModel.DeviceNo,
                    Noncestr       = nonce,
                    AppSecret      = secret,
                    Ticket         = ticket,
                    LastUpdateTime = DateTime.Now
                };
                _db.AppTicket.Add(model);
                _db.Entry(model).State = EntityState.Added;
                _db.SaveChanges();
            }
            else
            {
                model.Noncestr       = nonce;
                model.AppSecret      = secret;
                model.Ticket         = ticket;
                model.LastUpdateTime = DateTime.Now;

                _db.AppTicket.Attach(model);
                _db.Entry(model).Property(x => x.Noncestr).IsModified       = true;
                _db.Entry(model).Property(x => x.AppSecret).IsModified      = true;
                _db.Entry(model).Property(x => x.Ticket).IsModified         = true;
                _db.Entry(model).Property(x => x.LastUpdateTime).IsModified = true;
                _db.SaveChanges();
            }

            //缓存
            var redisKey  = RedisCommon.GetTicketKey(ticket);
            var redisData = model.MapTo <AppTicketModel>();

            RedisClient.Set(RedisDatabase.DB_AuthorityService, redisKey, redisData, 60);//1小时

            result.Data = resultData;
            result.Code = ApiResultCode.Success;
            return(result);
        }