示例#1
0
文件: YXJob.cs 项目: GSIL-Monitor/BTP
        /// <summary>
        /// 严选物流绑单回调补偿机制
        /// </summary>
        public static void AutoDeliverOrder()
        {
            var yesterday = DateTime.Now.AddDays(-5);
            var ComOrders = (from co in CommodityOrder.ObjectSet()
                             join yo in YXOrder.ObjectSet() on co.Id equals yo.OrderId
                             where CustomConfig.YxAppIdList.Contains(co.AppId) && co.State == 1 && co.PaymentTime >= yesterday
                             select co.Id).ToList();

            LogHelper.Info("YXJob.AutoDeliverOrder 严选物流绑单回调补偿机制订单Id:" + string.Join(",", ComOrders.Select(c => c.ToString()).ToArray()));
            ComOrders.ForEach(p =>
            {
                string jsonstr = string.Empty;
                var orderOut   = YXSV.GetPaidOrder(p.ToString(), ref jsonstr);
                if (orderOut == null || orderOut.orderPackages == null)
                {
                    return;
                }
                var orderPackages = orderOut.orderPackages.Select(o => new JobOrderPackage
                {
                    orderId            = p.ToString(),
                    packageId          = long.Parse(o.packageId),
                    expressDetailInfos = o.expressDetailInfos,
                    expCreateTime      = ConvertDataTimeToLong(Convert.ToDateTime(o.expCreateTime))
                }).ToList();
                orderPackages.ForEach(op =>
                {
                    var package = SerializationHelper.JsonSerialize(op);
                    YXOrderHelper.DeliverOrder(new YXSign(), package, true);
                });
            });
        }
示例#2
0
        /// <summary>
        /// 第三方电商获取订单项物流
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="orderId"></param>
        /// <returns></returns>
        public static List <ThirdOrderItemExpress> GetOrderItemExpress(Guid appId, Guid orderId, ref bool isThirdECommerceOrder)
        {
            var type = GetAppThirdECommerceType(appId);

            if (type == ThirdECommerceTypeEnum.WangYiYanXuan)
            {
                isThirdECommerceOrder = true;
                var list = YXOrderHelper.GetYXExpressDetailInfoSkuList(orderId);
                return(list.Select(p => new ThirdOrderItemExpress {
                    OrderItemId = p.OrderItemId, ExpressNo = p.ExpressNo, SubExpressNos = p.SubExpressNos
                }).ToList());
            }
            else if (type == ThirdECommerceTypeEnum.ByBiaoZhunJieKou)
            {
                isThirdECommerceOrder = true;
                var list = ThirdECommerceOrderHelper.GetThirdECOrderPackageSkuList(orderId);
                return(list.Select(p => new ThirdOrderItemExpress {
                    OrderItemId = p.OrderItemId, ExpressNo = p.ExpressNo
                }).ToList());
            }
            else if (type == ThirdECommerceTypeEnum.SuNingYiGou)
            {
                isThirdECommerceOrder = true;
                return(SuningSV.suning_govbus_rejection_getsnpackage(orderId));
            }
            else if (type == ThirdECommerceTypeEnum.FangZheng)
            {
                isThirdECommerceOrder = true;
                return(FangZhengSV.FangZheng_Logistics_Package(orderId));
            }
            return(new List <ThirdOrderItemExpress>());
        }
示例#3
0
        /// <summary>
        /// 判断商品是否填写备注编码(第三方电商商品skuid)
        /// </summary>
        /// <param name="commodityList"></param>
        /// <param name="commodityStockList"></param>
        /// <returns>未设置备注编码的商品名称集合</returns>
        public static List <string> CheckJDCodeExists(Guid appId, List <CommodityDTO> commodityList, List <BTP.Deploy.CommodityStockDTO> commodityStockList)
        {
            if (commodityList == null && commodityList.Count == 0)
            {
                return(new List <string>());
            }
            var type = GetAppThirdECommerceType(appId);

            if (!IsThirdECommerce(type))
            {
                return(new List <string>());
            }
            var commodityIdList = new List <Guid>();

            commodityList.ForEach(p =>
            {
                if (commodityStockList != null && commodityStockList.Count > 0 && commodityStockList.Any(x => x.CommodityId == p.Id))
                {
                    commodityIdList.AddRange(commodityStockList.Where(x => x.CommodityId == p.Id && string.IsNullOrEmpty(x.JDCode)).Select(x => x.CommodityId).ToList());
                }
                else
                {
                    if (string.IsNullOrEmpty(p.JDCode))
                    {
                        commodityIdList.Add(p.Id);
                    }
                }
            });
            if (commodityIdList.Count > 0)
            {
                var commodityNameList = new List <string>();
                if (IsWangYiYanXuan(appId))
                {
                    var appName = APPSV.GetAppName(appId);
                    commodityNameList = commodityList.Where(p => commodityIdList.Contains(p.Id)).Select(p => p.Name).ToList();
                    var commodityNames = string.Join("、", commodityNameList);
                    YXOrderHelper.SaveErrorLog(new YXOrderErrorLogDTO
                    {
                        Content        = string.Format("{0}App中{1}等商品的备注编码不存在,请尽快补充填写~", appName, commodityNames),
                        AppId          = appId,
                        OrderId        = Guid.Empty,
                        OrderCode      = string.Empty,
                        AppName        = appName,
                        CommodityNames = commodityNames,
                        Json           = string.Empty
                    });
                }
                return(commodityNameList);
            }
            return(new List <string>());
        }
