using MyCode.Project.Domain.Message.Request.JackYun; using MyCode.Project.Domain.Message.Response.JackYun; using MyCode.Project.Domain.Repositories; using MyCode.Project.Infrastructure.Common; using MyCode.Project.Infrastructure.Enumeration; using MyCode.Project.Infrastructure.Exceptions; using MyCode.Project.Infrastructure.JackYun; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading; namespace MyCode.Project.Services.Implementation { public class JackYunService : ServiceBase, IJackYunService { private IYTKJTShopParameterRepository _yTKJTShopParameterRepository; public JackYunService(IYTKJTShopParameterRepository yTKJTShopParameterRepository) { _yTKJTShopParameterRepository = yTKJTShopParameterRepository; } DateTime startTime = DateTime.Parse("2025-08-01"); /// /// 请求开放平台服务 /// /// 开放接口方法名 /// 开放接口版本号(null表示默认) /// 请求业务数据 /// OpenResponse返回对象 public JackyunResponse Call(string method, string version, BaseRequestBizData bizData) { //接口返回值 JackyunResponse response = null; //返回值字符串 string strResponse = null; try { //请求吉客云开放接口。 strResponse = JackyunOpenHttpUtils.Post(method, version, bizData); } catch (Exception ex) { response = new JackyunResponse(); response.onFail(ex.Message, "CLIENT_EXCEPTION"); return response; } return JsonHelper.ToObject(strResponse); } #region 订单查询 /// /// 订单查询 /// /// 截止日期 /// /// public List testTradeFullInfoGet(DateTime now) { int total = 1; var shopConfigs = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C").ToList(); OrderTradeFullInfoGetRequestBizData requestBizData = new OrderTradeFullInfoGetRequestBizData(); //string value = "2025-06-15 00:00:00";// DateTime.Now.Date.AddDays(-5).ToString("yyyy-MM-dd HH:mm:ss") ; //string value1 = "2025-06-20 00:00:00";//DateTime.Now.Date.ToString("yyyy-MM-dd HH:mm:ss"); string value = now.Date.AddDays(-7).ToString("yyyy-MM-dd"); string value1 = now.Date.ToString("yyyy-MM-dd"); if (now.Date.AddDays(-7) < startTime) { value = startTime.ToString("yyyy-MM-dd"); } requestBizData.StartModified = "";// DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); requestBizData.EndModified = ""; //DateTime.ParseExact(value1, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); requestBizData.TradeNo = ""; requestBizData.HasTotal = total; requestBizData.PageSize = 200; requestBizData.PageIndex = 0; requestBizData.Fields = "TradeType,tradeStatus,consignTime,payTime,goodsDetail.barcode,tradeNo,orderNo,shopName,companyName,warehouseName,logisticName,mainPostid,goodsDetail.goodsNo,flagNames,columnExt,sourceAfterNo,goodsDetail.outerId,pickUpCode,expense.expenseFee,expense.expenseItemName,billDate,goodsPlatDiscountFee,goodsDetail.shareOrderDiscountFee,goodsDetail.shareFavourableAfterFee,goodsDetail.shareOrderPlatDiscountFee,customizeGoodsColumn9,goodsDetail.goodsId,goodsDetail.sellCount,goodsDetail.needProcessCount,goodsDetail.baseUnitSellCount,goodsDetail.assessmentCost,goodsDetail.compassSourceContentTypem,sourceTradeNo,shopId,warehouseId,scrollId,goodsDetail.unit"; requestBizData.StartCreated = "";// DateTime.ParseExact(value, "yyyy -MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); requestBizData.EndCreated = "";// DateTime.ParseExact(value1, "yyyy -MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); requestBizData.StartAuditTime = "";// DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); requestBizData.EndAuditTime = "";// DateTime.ParseExact(value1, "yyyy -MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); requestBizData.StartConsignTime = value;// value;// DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); requestBizData.EndConsignTime = value1;// value1;// DateTime.ParseExact(value1, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); //requestBizData.TradeStatus = 1010; requestBizData.TradeType = 1; requestBizData.SourceTradeNos = ""; requestBizData.ShopIds = null; // new long[] { 378761130654261100, 378761130654261100 }; List TradeTypeList = new List(); TradeTypeList.Add(1); TradeTypeList.Add(7); TradeTypeList.Add(8); List trades = new List(); TradeTypeList.ForEach(ty => { requestBizData.TradeType = ty; string lggl = JsonHelper.ToJson(requestBizData); LogHelper.Info(lggl); JackyunResponse response = Call(EnumAttribute.GetAttribute(ApiEnum.TRADEFULLINFOGET).Value, "1.0", requestBizData); string ll = JsonHelper.ToJson(response); LogHelper.Info(ll); if (response.code == "200") { var orderjson = JsonHelper.ToJson(response.result); var list1 = JsonHelper.ToObject>(orderjson); int pageIndex = 1; while (list1.data.trades != null && list1.data.trades.Count > 0) { list1.data.trades.ForEach(h => h.TradeType = ty); trades.AddRange(list1.data.trades); requestBizData.PageIndex = pageIndex; pageIndex++; Thread.Sleep(100); response = Call(EnumAttribute.GetAttribute(ApiEnum.TRADEFULLINFOGET).Value, "1.0", requestBizData); if (response.code == "200") { orderjson = JsonHelper.ToJson(response.result); list1 = JsonHelper.ToObject>(orderjson); } } } else { string msg = response.msg; throw new BaseException(msg); } }); var shocodes = shopConfigs.Select(t => t.FSHOPCODE).ToList(); trades = trades.Where(t => shocodes.Contains(t.shopCode)).ToList(); return trades; } #endregion #region 退货查询 /// /// 退货查询 /// /// 截止日期 /// /// public List GetReturnChangeList(DateTime now) { int total = 1; var shopConfigs = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C").ToList(); ReturnChangeGetRequestBizData requestBizData = new ReturnChangeGetRequestBizData(); //string value = "2025-06-15 00:00:00";// DateTime.Now.Date.AddDays(-5).ToString("yyyy-MM-dd HH:mm:ss") ; //string value1 = "2025-06-20 00:00:00";//DateTime.Now.Date.ToString("yyyy-MM-dd HH:mm:ss"); string value = now.Date.AddDays(-7).ToString("yyyy-MM-dd"); string value1 = now.Date.ToString("yyyy-MM-dd"); if (now.Date.AddDays(-7) < startTime) { value = startTime.ToString("yyyy-MM-dd"); } requestBizData.StartModified = "";// DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); requestBizData.StartDeliveryDate = value; requestBizData.EndDeliveryDate = value1; requestBizData.EndModified = ""; //DateTime.ParseExact(value1, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); requestBizData.TradeNo = ""; requestBizData.HasTotal = total; requestBizData.PageSize = 200; requestBizData.PageIndex = 0; requestBizData.StartModified = null;// DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); //requestBizData.TradeStatus = 1010; requestBizData.ShopIds = null; // new long[] { 378761130654261100, 378761130654261100 }; List TradeTypeList = new List(); TradeTypeList.Add(1005); List reslut = new List(); List trades = new List(); TradeTypeList.ForEach(ty => { requestBizData.ProcessStatusList = ""; string lggl = JsonHelper.ToJson(requestBizData); LogHelper.Info(lggl); JackyunResponse response = Call(EnumAttribute.GetAttribute(ApiEnum.RETURNCHANGE).Value, "1.0", requestBizData); string ll = JsonHelper.ToJson(response); LogHelper.Info(ll); if (response.code == "200") { var orderjson = JsonHelper.ToJson(response.result); var list1 = JsonHelper.ToObject>(orderjson); int pageIndex = 1; int TotalResults = list1.data.TotalResults; while (requestBizData.PageIndex* requestBizData.PageSize< TotalResults) { //list1.data.returnChangeList.ForEach(h => h.TradeType = ty); trades.AddRange(list1.data.returnChangeList); requestBizData.PageIndex = pageIndex; pageIndex++; Thread.Sleep(100); response = Call(EnumAttribute.GetAttribute(ApiEnum.RETURNCHANGE).Value, "1.0", requestBizData); if (response.code == "200") { orderjson = JsonHelper.ToJson(response.result); list1 = JsonHelper.ToObject>(orderjson); } } } else { string msg = response.msg; throw new BaseException(msg); } }); var shocodes = shopConfigs.Select(t => t.FSHOPCODE).ToList(); trades = trades.Where(t => shocodes.Contains(t.ShopCode)).ToList(); //reslut = trades.Select(t => new TradesItem { tradeId = t.TradeId, couponFee = 0, realFee = 0, shopCode = t.ShopCode ,orderNo=t.ReturnChangeNo, tradeNo =t.TradeNo //,isDelete=0, mainPostid=t.MainPostid, // companyName=t.CompanyName, // flagNames=t.FlagNames, // shopName=t.ShopName, // warehouseName=t.WarehouseName //}).ToList(); reslut = trades.Select(rc => new TradesItem { tradeId = rc.TradeAfterId.ToString(), couponFee = 0, realFee = 0, shopCode = rc.ShopCode, orderNo = rc.ReturnChangeNo, tradeNo = rc.TradeNo, isDelete = 0, mainPostid = rc.MainPostid, companyName = rc.CompanyName, flagNames = rc.FlagNames, shopName = rc.ShopName, warehouseName = rc.WarehouseName, warehouseCode = rc.WarehouseCode, logisticName = rc.LogisticName, shopId = rc.ShopId.ToString(), TradeType = 8, // 假设这是售后退货类型 consignTime = !string.IsNullOrWhiteSpace(rc.DeliveryTime) ? (DateTime?)DateTime.Parse(rc.DeliveryTime) : null, payTime = null, // 可根据需要设置 tradeStatus = int.Parse(rc.TradeAfterStatus), // 注意类型转换 warehouseId = rc.WarehouseId.ToString(), shopTypeCode = "", apiType = -114, // 默认值 ReturnChangeGoodsDetail = rc.ReturnChangeGoodsDetail }).ToList(); return reslut; } #endregion #region 获取吉客云采购入库 /// /// 获取吉客云采购入库 /// /// 截止日期 /// /// public List GetPurchaseInboundData(DateTime now) { int total = 1; var shopConfigs = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C" && t.FPURCHASERECEIVING == "1").ToList(); BusiOrderGoodsDocInRequest requestBizData = new BusiOrderGoodsDocInRequest(); //string value = "2025-06-15 00:00:00";// DateTime.Now.Date.AddDays(-5).ToString("yyyy-MM-dd HH:mm:ss") ; //string value1 = "2025-06-20 00:00:00";//DateTime.Now.Date.ToString("yyyy-MM-dd HH:mm:ss"); string value = now.Date.AddDays(-7).ToString("yyyy-MM-dd"); string value1 = now.Date.ToString("yyyy-MM-dd"); if (now.Date.AddDays(-7) < startTime) { value = startTime.ToString("yyyy-MM-dd"); } //101-采购入库 requestBizData.Inouttypes = "101"; requestBizData.InOutDateStart = new DateTimeOffset(DateTime.Parse(value)).ToUnixTimeMilliseconds().ToString() ; requestBizData.InOutDateEnd = new DateTimeOffset(DateTime.Parse(value1)).ToUnixTimeMilliseconds().ToString(); requestBizData.PageSize = 200; requestBizData.PageIndex = 0; requestBizData.Cols = "goodsdocNo,inOutDate,gmtCreate,inouttypeName,warehouseName,billNo,sourceBillNo,deliveryNo,currencyCode,currencyCodeName,currencyRate,createUserName,companyName,vendCustomerName,goodsdocRemark,receiveGoodsRemark,callbackStatus,applyCompanyName,applyDepartName,applyUserName,goodsNo,goodsName,skuName,skuBarcode,unitName,quantity,baceCurrencyCostPrice,baceCurrencyCostAmount,baceCurrencyNoTaxPrice,baceCurrencyNoTaxAmount,baceCurrencyWithTaxPrice,baceCurrencyWithTaxAmount,baceCurrencyTaxAmount,taxRate,transNoTaxPrice,transNoTaxAmount,transHasTaxPrice,transHasTaxAmount,transTaxAmount,isCertified,goodsDetailRemark,batchNo,serialNo,vendCode,warehouseCode,channelCode,serialSourceId,outBillNo,trackInOutNo,logisticName,logisticNo"; List TradeTypeList = new List(); TradeTypeList.Add(1005); List reslut = new List(); List trades = new List(); TradeTypeList.ForEach(ty => { string lggl = JsonHelper.ToJson(requestBizData); LogHelper.Info(lggl); JackyunResponse response = Call(EnumAttribute.GetAttribute(ApiEnum.STORAGEGOODSDOCINCOUNTS).Value, "1.0", requestBizData); string ll = JsonHelper.ToJson(response); LogHelper.Info(ll); if (response.code == "200") { var orderjson = JsonHelper.ToJson(response.result); var list1 = JsonHelper.ToObject(orderjson); int pageIndex = 1; string TotalResults = list1.contextId; while (list1.Data.Count>0) { trades.AddRange(list1.Data); requestBizData.PageIndex = pageIndex; requestBizData.contextId = TotalResults; pageIndex++; Thread.Sleep(100); response = Call(EnumAttribute.GetAttribute(ApiEnum.STORAGEGOODSDOCINCOUNTS).Value, "1.0", requestBizData); if (response.code == "200") { orderjson = JsonHelper.ToJson(response.result); list1 = JsonHelper.ToObject(orderjson); TotalResults = list1.contextId; } else { TotalResults = ""; } } } else { string msg = response.msg; throw new BaseException(msg); } }); //var shocodes = shopConfigs.Select(t => t.FPURCHASINGWAREHOUSECODE).ToList(); //trades = trades.Where(t => shocodes.Contains(t.warehouseCode)).ToList(); return trades; } #endregion #region 获取吉客云采购出库单 /// /// 获取吉客云采购出库单 /// /// 截止日期 /// /// public List GetStorageGoodsDocOutV2(DateTime now) { var shopConfigs = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C" && t.FPURCHASERECEIVING == "1").ToList(); StorageGoodsDocOutV2Request requestBizData = new StorageGoodsDocOutV2Request(); //string value = "2025-06-15 00:00:00";// DateTime.Now.Date.AddDays(-5).ToString("yyyy-MM-dd HH:mm:ss") ; //string value1 = "2025-06-20 00:00:00";//DateTime.Now.Date.ToString("yyyy-MM-dd HH:mm:ss"); string value = now.Date.AddDays(-7).ToString("yyyy-MM-dd"); string value1 = now.Date.ToString("yyyy-MM-dd"); if (now.Date.AddDays(-7) < startTime) { value = startTime.ToString("yyyy-MM-dd"); } //205采购退货 requestBizData.Inouttype = 205; requestBizData.StartDate = value; requestBizData.EndDate = value1; requestBizData.PageSize = 200; requestBizData.PageIndex = 0; requestBizData.SelelctFields = "*"; //"RecId,GoodsdocNo,BillNo,InOutDate,GmtCreate,Inouttype,InouttypeName,VendCustomerName,CurrencyCode,CurrencyRate,UserName,WarehouseCode,WarehouseName,Comment,Memo,LogisticName,LogisticNo,CompanyId,CompanyName,LogisticType,LogisticCode,InOutReason,SourceBillNo,ChannelId,ChannelCode,ChannelName,RedStatus,Field1,Field2,Field3,Field4,Field5,FinanceBillStatus,VendCustomerId,ApplyDepartId,ApplyDepartName,OutBillNo,LogisticList,GmtModified,DepartCode,ApplyCompanyName,ApplyCompanyCode,ApplyCompanyId,ApplyUserId,ApplyUserName,CompanyCode,GoodsDocDetailList,SendCompanyName,Send,SendTel,SendPhone,SendEmail,SendCountryName,SendProvinceName,SendCityName,SendTownName,SendStreetName,SendAddress,ReceiveCompanyName,Receive,ReceiveTel,ReceivePhone,ReceiveEmail,ReceiveCountryName,ReceiveProvinceName,ReceiveCityName,ReceiveTownName,ReceiveStreetName,ReceiveAddress"; List TradeTypeList = new List(); TradeTypeList.Add(1005); List reslut = new List(); List trades = new List(); TradeTypeList.ForEach(ty => { string lggl = JsonHelper.ToJson(requestBizData); LogHelper.Info(lggl); JackyunResponse response = Call(EnumAttribute.GetAttribute(ApiEnum.ERPSTORAGEGOODSDOCOUTV2).Value, "1.0", requestBizData); string ll = JsonHelper.ToJson(response); LogHelper.Info(ll); if (response.code == "200") { var orderjson = JsonHelper.ToJson(response.result); var list1 = JsonHelper.ToObject(orderjson); int pageIndex = 1; string TotalResults = list1.contextId; while (list1.Data.Count>0) { //list1.data.returnChangeList.ForEach(h => h.TradeType = ty); trades.AddRange(list1.Data); requestBizData.PageIndex = pageIndex; pageIndex++; Thread.Sleep(100); response = Call(EnumAttribute.GetAttribute(ApiEnum.ERPSTORAGEGOODSDOCOUTV2).Value, "1.0", requestBizData); if (response.code == "200") { orderjson = JsonHelper.ToJson(response.result); list1 = JsonHelper.ToObject(orderjson); } } } else { string msg = response.msg; throw new BaseException(msg); } }); //var shocodes = shopConfigs.Select(t => t.FSHOPCODE).ToList(); //trades = trades.Where(t => shocodes.Contains(t.ShopCode)).ToList(); ////reslut = trades.Select(t => new TradesItem { tradeId = t.TradeId, couponFee = 0, realFee = 0, shopCode = t.ShopCode ,orderNo=t.ReturnChangeNo, tradeNo =t.TradeNo ////,isDelete=0, mainPostid=t.MainPostid, //// companyName=t.CompanyName, //// flagNames=t.FlagNames, //// shopName=t.ShopName, //// warehouseName=t.WarehouseName ////}).ToList(); //reslut = trades.Select(rc => new TradesItem //{ // tradeId = rc.TradeAfterId.ToString(), // couponFee = 0, // realFee = 0, // shopCode = rc.ShopCode, // orderNo = rc.ReturnChangeNo, // tradeNo = rc.TradeNo, // isDelete = 0, // mainPostid = rc.MainPostid, // companyName = rc.CompanyName, // flagNames = rc.FlagNames, // shopName = rc.ShopName, // warehouseName = rc.WarehouseName, // warehouseCode = rc.WarehouseCode, // logisticName = rc.LogisticName, // shopId = rc.ShopId.ToString(), // TradeType = 8, // 假设这是售后退货类型 // consignTime = !string.IsNullOrWhiteSpace(rc.DeliveryTime) ? (DateTime?)DateTime.Parse(rc.DeliveryTime) : null, // payTime = null, // 可根据需要设置 // tradeStatus = int.Parse(rc.TradeAfterStatus), // 注意类型转换 // warehouseId = rc.WarehouseId.ToString(), // shopTypeCode = "", // apiType = -114, // 默认值 // ReturnChangeGoodsDetail = rc.ReturnChangeGoodsDetail //}).ToList(); //return reslut; return new List(); } #endregion } }