You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

580 lines
33 KiB

using BBWYB.Common.Extensions;
using BBWYB.Common.Http;
using BBWYB.Common.Log;
using BBWYB.Common.Models;
using BBWYB.Server.Business.Extensions;
using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Dto;
using FreeSql;
using Newtonsoft.Json;
using SDKAdapter;
using SDKAdapter.OperationPlatform.Client;
using SDKAdapter.OperationPlatform.Models;
using System.Linq.Expressions;
using System.Security.Cryptography;
using Yitter.IdGenerator;
namespace BBWYB.Server.Business
{
public class OrderBusiness : BaseBusiness, IDenpendency
{
private OP_PlatformClientFactory opPlatformClientFactory;
private RestApiService restApiService;
public OrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory, RestApiService restApiService) : base(fsql, nLogManager, idGenerator)
{
this.opPlatformClientFactory = opPlatformClientFactory;
this.restApiService = restApiService;
}
private ISelect<Order, OrderConsignee, OrderCost> GetOrderListQueryConditions(QueryOrderRequest request)
{
var select = fsql.Select<Order, OrderConsignee, OrderCost>()
.LeftJoin((o, ocs, oct) => o.Id == ocs.OrderId)
.LeftJoin((o, ocs, oct) => o.Id == oct.OrderId);
if (!string.IsNullOrEmpty(request.OrderId))
select = select.Where((o, ocs, oct) => o.Id == request.OrderId);
else if (!string.IsNullOrEmpty(request.OrderSn))
select = select.Where((o, ocs, oct) => o.OrderSn == request.OrderSn);
else
{
if (!string.IsNullOrEmpty(request.Sku) || !string.IsNullOrEmpty(request.SourceSku) || !string.IsNullOrEmpty(request.ProductId))
{
var childSelect = fsql.Select<OrderSku>().As("osku")
.WhereIf(!string.IsNullOrEmpty(request.Sku), osku => osku.SkuId == request.Sku)
.WhereIf(!string.IsNullOrEmpty(request.SourceSku), osku => osku.BelongSkuId == request.SourceSku)
.WhereIf(!string.IsNullOrEmpty(request.ProductId), osku => osku.ProductId == request.ProductId);
select = select.Where((o, ocs, oct) => childSelect.Where(osku => osku.OrderId == o.Id).Any());
}
if (!string.IsNullOrEmpty(request.PurchaseOrderId))
{
var childSelect = fsql.Select<OrderPurchaseInfo>().As("opi")
.Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId);
select = select.Where((o, ocs, oct) => childSelect.Where(opi => opi.OrderId == o.Id).Any());
}
select = select.WhereIf(request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState.,
(o, ocs, oct) => o.OrderState == request.OrderState)
.WhereIf(request.OrderState == Enums.OrderState., (o, ocs, oct) => o.OrderState == Enums.OrderState. ||
o.OrderState == Enums.OrderState.)
.WhereIf(request.OrderState == Enums.OrderState., (o, ocs, oct) => o.OrderState == Enums.OrderState. ||
o.OrderState == Enums.OrderState.)
.WhereIf(request.OrderState == Enums.OrderState., (o, ocs, oct) => o.OrderState == Enums.OrderState. ||
o.OrderState == Enums.OrderState.)
.WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.OrderState != Enums.OrderState. && o.IsPurchased == true)
.WhereIf(request.StartDate != null, (o, ocs, oct) => o.StartTime >= request.StartDate)
.WhereIf(request.EndDate != null, (o, ocs, oct) => o.StartTime <= request.EndDate)
.WhereIf(!string.IsNullOrEmpty(request.ClientOrderId), (o, ocs, oct) => o.ClientOrderId == request.ClientOrderId)
.WhereIf(!string.IsNullOrEmpty(request.SourceShopName), (o, ocs, oct) => o.SourceShopName == request.SourceShopName);
}
select = select.WhereIf(request.ShopId != null, (o, ocs, oct) => o.ShopId == request.ShopId);
//select = select.Where((o, ocs, oct) => o.ShopId == searchOrderRequest.ShopId);
return select;
}
private Expression<Func<Order, OrderConsignee, OrderCost, Order>> GetOrderListField()
{
return (o, ocs, oct) => new Order()
{
Id = o.Id,
OrderSn = o.OrderSn,
EndTime = o.EndTime,
FreightPrice = o.FreightPrice,
ModifyTime = o.ModifyTime,
OrderPayment = o.OrderPayment,
OrderSellerPrice = o.OrderSellerPrice,
OrderState = o.OrderState,
OrderTotalPrice = o.OrderTotalPrice,
OrderType = o.OrderType,
PayType = o.PayType,
Platform = o.Platform,
ShopId = o.ShopId,
StartTime = o.StartTime,
VenderRemark = o.VenderRemark,
PurchaseRemark = o.PurchaseRemark,
BuyerRemark = o.BuyerRemark,
//WaybillNo = o.WaybillNo,
SellerPreferentialAmount = o.SellerPreferentialAmount,
PreferentialAmount = o.PreferentialAmount,
ClientOrderId = o.ClientOrderId,
SourceShopName = o.SourceShopName,
//SourceSku = o.SourceSku,
//ExpressName = o.ExpressName,
IsPurchased = o.IsPurchased,
BuyerAccount = o.BuyerAccount,
InPackAmount = o.InPackAmount,
IsWaitPack = o.IsWaitPack,
IntoStoreType = o.IntoStoreType,
PayTime = o.PayTime,
ContactName = ocs.ContactName,
Address = ocs.Address,
Province = ocs.Province,
County = ocs.County,
Town = ocs.Town,
City = ocs.City,
Mobile = ocs.Mobile,
TelePhone = ocs.TelePhone,
DeliveryExpressFreight = oct.DeliveryExpressFreight,
PlatformCommissionAmount = oct.PlatformCommissionAmount,
PlatformCommissionRatio = oct.PlatformCommissionRatio,
Profit = oct.Profit,
PurchaseAmount = oct.PurchaseAmount,
IsManualEdited = oct.IsManualEdited,
PackConfigState = o.PackConfigState,
SkuAmount = oct.SkuAmount,
PurchaseFreight = oct.PurchaseFreight
};
}
public OrderListResponse GetOrderList(QueryOrderRequest request)
{
if (request.EndDate != null)
request.EndDate = request.EndDate.Value.Date.AddDays(1).AddSeconds(-1);
var select = GetOrderListQueryConditions(request).OrderByDescending((o, ocs, oct) => o.StartTime)
.Count(out var total)
.Page(request.PageIndex, request.PageSize);
var orderSourceList = select.ToList(GetOrderListField());
var orderList = orderSourceList.Map<IList<OrderResponse>>();
var orderIdList = orderList.Select(o => o.Id).ToList();
if (orderList.Count() > 0)
{
#region 查询关联信息
var orderPurchaseRelationInfoList = fsql.Select<OrderPurchaseRelationInfo>().Where(ori => orderIdList.Contains(ori.OrderId)).ToList();
#endregion
#region 查询快递单信息
var purchaseExpressOrderList = fsql.Select<ExpressOrderRelationInfo, PurchaseExpressOrder>()
.InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo)
.Where((eori, peo) => orderIdList.Contains(eori.OrderId)).ToList((eori, peo) => new PurchaseExpressOrderResponse
{
CreateTime = peo.CreateTime,
ExpressContent = peo.ExpressContent,
ExpressChangedTime = peo.ExpressChangedTime,
ExpressState = peo.ExpressState,
IsSubscribeKD100 = peo.IsSubscribeKD100,
OrderId = eori.OrderId,
PurchaseOrderId = eori.PurchaseOrderId,
ShopId = eori.ShopId.Value,
SourceExpressId = peo.SourceExpressId,
SourceExpressName = peo.SourceExpressName,
TargetExpressId = peo.TargetExpressId,
TargetExpressName = peo.TargetExpressName,
WaybillNo = peo.WaybillNo
});
#endregion
#region 处理订单成本明细
var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true).ToList<OrderCostDetailResponse>();
foreach (var order in orderList)
order.OrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id).ToList();
#endregion
#region 处理采购信息
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(op => orderIdList.Contains(op.OrderId) && op.IsEnabled == true).ToList<OrderPurchaseInfoResponse>();
var orderPurchaseSkuInfoList = fsql.Select<OrderPurchaseSkuInfo>().Where(o => orderIdList.Contains(o.OrderId)).ToList<OrderPurchaseSkuInfoResponse>();
foreach (var order in orderList)
{
order.OrderPurchaseInfoList = orderPurchaseInfoList.Where(op => op.OrderId == order.Id).ToList();
foreach (var orderPurchaseInfo in order.OrderPurchaseInfoList)
{
orderPurchaseInfo.OrderPurchaseSkuInfoList = orderPurchaseSkuInfoList.Where(opsi => opsi.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList();
orderPurchaseInfo.PurchaseExpressOrderList = purchaseExpressOrderList.Where(peo => peo.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList();
}
}
#endregion
#region 处理SKU
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 &&
orderIdList.Contains(osku.OrderId)).ToList<OrderSkuResponse>();
foreach (var order in orderList)
{
order.ItemList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList();
}
#endregion
#region 处理SKU的快递单
foreach (var purchaseExpressOrder in purchaseExpressOrderList)
{
purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationInfoList, orderPurchaseSkuInfoList);
var currentOrderSkuList = orderSkuList.Where(osku => !string.IsNullOrEmpty(purchaseExpressOrder.BelongSkuIds) &&
osku.OrderId == purchaseExpressOrder.OrderId &&
purchaseExpressOrder.BelongSkuIds.Contains(osku.SkuId)).ToList();
foreach (var osku in currentOrderSkuList)
{
if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo))
continue;
osku.PurchaseExpressOrderList.Add(purchaseExpressOrder);
}
//var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(po => po.PurchaseOrderId == purchaseExpressOrder.PurchaseOrderId);
//if (purchaseOrder == null)
// continue;
//if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴)
//{
// var purchaseSkuIds = orderPurchaseSkuInfoList.Where(posku => posku.WaybillNo == purchaseExpressOrder.WaybillNo &&
// posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId)
// .Select(posku => posku.PurchaseSkuId).ToList();
// var orderSkuIds = orderPurchaseRelationInfoList.Where(ori => ori.PurchaseOrderId == purchaseOrder.PurchaseOrderId &&
// purchaseSkuIds.Contains(ori.PurchaseSkuId))
// .Select(ori => ori.BelongSkuId)
// .Distinct()
// .ToList();
// var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId &&
// orderSkuIds.Contains(osku.SkuId)).ToList();
// foreach (var osku in currentOrderSkuList)
// {
// if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo))
// continue;
// osku.PurchaseExpressOrderList.Add(purchaseExpressOrder);
// }
//}
//else
//{
// var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId &&
// purchaseOrder.BelongSkuIds.Contains(osku.SkuId)).ToList();
// foreach (var osku in currentOrderSkuList)
// {
// if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo))
// continue;
// osku.PurchaseExpressOrderList.Add(purchaseExpressOrder);
// }
//}
}
#endregion
}
return new OrderListResponse()
{
Count = total,
Items = orderList
};
}
public IList<PurchaseExpressOrderResponse> GetPurchaseExpressOrderList(QueryExpressOrderRequest request)
{
var purchaseExpressOrderList = fsql.Select<ExpressOrderRelationInfo, PurchaseExpressOrder>()
.InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo)
.Where((eori, peo) => eori.OrderId == request.OrderId).ToList((eori, peo) => new PurchaseExpressOrderResponse
{
CreateTime = peo.CreateTime,
ExpressContent = peo.ExpressContent,
ExpressChangedTime = peo.ExpressChangedTime,
ExpressState = peo.ExpressState,
IsSubscribeKD100 = peo.IsSubscribeKD100,
OrderId = eori.OrderId,
PurchaseOrderId = eori.PurchaseOrderId,
ShopId = eori.ShopId.Value,
SourceExpressId = peo.SourceExpressId,
SourceExpressName = peo.SourceExpressName,
TargetExpressId = peo.TargetExpressId,
TargetExpressName = peo.TargetExpressName,
WaybillNo = peo.WaybillNo
});
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(op => op.OrderId == request.OrderId && op.IsEnabled == true).ToList<OrderPurchaseInfoResponse>();
var orderPurchaseRelationList = fsql.Select<OrderPurchaseRelationInfo>().Where(opri => opri.OrderId == request.OrderId && opri.SourceSkuId == request.SourceSkuId).ToList();
var orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(posku => posku.OrderId == request.OrderId).ToList<OrderPurchaseSkuInfoResponse>();
var orderSku = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId && osku.BelongSkuId == request.SourceSkuId).ToOne();
IList<PurchaseExpressOrderResponse> list = new List<PurchaseExpressOrderResponse>();
#region 处理SKU的快递单
foreach (var purchaseExpressOrder in purchaseExpressOrderList)
{
purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationList, orderPurchaseSkuList);
if (!string.IsNullOrEmpty(purchaseExpressOrder.BelongSkuIds))
{
if (purchaseExpressOrder.BelongSkuIds.Contains(orderSku.SkuId))
{
if (!list.Any(x => x.WaybillNo == purchaseExpressOrder.WaybillNo))
list.Add(purchaseExpressOrder);
}
}
}
//foreach (var purchaseOrder in orderPurchaseInfoList)
//{
// if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴)
// {
// var currentRelationList = orderPurchaseRelationList.Where(ori => ori.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList();
// var waybillNos = orderPurchaseSkuList.Where(posku => posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId &&
// currentRelationList.Any(opri => opri.PurchaseSkuId == posku.PurchaseSkuId))
// .Select(x => x.WaybillNo)
// .ToList();
// foreach (var waybillNo in waybillNos)
// {
// var peo = purchaseExpressOrderList.FirstOrDefault(x => x.WaybillNo == waybillNo);
// if (peo != null && !list.Any(x => x.WaybillNo == waybillNo && x.PurchaseOrderId == purchaseOrder.PurchaseOrderId))
// list.Add(peo);
// }
// }
// else
// {
// var currentSkuList = orderSkuList.Where(osku => purchaseOrder.BelongSkuIds.Contains(osku.SkuId)).Select(osku => osku.BelongSkuId).Distinct().ToList();
// if (currentSkuList.Contains(request.SourceSkuId))
// {
// var peoList = purchaseExpressOrderList.Where(x => x.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList();
// foreach (var peo in peoList)
// {
// if (!list.Any(x => x.WaybillNo == peo.WaybillNo && x.PurchaseOrderId == purchaseOrder.PurchaseOrderId))
// list.Add(peo);
// }
// }
// }
//}
#endregion
return list;
}
public IList<PurchaseExpressOrderResponse> GetPurchaseExpressOrderList(IList<string> orderIds)
{
var purchaseExpressOrderList = fsql.Select<ExpressOrderRelationInfo, PurchaseExpressOrder>()
.InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo)
.Where((eori, peo) => orderIds.Contains(eori.OrderId)).ToList((eori, peo) => new PurchaseExpressOrderResponse
{
CreateTime = peo.CreateTime,
ExpressContent = peo.ExpressContent,
ExpressChangedTime = peo.ExpressChangedTime,
ExpressState = peo.ExpressState,
IsSubscribeKD100 = peo.IsSubscribeKD100,
OrderId = eori.OrderId,
PurchaseOrderId = eori.PurchaseOrderId,
ShopId = eori.ShopId.Value,
SourceExpressId = peo.SourceExpressId,
SourceExpressName = peo.SourceExpressName,
TargetExpressId = peo.TargetExpressId,
TargetExpressName = peo.TargetExpressName,
WaybillNo = peo.WaybillNo
});
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(op => orderIds.Contains(op.OrderId) && op.IsEnabled == true).ToList<OrderPurchaseInfoResponse>();
var orderPurchaseRelationList = fsql.Select<OrderPurchaseRelationInfo>().Where(opri => orderIds.Contains(opri.OrderId)).ToList();
var orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(posku => orderIds.Contains(posku.OrderId)).ToList<OrderPurchaseSkuInfoResponse>();
#region 处理SKU的快递单
foreach (var purchaseExpressOrder in purchaseExpressOrderList)
{
purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationList, orderPurchaseSkuList);
}
#endregion
return purchaseExpressOrderList;
}
public void CancelOrder(CancelOrderRequest request, string mdsToken)
{
opPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.Platform).CancelOrder(new OP_CancelOrderRequest()
{
AppKey = request.AppKey,
AppSecret = request.AppSecret,
AppToken = request.AppToken,
OrderId = request.OrderId,
Platform = (AdapterEnums.PlatformType)request.Platform,
Remark = request.Remark
});
fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, Enums.OrderState.).ExecuteAffrows();
try
{
restApiService.SendRequest("https://bbwy.qiyue666.com", "api/BatchPurchase/UpdatePurchaseOrderState", new
{
OrderId = request.OrderId,
PurchaseOrderState = Enums.OrderState.
}, null, HttpMethod.Post);
}
catch
{
}
//var sql = $"update purchaseorderv2 set OrderState=6 where Id='{request.OrderId}'";
////取消C端采购单
//restApiService.SendRequest("https://bbwy.qiyue666.com",
// "/Api/Sql/ExecuteNonQuery",
// new { sql = sql.AESEncrypt() },
// new Dictionary<string, string>() { { "Authorization", $"Bearer {mdsToken}" } },
// HttpMethod.Post);
try
{
//取消齐库的任务
var qikuResponse = restApiService.SendRequest("http://qiku.qiyue666.com/",
$"/api/PackPurchaseTask/CancelOrderPackTask?orderId={request.OrderId}",
null,
null,
HttpMethod.Post);
if (qikuResponse.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception(qikuResponse.Content);
}
catch (Exception ex)
{
nLogManager.GetLogger($"取消打包任务-{request.OrderId}").Error(ex, JsonConvert.SerializeObject(request));
}
}
public void EditPrice(OP_EditPriceRequest request)
{
var client = opPlatformClientFactory.GetClient(request.Platform);
client.EditPrice(new OP_EditPriceRequest()
{
AppKey = request.AppKey,
AppSecret = request.AppSecret,
AppToken = request.AppToken,
OrderId = request.OrderId,
EditItems = request.EditItems
});
var orderListResponse = client.GetOrderList(new OP_QueryOrderRequest()
{
AppKey = request.AppKey,
AppSecret = request.AppSecret,
AppToken = request.AppToken,
OrderId = request.OrderId,
PageIndex = 1,
PageSize = 1,
SortTimeField = AdapterEnums.SortTimeField.Modify,
SortType = AdapterEnums.SortType.Desc
});
var order = orderListResponse.Items.FirstOrDefault();
var orderCost = fsql.Select<OrderCost>(request.OrderId).ToOne();
IList<IUpdate<OrderSku>> updates_orderSku = new List<IUpdate<OrderSku>>();
IUpdate<OrderCost> updateOrderCost = null;
foreach (var orderSku in order.OrderSkuList)
{
updates_orderSku.Add(fsql.Update<OrderSku>(orderSku.Id).Set(osku => osku.Price, orderSku.SkuPrice)
.Set(osku => osku.BuyerPayFreight, orderSku.FreightAmount)
.Set(osku => osku.InPackAmount, orderSku.PackAmount));
}
if (orderCost != null)
{
orderCost.CalculationOrderCostCostAndProfit(order.OrderTotalAmount,
orderCost.SkuAmount ?? 0M,
orderCost.PurchaseFreight ?? 0M,
orderCost.OutPackAmount ?? 0M,
orderCost.DeliveryExpressFreight ?? 0M);
updateOrderCost = fsql.Update<OrderCost>().SetSource(orderCost);
}
fsql.Transaction(() =>
{
fsql.Update<Order>(request.OrderId).Set(o => o.OrderTotalPrice, order.OrderTotalAmount)
.Set(o => o.OrderSellerPrice, order.OrderProductAmount)
.Set(o => o.FreightPrice, order.FreightAmount)
.ExecuteAffrows();
updateOrderCost?.ExecuteAffrows();
if (updates_orderSku.Count() > 0)
{
foreach (var update in updates_orderSku)
update.ExecuteAffrows();
}
});
#region 通知C端
restApiService.SendRequest("https://bbwy.qiyue666.com",
"/Api/PurchaseOrder/QuanTanEditPriceCallback",
new { orderId = request.OrderId },
null,
HttpMethod.Post);
#endregion
}
public void EditVenderRemark(EditVenderRemarkRequest request)
{
fsql.Update<Order>(request.OrderId).Set(o => o.VenderRemark, request.VenderRemark).ExecuteAffrows();
}
public void EditOrderSkuRemark(EditOrderSkuRemarkRequest request)
{
fsql.Update<OrderSku>().Set(osku => osku.Remark, request.Remark)
.Where(osku => osku.OrderId == request.OrderId)
.Where(osku => osku.SkuId == request.SkuId)
.ExecuteAffrows();
}
public void QiKuPublishPackAmount(QiKuPublishPackAmountRequest request)
{
}
public void CheckSku(CheckSkuRequest request)
{
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
if (dbOrder == null)
throw new BusinessException($"订单{request.OrderId}不存在");
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList();
var orderSku = orderSkuList.FirstOrDefault(osku => osku.BelongSkuId == request.SourceSkuId);
if (orderSku == null)
throw new BusinessException($"订单{request.OrderId}的归属sku中不存在{request.SourceSkuId}");
if (orderSku.IsCheck == true)
throw new BusinessException("已验收,无需重复验收");
IUpdate<Order> updateOrder = null;
IUpdate<OrderSku> updateOrderSku = null;
orderSku.IsCheck = true;
updateOrderSku = fsql.Update<OrderSku>(orderSku.Id).Set(osku => osku.IsCheck, true);
var oldOrderState = dbOrder.OrderState;
dbOrder.CalculationOrderState(fsql, orderSkuList, null);
if (oldOrderState != dbOrder.OrderState)
updateOrder = fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState);
fsql.Transaction(() =>
{
updateOrderSku?.ExecuteAffrows();
updateOrder?.ExecuteAffrows();
});
}
public void CheckComputationOrder(string orderId)
{
var order = fsql.Select<Order>(orderId).ToOne();
if (order == null)
throw new BusinessException("未查询到订单");
if (order.OrderState != Enums.OrderState.)
throw new BusinessException("订单状态不正确,只有待核算的订单才允许核算");
var orderCost = fsql.Select<OrderCost>(orderId).ToOne();
if (orderCost == null)
throw new BusinessException("未查询到订单成本");
if (Math.Abs(orderCost.Profit ?? 0) > 1M)
throw new BusinessException("订单利润绝对值不能大于1");
fsql.Update<Order>(orderId).Set(o => o.OrderState, Enums.OrderState.).ExecuteAffrows();
SendPurchaseOrderStateToC(orderId, Enums.OrderState.);
}
private void SendPurchaseOrderStateToC(string orderId, Enums.OrderState orderState)
{
try
{
restApiService.SendRequest("https://bbwy.qiyue666.com", "api/BatchPurchase/UpdatePurchaseOrderState", new
{
OrderId = orderId,
PurchaseOrderState = orderState
}, null, HttpMethod.Post);
}
catch
{
}
}
}
}