/// <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); }
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); } } }
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 }; }
/// <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); } }
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(); } }
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); }
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); } }
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); } }
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); }
/// <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()); } } } }
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); }
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); } }
/// <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); } } }
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); } } }
/// <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); }
/// <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); }