public void SendUpdateTaskState(TaskOrderModel tom, bool isCreate = false) { JsonSerializerSettings jsseting = new JsonSerializerSettings(); jsseting.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; jsseting.ContractResolver = new CamelCasePropertyNamesContractResolver(); ResponseEntry re = new ResponseEntry(); if (isCreate) { switch (tom.ProductType) { case ProductType.Hotel: re.T = "h"; break; case ProductType.Tax: re.T = "t"; break; case ProductType.Titcket: re.T = "k"; break; } } else { re.T = "u"; } re.D = tom; Context.Connection.Broadcast(JsonConvert.SerializeObject(re, Formatting.Indented, jsseting)); }
/// <summary> /// 根据门店的评论信息 计算 评论的分类 /// </summary> /// <param name="order"></param> /// <returns></returns> public static string CalCulateShopCommentType(TaskOrderModel order, List <ShopCommentTypeRule> rules) { string type = "BY"; // 若没有匹配到类型, 则 默认 为保养 if (order.OrderType.Trim() == "1普通" || order.OrderType.Trim() == "普通") //订单的类型 是1普通 普通 ,订单二级特殊分类 { //1普通下面的pid 分类 List <string> productPID_TR = rules.Where(p => p.ShopType == "TR" && !string.IsNullOrWhiteSpace(p.PIDPrefix)).FirstOrDefault().PIDPrefix.Split(',').ToList(); //1普通下面的 pid所属的类目 进行分类 /// 保养类型 筛选 条件 List <string> productCategory_BY = rules.Where(p => p.ShopType == "BY" && !string.IsNullOrWhiteSpace(p.ProductType)).FirstOrDefault().ProductType.Split(',').ToList(); /// 安装类型 筛选 条件 List <string> productCategory_FW = rules.Where(p => p.ShopType == "FW" && !string.IsNullOrWhiteSpace(p.ProductType)).FirstOrDefault().ProductType.Split(',').ToList(); /// 美容类型 筛选 条件 List <string> productCategory_MR = rules.Where(p => p.ShopType == "MR" && !string.IsNullOrWhiteSpace(p.ProductType)).FirstOrDefault().ProductType.Split(',').ToList(); List <string> productCategory = new List <string>(); foreach (var item in order.Items) { productCategory.AddRange(item.CategoryList); } List <string> PIDs = order.Items.Select(p => p.PID).ToList(); //保养 > 轮胎 > 车品[安装] > 美容 if (productCategory_BY.Where(p => productCategory.Contains(p)).Count() > 0) { type = "BY"; } else if (productPID_TR.Where(p => PIDs.Any(f => f.StartsWith(p))).Count() > 0) { type = "TR"; } else if (productCategory_FW.Where(p => productCategory.Contains(p)).Count() > 0) { type = "FW"; } else if (productCategory_MR.Where(p => productCategory.Contains(p)).Count() > 0) { type = "MR"; } } else if (order.OrderType.Trim() == "25VIP客户" || order.OrderType.Trim() == "VIP客户") { List <string> OrderNos = order.Items.Select(p => p.OrderNo).ToList(); if (OrderNos.Any(p => p.StartsWith("TR"))) { type = "TR"; } } else //订单的类型 不是1普通 普通,直接根据订单类型 和 分类规则进行 分类 { ShopCommentTypeRule rule = rules.Where(p => p.OrderType == order.OrderType).FirstOrDefault(); if (rule != null) { type = rule.ShopType; } } return(type); }
/// <summary> /// 批量获取订单 信息 /// </summary> /// <param name="orderIds"></param> /// <param name="productList"></param> /// <returns></returns> private static async Task <List <TaskOrderModel> > BatchFetchOrderList(List <int> orderIds, List <TaskProductModel> productList) { List <TaskOrderModel> orderInfos = new List <TaskOrderModel> { }; try { using (var client = new OrderApiForCClient()) { foreach (var orderId in orderIds) { TaskOrderModel orderInfo = new TaskOrderModel() { OrderId = orderId }; var result = await client.FetchOrderAndListByOrderIdAsync(orderId); if (!(result.Success && result.Result != null)) { result = await client.FetchOrderAndListByOrderIdAsync(orderId, false); } if (result.Success && result.Result != null) { orderInfo.OrderType = result.Result.OrderType; orderInfo.OrderStatus = result.Result.Status; foreach (var item in result.Result.OrderListModel) { var productItem = new TaskProductModel { PID = item.Pid, OrderNo = item.OrderNo, Count = item.Num }; orderInfo.Items.Add(productItem); } if (orderInfo.Items.Any()) { orderInfos.Add(orderInfo); productList.AddRange(orderInfo.Items); } else { Logger.Warn($"未发现订单详情==>{orderId}"); } } } } } catch (Exception ex) { Logger.Warn( $"BatchFetchOrderList 失败;Error:{ex.Message}", ex); } return(orderInfos); }
public async Task <IHttpActionResult> PutOrderStatus(Guid id) { string err = string.Empty; try { var order = db.Orders.Include("OrderItems").FirstOrDefault(o => o.Id == id); if (order.OrderStatus != OrderStatus.Partion) { ///取消还未下单的订单 var tasks = db.Tasks.Include(t => t.Personinfos).Where(t => t.OrderCode == order.OrderCode).ToList(); if (tasks.Count > 0) { bool isCancelOrder = true; foreach (var item in tasks) { if (item.State == TaskState.Create || item.State == TaskState.Take || item.State == TaskState.Change) { item.State = TaskState.Canceled; await db.SaveChangesAsync(); _changeState.SendUpdateTaskState(item); } if (item.State == TaskState.Finish) { isCancelOrder = false; TaskOrderModel tom = new TaskOrderModel(); tom.OrderCode = item.OrderCode; tom.OrderItemId = item.OrderItemId; tom.ProductCode = item.ProductCode; tom.ProductFrom = item.ProductFrom; tom.ProductName = item.ProductName; tom.ProductType = item.ProductType; tom.Quantity = item.Quantity; tom.Remark = item.Remark; tom.UsedEndDate = item.UsedEndDate; tom.UsedStartDate = item.UsedStartDate; foreach (var it in item.Personinfos) { tom.Personinfos.Add(it); } tom.State = TaskState.CreateCancel; db.Tasks.Add(tom); await db.SaveChangesAsync(); _changeState.SendUpdateTaskState(tom, true); } } if (isCancelOrder) { order.OrderStatus = OrderStatus.Canceled; order.Remark = order.Remark + "订单取消完成"; } else { order.OrderStatus = OrderStatus.Cancel; } } else { order.OrderStatus = OrderStatus.Canceled; } await db.SaveChangesAsync(); OrderUpdateModel oum = new OrderUpdateModel(); oum.Id = order.Id; oum.State = order.OrderStatus; oum.Remark = order.Remark; _changeState.SendUpdateOrderState(oum); } } catch (Exception) { return(InternalServerError()); } return(Ok()); }