制作自定义交易组件用户前端售后,微信内取消售后操作

This commit is contained in:
大灰灰
2022-06-30 23:43:16 +08:00
parent dc408b8596
commit 9bf0a42289
7 changed files with 182 additions and 20 deletions

View File

@@ -1107,7 +1107,12 @@ namespace CoreCms.Net.Configuration
/// 审核拒绝 /// 审核拒绝
/// </summary> /// </summary>
[Description("审核拒绝")] [Description("审核拒绝")]
Refuse = 3 Refuse = 3,
/// <summary>
/// 用户取消
/// </summary>
[Description("用户取消")]
Cancel = 4
} }
/// <summary> /// <summary>

View File

@@ -17,6 +17,7 @@ using CoreCms.Net.Configuration;
using CoreCms.Net.IServices; using CoreCms.Net.IServices;
using CoreCms.Net.Loging; using CoreCms.Net.Loging;
using CoreCms.Net.Model.Entities; using CoreCms.Net.Model.Entities;
using CoreCms.Net.WeChat.Service.Enums;
using CoreCms.Net.WeChat.Service.HttpClients; using CoreCms.Net.WeChat.Service.HttpClients;
using InitQ.Abstractions; using InitQ.Abstractions;
using InitQ.Attributes; using InitQ.Attributes;
@@ -88,47 +89,54 @@ namespace CoreCms.Net.RedisMQ.Subscribe
var accessToken = WeChatCacheAccessTokenHelper.GetWxOpenAccessToken(); var accessToken = WeChatCacheAccessTokenHelper.GetWxOpenAccessToken();
var client = _weChatApiHttpClientFactory.CreateWxOpenClient(); var client = _weChatApiHttpClientFactory.CreateWxOpenClient();
var request = new ShopAftersaleAddRequest(); var request = new ShopECAftersaleAddRequest();
request.AccessToken = accessToken; request.AccessToken = accessToken;
request.OutOrderId = orderModel.orderId; request.OutOrderId = orderModel.orderId;
request.OutAftersaleOrderId = orderModel.billAftersalesId; request.OutAftersaleOrderId = orderModel.billAftersalesId;
request.PagePath = "pages/member/afterSales/detail/detail?aftersalesId=" + orderModel.billAftersalesId;
request.RefundFee = Convert.ToInt32(aftersale.refundAmount * 100);
request.OpenId = tcOrderModel.openid; request.OpenId = tcOrderModel.openid;
//request.PagePath = "pages/member/afterSales/detail/detail?aftersalesId=" + orderModel.billAftersalesId;
request.RefundAmount = Convert.ToInt32(aftersale.refundAmount * 100);
if (aftersale.refundAmount > 0 && aftersale.type == (int)GlobalEnumVars.BillAftersalesIsReceive.Refund) if (aftersale.refundAmount > 0 && aftersale.type == (int)GlobalEnumVars.BillAftersalesIsReceive.Refund)
{ {
request.Type = (int)GlobalEnumVars.ShopAftersaleAddType.退; request.Type = (int)AfterSalesEnum.AfterSaleType.退;
} }
else if (aftersale.refundAmount > 0 && aftersale.type == (int)GlobalEnumVars.BillAftersalesIsReceive.Reship) else if (aftersale.refundAmount > 0 && aftersale.type == (int)GlobalEnumVars.BillAftersalesIsReceive.Reship)
{ {
request.Type = (int)GlobalEnumVars.ShopAftersaleAddType.退退; request.Type = (int)AfterSalesEnum.AfterSaleType.退退;
} }
else if (Convert.ToInt32(aftersale.refundAmount) == 0 && aftersale.type == (int)GlobalEnumVars.BillAftersalesIsReceive.Reship) else if (Convert.ToInt32(aftersale.refundAmount) == 0 && aftersale.type == (int)GlobalEnumVars.BillAftersalesIsReceive.Reship)
{ {
request.Type = (int)GlobalEnumVars.ShopAftersaleAddType.退退; request.Type = (int)AfterSalesEnum.AfterSaleType.退退;
} }
else if (Convert.ToInt32(aftersale.refundAmount) == 0 && aftersale.type == (int)GlobalEnumVars.BillAftersalesIsReceive.Refund) else if (Convert.ToInt32(aftersale.refundAmount) == 0 && aftersale.type == (int)GlobalEnumVars.BillAftersalesIsReceive.Refund)
{ {
request.Type = (int)GlobalEnumVars.ShopAftersaleAddType.退; request.Type = (int)AfterSalesEnum.AfterSaleType.退;
} }
request.Status = 0; request.RefundReasonType = (int)AfterSalesEnum.AfterSalesReasonType.;
request.CreateTime = aftersale.createTime; request.RefundReason = aftersale.reason;
request.IsFinishAll = false;
request.ProductList = new List<ShopAftersaleAddRequest.Types.Product>(); //新自定义交易组件,只能申请一个商品售后。
aftersaleItems.ForEach(p => request.Product = new ShopECAftersaleAddRequest.Types.Product()
{ {
var product = new ShopAftersaleAddRequest.Types.Product(); Count = aftersaleItems[0].nums,
product.Count = p.nums; OutProductId = aftersaleItems[0].goodsId.ToString(),
product.OutProductId = p.goodsId.ToString(); OutSKUId = aftersaleItems[0].productId.ToString()
product.OutSKUId = p.productId.ToString(); };
request.ProductList.Add(product);
});
var response = await client.ExecuteShopAftersaleAddAsync(request); //aftersaleItems.ForEach(p =>
//{
// var product = new ShopECAftersaleAddRequest.Types.Product();
// product.Count = p.nums;
// product.OutProductId = p.goodsId.ToString();
// product.OutSKUId = p.productId.ToString();
// request.Product.Add(product);
//});
var response = await client.ExecuteShopECAftersaleAddAsync(request);
NLogUtil.WriteAll(response.IsSuccessful() ? NLog.LogLevel.Info : NLog.LogLevel.Error, NLogUtil.WriteAll(response.IsSuccessful() ? NLog.LogLevel.Info : NLog.LogLevel.Error,
LogType.RedisMessageQueue, "自定义交易组件-同步创建售后单", JsonConvert.SerializeObject(response)); LogType.RedisMessageQueue, "自定义交易组件-同步创建售后单", JsonConvert.SerializeObject(response));

