### 0.3.3 专业版:

【新增】后台新增支付单查询功能,实现支付单微信反馈支付数据,防止出现极端情况下,导致的支付数据回调失败而影响订单业务。#I4ZRMR
【新增】后台新增发票上传功能,前端小程序新增发票下载功能。#I4ZYT3
【新增】商家中心订单查询,增加发票下载查看功能。
【新增】代码生成器Controller模板的导出excel请求增加decimal类型的处理。
【优化】调整前端帮助文档默认传值问题,未指定具体分类情况下,默认取第一个栏目数据。
【修复】修复页面设计上传图片后不进行预览的问题。
This commit is contained in:
JianWeie
2022-03-29 17:07:26 +08:00
parent ad1ce9044e
commit c341aeb8c8
22 changed files with 15459 additions and 114 deletions

View File

@@ -24,9 +24,13 @@ using CoreCms.Net.Model.FromBody;
using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Utility.Extensions;
using CoreCms.Net.Utility.Helper;
using Essensoft.Paylink.WeChatPay;
using Essensoft.Paylink.WeChatPay.V2;
using Essensoft.Paylink.WeChatPay.V2.Request;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using NPOI.HSSF.UserModel;
using SqlSugar;
@@ -44,17 +48,24 @@ namespace CoreCms.Net.Web.Admin.Controllers
{
private readonly ICoreCmsBillPaymentsServices _coreCmsBillPaymentsServices;
private readonly IWebHostEnvironment _webHostEnvironment;
private readonly IWeChatPayClient _client;
private readonly IOptions<WeChatPayOptions> _optionsAccessor;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="webHostEnvironment"></param>
/// <param name="coreCmsBillPaymentsServices"></param>
/// <param name="client"></param>
/// <param name="optionsAccessor"></param>
public CoreCmsBillPaymentsController(IWebHostEnvironment webHostEnvironment
, ICoreCmsBillPaymentsServices coreCmsBillPaymentsServices)
, ICoreCmsBillPaymentsServices coreCmsBillPaymentsServices, IWeChatPayClient client, IOptions<WeChatPayOptions> optionsAccessor)
{
_webHostEnvironment = webHostEnvironment;
_coreCmsBillPaymentsServices = coreCmsBillPaymentsServices;
_client = client;
_optionsAccessor = optionsAccessor;
}
#region ============================================================
@@ -475,5 +486,71 @@ namespace CoreCms.Net.Web.Admin.Controllers
}
#endregion
#region
// POST: Api/CoreCmsBillPayments/DoRefresh/10
/// <summary>
/// 更新微信支付数据
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost]
[Description("更新微信支付数据")]
public async Task<AdminUiCallBack> DoRefresh([FromBody] FMStringId entity)
{
var jm = new AdminUiCallBack();
var model = await _coreCmsBillPaymentsServices.QueryByClauseAsync(p => p.paymentId == entity.id);
if (model == null)
{
jm.msg = "不存在此信息";
return jm;
}
if (model.paymentCode != GlobalEnumVars.PaymentsTypes.wechatpay.ToString())
{
jm.msg = "此更新暂时仅支持微信支付查询";
return jm;
}
if (model.status == (int)GlobalEnumVars.BillPaymentsStatus.Payed)
{
jm.msg = "订单已经支付成功,无需更新";
return jm;
}
var request = new WeChatPayOrderQueryRequest
{
//微信订单号
//TransactionId = model.TransactionId,
//商户订单号
OutTradeNo = model.paymentId
};
var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
if (response is { ReturnCode: WeChatPayCode.Success, ResultCode: WeChatPayCode.Success, TradeState: WeChatPayCode.Success })
{
var money = Math.Round((decimal)response.TotalFee / 100, 2);
await _coreCmsBillPaymentsServices.ToUpdate(response.OutTradeNo,
(int)GlobalEnumVars.BillPaymentsStatus.Payed,
GlobalEnumVars.PaymentsTypes.wechatpay.ToString(), money, response.ResultCode,
response.TransactionId);
jm.code = 0;
jm.msg = "刷新成功";
jm.data = response;
}
else
{
jm.code = 1;
jm.msg = response.TradeStateDesc;
}
return jm;
}
#endregion
}
}

View File

@@ -75,49 +75,22 @@ namespace CoreCms.Net.Web.Admin.Controllers
var where = PredicateBuilder.True<CoreCmsInvoice>();
//获取排序字段
var orderField = Request.Form["orderField"].FirstOrDefault();
Expression<Func<CoreCmsInvoice, object>> orderEx;
switch (orderField)
Expression<Func<CoreCmsInvoice, object>> orderEx = orderField switch
{
case "id":
orderEx = p => p.id;
break;
case "category":
orderEx = p => p.category;
break;
case "sourceId":
orderEx = p => p.sourceId;
break;
case "userId":
orderEx = p => p.userId;
break;
case "type":
orderEx = p => p.type;
break;
case "title":
orderEx = p => p.title;
break;
case "taxNumber":
orderEx = p => p.taxNumber;
break;
case "amount":
orderEx = p => p.amount;
break;
case "status":
orderEx = p => p.status;
break;
case "remarks":
orderEx = p => p.remarks;
break;
case "createTime":
orderEx = p => p.createTime;
break;
case "updateTime":
orderEx = p => p.updateTime;
break;
default:
orderEx = p => p.id;
break;
}
"id" => p => p.id,
"category" => p => p.category,
"sourceId" => p => p.sourceId,
"userId" => p => p.userId,
"type" => p => p.type,
"title" => p => p.title,
"taxNumber" => p => p.taxNumber,
"amount" => p => p.amount,
"status" => p => p.status,
"remarks" => p => p.remarks,
"createTime" => p => p.createTime,
"updateTime" => p => p.updateTime,
_ => p => p.id
};
//设置排序方式
var orderDirection = Request.Form["orderDirection"].FirstOrDefault();
@@ -144,6 +117,9 @@ namespace CoreCms.Net.Web.Admin.Controllers
//发票类型 int
var type = Request.Form["type"].FirstOrDefault().ObjectToInt(0);
if (type > 0) where = where.And(p => p.type == type);
//开票状态 int
var status = Request.Form["status"].FirstOrDefault().ObjectToInt(0);
if (status > 0) where = where.And(p => p.status == status);
//发票抬头 nvarchar
var title = Request.Form["title"].FirstOrDefault();
if (!string.IsNullOrEmpty(title)) where = where.And(p => p.title.Contains(title));
@@ -299,6 +275,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
oldModel.status = entity.status;
oldModel.remarks = entity.remarks;
oldModel.updateTime = DateTime.Now;
oldModel.fileUrl = entity.fileUrl;
//事物处理过程结束
var bl = await _coreCmsInvoiceServices.UpdateAsync(oldModel);