/// <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); }); }); }
/// <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); }
/// <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); }
/// <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 }); }
/// <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 }); }
/// <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; }
/// <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 }); }
/// <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 }); }
/// <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); } }
/// <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); } }
/// <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; }
/// <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 = "添加成功" }); }
/// <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 }); } }
/// <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 }); } }