View File

@@ -75,6 +75,10 @@ namespace CoreCms.Net.WeChat.Service.Configuration
/// 自定义交易组件用户确认收货 /// 自定义交易组件用户确认收货
/// </summary> /// </summary>
public const string OpenProductOrderConfirm = "open_product_order_confirm"; public const string OpenProductOrderConfirm = "open_product_order_confirm";
/// <summary>
/// 用户取消售后申请
/// </summary>
public const string AfterSaleUserCancel = "aftersale_user_cancel";
#endregion #endregion

View File

@@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CoreCms.Net.WeChat.Service.Enums
{
public class AfterSalesEnum
{
/// <summary>
/// 售后类型
/// </summary>
public enum AfterSaleType
{
退 = 1,
退退 = 2,
}
/// <summary>
/// 售后描述说明
/// </summary>
public enum AfterSalesReasonType
{
= 1,
= 2,
= 3,
= 5,
= 6,
= 7,
= 8,
= 9,
72 = 10,
= 11,
= 12,
= 14,
= 15
}
/// <summary>
/// 售后状态
/// </summary>
public enum AfterSalesState
{
= 1,
退 = 2,
退 = 4,
退 = 5,
退 = 6,
= 7,
= 8,
退 = 11,
退 = 13,
退 = 21,
= 22,
退 = 23,
退 = 24,
退 = 25
}
}
}

View File

