/// <summary> /// 服务发送模型更改通知 /// </summary> /// <param name="toClient"></param> internal void ServiceModelUpdateNotification(ToClientServiceModelUpdateNotification toClient) { try { switch (toClient.ModelType) { case ModelType.Product: Product product = toClient.Model.DeserializeObject <Product>(); Product oldProduct = Resources.GetRes().Products.Where(x => x.ProductId == product.ProductId).FirstOrDefault(); switch (toClient.OperateType) { case OperateType.Add: Resources.GetRes().Products.Add(product); break; case OperateType.Edit: Resources.GetRes().Products.Remove(oldProduct); Resources.GetRes().Products.Add(product); break; case OperateType.Delete: Resources.GetRes().Products.Remove(oldProduct); break; } Notification.Instance.ActionProduct(null, product, (int)toClient.OperateType); break; case ModelType.ProductType: ProductType productType = toClient.Model.DeserializeObject <ProductType>(); ProductType oldProductType = Resources.GetRes().ProductTypes.Where(x => x.ProductTypeId == productType.ProductTypeId).FirstOrDefault(); switch (toClient.OperateType) { case OperateType.Add: Resources.GetRes().ProductTypes.Add(productType); break; case OperateType.Edit: Resources.GetRes().ProductTypes.Remove(oldProductType); Resources.GetRes().ProductTypes.Add(productType); break; case OperateType.Delete: Resources.GetRes().ProductTypes.Remove(oldProductType); break; } Notification.Instance.ActionProductType(null, productType, (int)toClient.OperateType); break; case ModelType.Admin: Admin admin = toClient.Model.DeserializeObject <Admin>(); Admin oldAdmin = Resources.GetRes().Admins.Where(x => x.AdminId == admin.AdminId).FirstOrDefault(); switch (toClient.OperateType) { case OperateType.Add: Resources.GetRes().Admins.Add(admin); break; case OperateType.Edit: Resources.GetRes().Admins.Remove(oldAdmin); Resources.GetRes().Admins.Add(admin); if (Resources.GetRes().AdminModel.AdminId == admin.AdminId) { Resources.GetRes().AdminModel = admin; } break; case OperateType.Delete: Resources.GetRes().Admins.Remove(oldAdmin); break; } Notification.Instance.ActionAdmin(null, admin, (int)toClient.OperateType); break; case ModelType.Device: Device device = toClient.Model.DeserializeObject <Device>(); Device oldDevice = Resources.GetRes().Devices.Where(x => x.DeviceId == device.DeviceId).FirstOrDefault(); switch (toClient.OperateType) { case OperateType.Add: Resources.GetRes().Devices.Add(device); break; case OperateType.Edit: Resources.GetRes().Devices.Remove(oldDevice); Resources.GetRes().Devices.Add(device); break; case OperateType.Delete: Resources.GetRes().Devices.Remove(oldDevice); break; } Notification.Instance.ActionDevice(null, device, (int)toClient.OperateType); break; case ModelType.Printer: Printer printer = toClient.Model.DeserializeObject <Printer>(); Printer oldPrinter = Resources.GetRes().Printers.Where(x => x.PrinterId == printer.PrinterId).FirstOrDefault(); switch (toClient.OperateType) { case OperateType.Add: Resources.GetRes().Printers.Add(printer); break; case OperateType.Edit: Resources.GetRes().Printers.Remove(oldPrinter); Resources.GetRes().Printers.Add(printer); break; case OperateType.Delete: Resources.GetRes().Printers.Remove(oldPrinter); break; } Notification.Instance.ActionPrinter(null, printer, (int)toClient.OperateType); break; case ModelType.Request: Request request = toClient.Model.DeserializeObject <Request>(); Request oldRequest = Resources.GetRes().Requests.Where(x => x.RequestId == request.RequestId).FirstOrDefault(); switch (toClient.OperateType) { case OperateType.Add: Resources.GetRes().Requests.Add(request); break; case OperateType.Edit: Resources.GetRes().Requests.Remove(oldRequest); Resources.GetRes().Requests.Add(request); break; case OperateType.Delete: Resources.GetRes().Requests.Remove(oldRequest); break; } Notification.Instance.ActionRequest(null, request, (int)toClient.OperateType); break; case ModelType.Ppr: List <Ppr> pprs = toClient.Model.DeserializeObject <List <Ppr> >(); Product theProduct = toClient.ModelRef.DeserializeObject <Product>(); switch (toClient.OperateType) { case OperateType.Add: Resources.GetRes().Pprs.AddRange(pprs); break; case OperateType.Edit: foreach (var item in Resources.GetRes().Pprs.Where(x => x.ProductId == theProduct.ProductId).ToList()) { Resources.GetRes().Pprs.Remove(item); } if (pprs.Count > 0) { Resources.GetRes().Pprs.AddRange(pprs); } break; case OperateType.Delete: foreach (var item in Resources.GetRes().Pprs.Where(x => x.ProductId == theProduct.ProductId).ToList()) { Resources.GetRes().Pprs.Remove(item); } break; } Notification.Instance.ActionPprs(null, pprs, theProduct, (int)toClient.OperateType); break; case ModelType.Member: Member member = toClient.Model.DeserializeObject <Member>(); switch (toClient.OperateType) { case OperateType.Add: break; case OperateType.Edit: break; case OperateType.Delete: break; } Notification.Instance.ActionMember(null, member, (int)toClient.OperateType); break; case ModelType.Balance: Balance balance = toClient.Model.DeserializeObject <Balance>(); Balance oldBalance = Resources.GetRes().Balances.Where(x => x.BalanceId == balance.BalanceId).FirstOrDefault(); switch (toClient.OperateType) { case OperateType.Add: Resources.GetRes().Balances.Add(balance); break; case OperateType.Edit: Resources.GetRes().Balances.Remove(oldBalance); Resources.GetRes().Balances.Add(balance); break; case OperateType.Delete: Resources.GetRes().Balances.Remove(oldBalance); break; } Notification.Instance.ActionBalance(null, balance, (int)toClient.OperateType); break; case ModelType.Room: Room room = toClient.Model.DeserializeObject <Room>(); Room oldRoom = Resources.GetRes().Rooms.Where(x => x.RoomId == room.RoomId).FirstOrDefault(); RoomModel oldRoomModel = Resources.GetRes().RoomsModel.Where(x => x.RoomId == room.RoomId).FirstOrDefault(); RoomModel newRoomModel = toClient.ModelRef.DeserializeObject <RoomModel>(); switch (toClient.OperateType) { case OperateType.Add: Resources.GetRes().Rooms.Add(room); if (null != newRoomModel && newRoomModel.RoomId > 0) { Resources.GetRes().RoomsModel.Add(newRoomModel); } break; case OperateType.Edit: Resources.GetRes().Rooms.Remove(oldRoom); Resources.GetRes().Rooms.Add(room); if (null != oldRoomModel && oldRoomModel.RoomId > 0) { Resources.GetRes().RoomsModel.Remove(oldRoomModel); } if (null != newRoomModel && newRoomModel.RoomId > 0 && newRoomModel.HideType != 1) { Resources.GetRes().RoomsModel.Add(newRoomModel); } break; case OperateType.Delete: Resources.GetRes().Rooms.Remove(oldRoom); if (null != oldRoomModel && oldRoomModel.RoomId > 0) { Resources.GetRes().RoomsModel.Remove(oldRoomModel); Notification.Instance.ActionSendFromService(null, oldRoomModel.RoomId, null); } break; } Notification.Instance.ActionRoom(null, room, (int)toClient.OperateType); if (null != newRoomModel && newRoomModel.RoomId > 0) { Notification.Instance.ActionSendFromService(null, newRoomModel.RoomId, null); } break; case ModelType.Config: switch (toClient.OperateType) { case OperateType.Edit: List <string> config = toClient.Model.DeserializeObject <List <string> >(); foreach (var item in config) { if (item.Contains("PrintInfo=")) { string temp = item.Trim().TrimStart("PrintInfo="); Resources.GetRes().PrintInfo = JsonConvert.DeserializeObject <PrintInfo>(temp); } } break; } Notification.Instance.ActionConfig(null, null, (int)toClient.OperateType); break; case ModelType.Import: Import import = toClient.Model.DeserializeObject <Import>(); switch (toClient.OperateType) { case OperateType.Add: break; case OperateType.Edit: break; case OperateType.Delete: break; } Notification.Instance.ActionImport(null, import, (int)toClient.OperateType); break; case ModelType.AdminLog: AdminLog adminLog = toClient.Model.DeserializeObject <AdminLog>(); switch (toClient.OperateType) { case OperateType.Add: break; case OperateType.Edit: break; case OperateType.Delete: break; } Notification.Instance.ActionAdminLog(null, adminLog, (int)toClient.OperateType); break; case ModelType.Supplier: Supplier supplier = toClient.Model.DeserializeObject <Supplier>(); switch (toClient.OperateType) { case OperateType.Add: break; case OperateType.Edit: break; case OperateType.Delete: break; } Notification.Instance.ActionSupplier(null, supplier, (int)toClient.OperateType); break; // 各类支付暂时不用 case ModelType.SupplierPay: break; case ModelType.AdminPay: break; case ModelType.MemberPay: break; case ModelType.BalancePay: break; case ModelType.CallBack: List <NotificationCache> cache = toClient.Model.DeserializeObject <List <NotificationCache> >(); switch (toClient.OperateType) { case OperateType.Get: foreach (var item in cache) { switch (item.Type) { case NotificationType.Send: NotificationService.Instance.ServiceSendNotification(item.Notification.DeserializeObject <ToClientServiceSendNotification>()); break; case NotificationType.ProductCountUpdate: NotificationService.Instance.ServiceProductCountUpdateNotification(item.Notification.DeserializeObject <ToClientServiceProductCountUpdateNotification>()); break; case NotificationType.OrderUpdate: NotificationService.Instance.ServiceOrderUpdateNotification(item.Notification.DeserializeObject <ToClientServiceOrderUpdateNotification>()); break; case NotificationType.OrderDetailsAdd: NotificationService.Instance.ServiceOrderDetailsAddNotification(item.Notification.DeserializeObject <ToClientServiceOrderDetailsAddNotification>()); break; case NotificationType.TakeoutUpdate: NotificationService.Instance.ServiceTakeoutUpdateNotification(item.Notification.DeserializeObject <ToClientServiceTakeoutUpdateNotification>()); break; case NotificationType.ModelUpdate: NotificationService.Instance.ServiceModelUpdateNotification(item.Notification.DeserializeObject <ToClientServiceModelUpdateNotification>()); break; } } break; } break; } } catch (Exception ex) { ExceptionPro.ExpLog(ex); } }
public void ServiceModelUpdateNotification(string ConnectionId, ToClientServiceModelUpdateNotification toClient) { Task.Run(() => ServiceHubContext.Instance.ServiceHub.Clients.Client(ConnectionId).ServiceModelUpdateNotification(toClient)).Wait(); }