Example #1
0
        /// <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);
                });
            });
        }
Example #2
0
        /// <summary>
        /// 获取网易严选商品详情
        /// </summary>
        public static List <YXComDetailDTO> GetYXComInfo(List <string> SkuList)
        {     //取出所有SkuID
            List <YXComDetailDTO> YXList = new List <YXComDetailDTO>();

            for (int i = 0; i < SkuList.Count; i += 99)
            {
                YXList.AddRange(YXSV.GetComDetailList(SkuList.Skip(i).Take(99).ToList()));
                //Thread.Sleep(1000);
            }
            return(YXList);
        }
Example #3
0
        /// <summary>
        /// 全量同步严选库存信息
        /// </summary>
        public static List <StockDTO> GetYXStockById(List <string> SkuidList)
        {     //取出所有SkuID
            List <StockDTO> YXstockList = new List <StockDTO>();

            for (int i = 0; i < SkuidList.Count; i += 99)
            {
                YXstockList.AddRange(YXSV.GetStockNum(SkuidList.Skip(i).Take(99).ToList()));
                //Thread.Sleep(1000);
            }
            return(YXstockList);
        }
Example #4
0
 /// <summary>
 /// 添加退货物流信息时调用(售后)
 /// </summary>
 public static ResultDTO OnOrderRefundOfferExpress(CommodityOrder order, OrderRefundAfterSales refund, string trackingCompany, string trackingNum)
 {
     // 判断严选订单
     if (ThirdECommerceHelper.IsWangYiYanXuan(order.AppId))
     {
         return(YXSV.ExpressOfferRefundOrder(refund.ApplyId, new List <ExpressInfo> {
             new ExpressInfo {
                 trackingCompany = trackingCompany, trackingNum = trackingNum
             }
         }));
     }
     return(new ResultDTO {
         isSuccess = true
     });
 }
Example #5
0
        /// <summary>
        /// 第三方电商取消售后服务申请
        /// </summary>
        /// <param name="order"></param>
        /// <param name="orderItem"></param>
        /// <param name="refund"></param>
        /// <returns></returns>
        public static ResultDTO CancelService(CommodityOrder order, OrderItem orderItem, OrderRefundAfterSales refund)
        {
            var type = GetAppThirdECommerceType(order.AppId);

            if (type == ThirdECommerceTypeEnum.WangYiYanXuan)
            {
                return(YXSV.CancelRefundOrder(refund.ApplyId));
            }
            else if (type == ThirdECommerceTypeEnum.ByBiaoZhunJieKou)
            {
                return(ThirdECommerceServiceHelper.CancelService(order.AppId, order.Id, refund.Id));
            }
            return(new ResultDTO {
                isSuccess = true
            });
        }
Example #6
0
 /// <summary>
 /// 全量获取严选SPU
 /// </summary>
 public static void AutoGetAllSPU()
 {
     if (isSyncSPU)
     {
         LogHelper.Info("JdOrderHelper.AutoGetAllSPU 正在全量获取严选SPU,跳过。。。");
         return;
     }
     isSyncSPU = true;
     LogHelper.Info("YXJobHelper.AutoGetAllSPU 开始写入严选SPU");
     try
     {
         ContextSession contextSession = ContextFactory.CurrentThreadContext;
         //全量取出SPU
         var SPUlist = YXSV.GetAllSPU();
         if (!SPUlist.Any())
         {
             LogHelper.Info("JdOrderHelper.AutoGetAllSPU 未获取到严选SPU,跳出~");
             return;
         }
         //清除表中全部数据
         if (SPUlist.Any())
         {
             YXComInfo.ObjectSet().Context.ExecuteStoreCommand("DELETE FROM YXComInfo");
         }
         foreach (var item in SPUlist)
         {
             YXComInfo YXCom = YXComInfo.CreateYXComInfo();
             YXCom.Id      = Guid.NewGuid();
             YXCom.SPU     = item;
             YXCom.SubTime = DateTime.Now;
             contextSession.SaveObject(YXCom);
         }
         contextSession.SaveChanges();
     }
     catch (Exception ex)
     {
         LogHelper.Error("YXJobHelper.AutoGetAllSPU 异常", ex);
         isSyncSPU = false;
         throw;
     }
     LogHelper.Info("YXJobHelper.AutoGetAllSPU 全量获取严选商品信息");
     isSyncSPU = false;
 }
Example #7
0
        /// <summary>
        /// 发起售后申请(售前-不支持)
        /// </summary>
        /// <returns></returns>
        public static ResultDTO ApplyRefundOrder(CommodityOrder order, OrderItem orderItem, OrderRefund refund)
        {
            string skuId = null;

            if (orderItem.CommodityStockId.HasValue && orderItem.CommodityStockId != Guid.Empty && orderItem.CommodityStockId != orderItem.CommodityId)
            {
                var comStock = CommodityStock.FindByID(orderItem.CommodityStockId.Value);
                if (comStock == null)
                {
                    return(new ResultDTO {
                        isSuccess = false, Message = "商品不存在。", ResultCode = -1
                    });
                }
                else
                {
                    skuId = comStock.JDCode;
                }
            }
            else
            {
                var commodity = Commodity.FindByID(orderItem.CommodityId);
                if (commodity == null)
                {
                    return(new ResultDTO {
                        isSuccess = false, Message = "商品不存在。", ResultCode = -1
                    });
                }
                else
                {
                    skuId = commodity.JDCode;
                }
            }
            if (string.IsNullOrEmpty(skuId))
            {
                return(new ResultDTO {
                    isSuccess = false, Message = "商品SKU编码不存在。", ResultCode = -1
                });
            }
            var orderSku = YXOrderSku.ObjectSet().Where(_ => _.OrderId == order.Id && _.SkuId == skuId).FirstOrDefault();

            if (orderSku == null)
            {
                return(new ResultDTO {
                    isSuccess = false, Message = "订单SKU存在。", ResultCode = -1
                });
            }
            var requestData = new ApplyInfo
            {
                orderId   = order.Id.ToString(),
                requestId = refund.Id.ToString(),
                applyUser = new ApplyUser {
                    name = order.ReceiptUserName, mobile = order.ReceiptPhone
                },
                applySku = new ApplySku
                {
                    packageId      = orderSku.PackageId,
                    skuId          = orderSku.SkuId,
                    count          = orderSku.SaleCount,
                    originalPrice  = orderSku.OriginPrice,
                    subtotalPrice  = orderSku.SubtotalAmount,
                    applySkuReason = new ApplySkuReason {
                        reason = refund.RefundReason, reasonDesc = refund.RefundDesc
                    },
                    applyPicList = new List <ApplyPic> {
                    }
                }
            };

            if (!string.IsNullOrEmpty(refund.OrderRefundImgs))
            {
                foreach (var img in refund.OrderRefundImgs.Split(','))
                {
                    requestData.applySku.applyPicList.Add(new ApplyPic {
                        fileName = System.IO.Path.GetFileName(img), url = img
                    });
                }
            }
            var result = YXSV.ApplyRefundOrder(requestData);

            if (!result.isSuccess)
            {
                return(result);
            }
            refund.ApplyId = result.Data.applyId;
            return(new ResultDTO {
                isSuccess = true
            });
        }
