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.
228 lines
10 KiB
228 lines
10 KiB
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 System.Text;
|
|
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.已取消 };
|
|
}
|
|
throw new BusinessException(qtResponse.Message);
|
|
|
|
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 };
|
|
}
|
|
|
|
throw new BusinessException(qtResponse.Message);
|
|
|
|
|
|
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 stringBuilder = new StringBuilder();
|
|
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
|
|
})
|
|
};
|
|
stringBuilder.AppendLine($"QuanTan Origin Request\r\n{JsonConvert.SerializeObject(quantanCreateOrderRequest)}");
|
|
|
|
var qtResponse = quanTanOrderClient.CreateOrder(quantanCreateOrderRequest, createOnlinePurchaseOrderRequest.AppKey, createOnlinePurchaseOrderRequest.AppSecret);
|
|
|
|
stringBuilder.AppendLine($"QuanTan Origin Response\r\n{JsonConvert.SerializeObject(qtResponse)}");
|
|
//nLogManager.Default().Info($"CreateOrderToQuanTan Origin Return Data {JsonConvert.SerializeObject(qtResponse)}");
|
|
nLogManager.Default().Info(stringBuilder.ToString());
|
|
|
|
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()
|
|
};
|
|
}
|
|
}
|
|
}
|
|
|