public async Task <ActionResult> _ViewMonitor() { var config = await YummyOnlineManager.GetSystemConfig(); ViewBag.WebSocketLocation = $"ws://{config.TcpServerIp}:{config.WebSocketPort}"; return(View()); }
public async Task <JsonResult> GetCustomers(int countPerPage, int currPage) { return(Json(new { Users = await YummyOnlineManager.GetUsers(Role.Customer, countPerPage, currPage, true), Count = await YummyOnlineManager.GetUserCount(Role.Customer) })); }
public async Task <JsonResult> MergePartition(int?hotelId, DateTime dateTime) { FunctionResult result; if (hotelId.HasValue) { Hotel hotel = await YummyOnlineManager.GetHotelById(hotelId.Value); result = await new OriginSql(hotel.AdminConnectionString).Merge(dateTime); } else { result = await new OriginSql(YummyOnlineManager.ConnectionString).Merge(dateTime); } if (!result.Succeeded) { await logPartition(hotelId, nameof(MergePartition), result.Message); return(Json(new JsonError(result.Message))); } await logPartition(hotelId, nameof(MergePartition)); return(Json(new JsonSuccess())); }
public async Task <JsonResult> GetDbPartitionDetailByHotelId(int?hotelId) { Hotel hotel; OriginSql dbPartition; if (hotelId.HasValue) { hotel = await YummyOnlineManager.GetHotelById(hotelId.Value); dbPartition = new OriginSql(hotel.AdminConnectionString); } else { hotel = null; dbPartition = new OriginSql(YummyOnlineManager.ConnectionString); } return(Json(new { Hotel = hotel == null ? null : new { hotel.Id, hotel.Name }, DbPartitionInfos = await dbPartition.GetDbPartitionInfos(), FileGroupInfos = await dbPartition.GetFileGroupInfos() })); }
public async Task <JsonResult> GetDbPartitionDetails() { var hotels = await YummyOnlineManager.GetHotels(); List <dynamic> partitionDetails = new List <dynamic>(); partitionDetails.Add(new { DbPartitionInfos = await new OriginSql(YummyOnlineManager.ConnectionString).GetDbPartitionInfos() }); foreach (Hotel h in hotels) { if (h.ConnectionString == null) { continue; } partitionDetails.Add(new { Hotel = new { h.Id, h.Name }, DbPartitionInfos = await new OriginSql(h.AdminConnectionString).GetDbPartitionInfos() }); } return(Json(partitionDetails)); }
public async Task <JsonResult> ExecuteSql(List <int> hotelIds, string sql) { StringBuilder sb = new StringBuilder(); foreach (int id in hotelIds) { Hotel hotel = await YummyOnlineManager.GetHotelById(id); OriginSql originSql = new OriginSql(hotel.AdminConnectionString); FunctionResult result = await originSql.ExecuteSql(sql); if (!result.Succeeded) { sb.Append($"{hotel.Name}({hotel.Id}) Error, {result.Message}</br>"); await YummyOnlineManager.RecordLog(Log.LogProgram.System, Log.LogLevel.Error, $"Execute SQL {hotel.Name}({hotel.Id}) Failed", $"Error: {result.Message}, SQL: {sql}"); } else { await YummyOnlineManager.RecordLog(Log.LogProgram.System, Log.LogLevel.Success, $"Execute SQL {hotel.Name}({hotel.Id}) Successfully", sql); } } if (sb.Length != 0) { return(Json(new JsonError(sb.ToString()))); } return(Json(new JsonSuccess())); }
public async Task <JsonResult> GetDineForPrinting(int hotelId, string dineId, List <int> dineMenuIds) { string connStr = await YummyOnlineManager.GetHotelConnectionStringById(hotelId); var tHotel = new YummyOnlineManager().GetHotelForPrintingById(hotelId); Task <Dine> tDine = null; if (dineId == "00000000000000") { tDine = generateTestDine(); } else { tDine = new HotelManager(connStr).GetDineForPrintingById(dineId, dineMenuIds); } var tPrinterFormat = new HotelManager(connStr).GetPrinterFormatForPrinting(); var tUser = new YummyOnlineManager().GetUserForPrintingById((await tDine).UserId); return(Json(new DineForPrinting { Hotel = await tHotel, Dine = await tDine, User = await tUser, PrinterFormat = await tPrinterFormat })); }
public async Task <JsonResult> GetDineDailyCount() { List <dynamic> list = new List <dynamic>(); List <Hotel> hotels = await YummyOnlineManager.GetHotels(); foreach (Hotel h in hotels) { if (h.ConnectionString == null) { continue; } List <dynamic> dailyCount = new List <dynamic>(); HotelManager hotelManager = new HotelManager(h.ConnectionString); for (int i = -30; i <= 0; i++) { DateTime t = DateTime.Now.AddDays(i); int count = await hotelManager.GetDineCount(t); dailyCount.Add(new { DateTime = t, Count = count }); } list.Add(new { HotelName = h.Name, DailyCount = dailyCount }); } return(Json(list)); }
// GET: 店小二点菜系统入口 Home/Index/[hotelId]/[qrCode] public async Task <ActionResult> Index(int?hotelId, string qrCode) { if (hotelId == null || qrCode == null) { if (CurrHotel != null && Session["CurrentDesk"] != null) { return(View()); } return(RedirectToAction("HotelMissing", "Error")); } Hotel hotel = await YummyOnlineManager.GetHotelById(Convert.ToInt32(hotelId)); if (hotel == null) { return(RedirectToAction("HotelMissing", "Error")); } if (!hotel.Usable) { return(RedirectToAction("HotelUnavailable", "Error")); } CurrHotel = new CurrHotelInfo(hotel.Id, hotel.ConnectionString); Desk desk = await new HotelManager(hotel.ConnectionString).GetDeskByQrCode(qrCode); if (desk == null) { return(RedirectToAction("HotelMissing", "Error")); } Session["CurrentDesk"] = desk; return(View()); }
/// <summary> /// 生成短信验证码并且发送 /// </summary> /// <param name="phoneNumber">手机号</param> /// <returns>短信验证码</returns> private FunctionResult generateSmsCodeAndSend(string phoneNumber) { DateTime?LastSmsDateTime = Session["LastSmsDateTime"] as DateTime?; if (LastSmsDateTime.HasValue && (DateTime.Now - LastSmsDateTime.Value).TotalSeconds < 50) { return(new FunctionResult(false, "您还不能发送短信验证码")); } Random rand = new Random(unchecked ((int)DateTime.Now.Ticks)); string code = ""; for (int i = 0; i < 6; i++) { code += rand.Next(10); } Session["LastSmsDateTime"] = DateTime.Now; #if DEBUG var _ = YummyOnlineManager.RecordLog(Log.LogProgram.Identity, Log.LogLevel.Debug, phoneNumber + " : " + code); #else if (!Utility.SMSSender.Send(phoneNumber, code)) { return(new FunctionResult(false, "发送失败")); } #endif return(new FunctionResult { Succeeded = true, Data = code }); }
public async Task <JsonResult> CreateHotel(int hotelId, string databaseName) { // 创建空数据库 OriginSql originSql = new OriginSql(new YummyOnlineContext().Database.Connection.ConnectionString); var result = await originSql.CreateDatabase(databaseName); if (!result.Succeeded) { return(Json(new JsonError(result.Message))); } // 总数据库记录连接字符串等信息 await YummyOnlineManager.CreateHotel(hotelId, databaseName); // 新数据库写入所有表格等架构 Hotel newHotel = await YummyOnlineManager.GetHotelById(hotelId); originSql = new OriginSql(newHotel.AdminConnectionString); result = await originSql.InitializeHotel(); if (!result.Succeeded) { return(Json(new JsonError(result.Message))); } // 新数据库初始化 string staffId = await YummyOnlineManager.GetHotelAdminId(hotelId); HotelManager hotelManager = new HotelManager(newHotel.AdminConnectionString); await hotelManager.InitializeHotel(hotelId, staffId); return(Json(new JsonSuccess())); }
public async Task <ActionResult> _ViewSpecification() { SystemConfig config = await YummyOnlineManager.GetSystemConfig(); Dictionary <string, List <FileInfo> > dirFiles = new Dictionary <string, List <FileInfo> >(); string[] dirs = Directory.GetDirectories(config.SpecificationDir); foreach (string dir in dirs) { string[] files = Directory.GetFiles(dir); string dirStr = dir.Split('\\').Last(); dirFiles.Add(dirStr, new List <FileInfo>()); foreach (string file in files) { dirFiles[dirStr].Add(new FileInfo(file)); } } ViewBag.DirFiles = dirFiles; return(View()); }
public async Task Initialize() { YummyOnlineManager manager = new YummyOnlineManager(); waitingForVerificationClients = new WaitingForVerificationClients(log, send); systemClient = new SystemClient(log, send, GetTcpServerStatus); newDineInformClients = new NewDineInformClients(log, send, await manager.GetGuids()); printerClients = new PrinterClients(log, send, await manager.GetHotels()); log($"Binding {ip}:{port}", Log.LogLevel.Info); tcp.StartListening(IPAddress.Parse(ip), port, client => { TcpClientInfo clientInfo = new TcpClientInfo(client); waitingForVerificationClients.Add(clientInfo); log($"{clientInfo.OriginalRemotePoint} Connected, Waiting for verification", Log.LogLevel.Info); }); System.Timers.Timer timer = new System.Timers.Timer(10 * 1000); timer.Elapsed += (e, o) => { // 30秒之内已连接但是未发送身份信息的socket断开 waitingForVerificationClients.HandleTimeOut(); //60秒之内没有接收到心跳包的socket断开, 或发送心跳包失败的socket断开 systemClient.HandleTimeOut(); newDineInformClients.HandleTimeOut(); printerClients.HandleTimeOut(); }; timer.Start(); }
public async Task <JsonResult> UpdateHotel(Hotel hotel) { await YummyOnlineManager.UpdateHotel(hotel); await YummyOnlineManager.RecordLog(Log.LogProgram.System, Log.LogLevel.Warning, $"Hotel {hotel.Id} Updated"); return(Json(new JsonSuccess())); }
public ActionResult Index() { YummyOnlineManager manager = new YummyOnlineManager(); var ids = manager.GetHotelIds(); return(Json(ids, JsonRequestBehavior.AllowGet)); }
public async Task <JsonResult> GetAllDineIds(int hotelId, DateTime?dateTime) { dateTime = dateTime ?? DateTime.Now; string connStr = await YummyOnlineManager.GetHotelConnectionStringById(hotelId); return(Json(await new HotelManager(connStr).GetAllDineIds(dateTime.Value))); }
public async Task <JsonResult> DeleteAdmin(string id) { await UserManager.RemoveFromRoleAsync(id, Role.Admin); await YummyOnlineManager.RecordLog(Log.LogProgram.System, Log.LogLevel.Warning, $"User {id} Removed from Admin"); return(Json(new JsonSuccess())); }
public async Task <JsonResult> GetHotelNames() { List <Hotel> hotels = await YummyOnlineManager.GetHotels(); return(Json(hotels.Select(p => new { p.Id, p.Name, }))); }
/// <summary> /// 收银员台支付 /// </summary> public async Task <ActionResult> ManagerPay(Cart cart, ManagerCartAddition cartAddition) { SystemConfig system = await YummyOnlineManager.GetSystemConfig(); if (system.Token != cartAddition.Token) { return(Json(new JsonError("身份验证失败"))); } var hotel = await YummyOnlineManager.GetHotelById(cartAddition.HotelId); CurrHotel = new CurrHotelInfo(hotel.Id, hotel.ConnectionString); if (!hotel.Usable) { return(RedirectToAction("HotelUnavailable", "Error")); } cart.PayKindId = await new HotelManager(CurrHotel.ConnectionString).GetOtherPayKindId(); CartAddition addition = new CartAddition { WaiterId = cartAddition.WaiterId, DineType = cartAddition.DineType, Discount = cartAddition.Discount, DiscountName = cartAddition.DiscountName, GiftMenus = cartAddition.GiftMenus, From = DineFrom.Manager }; User user = await UserManager.FindByIdAsync(cartAddition.UserId); addition.UserId = user?.Id; // 创建新订单 FunctionResult result = await OrderManager.CreateDine(cart, addition); if (!result.Succeeded) { if (await UserManager.IsInRoleAsync(user.Id, Role.Nemo)) { await UserManager.DeleteAsync(user); await YummyOnlineManager.RecordLog(YummyOnlineDAO.Models.Log.LogProgram.Identity, YummyOnlineDAO.Models.Log.LogLevel.Warning, $"Anonymous User Deleted {user.Id}, Via Manager"); } await HotelManager.RecordLog(HotelDAO.Models.Log.LogLevel.Error, $"{result.Detail}, Host:{Request.UserHostAddress}", HttpPost.GetPostData(Request)); return(Json(new JsonError(result.Message))); } Dine dine = ((Dine)result.Data); await newDineInform(dine, "Manager"); return(Json(new JsonSuccess { Data = dine.Id })); }
public async Task <JsonResult> GetPrintersForPrinting(int hotelId) { string connStr = await YummyOnlineManager.GetHotelConnectionStringById(hotelId); var manager = new HotelManager(connStr); return(Json(new PrintersForPrinting { Printers = await manager.GetPrinters() })); }
public async Task <JsonResult> StopSite(int siteId) { if (IISManager.StopSite(siteId)) { await YummyOnlineManager.RecordLog(Log.LogProgram.System, Log.LogLevel.Warning, $"Site {IISManager.GetSiteById(siteId).Name} Stoped"); return(Json(new JsonSuccess())); } return(Json(new JsonError("无法停止"))); }
protected override void OnActionExecuted(ActionExecutedContext filterContext) { if (CurrHotel != null) { ViewBag.HotelId = CurrHotel?.Id; ViewBag.CssThemePath = AsyncInline.Run(() => { return(YummyOnlineManager.GetHotelById(CurrHotel.Id)); }).CssThemePath; } base.OnActionExecuted(filterContext); }
public virtual async Task <JsonResult> Signup(SignupViewModel model) { if ((string)Session["SmsCode"] != model.Code) { return(Json(new JsonError("验证码不正确", "code"))); } if (model.PhoneNumber == null) { return(Json(new JsonError("手机号不能为空"))); } if (model.Password == null) { return(Json(new JsonError("密码不能为空"))); } if (model.Password == model.PasswordAga) { return(Json(new JsonError("密码不一致"))); } User user; bool succeeded; if (await SigninManager.IsAuthenticated()) { user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); user.PhoneNumber = model.PhoneNumber; user.UserName = model.PhoneNumber; user.PasswordHash = UserManager.GetMd5(model.Password); succeeded = await UserManager.UpdateAsync(user); await UserManager.RemoveFromRoleAsync(user.Id, Role.Nemo); await YummyOnlineManager.RecordLog(Log.LogProgram.Identity, Log.LogLevel.Warning, $"User Update: {User.Identity.GetUserId()}"); } else { user = new User { PhoneNumber = model.PhoneNumber, UserName = model.PhoneNumber }; succeeded = await UserManager.CreateAsync(user, model.Password); } if (!succeeded) { return(Json(new JsonError("注册失败"))); } await UserManager.AddToRoleAsync(user.Id, Role.Customer); SigninManager.Signin(user, true); await YummyOnlineManager.RecordLog(Log.LogProgram.Identity, Log.LogLevel.Success, $"User Signup: {user.Id} ({user.PhoneNumber})"); return(Json(new JsonSuccess())); }
public async Task <JsonResult> DeleteGuid(Guid guid) { if (!await YummyOnlineManager.DeleteGuid(guid)) { return(Json(new JsonError())); } SystemTcpClient.SendSystemCommand(SystemCommandType.RefreshNewDineClients); await YummyOnlineManager.RecordLog(Log.LogProgram.System, Log.LogLevel.Warning, $"Guid {guid} Removed"); return(Json(new JsonSuccess())); }
public virtual async Task <JsonResult> Forget(ForgetViewModel model) { if (Session["SMSForgetCode"] == null || Session["SMSForgetCode"].ToString() != model.Code) { return(Json(new JsonError("验证码不正确", "code"))); } await UserManager.ChangePasswordAsync(model.PhoneNumber, model.Password); await YummyOnlineManager.RecordLog(Log.LogProgram.Identity, Log.LogLevel.Warning, $"{model.PhoneNumber} {model.Password} Change Password"); return(Json(new JsonSuccess())); }
public async Task <JsonResult> StopTcpServer() { bool result = TcpServerProcess.StopTcpServer(); if (result) { await YummyOnlineManager.RecordLog(Log.LogProgram.System, Log.LogLevel.Warning, "TcpServer Stoped"); return(Json(new JsonSuccess())); } return(Json(new JsonError("关闭失败"))); }
private async Task logPartition(int?hotelId, string method) { if (hotelId.HasValue) { Hotel hotel = await YummyOnlineManager.GetHotelById(hotelId.Value); await YummyOnlineManager.RecordLog(Log.LogProgram.System, Log.LogLevel.Success, $"{method} On {hotel.Name} ({hotel.Id}) Successfully"); } else { await YummyOnlineManager.RecordLog(Log.LogProgram.System, Log.LogLevel.Success, $"{method} On YummyOnlineDB Successfully"); } }
private async Task logPartition(int?hotelId, string method, string errorMessage) { if (hotelId.HasValue) { Hotel hotel = await YummyOnlineManager.GetHotelById(hotelId.Value); await YummyOnlineManager.RecordLog(Log.LogProgram.System, Log.LogLevel.Error, $"{method} On {hotel.Name} ({hotel.Id}) Failed, {errorMessage}"); } else { await YummyOnlineManager.RecordLog(Log.LogProgram.System, Log.LogLevel.Error, $"{method} On YummyOnlineDB Failed, {errorMessage}"); } }
public async Task <JsonResult> AddGuid(Guid guid, string description) { if (!await YummyOnlineManager.AddGuid(new NewDineInformClientGuid { Guid = guid, Description = description })) { return(Json(new JsonError())); } SystemTcpClient.SendSystemCommand(SystemCommandType.RefreshNewDineClients); await YummyOnlineManager.RecordLog(Log.LogProgram.System, Log.LogLevel.Success, $"Guid {guid} ({description}) Added"); return(Json(new JsonSuccess())); }
protected void Application_Start() { var _ = new YummyOnlineManager().RecordLog(YummyOnlineDAO.Models.Log.LogProgram.OrderSystem_Waiter, YummyOnlineDAO.Models.Log.LogLevel.Info, "OrderSystem.Waiter Initializing"); _ = NewDineInformTcpClient.Initialize(async() => { await new YummyOnlineManager().RecordLog(YummyOnlineDAO.Models.Log.LogProgram.OrderSystem_Waiter, YummyOnlineDAO.Models.Log.LogLevel.Success, "TcpServer Connected"); }, async e => { await new YummyOnlineManager().RecordLog(YummyOnlineDAO.Models.Log.LogProgram.OrderSystem_Waiter, YummyOnlineDAO.Models.Log.LogLevel.Error, e.Message); }); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); }