Example #8
0
        /// <summary>
        /// 取消订单
        /// </summary>
        /// <param name="order"></param>
        public static ResultDTO CancelPaidOrder(CommodityOrder order)
        {
            var jsonStr = string.Empty;
            var result  = YXSV.CancelPaidOrder(order.Id.ToString(), ref jsonStr);

            #region 保存网易严选订单日志
            Task.Factory.StartNew(() =>
            {
                var journal = new YXOrderJournal
                {
                    Id          = Guid.NewGuid(),
                    OrderId     = order.Id,
                    OrderCode   = order.Code,
                    SubTime     = DateTime.Now,
                    SubId       = order.SubId,
                    Name        = "渠道取消订单申请",
                    Details     = result.Message,
                    Json        = jsonStr,
                    EntityState = System.Data.EntityState.Added
                };
                ContextFactory.CurrentThreadContext.SaveObject(journal);
                ContextFactory.CurrentThreadContext.SaveChanges();
            });
            #endregion
            if (result.isSuccess)
            {
                if (result.Data.cancelStatus == 0)
                {
                    return(new ResultDTO {
                        isSuccess = false, ResultCode = 1, Message = result.Data.rejectReason
                    });
                }
                if (result.Data.cancelStatus == 2)
                {
                    // 等待人工审核(审核时间一般为24小时内),对于人工审核的订单取消申请,严选工作人员审核完成后,通过调用渠道方提供的回调接口告知取消结果。
                    return(new ResultDTO {
                        isSuccess = true, Message = "请等待审核。", ResultCode = 2
                    });
                }
                if (result.Data.cancelStatus == 1)
                {
                    // 手动触发取消订单成功回调
                    Timer timer = null;
                    timer = new Timer(_ =>
                    {
                        CancelOrderCallback(new OrderCancelResultCallBack {
                            orderId = order.Id.ToString().ToLower(), cancelStatus = 1
                        });
                        timer.Dispose();
                    }, null, 2000, System.Threading.Timeout.Infinite);
                    //Task.Factory.StartNew(() => Thread.Sleep(10000)).ContinueWith(_ => CancelOrderCallback(new OrderCancelResultCallBack { orderId = order.Id, cancelStatus = 1 }));
                    return(new ResultDTO {
                        isSuccess = true, Message = result.Data.rejectReason, ResultCode = 0
                    });
                }
            }
            // 订单不存在
            else if (result.ResultCode == 20108)
            {
                return(new ResultDTO {
                    isSuccess = false, Message = "订单异常,请联系客服~", ResultCode = -1
                });
            }
            return(new ResultDTO {
                isSuccess = false, Message = "操作失败,请稍后重试。", ResultCode = -1
            });
        }
Example #9
0
        /// <summary>
        /// 全量同步严选库存信息
        /// </summary>
        public static Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO AutoSyncAllStockNum()
        {
            Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO result = new Deploy.CustomDTO.ResultDTO()
            {
                isSuccess = false, ResultCode = 1
            };
            LogHelper.Info("YXJobHelper.AutoSyncAllStockNum 开始写入严选库存信息");
            try
            {
                ContextSession contextSession = ContextFactory.CurrentThreadContext;
                Guid           AppId          = new Guid("1d769e14-f870-4b19-82ab-875a9e8678e4");
                //取出库存表中所有的skuid
                var stockList = (from m in Commodity.ObjectSet()
                                 join n in CommodityStock.ObjectSet() on m.Id equals n.CommodityId
                                 where m.AppId == AppId &&
                                 m.IsDel == false && n.IsDel == false
                                 select n).ToList();
                //取出所有SkuID
                var             SkuidList   = stockList.OrderBy(p => p.SubTime).Select(s => s.JDCode).ToList();
                List <StockDTO> YXstockList = new List <StockDTO>();
                for (int i = 0; i < SkuidList.Count; i += 99)
                {
                    LogHelper.Info(string.Format("严选sku:{0}", JsonHelper.JsonSerializer(SkuidList.Skip(i).Take(99).ToList())));
                    YXstockList.AddRange(YXSV.GetStockNum(SkuidList.Skip(i).Take(99).ToList()));
                    Thread.Sleep(1000);
                }
                if (!YXstockList.Any())
                {
                    LogHelper.Info("YXJobHelper.AutoSyncAllStockNum 未获取到严选库存信息,跳出~");
                    return(result);
                }
                //更新库存
                foreach (var item in stockList)
                {
                    var YXStock = YXstockList.FirstOrDefault(p => p.skuId == item.JDCode);
                    if (YXStock != null)
                    {
                        item.Stock = YXStock.inventory;
                        item.State = 0;
                        item.IsDel = false;
                    }
                    else
                    {
                        item.Stock = 0;
                        item.State = 1;
                        item.IsDel = true;
                    }
                    item.ModifiedOn = DateTime.Now;
                }
                int countstock = contextSession.SaveChanges();
                LogHelper.Info(string.Format("严选库存更新库存保存条数:{0}", countstock));
                #region 重新计算Commodity表库存信息
                //出去所有严选商品信息
                var commodity      = Commodity.ObjectSet().Where(p => CustomConfig.YxAppIdList.Contains(p.AppId) && p.IsDel == false).ToList();
                var comids         = commodity.Select(s => s.Id).ToList();
                var commodityStock = CommodityStock.ObjectSet().Where(p => comids.Contains(p.CommodityId)).ToList();
                //var AuditModeApp = JDAuditMode.ObjectSet().Where(_ => _.StockModeState == 0).Select(_ => _.AppId).ToList();//库存自动审核appid集合
                //到货提醒商品Id集合
                List <Guid> NoticeComIds = new List <Guid>();
                foreach (var item in commodity)
                {
                    var StockNo = commodityStock.Where(p => p.CommodityId == item.Id).Sum(s => s.Stock);
                    if (StockNo == 0)//无库存商品下架处理
                    {
                        item.State = 1;
                    }
                    else if (item.State == 1 && StockNo > 0)//有库存上架处理审核处理
                    {
                        item.State = 0;
                    }
                    if (item.Stock == 0 && StockNo > 0)
                    {
                        NoticeComIds.Add(item.Id);
                    }
                    item.Stock      = StockNo;
                    item.ModifiedOn = DateTime.Now;
                }
                int countCom = contextSession.SaveChanges();
                LogHelper.Info(string.Format("严选库存更新库存保存条数:{0}", countCom));
                result.isSuccess  = true;
                result.ResultCode = 0;
                result.Message    = "库存表保存条数:{0}" + countstock + "商品表保存条数:{1}" + countCom;
                return(result);

                #endregion
            }
            catch (Exception ex)
            {
                LogHelper.Error("YXJobHelper.AutoSyncAllStockNum 异常", ex);
                return(result);
            }
        }
