Example #1
0
        /// <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" }));
        }
Example #2
0
        /// <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" }));
        }
Example #3
0
        /// <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" }));
        }
Example #4
0
        /// <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" }));
        }
Example #5
0
        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" }));
        }
Example #6
0
        /// <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" }));
        }
Example #7
0
        /// <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" }));
        }
Example #8
0
        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"));
        }
Example #9
0
        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));
        }