/// <summary> /// 部分退款 /// </summary> /// <returns></returns> public async Task <IActionResult> PartRefund([FromServices] IThirdOrderRepository service) { var notifyType = formDic["notify_type"]; if (notifyType != "part") { return(Json(new { data = "ok" })); } var id = formDic["order_id"]; var order = await service.GetOrderByCodeAsync(id); if (order.LogisticsType != LogisticsType.Yichengfeike) { return(Json(new { data = "ok" })); } var reason = formDic["reason"]; var foods = formDic["food"]; if (!string.IsNullOrEmpty(foods)) { var detail = JArray.Parse(foods); reason += ",退款商品:"; foreach (var item in detail) { reason += item["food_name"].Value <string>() + " " + item["count"].Value <int>(); } } Log.Debug("部分退款:" + reason); var helper = YcfkHelper.GetHelper(); await helper.ApplyCancel(order.Data1, reason, order.Business.YcfkKey, order.Business.YcfkSecret); return(Json(new { data = "ok" })); }
/// <summary> /// 已完成 /// </summary> /// <returns></returns> public async Task <IActionResult> Finish([FromServices] IThirdOrderRepository service) { var id = formDic["order_id"]; var order = await service.MT_FinishAsync(id); return(Json(new { data = "ok" })); }
/// <summary> /// 取消订单 /// </summary> /// <returns></returns> public async Task <IActionResult> Cancel([FromServices] IThirdOrderRepository service) { var id = formDic["order_id"]; var reason = formDic["reason"]; var order = await service.MT_CancelAsync(id, reason); // todo 取消订单通知(美团无订单申请取消推送) return(Json(new { data = "ok" })); }
/// <summary> /// 已确定订单 /// </summary> /// <returns></returns> public async Task <IActionResult> Received([FromServices] IThirdOrderRepository service) { //Log.Debug("美团订单:" + formDic["wm_poi_name"] + "," + formDic["day_seq"]); var order = await service.MT_SaveAsync(formDic); //Log.Debug($"美团[确认]订单:{formDic["wm_poi_name"]}-{formDic["app_poi_code"]}-{formDic["day_seq"]}"); if (order == null) { return(Json(new { data = "ok" })); } // 发送订单通知 order.PrintType = PrintMode.All; await service.AddOrderNotifyAsync(order); return(Json(new { data = "ok" })); }
public async Task <IActionResult> Notify([FromBody] JObject message, [FromServices] IThirdOrderRepository service) { Service = service; var appId = message["appId"].Value <long>(); var secret = await service.GetElemeAppSecretAsync(appId); if (secret == null) { return(Json(new { message = "ok" })); } var eleme = new ElemeInputData(message, secret); if (!eleme.CheckSign()) { // 签名验证不通过,不再继续处理 return(Json(new { message = "ok" })); } var type = message["type"].Value <int>(); switch (type) { case 10: await OrderAsync(message); break; // 订单生效 case 12: await ReceviedAsync(message); break; // 商户接单 case 14: await CancelAsync(message); break; // 订单被取消 case 18: await FinishAsync(message); break; // 订单已完成 case 20: await ApplyCancelAsync(message); break; // 用户申请取消订单 case 23: await CancelAsync(message); break; // 门店同意取消订单 case 30: await ApplyCancelAsync(message); break; // 用户申请退单 case 33: await CancelAsync(message); break; // 门店同意退单 default: break; } return(Json(new { message = "ok" })); }
/// <summary> /// 全部退款 /// </summary> /// <returns></returns> public async Task <IActionResult> AllRefund([FromServices] IThirdOrderRepository service) { var notifyType = formDic["notify_type"]; if (notifyType != "apply") { return(Json(new { data = "ok" })); } var id = formDic["order_id"]; var order = await service.GetOrderByCodeAsync(id); if (order.LogisticsType != LogisticsType.Yichengfeike) { return(Json(new { data = "ok" })); } var reason = formDic["reason"]; var helper = YcfkHelper.GetHelper(); await helper.ApplyCancel(order.Data1, reason, order.Business.YcfkKey, order.Business.YcfkSecret); Log.Debug("全额退款:" + reason); return(Json(new { data = "ok" })); }
/// <summary> /// 新订单 /// </summary> /// <returns></returns> public async Task <IActionResult> Order([FromServices] IThirdOrderRepository service) { var business = await service.GetBusinessByMtPoi(formDic["app_poi_code"]); if (business == null || !business.MT_AutoRecieved) { return(Json(new { data = "ok" })); } //Log.Debug($"美团[新]订单:{business.Name}-{formDic["app_poi_code"]}-{formDic["day_seq"]}"); // 如果设置了美团自动接单,则调用商户确认接口 var url = "https://waimaiopen.meituan.com/api/v1/order/confirm"; var mt = new MTInputData(business.MT_AppKey, url); mt.SetValue("timestamp", DateTime.Now.ToTimestamp()); mt.SetValue("app_id", business.MT_AppId); mt.SetValue("order_id", formDic["order_id"]); var sig = mt.MakeSign(); mt.SetValue("sig", sig); url = $"{url}?{mt.ToUrl()}"; await UtilHelper.RequestAsync(url, method : "get"); return(Json(new { data = "ok" })); }
public async Task <IActionResult> ExportThirdProductsData([FromQuery] DateTime start, [FromQuery] DateTime end, [FromQuery] int source, [FromServices] IThirdOrderRepository service) { var result = await service.GetProductsDataAsync(Business.ID, source, start, end.AddDays(1)); var flag = string.Empty; if (source == 99) { flag = "平台订单"; } else if (source == 0) { flag = "美团"; } else if (source == 1) { flag = "饿了么"; } var title = $"商品销售排行统计[{flag}]"; var xls = GetProductsWorksheet(result, title, start, end); return(File(xls, AppData.XlsxContentType, $"{title}({start:yyyyMMdd}-{end:yyyyMMdd}).xlsx")); }
public async Task <IActionResult> GetThirdProductsData([FromQuery] DateTime start, [FromQuery] DateTime end, [FromQuery] int source, [FromServices] IThirdOrderRepository service) { var result = await service.GetProductsDataAsync(Business.ID, source, start, end.AddDays(1)); return(Json(result)); }