步步为盈
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.

168 lines
7.5 KiB

using BBWY.Common.Http;
using BBWY.Common.Models;
using BBWY.Server.Model;
using BBWY.Server.Model.Dto;
using Microsoft.Extensions.Caching.Memory;
2 years ago
using Newtonsoft.Json;
using QuanTan.SDK.Client;
using QuanTan.SDK.Model;
using System.Linq;
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());
}
2 years ago
public override PayPurchaseOrderResponse PayPurchaseOrder(PayPurchaseOrderRequest payPurchaseOrderRequest)
{
var data = payPurchaseOrderRequest.PurchaseAccount;
var qtResponse = quanTanOrderClient.PayOrder(new QuanTanPayOrderRequest { orderId= payPurchaseOrderRequest.OrderId,
userAccount= data.AccountName
}, payPurchaseOrderRequest.AppKey, payPurchaseOrderRequest.AppSecret);
if (qtResponse.Status != 200)
return new PayPurchaseOrderResponse
{
Success = false, Msg=qtResponse.Message
};
return new PayPurchaseOrderResponse { Success = true };
}
public override CancelPurchaseOrderResponse CancelPurchaseOrder(CancelPurchaseOrderRequest request)
{
var data = request.PurchaseAccount;
var qtResponse = quanTanOrderClient.CancelOrder(new QuanTanCancelOrderRequest
{
orderId = request.OrderId,
userAccount = data.AccountName,
remark =request.Remark,
}, request.PurchaseAccount.AppKey, request.PurchaseAccount.AppSecret);
if (qtResponse.Status != 200)
return new CancelPurchaseOrderResponse
{
Success = false,
Msg = qtResponse.Message
};
//将数据库设置取消
return new CancelPurchaseOrderResponse { Success = true };
}
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()
};
}
2 years ago
public override CreateOnlinePurchaseOrderResponse FastCreateOrder(CreateOnlinePurchaseOrderRequest createOnlinePurchaseOrderRequest)
{
var quantanCreateOrderRequest = new QuanTanCreateOrderRequest()
{
clientOrderId = createOnlinePurchaseOrderRequest.OrderId,
userAccount = createOnlinePurchaseOrderRequest.AppToken,
cartIds = createOnlinePurchaseOrderRequest.Extensions,
2 years ago
autoPay= createOnlinePurchaseOrderRequest.AutoPay,
2 years ago
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
2 years ago
},
extended = JsonConvert.SerializeObject(new
{
BuyerAccount = createOnlinePurchaseOrderRequest.AppToken,
createOnlinePurchaseOrderRequest.SourceSku,
createOnlinePurchaseOrderRequest.SourceShopName
})
2 years ago
};
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;
2 years ago
//if (payStatus != "success")
// throw new BusinessException($"拳探账户余额不足,支付失败,请前往拳探进行手动支付");
2 years ago
2 years ago
return new CreateOnlinePurchaseOrderResponse()
{
2 years ago
PurchaseOrderId = qtResponse.Data.OrderId,
IsPay = payStatus == "success"
2 years ago
};
}
public override OnlinePurchaseOrderSimpleResponse GetOrderSimpleInfo(GetOrderInfoRequest getOrderInfoRequest)
{
2 years ago
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,
FreightAmount = qtResponse.Data.TotalPostage,
ProductAmount = qtResponse.Data.ProductPrice,
TotalAmount = qtResponse.Data.TotalPrice,
ItemList = qtResponse.Data.OrderProduct.Select(o => new OnlinePurchaseOrderSkuSimpleResponse()
{
ProductAmount = o.ProductPrice,
Price = o.Price,
ProductId = o.ProductId,
SkuId = o.ProductSku,
Quantity = o.Quantity
}).ToList()
};
2 years ago
}
}
}