示例#4
0
        /// <summary>
        /// 是否第三方电商订单(暂时京东除外)
        /// </summary>
        /// <param name="appId">店铺Id</param>
        /// <param name="orderId">订单Id</param>
        /// <returns></returns>
        public static bool IsThirdECommerceOrder(Guid appId, Guid orderId)
        {
            var type = GetAppThirdECommerceType(appId);

            if (type == ThirdECommerceTypeEnum.WangYiYanXuan)
            {
                return(YXOrderHelper.IsYXOrder(orderId));
            }
            if (type == ThirdECommerceTypeEnum.ByBiaoZhunJieKou)
            {
                return(ThirdECommerceOrderHelper.IsThirdECOrder(orderId));
            }
            return(false);
        }
示例#5
0
        /// <summary>
        /// 第三方电商取消订单申请
        /// </summary>
        /// <param name="order"></param>
        /// <returns></returns>
        public static ResultDTO CancelOrder(CommodityOrder order)
        {
            var type = GetAppThirdECommerceType(order.AppId);

            if (type == ThirdECommerceTypeEnum.WangYiYanXuan && YXOrderHelper.IsYXOrder(order.Id))
            {
                return(YXOrderRefundHelper.CancelPaidOrder(order));
            }
            else if (type == ThirdECommerceTypeEnum.ByBiaoZhunJieKou && ThirdECommerceOrderHelper.IsThirdECOrder(order.Id))
            {
                return(ThirdECommerceOrderHelper.CancelOrder(order.Id));
            }
            return(new ResultDTO {
                isSuccess = true
            });
        }
示例#6
0
        public static void RepairUnPayOrder(Guid orderId)
        {
            var commodityOrderDTO = CommodityOrder.FindByID(orderId);
            var facade            = new ISV.Facade.CommodityOrderFacade();

            facade.ContextDTO = AuthorizeHelper.InitAuthorizeInfo();
            if (commodityOrderDTO.RealPrice <= 0 && commodityOrderDTO.State == 0)
            {
                var rdto = facade.PayUpdateCommodityOrder(commodityOrderDTO.Id, commodityOrderDTO.UserId, commodityOrderDTO.AppId, 0, 0, 0, 0);
                if (rdto != null && rdto.ResultCode == 0)
                {
                    #region 易捷卡密订单
                    if (commodityOrderDTO.OrderType == 3)
                    {
                        System.Threading.Tasks.Task.Factory.StartNew(() =>
                        {
                            const string message = "易捷卡密订单调用盈科接口生成卡信息:";
                            var rdto1            = new IBP.Facade.YJBJCardFacade().Create(commodityOrderDTO.Id);
                            if (rdto1.isSuccess)
                            {
                                LogHelper.Info(message + rdto1.Message);
                            }
                            else
                            {
                                LogHelper.Error(message + rdto1.Message);
                            }
                        });
                    }
                    #endregion
                    #region 进销存订单
                    if (commodityOrderDTO.AppType.HasValue && new List <short> {
                        2, 3
                    }.Contains(commodityOrderDTO.AppType.Value))
                    {
                        new IBP.Facade.JdEclpOrderFacade().CreateOrder(commodityOrderDTO.Id, string.Empty);
                        new IBP.Facade.JdEclpOrderFacade().SendPayInfoToHaiXin(commodityOrderDTO.Id);
                    }
                    #endregion
                    new IBP.Facade.CommodityOrderFacade().SendPayInfoToYKBDMq(commodityOrderDTO.Id); //盈科大数据mq
                    YXOrderHelper.CreateOrder(commodityOrderDTO.Id);                                 //网易严选订单
                }
            }
        }
示例#7
0
        /// <summary>
        /// 第三方电商获取订单项物流轨迹信息
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="orderItemId"></param>
        /// <returns></returns>
        public static ThirdOrderPackageExpress GetOrderItemExpressTrace(Guid appId, Guid orderItemId)
        {
            var type = GetAppThirdECommerceType(appId);

            if (type == ThirdECommerceTypeEnum.WangYiYanXuan)
            {
                var yxexpress = YXOrderHelper.GetExpressInfo(orderItemId);
                if (yxexpress == null)
                {
                    return(null);
                }
                var express = new ThirdOrderPackageExpress
                {
                    ExpressCompany   = yxexpress.company,
                    ExpressNo        = yxexpress.number,
                    ExpressTraceList = new List <ThirdExpressTrace>()
                };
                if (yxexpress.content != null && yxexpress.content.Count > 0)
                {
                    yxexpress.content.ForEach(p =>
                    {
                        express.ExpressTraceList.Add(new ThirdExpressTrace
                        {
                            Desc = p.desc,
                            Time = p.time
                        });
                    });
                }
                return(express);
            }
            else if (type == ThirdECommerceTypeEnum.ByBiaoZhunJieKou)
            {
                return(ThirdECommerceOrderHelper.GetExpressInfo(orderItemId));
            }
            return(null);
        }
示例#8
0
 /// <summary>
 /// 第三方电商定时获取未确认收货订单物流轨迹信息
 /// </summary>
 public static void GetOrderExpressForJob()
 {
     YXOrderHelper.GetExpressOrderForJob();
 }