using BBWY.Common.Http; using BBWY.Common.Models; using BBWY.Server.Model; using BBWY.Server.Model.Dto; using Microsoft.Extensions.Caching.Memory; using Newtonsoft.Json; using QuanTan.SDK.Client; using QuanTan.SDK.Model; using System.Linq; using static BBWY.Server.Model.Enums; namespace BBWY.Server.Business { public class QuanTanBusiness : PlatformSDKBusiness { public override Enums.Platform Platform => Enums.Platform.拳探; private QuanTanOrderClient quanTanOrderClient; public QuanTanBusiness(IMemoryCache memoryCache, NLogManager nLogManager, RestApiService restApiService) : base(memoryCache, nLogManager) { this.quanTanOrderClient = new QuanTanOrderClient(restApiService, nLogManager.Default()); } public override PayPurchaseOrderResponse PayPurchaseOrder(PayPurchaseOrderRequest payPurchaseOrderRequest) { var qtResponse = quanTanOrderClient.PayOrder(new QuanTanPayOrderRequest { orderId = payPurchaseOrderRequest.OrderId, userAccount = payPurchaseOrderRequest.AppToken }, payPurchaseOrderRequest.AppKey, payPurchaseOrderRequest.AppSecret); if (qtResponse.Status == 200) return new PayPurchaseOrderResponse { Success = true, PurchaseOrderState = PurchaseOrderState.等待采购 }; if (qtResponse.Message != null && qtResponse.Message.Contains("已支付")) { throw new BusinessException("无需重复支付"); //var res = quanTanOrderClient.GetOrderDetail(new QuanTanGetOrderDetailRequest //{ // orderId = payPurchaseOrderRequest.OrderId, // userAccount = payPurchaseOrderRequest.AppToken //}, payPurchaseOrderRequest.AppKey, payPurchaseOrderRequest.AppSecret); //if (res.Status == 200) //{ // PurchaseOrderState purchaseOrder = PurchaseOrderState.待发货; // switch (res.Data.Status) // { // case -1: // purchaseOrder = PurchaseOrderState.已取消; // break; // case 0: // purchaseOrder = PurchaseOrderState.待发货; // break; // case 1: // purchaseOrder = PurchaseOrderState.待收货; // break; // case 2: // case 3: // purchaseOrder = PurchaseOrderState.已完成; // break; // } // return new PayPurchaseOrderResponse { Success = true, PurchaseOrderState = purchaseOrder }; //} } if (qtResponse.Message != null && qtResponse.Message.Contains("已删除")) { return new PayPurchaseOrderResponse { Success = true, PurchaseOrderState = PurchaseOrderState.已取消 }; } return new PayPurchaseOrderResponse { Success = false, Msg = qtResponse.Message }; } public override CancelPurchaseOrderResponse CancelPurchaseOrder(CancelPurchaseOrderRequest request) { var qtResponse = quanTanOrderClient.CancelOrder(new QuanTanCancelOrderRequest { orderId = request.OrderId, userAccount = request.AppToken, remark = request.Remark, }, request.AppKey, request.AppSecret); if (qtResponse.Status == 200) return new CancelPurchaseOrderResponse { Success = true }; if (qtResponse.Message != null && qtResponse.Message.Contains("已删除")) { return new CancelPurchaseOrderResponse { Success = true }; } return new CancelPurchaseOrderResponse { Success = false, Msg = qtResponse.Message }; //将数据库设置取消 } public override PreviewOrderResponse PreviewOrder(PreviewOrderReuqest previewOrderReuqest) { var quantanPreviewOrderRequest = new QuanTanPreviewOrderRequest() { clientOrderId = "", userAccount = previewOrderReuqest.AppToken, receipt = new QuanTanPreviewOrderReceipt() { province = previewOrderReuqest.Consignee.Province, city = previewOrderReuqest.Consignee.City, area = previewOrderReuqest.Consignee.County, town = previewOrderReuqest.Consignee.Town, address = previewOrderReuqest.Consignee.Address, phone = previewOrderReuqest.Consignee.Mobile, realName = previewOrderReuqest.Consignee.ContactName }, buyInfo = previewOrderReuqest.CargoParamList.Select(p => new QuanTanPreviewOrderProduct() { productId = p.ProductId, productSku = p.SkuId, quantity = p.Quantity }).ToList() }; var qtResponse = quanTanOrderClient.PreviewOrder(quantanPreviewOrderRequest, previewOrderReuqest.AppKey, previewOrderReuqest.AppSecret); if (qtResponse.Status != 200) throw new BusinessException(qtResponse.Message); return new PreviewOrderResponse() { TotalAmount = qtResponse.Data.TotalPrice, FreightAmount = qtResponse.Data.PostagePrice, ProductAmount = qtResponse.Data.ProductPrice, Extensions = qtResponse.Data.CartIds //OrderTradeType= new OrderTradeTypeResponse() }; } public override CreateOnlinePurchaseOrderResponse FastCreateOrder(CreateOnlinePurchaseOrderRequest createOnlinePurchaseOrderRequest) { var quantanCreateOrderRequest = new QuanTanCreateOrderRequest() { clientOrderId = createOnlinePurchaseOrderRequest.OrderId, userAccount = createOnlinePurchaseOrderRequest.AppToken, cartIds = createOnlinePurchaseOrderRequest.Extensions, autoPay = createOnlinePurchaseOrderRequest.AutoPay, remark = createOnlinePurchaseOrderRequest.Remark, receipt = new QuanTanCreateOrderReceipt() { province = createOnlinePurchaseOrderRequest.Consignee.Province, city = createOnlinePurchaseOrderRequest.Consignee.City, area = createOnlinePurchaseOrderRequest.Consignee.County, town = createOnlinePurchaseOrderRequest.Consignee.Town, address = createOnlinePurchaseOrderRequest.Consignee.Address, phone = createOnlinePurchaseOrderRequest.Consignee.Mobile, realName = createOnlinePurchaseOrderRequest.Consignee.ContactName }, extended = JsonConvert.SerializeObject(new { BuyerAccount = createOnlinePurchaseOrderRequest.AppToken, BelongSkus = createOnlinePurchaseOrderRequest.SourceSku, createOnlinePurchaseOrderRequest.SourceShopName, createOnlinePurchaseOrderRequest.IntoStoreType }) }; var qtResponse = quanTanOrderClient.CreateOrder(quantanCreateOrderRequest, createOnlinePurchaseOrderRequest.AppKey, createOnlinePurchaseOrderRequest.AppSecret); if (qtResponse.Status != 200) throw new BusinessException(qtResponse.Message); var payStatus = !string.IsNullOrEmpty(qtResponse.Data.PayStatus) ? qtResponse.Data.PayStatus.ToLower() : string.Empty; //if (payStatus != "success") // throw new BusinessException($"拳探账户余额不足,支付失败,请前往拳探进行手动支付"); return new CreateOnlinePurchaseOrderResponse() { PurchaseOrderId = qtResponse.Data.OrderId, Sn = qtResponse.Data.OrderSn, IsPay = payStatus == "success" }; } public override OnlinePurchaseOrderSimpleResponse GetOrderSimpleInfo(GetOrderInfoRequest getOrderInfoRequest) { var qtResponse = quanTanOrderClient.GetOrderDetail(new QuanTanGetOrderDetailRequest() { orderId = getOrderInfoRequest.OrderId, userAccount = getOrderInfoRequest.AppToken }, getOrderInfoRequest.AppKey, getOrderInfoRequest.AppSecret); if (qtResponse.Status != 200) throw new BusinessException($"获取订单详情失败{getOrderInfoRequest.OrderId},{qtResponse.Message}"); return new OnlinePurchaseOrderSimpleResponse() { PurchaseOrderId = getOrderInfoRequest.OrderId, Sn = qtResponse.Data.OrderSn, FreightAmount = qtResponse.Data.TotalPostage, ProductAmount = qtResponse.Data.ProductPrice, TotalAmount = qtResponse.Data.TotalPrice, ItemList = qtResponse.Data.OrderProduct.Select(o => new OnlinePurchaseOrderSkuSimpleResponse() { ProductAmount = o.ProductPrice, FreightAmount = o.PostagePrice, Price = o.Price, ProductId = o.ProductId, SkuId = o.ProductSku, Quantity = o.Quantity }).ToList() }; } } }