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

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>
[Description("审核拒绝")]
Refuse = 3
Refuse = 3,
/// <summary>
/// 用户取消
/// </summary>
[Description("用户取消")]
Cancel = 4
}
/// <summary>

View File

@@ -17,6 +17,7 @@ using CoreCms.Net.Configuration;
using CoreCms.Net.IServices;
using CoreCms.Net.Loging;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.WeChat.Service.Enums;
using CoreCms.Net.WeChat.Service.HttpClients;
using InitQ.Abstractions;
using InitQ.Attributes;
@@ -88,47 +89,54 @@ namespace CoreCms.Net.RedisMQ.Subscribe
var accessToken = WeChatCacheAccessTokenHelper.GetWxOpenAccessToken();
var client = _weChatApiHttpClientFactory.CreateWxOpenClient();
var request = new ShopAftersaleAddRequest();
var request = new ShopECAftersaleAddRequest();
request.AccessToken = accessToken;
request.OutOrderId = orderModel.orderId;
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.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)
{
request.Type = (int)GlobalEnumVars.ShopAftersaleAddType.退;
request.Type = (int)AfterSalesEnum.AfterSaleType.退;
}
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)
{
request.Type = (int)GlobalEnumVars.ShopAftersaleAddType.退退;
request.Type = (int)AfterSalesEnum.AfterSaleType.退退;
}
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.CreateTime = aftersale.createTime;
request.IsFinishAll = false;
request.RefundReasonType = (int)AfterSalesEnum.AfterSalesReasonType.;
request.RefundReason = aftersale.reason;
request.ProductList = new List<ShopAftersaleAddRequest.Types.Product>();
aftersaleItems.ForEach(p =>
//新自定义交易组件,只能申请一个商品售后。
request.Product = new ShopECAftersaleAddRequest.Types.Product()
{
var product = new ShopAftersaleAddRequest.Types.Product();
product.Count = p.nums;
product.OutProductId = p.goodsId.ToString();
product.OutSKUId = p.productId.ToString();
request.ProductList.Add(product);
});
Count = aftersaleItems[0].nums,
OutProductId = aftersaleItems[0].goodsId.ToString(),
OutSKUId = aftersaleItems[0].productId.ToString()
};
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,
LogType.RedisMessageQueue, "自定义交易组件-同步创建售后单", JsonConvert.SerializeObject(response));

View File

@@ -75,6 +75,10 @@ namespace CoreCms.Net.WeChat.Service.Configuration
/// 自定义交易组件用户确认收货
/// </summary>
public const string OpenProductOrderConfirm = "open_product_order_confirm";
/// <summary>
/// 用户取消售后申请
/// </summary>
public const string AfterSaleUserCancel = "aftersale_user_cancel";
#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="2">审核通过</option>
<option value="3">审核拒绝</option>
<option value="4">用户取消</option>
</select>
</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);
callBack = await _mediator.Send(new OpenProductOrderConfirmEventCommand() { EventObj = openProductOrderConfirmEvent });
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:
NLogUtil.WriteFileLog(LogLevel.Info, LogType.WxPost, "接收服务器推送处理xml内容/Event无匹配", JsonConvert.SerializeObject(sourceXml));