Example #10
0
 /// <summary>
 /// 全量获取严选价格信息
 /// </summary>
 public static Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO AutoUpdateYXComPrice()
 {
     Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO result = new Deploy.CustomDTO.ResultDTO()
     {
         isSuccess = false, ResultCode = 1
     };
     if (isSyncYXComInfo)
     {
         LogHelper.Info("YXJobHelper.AutoUpdateYXComInfo 正在全量获取严选价格信息,跳过。。。");
         return(result);
     }
     isSyncYXComInfo = true;
     LogHelper.Info("YXJobHelper.AutoUpdateYXComInfo 开始写入严选价格信息");
     try
     {
         ContextSession contextSession = ContextFactory.CurrentThreadContext;
         int            count          = 0;
         AutoGetAllSPU();
         var YXComList     = YXComInfo.ObjectSet().ToList();
         var UpdateSpuList = YXComList.Select(s => s.SPU).ToList();
         List <YXComDetailDTO> YXComLists = new List <YXComDetailDTO>();
         for (int i = 0; i < YXComList.Count; i += 30)
         {
             YXComLists.AddRange(YXSV.GetComDetailList(UpdateSpuList.Skip(i).Take(30).ToList()));
             //Thread.Sleep(1000);
         }
         foreach (var YXComlist in YXComLists)
         {
             foreach (var item in YXComlist.skuList)
             {
                 YXComInfo YXCom = YXComInfo.CreateYXComInfo();
                 YXCom.Id        = Guid.NewGuid();
                 YXCom.SPU       = YXComlist.id;
                 YXCom.SKU       = item.id;
                 YXCom.Price     = item.channelPrice;
                 YXCom.CostPrice = item.channelPrice * Convert.ToDecimal(0.8);
                 YXCom.SubTime   = DateTime.Now;
                 contextSession.SaveObject(YXCom);
             }
         }
         count = contextSession.SaveChanges();
         YXComInfo.ObjectSet().Context.ExecuteStoreCommand("delete from YXComInfo where SKU is null");
         //取出最细你的严选价格信息
         var YXComNewList = YXComInfo.ObjectSet().ToList();
         //取出所有网易严选的商品信息
         Guid AppId  = new Guid("1d769e14-f870-4b19-82ab-875a9e8678e4");
         var  YXCom1 = Commodity.ObjectSet().Where(p => p.AppId == AppId).ToList();
         LogHelper.Info(string.Format("取出严选商品条数:{0}", YXCom1.Count()));
         int savecount = 0;
         //取出定时改价中严选商品
         List <Guid> YXappids     = CustomConfig.YxAppIdList;
         var         timingComIds = Jinher.AMP.BTP.TPS.YJBSV.GetYXChangeComInfo(YXappids).Data.Select(s => s.CommodityId).ToList();
         for (int i = 0; i < YXCom1.Count; i += 100)
         {
             var YxComList = YXCom1.Skip(i).Take(100).ToList();//取出商品id
             var ComIds    = YxComList.Select(s => s.Id);
             LogHelper.Info(string.Format("严选商品Id:{0}", JsonHelper.JsonSerializer(ComIds)));
             var YXComStock = CommodityStock.ObjectSet().Where(p => ComIds.Contains(p.CommodityId) && !timingComIds.Contains(p.Id)).ToList();
             foreach (var item in YXComStock)
             {
                 LogHelper.Info(string.Format("获取严选sku:{0}", item.JDCode));
                 var NewPriceInfo = YXComNewList.FirstOrDefault(p => p.SKU == item.JDCode);
                 if (NewPriceInfo == null)
                 {
                     LogHelper.Info(string.Format("不存在严选sku:{0}", item.JDCode));
                     item.IsDel      = true;
                     item.ModifiedOn = DateTime.Now;
                 }
                 if (NewPriceInfo != null && NewPriceInfo.Price.HasValue && NewPriceInfo.CostPrice.HasValue && NewPriceInfo.Price > 0 && NewPriceInfo.CostPrice > 0)
                 {
                     LogHelper.Info(string.Format("获取严选商品sku:{0},售价:{1},进货价:{2}", NewPriceInfo.SKU, NewPriceInfo.Price, NewPriceInfo.CostPrice));
                     item.Price      = NewPriceInfo.Price ?? item.Price;
                     item.CostPrice  = NewPriceInfo.CostPrice ?? item.CostPrice;
                     item.IsDel      = false;
                     item.ModifiedOn = DateTime.Now;
                 }
             }
             foreach (var item1 in YxComList)
             {
                 var YXComMinPrice = YXComNewList.Where(p => p.SPU == item1.Barcode).OrderBy(p => p.Price).FirstOrDefault();
                 if (YXComMinPrice == null)
                 {
                     LogHelper.Info(string.Format("不存在严选SPU:{0}", item1.Barcode));
                     item1.IsDel = true;
                     item1.State = 0;
                 }
                 if (YXComMinPrice != null && YXComMinPrice.Price > 0 && YXComMinPrice.CostPrice > 0)
                 {
                     LogHelper.Info(string.Format("获取严选商品最小价格sku:{0},售价:{1},进货价:{2}", YXComMinPrice.SKU, YXComMinPrice.Price, YXComMinPrice.CostPrice));
                     item1.Price      = YXComMinPrice.Price ?? item1.Price;
                     item1.CostPrice  = YXComMinPrice.CostPrice ?? item1.CostPrice;
                     item1.ModifiedOn = DateTime.Now;
                 }
             }
             savecount += contextSession.SaveChanges();
             LogHelper.Info(string.Format("获取苏宁价格保存条数:{0}", count));
         }
         result.isSuccess = true;
         result.Message   = "严选接口保存成功" + count + "条;商品表修改条数:" + savecount;
         isSyncYXComInfo  = false;
         return(result);
     }
     catch (Exception ex)
     {
         LogHelper.Error("YXJobHelper.AutoUpdateYXComPrice 异常", ex);
         isSyncYXComInfo = false;
         return(result);
     }
 }
