2022-01-11

## 1.2.9 开源社区版:
【修复】修复全局定义微信配置引用的配置文件命名错误问题。
【修复】修复自动生成sku模式价格出现货号重复情况,#I4Q4WU

## 0.0.6 会员先行版:
【新增】新增微信自定义交易组件,实现微信视频号直播带货功能。
This commit is contained in:
JianWeie
2022-01-11 01:36:28 +08:00
parent 5c0e5877c6
commit 4164e59919
97 changed files with 11484 additions and 26 deletions

View File

@@ -27,6 +27,7 @@ using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Utility.Extensions;
using CoreCms.Net.Utility.Helper;
using CoreCms.Net.WeChat.Service.HttpClients;
using CoreCms.Net.WeChat.Service.TransactionComponent.Enum;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
@@ -59,7 +60,9 @@ namespace CoreCms.Net.Web.Admin.Controllers
private readonly ICoreCmsLogisticsServices _logisticsServices;
private readonly ICoreCmsPaymentsServices _paymentsServices;
private readonly ICoreCmsSettingServices _settingServices;
private readonly IWeChatTransactionComponentOrderServices _tcOrderServices;
private readonly ICoreCmsUserWeChatInfoServices _userWeChatInfoServices;
private readonly IWeChatTransactionComponentDeliveryCompanyServices _tcDeliveryCompanyServices;
private readonly IRedisOperationRepository _redisOperationRepository;
private readonly WeChat.Service.HttpClients.IWeChatApiHttpClientFactory _weChatApiHttpClientFactory;
@@ -80,7 +83,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
, ICoreCmsLogisticsServices logisticsServices
, ICoreCmsBillPaymentsServices billPaymentsServices
, ICoreCmsPaymentsServices paymentsServices
, ICoreCmsSettingServices settingServices, ICoreCmsUserWeChatInfoServices userWeChatInfoServices, IRedisOperationRepository redisOperationRepository, ICoreCmsBillDeliveryServices billDeliveryServices, IWeChatApiHttpClientFactory weChatApiHttpClientFactory, ICoreCmsOrderItemServices orderItemServices)
, ICoreCmsSettingServices settingServices, IWeChatTransactionComponentOrderServices tcOrderServices, ICoreCmsUserWeChatInfoServices userWeChatInfoServices, IWeChatTransactionComponentDeliveryCompanyServices tcDeliveryCompanyServices, IRedisOperationRepository redisOperationRepository, ICoreCmsBillDeliveryServices billDeliveryServices, IWeChatApiHttpClientFactory weChatApiHttpClientFactory, ICoreCmsOrderItemServices orderItemServices)
{
_webHostEnvironment = webHostEnvironment;
_coreCmsOrderServices = coreCmsOrderServices;
@@ -92,7 +95,9 @@ namespace CoreCms.Net.Web.Admin.Controllers
_billPaymentsServices = billPaymentsServices;
_paymentsServices = paymentsServices;
_settingServices = settingServices;
_tcOrderServices = tcOrderServices;
_userWeChatInfoServices = userWeChatInfoServices;
_tcDeliveryCompanyServices = tcDeliveryCompanyServices;
_redisOperationRepository = redisOperationRepository;
_billDeliveryServices = billDeliveryServices;
_weChatApiHttpClientFactory = weChatApiHttpClientFactory;
@@ -482,6 +487,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
var storeList = await _storeServices.QueryAsync();
var logistics = await _logisticsServices.QueryListByClauseAsync(p => p.isDelete == false);
var deliveryCompany = await _tcDeliveryCompanyServices.GetCaChe();
var result = await _coreCmsOrderServices.GetOrderShipInfo(entity.id);
if (!result.status)
@@ -508,6 +514,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
orderModel = result.data,
storeList,
logistics,
deliveryCompany
};
return jm;
@@ -1642,12 +1649,12 @@ namespace CoreCms.Net.Web.Admin.Controllers
#region ============================================================
// POST: Api/CoreCmsOrder/DeleteOrder/10
/// <summary>
/// 批量删除订单
/// 重新同步发货
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost]
[Description("批量删除订单")]
[Description("重新同步发货")]
public async Task<AdminUiCallBack> RefreshDelivery([FromBody] FMStringId entity)
{
var jm = new AdminUiCallBack();
@@ -1665,6 +1672,10 @@ namespace CoreCms.Net.Web.Admin.Controllers
return jm;
}
//发货同步处理
await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.TransactionComponentOrderShipSync, delivery.deliveryId);
jm.code = 0;
jm.msg = "提交任务成功,请核实远端状态";
@@ -1698,5 +1709,77 @@ namespace CoreCms.Net.Web.Admin.Controllers
return jm;
}
#endregion
#region
// POST: Api/CoreCmsOrder/GetTcOrder/10
/// <summary>
/// 获取交易组件订单信息
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost]
[Description("获取交易组件订单信息")]
public async Task<AdminUiCallBack> GetTcOrder([FromBody] FMStringId entity)
{
var jm = new AdminUiCallBack();
var orderModel = await _coreCmsOrderServices.QueryByClauseAsync(p => p.orderId == entity.id);
if (orderModel == null)
{
jm.msg = "不存在此订单信息";
return jm;
}
var tcOrder = await _tcOrderServices.QueryByClauseAsync(p => p.outOrderId == entity.id);
if (tcOrder == null)
{
jm.msg = "不存在此订单交易组件推送记录";
return jm;
}
var weChatUserInfo = await _userWeChatInfoServices.QueryByClauseAsync(p => p.userId == orderModel.userId);
if (weChatUserInfo == null)
{
jm.msg = "用户微信数据拉取失败";
return jm;
}
//获取小程序认证
var accessToken = WeChatCacheAccessTokenHelper.GetWxOpenAccessToken();
var client = _weChatApiHttpClientFactory.CreateWxOpenClient();
var request = new ShopOrderGetRequest();
request.AccessToken = accessToken;
request.OutOrderId = orderModel.orderId;
request.OpenId = weChatUserInfo.openid;
var response = await client.ExecuteShopOrderGetAsync(request);
var orderStatus = EnumHelper.EnumToList<OrderStatus>();
var deliveryTypeEnum = EnumHelper.EnumToList<DeliveryTypeEnum>();
jm.code = response.IsSuccessful() ? 0 : 1;
jm.msg = response.IsSuccessful() ? "获取成功" : response.ErrorMessage;
jm.data = new
{
response.Order,
orderStatus,
deliveryTypeEnum
};
jm.otherData = accessToken;
//更新拉取订单
if (response.Order is { OrderId: > 0 } && tcOrder.orderId == null)
{
await _tcOrderServices.UpdateAsync(
p => new WeChatTransactionComponentOrder() { orderId = response.Order.OrderId },
p => p.id == tcOrder.id && p.outOrderId == tcOrder.outOrderId);
}
return jm;
}
#endregion
}
}