2025-07-08 20:10:02 +08:00

87 lines
3.3 KiB
C#

using MyCode.Project.Domain.Model;
using MyCode.Project.Domain.Repositories;
using MyCode.Project.Infrastructure.Common;
using MyCode.Project.Infrastructure.JackYun;
using MyCode.Project.Repositories;
using MyCode.Project.Repositories.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyCode.Project.Services.Implementation
{
public class JackYunTaskService : ServiceBase , IJackYunTaskService
{
private IJackYunService _jackYunService;
private IJackOrdersRepository _jackOrdersRepository;
private IJackOrdersItemRepository _jackOrdersItemRepository;
public JackYunTaskService(IJackOrdersRepository jackOrdersRepository
, IJackOrdersItemRepository jackOrdersItemRepository
,IJackYunService jackYunService)
{
_jackOrdersRepository = jackOrdersRepository;
_jackOrdersItemRepository = jackOrdersItemRepository;
_jackYunService = jackYunService;
}
#region TaskGetJackYunOrder()
/// <summary>
/// 调度运行抓吉客云销售订单
/// </summary>
/// <param name="now"></param>
public void TaskGetJackYunOrder(string now)
{
DateTime runTime = DateTime.Parse(now);
var list = _jackYunService.testTradeFullInfoGet(runTime);
SetOrder(list);
}
#endregion
#region SetOrder()
/// <summary>
/// 把吉客云订单存进本地数据库
/// </summary>
/// <param name="trades"></param>
[TransactionCallHandler]
public void SetOrder(List<TradesItem> trades)
{
var ids = trades.Select(t => t.tradeId).Distinct().ToList();
ids = _jackOrdersRepository.Queryable().Where(t => ids.Contains(t.TradeId)).Select(t => t.TradeId).Distinct().ToList();
if (ids.Count > 0)
trades = trades.Where(t => !ids.Contains(t.tradeId)).ToList();
List<JackOrders> jackOrdersList = new List<JackOrders>();
List<JackOrdersItem> ordersItemList = new List<JackOrdersItem>();
trades.ForEach(t =>
{
JackOrders jackOrders = new JackOrders();
jackOrders = AutoMapperHelper.AutoMappToSingle<JackOrders, TradesItem>(t);
jackOrders.Id = Guid.NewGuid();
jackOrders.Status = 0;
jackOrders.UpdateTime = DateTime.Now;
jackOrders.CreateTime = DateTime.Now;
if (t.goodsDetail != null)
{
var items = AutoMapperHelper.AutoMappToList<JackOrdersItem, GoodsDetailItem>(t.goodsDetail);
items.ForEach(k =>
{
k.JackOrdersId = jackOrders.Id;
});
jackOrdersList.Add(jackOrders);
ordersItemList.AddRange(items);
}
});
if (jackOrdersList.Count > 0)
{
_jackOrdersRepository.Add(jackOrdersList);
_jackOrdersItemRepository.Add(ordersItemList);
}
}
#endregion
}
}