using MyCode.Project.Domain.Message.Response.Lxm; using MyCode.Project.Domain.Model; using MyCode.Project.Domain.Repositories; using MyCode.Project.Infrastructure.Enumeration; using MyCode.Project.Infrastructure.Exceptions; using MyCode.Project.Repositories.Lxm; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MyCode.Project.Services.BLL { public class PreOrderBLL { private readonly LxmInfraRepository _lxmInfraRepository; private readonly IRepository _repository; public PreOrderBLL(LxmInfraRepository lxmInfraRepository, IRepository repository) { _lxmInfraRepository = lxmInfraRepository; _repository = repository; } #region HandlePreOrder(处理单个的预售单) /// /// 处理单个的预售单 /// public void HandlePreOrder(ChangeRecordResp record) { var strSheetId = record.SheetId.ToString(); //因为有些数据是删除了 if (record.Flag != 100) { return; } var sheet = ToPreLxmSheet(record); //补充单号 var mssqlSheet = _lxmInfraRepository.GetPreSheet(record.SheetId); if (mssqlSheet == null) { throw new BaseException($"预售单sheetid={record.SheetId}在BusPresalesSheet中找不到数据"); } sheet.Sheet = mssqlSheet.Sheet; var items = ToPreLxmSheetItem(record.SheetId); _repository.AddQueue(sheet); _repository.AddQueue(items); } #endregion #region ToLxmSheet(转换为MYSQL订单主表的实体) /// /// 转换为MYSQL订单主表的实体 /// /// private LxmSheet ToPreLxmSheet(ChangeRecordResp record) { var sheet = new LxmSheet(); if (record.TotalAmount < 0) { sheet.Direct = -1; } else { sheet.Direct = 1; } sheet.Id = record.SheetId.ToString(); sheet.ShopId = record.ShopId.ToString(); sheet.Balance = Math.Abs(record.Balance); sheet.CreateTime = record.CreateTime; sheet.CustomerId = record.CustomerId?.ToString(); sheet.CustomerName = record.CustomerName; sheet.TotalAmount = Math.Abs(record.TotalAmount); sheet.Type = (int)LxmRecordType.PreSalesSheet; sheet.EditTime = record.EditTime; sheet.UpdateTime = DateTime.Now; //add by florent 2023-10-30 sheet.IsFirstOrder = record.IsFirstOrder; sheet.IsNewMemberOrder = record.IsNewMemberOrder; if (record.MemberId != null) { sheet.MemberId = record.MemberId.ToString(); sheet.MemberName = record.MemberName; sheet.MemberMobile = record.MemberMobile; } if (record.ClerkId != null) { sheet.OrderClerkId = record.ClerkId.ToString(); sheet.OrderClerkName = record.ClerkName; sheet.OrderClerkMobile = record.ClerkMobile; } if (record.PlatformSource != null) { sheet.PlatformSource = record.PlatformSource; } if (record.IsRepurchase != null) { sheet.IsRepurchase = record.IsRepurchase; } //预售的实际支付金额 sheet.NoBalancePayAmount = Math.Abs(record.TotalAmount-record.Balance); return sheet; } #endregion #region ToPreLxmSheetItem(转换层流行美的订单明细) /// /// 转换层流行美的订单明细 /// /// /// private List ToPreLxmSheetItem(Guid sheetId) { var items = _lxmInfraRepository.GetPreSheetItems(sheetId); if (items == null || items.Count == 0) { throw new BaseException($"预售单SheetId={sheetId}找不到明细"); } var returnList = new List(); foreach (var item in items) { var returnItem = new LxmSheetItem() { Id = item.Id.ToString(), NoBalanceUnitPrice = Math.Abs(item.NoBalanceUnitPrice), NoBalanceAmount = Math.Abs(item.NoBalanceUnitPrice) * Math.Abs(item.Qty), Qty = Math.Abs(item.Qty), SalesSheetId = sheetId.ToString(), TopCategoryId = item.TopId.ToString(), Name = item.Name, ItemId = item.ItemId.ToString(), HasChildNode = 0, //预售单全部都是商品 ItemType = (int)OrderItemType.Goods, InBlanceUnitPrice = Math.Abs(item.InBlanceUnitPrice) }; returnItem.InBlanceAmount = returnItem.InBlanceUnitPrice * returnItem.Qty; returnItem.NoBalancePayAmount = returnItem.NoBalanceAmount; returnItem.NoBalancePayUnitPrice = returnItem.NoBalanceUnitPrice; if (item.Qty < 0) { returnItem.Direct = -1; } else { returnItem.Direct = 1; } returnList.Add(returnItem); } return returnList; } #endregion } }