Example #11
0
        /// <summary>
        /// 全量获取严选价格信息
        /// </summary>
        public static void AutoUpdateYXComInfo()
        {
            if (isSyncYXComInfo)
            {
                LogHelper.Info("YXJobHelper.AutoUpdateYXComInfo 正在全量获取严选价格信息,跳过。。。");
                return;
            }
            isSyncYXComInfo = true;
            LogHelper.Info("YXJobHelper.AutoUpdateYXComInfo 开始写入严选价格信息");
            try
            {
                AutoGetAllSPU();
                var YXComList     = YXComInfo.ObjectSet().ToList();
                var UpdateSpuList = YXComList.Select(s => s.SPU).ToList();
                List <YXComDetailDTO> YXComLists = new List <YXComDetailDTO>();
                for (int i = 0; i < YXComList.Count; i += 30)
                {
                    YXComLists.AddRange(YXSV.GetComDetailList(UpdateSpuList.Skip(i).Take(30).ToList()));
                    //Thread.Sleep(1000);
                }
                ContextSession contextSession = ContextFactory.CurrentThreadContext;
                List <string>  SkuIds         = new List <string>();
                foreach (var YXComlist in YXComLists)
                {
                    foreach (var item in YXComlist.skuList)
                    {
                        YXComInfo YXCom = YXComInfo.CreateYXComInfo();
                        YXCom.Id        = Guid.NewGuid();
                        YXCom.SPU       = YXComlist.id;
                        YXCom.SKU       = item.id;
                        YXCom.Price     = item.channelPrice;
                        YXCom.CostPrice = item.channelPrice * Convert.ToDecimal(0.8);
                        YXCom.SubTime   = DateTime.Now;
                        contextSession.SaveObject(YXCom);
                        SkuIds.Add(item.id);
                    }
                }
                int count1 = contextSession.SaveChanges();
                YXComInfo.ObjectSet().Context.ExecuteStoreCommand("delete from YXComInfo where SKU is null");
                #region
                //取出定时改价中严选商品
                List <Guid> YXappids     = CustomConfig.YxAppIdList;
                var         timingComIds = Jinher.AMP.BTP.TPS.YJBSV.GetYXChangeComInfo(YXappids).Data.Select(s => s.CommodityId).ToList();
                //最新价格更新到YXComInfo,对比库存表和价格审核表 判断是否需要审核(过滤掉定时改价中严选的商品)
                var         ComStockList      = CommodityStock.ObjectSet().Where(p => SkuIds.Contains(p.JDCode) && !timingComIds.Contains(p.Id)).ToList();
                var         ComIds            = ComStockList.Select(s => s.CommodityId).Distinct().ToList();
                var         ComList           = Commodity.ObjectSet().Where(p => ComIds.Contains(p.Id)).ToList();
                var         YXComInfoList     = YXComInfo.ObjectSet().Where(p => SkuIds.Contains(p.SKU)).ToList();
                var         AuditAuditModeApp = JDAuditMode.ObjectSet().Where(_ => _.PriceModeState == 0).Select(_ => _.AppId).ToList();
                List <Guid> autoAuditPriceIds = new List <Guid>();
                int         count             = 0;
                foreach (var group in ComList)
                {
                    int addCount = 0;
                    var Com      = ComList.FirstOrDefault(p => p.Id == group.Id);
                    var auditCom = AddCommodityAudit(Com);

                    var ComStocks = ComStockList.Where(p => p.CommodityId == group.Id).ToList();
                    foreach (var item in ComStocks)
                    {
                        var YXComNew = YXComInfoList.FirstOrDefault(p => p.SKU == item.JDCode);
                        if (YXComNew != null && YXComNew.Price.HasValue && item.Price != YXComNew.Price)
                        {
                            var latestAuditData = JdAuditCommodityStock.ObjectSet().Where(p => p.CommodityStockId == item.Id && p.AuditType == 2).OrderByDescending(p => p.SubTime).FirstOrDefault();
                            if (latestAuditData == null || latestAuditData.Price != item.Price)
                            {
                                count++;
                                addCount++;
                                var auditStock = AddCommodityStockAudit(contextSession, group.AppId, item, Deploy.Enum.OperateTypeEnum.京东修改现价);
                                auditStock.AuditType          = 2;
                                auditStock.JdAuditCommodityId = auditCom.Id;
                                auditStock.JdPrice            = YXComNew.Price;
                                auditStock.CostPrice          = YXComNew.Price * Convert.ToDecimal(0.8);
                                contextSession.SaveObject(auditStock);
                                if (AuditAuditModeApp.Contains(group.AppId))
                                {
                                    autoAuditPriceIds.Add(auditStock.Id);
                                }
                                LogHelper.Info("YXJobHelper.AutoUpdateYXComInfo 更新商品售价,商品Id: " + item.Id + ",SkuId: " + item.JDCode);
                            }
                        }
                    }
                    if (addCount > 0)
                    {
                        contextSession.SaveObject(auditCom);
                    }
                }
                int ccc = contextSession.SaveChanges();
                // 自动审核
                var auditComFacade = new JDAuditComFacade();
                auditComFacade.ContextDTO = AuthorizeHelper.InitAuthorizeInfo();
                if (autoAuditPriceIds.Count > 0)
                {
                    auditComFacade.AuditJDCostPrice(autoAuditPriceIds, 1, "自动审核", 0, 0);
                }
                #endregion
            }
            catch (Exception ex)
            {
                LogHelper.Error("YXJobHelper.AutoUpdateYXComInfo 异常", ex);
                isSyncYXComInfo = false;
                throw;
            }
            LogHelper.Info("YXJobHelper.AutoUpdateYXComInfo 全量获取严选商品信息");
            isSyncYXComInfo = false;
        }
Example #12
0
        /// <summary>
        /// 新建商品信息
        /// </summary>
        public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO AddYXCommodityExt(Jinher.AMP.BTP.Deploy.JdCommodityDTO input)
        {
            try
            {
                if (input == null)
                {
                    return(new Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO {
                        ResultCode = 2, isSuccess = false, Message = "参数不能为空~"
                    });
                }
                if (!string.IsNullOrEmpty(input.JDCode) && !IsExistsJdCodeExt(input.JDCode, input.AppId))
                {
                    return(new Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO {
                        ResultCode = 2, isSuccess = false, Message = "列表中已存在该备注编码~"
                    });
                }
                Guid userId = this.ContextDTO.LoginUserID;

                var SPUIdLis = YXSV.GetAllSPU();
                if (SPUIdLis.IndexOf(input.Code) > 0)
                {
                    return(new Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO {
                        ResultCode = 2, isSuccess = false, Message = "备注编码在严选商品池中不存在"
                    });
                }
                ContextSession contextSession = ContextFactory.CurrentThreadContext;
                JdCommodity    JdCom          = JdCommodity.CreateJdCommodity();
                JdCom.TaxRate          = input.TaxRate;
                JdCom.InputRax         = input.InputRax;
                JdCom.TaxClassCode     = input.TaxClassCode;
                JdCom.State            = 0; //是否补全
                JdCom.SubId            = userId;
                JdCom.SubTime          = DateTime.Now;
                JdCom.AppId            = input.AppId;
                JdCom.JDCode           = input.JDCode;
                JdCom.SaleAreas        = "430000,220000,420000,210000,310000,120000,140000,410000,320000,340000,350000,510000,440000,450000,500000,370000,530000,460000,610000,110000,230000,360000,620000,330000,640000,520000,130000,630000";//出去港澳台 新疆 西藏
                JdCom.No_Code          = JdCom.JDCode + "0000";
                JdCom.ErQiCode         = input.ErQiCode;
                JdCom.CostPrice        = input.CostPrice;
                JdCom.IsAssurance      = input.IsAssurance;
                JdCom.IsReturns        = input.IsReturns;
                JdCom.Isnsupport       = input.Isnsupport;
                JdCom.ServiceSettingId = input.ServiceSettingId;
                JdCom.TechSpecs        = input.TechSpecs;
                JdCom.SaleService      = input.SaleService;
                JdCom.CategoryName     = input.CategoryName;
                //商城分类借用字段
                JdCom.VideoName = input.VideoName;
                contextSession.SaveObject(JdCom);
                contextSession.SaveChanges();
            }
            catch (Exception ex)
            {
                LogHelper.Error("YXCommodityBP.AddYXCommodityExt 异常", ex);
                return(new Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO {
                    isSuccess = false, Message = ex.Message
                });
            }
            return(new Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO {
                isSuccess = true, Message = "添加成功"
            });
        }