@@ -0,0 +1,74 @@
/***********************************************************************
* Project: CoreCms.Net *
* Web: https://CoreCms.Net *
* ProjectName: 核心内容管理系统 *
* Author: 大灰灰 *
* Email: JianWeie@163.com *
* CreateTime: 2020-08-13 23:57:23
* Description: 暂无
***********************************************************************/
using System;
using System.Threading;
using System.Threading.Tasks;
using CoreCms.Net.Configuration;
using CoreCms.Net.IServices;
using CoreCms.Net.Loging;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Utility.Helper;
using CoreCms.Net.WeChat.Service.HttpClients;
using CoreCms.Net.WeChat.Service.Models;
using MediatR;
using Newtonsoft.Json;
using SKIT.FlurlHttpClient.Wechat.Api;
using SKIT.FlurlHttpClient.Wechat.Api.Events;
namespace CoreCms.Net.WeChat.Service.Mediator
{
/// <summary>
/// 表示 TEXT 事件的数据
/// </summary>
public class AftersaleUserCancelEventCommand : IRequest<WeChatApiCallBack>
{
public AftersaleUserCancelEvent EventObj { get; set; }
}
/// <summary>
/// 用户取消售后申请
/// </summary>
public class AftersaleUserCancelEventCommandHandler : IRequestHandler<AftersaleUserCancelEventCommand, WeChatApiCallBack>
{
private readonly ICoreCmsBillAftersalesServices _aftersalesServices;
public AftersaleUserCancelEventCommandHandler(ICoreCmsBillAftersalesServices aftersalesServices)
{
_aftersalesServices = aftersalesServices;
}
public async Task<WeChatApiCallBack> Handle(AftersaleUserCancelEventCommand request, CancellationToken cancellationToken)
{
var jm = new WeChatApiCallBack() { Status = true };
if (request.EventObj != null)
{
try
{
await _aftersalesServices.UpdateAsync(p => new CoreCmsBillAftersales()
{
status = (int)GlobalEnumVars.BillAftersalesStatus.Cancel
},
p => p.aftersalesId == request.EventObj.AftersaleOrder.OutAftersaleOrderId);
}
catch (Exception e)
{
NLogUtil.WriteFileLog(NLog.LogLevel.Info, LogType.WxPost, "接收服务器推送", "用户取消售后申请", e);
}
}
return await Task.FromResult(jm);
}
}
}

View File

@@ -47,6 +47,7 @@
<option value="1">未审核</option> <option value="1">未审核</option>
<option value="2">审核通过</option> <option value="2">审核通过</option>
<option value="3">审核拒绝</option> <option value="3">审核拒绝</option>
<option value="4">用户取消</option>
</select> </select>
</div> </div>
</div> </div>

View File

@@ -223,6 +223,11 @@ namespace CoreCms.Net.Web.WebApi.Controllers.WeChatOAuth
var openProductOrderConfirmEvent = client.DeserializeEventFromXml<SKIT.FlurlHttpClient.Wechat.Api.Events.OpenProductOrderConfirmEvent>(msgXml); var openProductOrderConfirmEvent = client.DeserializeEventFromXml<SKIT.FlurlHttpClient.Wechat.Api.Events.OpenProductOrderConfirmEvent>(msgXml);
callBack = await _mediator.Send(new OpenProductOrderConfirmEventCommand() { EventObj = openProductOrderConfirmEvent }); callBack = await _mediator.Send(new OpenProductOrderConfirmEventCommand() { EventObj = openProductOrderConfirmEvent });
break; break;
//自定义交易组件-用户取消售后申请
case EventType.AfterSaleUserCancel:
var aftersaleUserCancelEvent = client.DeserializeEventFromXml<SKIT.FlurlHttpClient.Wechat.Api.Events.AftersaleUserCancelEvent>(msgXml);
callBack = await _mediator.Send(new AftersaleUserCancelEventCommand() { EventObj = aftersaleUserCancelEvent });
break;
default: default:
NLogUtil.WriteFileLog(LogLevel.Info, LogType.WxPost, "接收服务器推送处理xml内容/Event无匹配", JsonConvert.SerializeObject(sourceXml)); NLogUtil.WriteFileLog(LogLevel.Info, LogType.WxPost, "接收服务器推送处理xml内容/Event无匹配", JsonConvert.SerializeObject(sourceXml));