2025-11-04 11:36:19 +08:00

394 lines
20 KiB
C#

using MyCode.Project.Domain.Message.Request.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");
/// <summary>
/// 请求开放平台服务
/// </summary>
/// <param name="method">开放接口方法名</param>
/// <param name="version">开放接口版本号(null表示默认)</param>
/// <param name="bizData">请求业务数据</param>
/// <returns>OpenResponse返回对象</returns>
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<JackyunResponse>(strResponse);
}
#region
/// <summary>
/// 订单查询
/// </summary>
/// <param name="now">截止日期</param>
/// <returns></returns>
/// <exception cref="BaseException"></exception>
public List<TradesItem> 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<int> TradeTypeList = new List<int>();
TradeTypeList.Add(1);
TradeTypeList.Add(7);
TradeTypeList.Add(8);
List<TradesItem> trades = new List<TradesItem>();
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<TradeFullinfogetResp<TradeFullinfogetData>>(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<TradeFullinfogetResp<TradeFullinfogetData>>(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 退
/// <summary>
/// 退货查询
/// </summary>
/// <param name="now">截止日期</param>
/// <returns></returns>
/// <exception cref="BaseException"></exception>
public List<TradesItem> 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<int> TradeTypeList = new List<int>();
TradeTypeList.Add(1005);
List<TradesItem> reslut = new List<TradesItem>();
List<ReturnChangeListResp> trades = new List<ReturnChangeListResp>();
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<TradeFullinfogetResp<ReturnChangeData>>(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<TradeFullinfogetResp<ReturnChangeData>>(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
/// <summary>
/// 获取吉客云采购入库
/// </summary>
/// <param name="now">截止日期</param>
/// <returns></returns>
/// <exception cref="BaseException"></exception>
public List<BusiOrderGoodsDocInResponse> 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 = value;
requestBizData.InOutDateEnd = value1;
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<int> TradeTypeList = new List<int>();
TradeTypeList.Add(1005);
List<BusiOrderGoodsDocInResponse> reslut = new List<BusiOrderGoodsDocInResponse>();
List<BusiOrderGoodsDocInResponse> trades = new List<BusiOrderGoodsDocInResponse>();
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<BusiOrderGoodsDocInResponse2>(orderjson);
int pageIndex = 1;
string TotalResults = list1.contextId;
while (!string.IsNullOrWhiteSpace(TotalResults))
{
//list1.data.returnChangeList.ForEach(h => h.TradeType = ty);
trades.AddRange(list1.Data);
requestBizData.PageIndex = pageIndex;
pageIndex++;
Thread.Sleep(100);
response = Call(EnumAttribute.GetAttribute(ApiEnum.STORAGEGOODSDOCINCOUNTS).Value, "1.0", requestBizData);
if (response.code == "200")
{
orderjson = JsonHelper.ToJson(response.result);
}
}
}
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<BusiOrderGoodsDocInResponse>();
}
#endregion
}
}