Example #13
0
        /// <summary>
        /// 自动同步严选商品信息
        /// </summary>
        /// <param name="AppId"></param>
        /// <param name="Ids"></param>
        /// <returns></returns>
        public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO <Jinher.AMP.BTP.Deploy.CustomDTO.YJEmployee.JdCommoditySearchDTO> AutoSyncYXCommodityInfoExt(System.Guid AppId, System.Collections.Generic.List <System.Guid> Ids)
        {
            try
            {
                Jinher.AMP.App.Deploy.CustomDTO.AppIdOwnerIdTypeDTO appModel = APPSV.Instance.GetAppOwnerInfo(AppId);
                bool isFnull = true;
                if (appModel.OwnerType == 0)
                {
                    CBC.Deploy.CustomDTO.OrgInfoNewDTO orgInfoDTO = CBCSV.Instance.GetOrgInfoNewBySubId(appModel.OwnerId);
                    if (orgInfoDTO == null || string.IsNullOrEmpty(orgInfoDTO.CompanyPhone))
                    {
                        isFnull = false;
                    }
                }
                JdCommoditySearchDTO JdComDTO = new JdCommoditySearchDTO();
                Guid           userId         = this.ContextDTO.LoginUserID;
                ContextSession contextSession = ContextFactory.CurrentThreadContext;
                if (isFnull)
                {
                    //取出补全的商品信息
                    var                   YXComList       = JdCommodity.ObjectSet().Where(p => p.AppId == AppId && Ids.Contains(p.Id)).ToList();
                    List <string>         skuIds          = YXComList.Select(s => s.JDCode).ToList();
                    List <YXComDetailDTO> YXComDetailList = new List <YXComDetailDTO>();

                    for (int i = 0; i < skuIds.Count; i += 30)
                    {
                        YXComDetailList.AddRange(YXSV.GetComDetailList(skuIds.Skip(i).Take(30).ToList()));
                    }
                    if (!YXComDetailList.Any())
                    {
                        return(new ResultDTO <Jinher.AMP.BTP.Deploy.CustomDTO.YJEmployee.JdCommoditySearchDTO> {
                            Data = JdComDTO, ResultCode = 1, isSuccess = false, Message = "未获取到严选商品信息"
                        });
                    }
                    #region 获取所有skuid库存 处理严选商品属性

                    List <StockDTO>             YXstockNumList = new List <StockDTO>();             //库存信息
                    List <itemSkuSpecValueList> skuAttr        = new List <itemSkuSpecValueList>(); //商品属性

                    if (YXComDetailList.Any())
                    {
                        List <string> Sku = new List <string>();
                        foreach (var item in YXComDetailList)
                        {
                            Sku.AddRange(item.skuList.Select(s => s.id).ToList());
                            foreach (var it in item.skuList)
                            {
                                skuAttr.AddRange(it.itemSkuSpecValueList);
                            }
                        }
                        //批量获取严选库存信息
                        for (int i = 0; i < Sku.Count; i += 90)
                        {
                            YXstockNumList.AddRange(YXSV.GetStockNum(Sku.Skip(i).Take(90).ToList()));
                            //Thread.Sleep(1000);
                        }
                        //写入严选商品属性
                        List <ComAttribute> ComAttr = new List <ComAttribute>();
                        foreach (var item in skuAttr)
                        {
                            ComAttribute Com = new ComAttribute();
                            Com.AttrName  = item.skuSpec.name;
                            Com.Attrvalue = item.skuSpecValue.value;
                            ComAttr.Add(Com);
                        }
                        var firstAttributeName = ComAttr.Select(s => s.AttrName).ToList();
                        //写入不存在的商品属性
                        List <string> colorAndSize = new List <string>()
                        {
                            "颜色", "尺寸"
                        };
                        var NoExistAttr = firstAttributeName.Except(Jinher.AMP.BTP.BE.Attribute.ObjectSet().Where(p => p.AppId == AppId && p.IsDel == false).Select(s => s.Name).ToList().Union(colorAndSize)).ToList();
                        if (NoExistAttr.Any())
                        {
                            foreach (var item in NoExistAttr)
                            {
                                AttributeDTO attrDTO = new AttributeDTO();
                                attrDTO.Id          = Guid.NewGuid();
                                attrDTO.Name        = item;
                                attrDTO.AppId       = AppId;
                                attrDTO.EntityState = System.Data.EntityState.Added;
                                Jinher.AMP.BTP.BE.Attribute attribute = new Jinher.AMP.BTP.BE.Attribute().FromEntityData(attrDTO);
                                attribute.SubId   = userId;
                                attribute.SubTime = DateTime.Now;
                                contextSession.SaveObject(attribute);
                            }
                        }
                    }
                    #endregion
                    #region 获取所有的商城分类  商品类目
                    //获取商城品类
                    var InnerCategoryNameList = YXComList.Select(s => s.VideoName.Trim()).ToList();

                    //获取商品分类
                    var           CategoryNameList = YXComList.Select(s => s.CategoryName).ToList();//获取所有的商品分类
                    string        ggg  = string.Join(",", CategoryNameList.ToArray());
                    List <string> list = new List <string>(ggg.Split(','));
                    //易捷北京
                    var CategoryList = Category.ObjectSet().Where(p => p.AppId == new Guid("8B4D3317-6562-4D51-BEF1-0C05694AC3A6") && !p.IsDel && CategoryNameList.Contains(p.Name)).ToList();
                    var categoryList = InnerCategory.ObjectSet().Where(p => InnerCategoryNameList.Contains(p.Name) && p.AppId == new Guid("8B4D3317-6562-4D51-BEF1-0C05694AC3A6") && !p.IsDel).ToList();
                    //本地调试
                    //var categoryList = InnerCategory.ObjectSet().Where(p => InnerCategoryNameList.Contains(p.Name) && p.AppId == AppId && !p.IsDel).ToList();
                    //var CategoryList = Category.ObjectSet().Where(p => p.AppId == AppId && !p.IsDel && list.Distinct().Contains(p.Name)).ToList();
                    #endregion

                    //获取不到商品类目的
                    List <string> NoCategoryData = new List <string>();
                    //店铺中存在的备注编码进行更新  不存在则插入
                    var ExistCommodity = Commodity.ObjectSet().Where(p => skuIds.Contains(p.Barcode) && !p.IsDel && p.AppId == AppId).ToList();
                    JdComDTO.RepeatData = ExistCommodity.Select(s => s.Barcode).ToList();

                    foreach (var item in ExistCommodity)
                    {
                        var YXCom           = YXComList.FirstOrDefault(p => p.JDCode == item.Barcode);
                        var YXComDetailInfo = YXComDetailList.Where(p => p.id == item.Barcode).FirstOrDefault();

                        var minSortValueQuery = (from m in Commodity.ObjectSet()
                                                 where m.AppId == AppId && m.CommodityType == 0
                                                 select m);
                        int?minSort      = minSortValueQuery.Min(m => (int?)m.SortValue);
                        int minSortValue = 2;
                        if (minSort.HasValue)
                        {
                            minSortValue = minSort.Value;
                        }
                        item.Name         = "网易严选 " + YXComDetailInfo.name;
                        item.SubId        = userId;
                        item.No_Number    = YXCom.No_Number ?? 0;
                        item.Price        = YXComDetailInfo.skuList.Min(p => p.channelPrice);
                        item.Stock        = YXCom.Stock;
                        item.PicturesPath = YXComDetailInfo.listPicUrl;
                        item.Description  = "<div class=\"JD-goods\">" + YXComDetailInfo.itemDetail.detailHtml + "</div>";

                        //Com.State = 1; 只更新商品信息,不更新商品上下架状态
                        item.IsDel             = false;
                        item.AppId             = YXCom.AppId;
                        item.TotalCollection   = 0;
                        item.TotalReview       = 0;
                        item.Salesvolume       = 0;
                        item.ModifiedOn        = DateTime.Now;
                        item.ComAttribute      = YXCom.ComAttribute;
                        item.CategoryName      = YXCom.CategoryName;
                        item.SortValue         = minSortValue - 1;
                        item.FreightTemplateId = YXCom.FreightTemplateId;  //99元以下商品8元运费
                        item.MarketPrice       = YXCom.MarketPrice;
                        //Com.Weight = YXComDetailInfo.;
                        //Com.SaleService = JdComDetailInfo.wareQD + "<br>" + JdComDetailInfo.shouhou;
                        item.SaleAreas     = YXCom.SaleAreas;
                        item.SharePercent  = YXCom.SharePercent;
                        item.CommodityType = 0;
                        item.Duty          = YXCom.Duty;
                        item.TaxRate       = YXCom.TaxRate;
                        item.TaxClassCode  = YXCom.TaxClassCode;
                        item.Unit          = "件";
                        item.InputRax      = YXCom.InputRax;

                        if (YXComDetailInfo.skuList.Count() == 1)
                        {
                            //单条属性与库存表保持一致
                            item.JDCode  = YXComDetailInfo.skuList.FirstOrDefault().id;
                            item.Code    = item.JDCode;
                            item.Barcode = YXComDetailInfo.id;
                            item.No_Code = item.JDCode;
                        }
                        else
                        {
                            //多条属性存储SPU
                            item.JDCode  = YXComDetailInfo.skuList.OrderBy(p => p.channelPrice).FirstOrDefault().id;
                            item.Code    = item.JDCode;
                            item.Barcode = YXComDetailInfo.id; //存严选商品的SPU
                            item.No_Code = item.JDCode;
                        }

                        item.CostPrice        = item.Price * Convert.ToDecimal(0.8);
                        item.ServiceSettingId = YXCom.ServiceSettingId;
                        //Com.TechSpecs = JdComDetailInfo.param;
                        item.SaleService        = YXCom.SaleService;
                        item.Type               = 0;
                        item.YJCouponActivityId = "";
                        item.YJCouponType       = "";
                        item.ModifieId          = userId;
                        List <ComAttributeDTO> ComAttr = new List <ComAttributeDTO>();
                        foreach (var skuitem in YXComDetailInfo.skuList)
                        {
                            foreach (var it in skuitem.itemSkuSpecValueList)
                            {
                                ComAttributeDTO ComAtt = new ComAttributeDTO();
                                ComAtt.Attribute       = it.skuSpec.name;
                                ComAtt.SecondAttribute = it.skuSpecValue.value;
                                ComAttr.Add(ComAtt);
                            }
                        }
                        item.ComAttribute = JsonHelper.JsonSerializer <List <ComAttributeDTO> >(ComAttr);
                        item.RefreshCache(EntityState.Modified);
                        //更新库存表
                        UpdateCommodityStock(item, YXComDetailInfo, YXstockNumList, contextSession);
                        int count1 = contextSession.SaveChanges();
                        //更新JdCommodity表中状态
                        YXCom.State = 1;
                        #region 商品图片
                        //删除图片
                        ProductDetailsPictureBP pdpbp = new ProductDetailsPictureBP();
                        pdpbp.DeletePictures(item.Id);

                        List <string> PicList = new List <string>();
                        PicList.Add(YXComDetailInfo.itemDetail.picUrl1);
                        PicList.Add(YXComDetailInfo.itemDetail.picUrl2);
                        PicList.Add(YXComDetailInfo.itemDetail.picUrl3);
                        PicList.Add(YXComDetailInfo.itemDetail.picUrl4);
                        //添加图片
                        int sort = 1;
                        foreach (var itempic in PicList)
                        {
                            if (!string.IsNullOrWhiteSpace(itempic) && itempic.Length >= 50)
                            {
                                ProductDetailsPicture pic = ProductDetailsPicture.CreateProductDetailsPicture();
                                pic.Name         = "商品图片";
                                pic.SubId        = userId;
                                pic.SubTime      = DateTime.Now;
                                pic.PicturesPath = itempic;
                                pic.CommodityId  = item.Id;
                                pic.Sort         = sort;
                                contextSession.SaveObject(pic);
                                sort++;
                            }
                        }
                        #endregion
                        #region 商品分类
                        //删除商品分类
                        var catList = CommodityCategory.ObjectSet().Where(c => c.CommodityId == item.Id).ToList();
                        foreach (var commodityCategory in catList)
                        {
                            contextSession.Delete(commodityCategory);
                        }
                        //添加商品分类
                        var ComCategory = CategoryList.Where(p => YXCom.CategoryName.Contains(p.Name)).ToList();
                        if (ComCategory.Any())
                        {
                            foreach (var itemcate in ComCategory)
                            {
                                CommodityCategory comcate = CommodityCategory.CreateCommodityCategory();
                                comcate.CategoryId  = itemcate.Id;
                                comcate.CommodityId = item.Id;
                                comcate.SubId       = userId;
                                comcate.SubTime     = DateTime.Now;
                                comcate.Name        = "商品分类";
                                comcate.IsDel       = false;
                                #region 本地测试
                                //comcate.SubId = AppId;
                                //comcate.AppId = AppId;
                                //comcate.CrcAppId = Jinher.JAP.Common.Crc64.ComputeAsAsciiGuid(AppId);
                                #endregion
                                //正式环境
                                comcate.SubId    = new Guid("8B4D3317-6562-4D51-BEF1-0C05694AC3A6");
                                comcate.AppId    = new Guid("8B4D3317-6562-4D51-BEF1-0C05694AC3A6");
                                comcate.CrcAppId = Jinher.JAP.Common.Crc64.ComputeAsAsciiGuid(new Guid("8B4D3317-6562-4D51-BEF1-0C05694AC3A6"));
                                contextSession.SaveObject(comcate);
                            }
                        }
                        else
                        {
                            NoCategoryData.Add(YXCom.JDCode);
                        }
                        #endregion
                        #region 商城分类
                        //删除商城分类
                        var oldCCs = CommodityInnerCategory.ObjectSet().Where(c => c.CommodityId == item.Id).ToList();
                        foreach (var commodityCategory in oldCCs)
                        {
                            contextSession.Delete(commodityCategory);
                        }
                        //添加商城分类
                        var innerCateid = categoryList.Where(p => p.Name == YXCom.VideoName.Trim()).FirstOrDefault();
                        if (innerCateid != null)
                        {
                            CommodityInnerCategory comInnerCate = CommodityInnerCategory.CreateCommodityInnerCategory();
                            comInnerCate.CategoryId  = innerCateid.Id;
                            comInnerCate.CommodityId = item.Id;
                            comInnerCate.SubId       = userId;
                            comInnerCate.SubTime     = DateTime.Now;
                            comInnerCate.Name        = "商品分类";
                            comInnerCate.IsDel       = false;
                            comInnerCate.SubId       = AppId;
                            comInnerCate.AppId       = AppId;
                            comInnerCate.CrcAppId    = Jinher.JAP.Common.Crc64.ComputeAsAsciiGuid(AppId);
                            contextSession.SaveObject(comInnerCate);
                        }
                        #endregion
                    }
                    #region 商品中不存在的插入
                    var NoExist = YXComList.Where(p => !JdComDTO.RepeatData.Contains(p.Barcode)).ToList();
                    foreach (var item in NoExist)
                    {
                        var YXComDetailInfo = YXComDetailList.Where(p => p.id == item.JDCode).FirstOrDefault();

                        var minSortValueQuery = (from m in Commodity.ObjectSet()
                                                 where m.AppId == AppId && m.CommodityType == 0
                                                 select m);
                        int?minSort      = minSortValueQuery.Min(m => (int?)m.SortValue);
                        int minSortValue = 2;
                        if (minSort.HasValue)
                        {
                            minSortValue = minSort.Value;
                        }
                        Commodity Com = Commodity.CreateCommodity();
                        Com.Id                = Guid.NewGuid();
                        Com.Name              = "网易严选 " + YXComDetailInfo.name;
                        Com.SubTime           = DateTime.Now;
                        Com.SubId             = userId;
                        Com.No_Number         = item.No_Number ?? 0;
                        Com.Price             = YXComDetailInfo.skuList.Min(p => p.channelPrice);
                        Com.Stock             = item.Stock;
                        Com.PicturesPath      = YXComDetailInfo.listPicUrl;
                        Com.Description       = "<div class=\"JD-goods\">" + YXComDetailInfo.itemDetail.detailHtml + "</div>";
                        Com.State             = 1; //只更新商品信息,不更新商品上下架状态
                        Com.IsDel             = false;
                        Com.AppId             = item.AppId;
                        Com.TotalCollection   = 0;
                        Com.TotalReview       = 0;
                        Com.Salesvolume       = 0;
                        Com.ModifiedOn        = DateTime.Now;
                        Com.ComAttribute      = item.ComAttribute;
                        Com.CategoryName      = item.CategoryName;
                        Com.SortValue         = minSortValue - 1;
                        Com.FreightTemplateId = item.FreightTemplateId;  //99元以下商品8元运费
                        Com.MarketPrice       = item.MarketPrice;
                        //Com.Weight = YXComDetailInfo.;
                        //Com.SaleService = JdComDetailInfo.wareQD + "<br>" + JdComDetailInfo.shouhou;
                        Com.SaleAreas     = item.SaleAreas;
                        Com.SharePercent  = item.SharePercent;
                        Com.CommodityType = 0;
                        Com.Duty          = item.Duty;
                        Com.TaxRate       = item.TaxRate;
                        Com.TaxClassCode  = item.TaxClassCode;
                        Com.Unit          = "件";
                        Com.InputRax      = item.InputRax;

                        if (YXComDetailInfo.skuList.Count() == 1)
                        {
                            //单条属性与库存表保持一致
                            Com.JDCode  = YXComDetailInfo.skuList.FirstOrDefault().id;
                            Com.Code    = Com.JDCode;
                            Com.Barcode = YXComDetailInfo.id;
                            Com.No_Code = Com.JDCode;
                        }
                        else
                        {
                            //多条属性存储SPU
                            Com.JDCode  = YXComDetailInfo.skuList.OrderBy(p => p.channelPrice).FirstOrDefault().id;
                            Com.Code    = Com.JDCode;
                            Com.Barcode = YXComDetailInfo.id; //存严选商品的SPU
                            Com.No_Code = Com.JDCode;
                        }

                        Com.CostPrice        = Com.Price * Convert.ToDecimal(0.8);
                        Com.ServiceSettingId = item.ServiceSettingId;
                        //Com.TechSpecs = JdComDetailInfo.param;
                        Com.SaleService        = item.SaleService;
                        Com.Type               = 0;
                        Com.YJCouponActivityId = "";
                        Com.YJCouponType       = "";
                        Com.ModifieId          = userId;
                        List <ComAttributeDTO> ComAttr = new List <ComAttributeDTO>();
                        foreach (var skuitem in YXComDetailInfo.skuList)
                        {
                            foreach (var it in skuitem.itemSkuSpecValueList)
                            {
                                ComAttributeDTO ComAtt = new ComAttributeDTO();
                                ComAtt.Attribute       = it.skuSpec.name;
                                ComAtt.SecondAttribute = it.skuSpecValue.value;
                                ComAttr.Add(ComAtt);
                            }
                        }
                        Com.ComAttribute = JsonHelper.JsonSerializer <List <ComAttributeDTO> >(ComAttr);
                        contextSession.SaveObject(Com);
                        SaveCommodityStock(Com, YXComDetailInfo, YXstockNumList, contextSession);

                        //更新JdCommodity表中状态
                        item.State = 1;
                        #region 商品图片
                        List <string> PicList = new List <string>();
                        PicList.Add(YXComDetailInfo.itemDetail.picUrl1);
                        PicList.Add(YXComDetailInfo.itemDetail.picUrl2);
                        PicList.Add(YXComDetailInfo.itemDetail.picUrl3);
                        PicList.Add(YXComDetailInfo.itemDetail.picUrl4);
                        //添加图片
                        int sort = 1;
                        foreach (var itempic in PicList)
                        {
                            if (!string.IsNullOrEmpty(itempic))
                            {
                                ProductDetailsPicture pic = ProductDetailsPicture.CreateProductDetailsPicture();
                                pic.Name         = "商品图片";
                                pic.SubId        = userId;
                                pic.SubTime      = DateTime.Now;
                                pic.PicturesPath = itempic;
                                pic.CommodityId  = Com.Id;
                                pic.Sort         = sort;
                                contextSession.SaveObject(pic);
                                sort++;
                            }
                        }
                        #endregion
                        #region 商品分类
                        var ComCategory = CategoryList.Where(p => item.CategoryName.Contains(p.Name)).ToList();
                        if (ComCategory.Any())
                        {
                            foreach (var itemcate in ComCategory)
                            {
                                CommodityCategory comcate = CommodityCategory.CreateCommodityCategory();
                                comcate.CategoryId  = itemcate.Id;
                                comcate.CommodityId = Com.Id;
                                comcate.SubId       = userId;
                                comcate.SubTime     = DateTime.Now;
                                comcate.Name        = "商品分类";
                                comcate.IsDel       = false;
                                #region 本地测试
                                //comcate.SubId = AppId;
                                //comcate.AppId = AppId;
                                //comcate.CrcAppId = Jinher.JAP.Common.Crc64.ComputeAsAsciiGuid(AppId);
                                #endregion
                                comcate.SubId    = new Guid("8B4D3317-6562-4D51-BEF1-0C05694AC3A6");
                                comcate.AppId    = new Guid("8B4D3317-6562-4D51-BEF1-0C05694AC3A6");
                                comcate.CrcAppId = Jinher.JAP.Common.Crc64.ComputeAsAsciiGuid(new Guid("8B4D3317-6562-4D51-BEF1-0C05694AC3A6"));
                                contextSession.SaveObject(comcate);
                            }
                        }
                        else
                        {
                            NoCategoryData.Add(item.JDCode);
                        }
                        #endregion
                        #region 商城分类
                        var innerCateid = categoryList.Where(p => p.Name == item.VideoName.Trim()).FirstOrDefault();
                        if (innerCateid != null)
                        {
                            CommodityInnerCategory comInnerCate = CommodityInnerCategory.CreateCommodityInnerCategory();
                            comInnerCate.CategoryId  = innerCateid.Id;
                            comInnerCate.CommodityId = Com.Id;
                            comInnerCate.SubId       = userId;
                            comInnerCate.SubTime     = DateTime.Now;
                            comInnerCate.Name        = "商品分类";
                            comInnerCate.IsDel       = false;
                            comInnerCate.SubId       = AppId;
                            comInnerCate.AppId       = AppId;
                            comInnerCate.CrcAppId    = Jinher.JAP.Common.Crc64.ComputeAsAsciiGuid(AppId);
                            contextSession.SaveObject(comInnerCate);
                        }
                        #endregion
                    }
                    #endregion

                    int count = contextSession.SaveChanges();
                    JdComDTO.NoCategoryData = NoCategoryData;
                }
                return(new ResultDTO <Jinher.AMP.BTP.Deploy.CustomDTO.YJEmployee.JdCommoditySearchDTO> {
                    Data = JdComDTO, ResultCode = 0, isSuccess = true, Message = "自动同步成功"
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error("YJEmployeeBP.AutoSyncCommodityInfoExt 异常", ex);
                return(new ResultDTO <Jinher.AMP.BTP.Deploy.CustomDTO.YJEmployee.JdCommoditySearchDTO> {
                    ResultCode = 1, isSuccess = false, Message = ex.Message
                });
            }
        }
Example #14
0
 /// <summary>
 /// 导入严选商品信息
 /// </summary>
 public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO <Jinher.AMP.BTP.Deploy.CustomDTO.YJEmployee.JdCommoditySearchDTO> ImportYXCommodityDataExt(System.Collections.Generic.List <Jinher.AMP.BTP.Deploy.JdCommodityDTO> JdComList, System.Guid AppId)
 {
     try
     {
         JdCommoditySearchDTO JdComDTO = new JdCommoditySearchDTO();
         var           SPUIdLis        = YXSV.GetAllSPU();
         List <string> SPUIds          = JdComList.Select(s => s.JDCode).ToList();
         //严选商品池不存在的SKUid
         JdComDTO.InvalidData = SPUIds.Except(SPUIdLis).ToList();
         //店铺中已存在的严选
         JdComDTO.RepeatData = Commodity.ObjectSet().Where(p => SPUIds.Contains(p.JDCode) && !p.IsDel && p.AppId == AppId).Select(s => s.JDCode).ToList();
         //严选商品表中已存在的备注编码
         JdComDTO.JdRepeatData = JdCommodity.ObjectSet().Where(p => SPUIds.Contains(p.JDCode) && !p.IsDel && p.AppId == AppId && p.State != 1).Select(s => s.JDCode).ToList();
         if (JdComDTO.InvalidData.Any() || JdComDTO.JdRepeatData.Any())
         {
             return(new ResultDTO <Jinher.AMP.BTP.Deploy.CustomDTO.YJEmployee.JdCommoditySearchDTO> {
                 Data = JdComDTO, ResultCode = 1, isSuccess = false, Message = "存在重复备注编码和无效备注编码,请核对后再导入~"
             });
         }
         //获取运费模板
         var            FreightTemplateInfo = FreightTemplate.ObjectSet().FirstOrDefault(p => p.AppId == AppId && p.IsDefault == 1);
         ContextSession contextSession      = ContextFactory.CurrentThreadContext;
         Guid           userId = this.ContextDTO.LoginUserID;
         //获取不到商品类目的
         List <string> NoCategoryData = new List <string>();
         foreach (var input in JdComList)
         {
             JdCommodity JdCom = JdCommodity.CreateJdCommodity();
             JdCom.Barcode           = input.JDCode;
             JdCom.TaxRate           = input.TaxRate;
             JdCom.InputRax          = input.InputRax;
             JdCom.TaxClassCode      = input.TaxClassCode;
             JdCom.State             = 0; //是否补全
             JdCom.SubId             = userId;
             JdCom.SubTime           = DateTime.Now;
             JdCom.AppId             = input.AppId;
             JdCom.JDCode            = input.JDCode;
             JdCom.FreightTemplateId = FreightTemplateInfo.Id;
             JdCom.SaleAreas         = "430000,220000,420000,210000,310000,120000,140000,410000,320000,340000,350000,510000,440000,450000,500000,370000,530000,460000,610000,110000,230000,360000,620000,330000,640000,520000,130000,630000";//出去港澳台 新疆 西藏
             JdCom.No_Code           = input.JDCode;
             JdCom.ErQiCode          = input.ErQiCode;
             JdCom.IsAssurance       = input.IsAssurance;
             JdCom.IsReturns         = input.IsReturns;
             JdCom.Isnsupport        = input.Isnsupport;
             JdCom.ServiceSettingId  = input.ServiceSettingId;
             JdCom.TechSpecs         = input.TechSpecs;
             JdCom.SaleService       = input.SaleService;
             JdCom.CategoryName      = input.CategoryName;
             JdCom.VideoName         = input.VideoName;
             contextSession.SaveObject(JdCom);
         }
         int count = contextSession.SaveChanges();
         return(new ResultDTO <Jinher.AMP.BTP.Deploy.CustomDTO.YJEmployee.JdCommoditySearchDTO> {
             Data = JdComDTO, ResultCode = 0, isSuccess = true, Message = "导入成功"
         });
     }
     catch (Exception ex)
     {
         LogHelper.Error("YXCommodityBP.ImportYXCommodityDataExt 异常", ex);
         return(new ResultDTO <Jinher.AMP.BTP.Deploy.CustomDTO.YJEmployee.JdCommoditySearchDTO> {
             isSuccess = false, ResultCode = 2, Message = ex.Message
         });
     }
 }