From 6a749274b969896fd9c780fc010b894a8964de2d Mon Sep 17 00:00:00 2001
From: "AERWEN\\26795" <123456789a>
Date: Wed, 18 Oct 2023 20:43:55 +0800
Subject: [PATCH] =?UTF-8?q?fixed=20=E4=BC=98=E5=8C=96=E7=BB=86=E8=8A=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../CouponManage/Coupons/CouponApiDto.cs | 1 +
.../CustomerCoupons/CustomerCouponApiDto.cs | 2 +
.../Dto/Api/OrderManage/Orders/OrderApiDto.cs | 26 ++-------
.../Dto/Api/OrderManage/Orders/OrderCoupon.cs | 40 +++++++++++++
ARW.Model/Dto/Api/Pay/CommitPayDtoApi.cs | 5 ++
.../Marketing/CouponManage/Coupons/Coupon.cs | 9 ++-
.../CustomerCoupons/CustomerCouponApiVo.cs | 7 +++
.../CouponManage/Coupons/CouponVo.cs | 4 ++
.../CouponManage/Coupons/CouponServiceApi.cs | 57 ++++++++++++-------
.../CustomerCouponServiceApi.cs | 4 +-
.../PayManage/PayServiceApi.cs | 30 ++++++----
.../CouponManage/Coupons/ICouponServiceApi.cs | 3 +-
.../CouponManage/Coupons/CouponService.cs | 10 ++--
13 files changed, 132 insertions(+), 66 deletions(-)
create mode 100644 ARW.Model/Dto/Api/OrderManage/Orders/OrderCoupon.cs
diff --git a/ARW.Model/Dto/Api/Marketing/CouponManage/Coupons/CouponApiDto.cs b/ARW.Model/Dto/Api/Marketing/CouponManage/Coupons/CouponApiDto.cs
index b07e7f1..5530f41 100644
--- a/ARW.Model/Dto/Api/Marketing/CouponManage/Coupons/CouponApiDto.cs
+++ b/ARW.Model/Dto/Api/Marketing/CouponManage/Coupons/CouponApiDto.cs
@@ -14,6 +14,7 @@ namespace ARW.Model.Dto.Api.Marketing.CouponManage.Coupons
///
public class CouponQueryDtoApi : PagerInfo
{
+ public long ShopGuid { get; set; }
public string CouponName { get; set; }
public int? CouponType { get; set; }
public int? CouponExpireType { get; set; }
diff --git a/ARW.Model/Dto/Api/Marketing/CouponManage/CustomerCoupons/CustomerCouponApiDto.cs b/ARW.Model/Dto/Api/Marketing/CouponManage/CustomerCoupons/CustomerCouponApiDto.cs
index 2ef54e0..fcc2840 100644
--- a/ARW.Model/Dto/Api/Marketing/CouponManage/CustomerCoupons/CustomerCouponApiDto.cs
+++ b/ARW.Model/Dto/Api/Marketing/CouponManage/CustomerCoupons/CustomerCouponApiDto.cs
@@ -17,6 +17,8 @@ namespace ARW.Model.Dto.Api.Marketing.CouponManage.CustomerCoupons
[Required(ErrorMessage = "CustomerGuid不能为空")]
public long CustomerGuid{ get; set; }
+ public long ShopGuid { get; set; }
+
public int Status { get; set; }
}
diff --git a/ARW.Model/Dto/Api/OrderManage/Orders/OrderApiDto.cs b/ARW.Model/Dto/Api/OrderManage/Orders/OrderApiDto.cs
index e1d0eeb..d272212 100644
--- a/ARW.Model/Dto/Api/OrderManage/Orders/OrderApiDto.cs
+++ b/ARW.Model/Dto/Api/OrderManage/Orders/OrderApiDto.cs
@@ -7,34 +7,16 @@ namespace ARW.Model.Dto.Api.OrderManage.Orders
{
///
- /// 订单查询对象Api
+ /// 订单优惠券对象Api
///
/// @author lwh
/// @date 2023-09-01
///
- public class OrderQueryDtoApi : PagerInfo
+ public class OrderCoupon
{
- public string OrderNumber { get; set; }
- public int? PayType { get; set; }
- public int? PayStatus { get; set; }
- public int? DeliveryType { get; set; }
- public string LogisticsTrackingNumber { get; set; }
- public int? DeliveryStatus { get; set; }
- public int? ReceiptStatus { get; set; }
- public int OrderStatus { get; set; }
+ public long ShopGuid { get; set; }
+ public int Key { get; set; }
}
- ///
- /// 订单详情输入对象Api
- ///
- /// @author lwh
- /// @date 2023-09-01
- ///
- public class OrderDtoApi
- {
- [Required(ErrorMessage = "OrderGuid不能为空")]
- public long OrderGuid { get; set; }
- }
-
}
diff --git a/ARW.Model/Dto/Api/OrderManage/Orders/OrderCoupon.cs b/ARW.Model/Dto/Api/OrderManage/Orders/OrderCoupon.cs
new file mode 100644
index 0000000..e1d0eeb
--- /dev/null
+++ b/ARW.Model/Dto/Api/OrderManage/Orders/OrderCoupon.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using ARW.Model.Models.Business.OrderManage.Orders;
+
+namespace ARW.Model.Dto.Api.OrderManage.Orders
+{
+
+ ///
+ /// 订单查询对象Api
+ ///
+ /// @author lwh
+ /// @date 2023-09-01
+ ///
+ public class OrderQueryDtoApi : PagerInfo
+ {
+ public string OrderNumber { get; set; }
+ public int? PayType { get; set; }
+ public int? PayStatus { get; set; }
+ public int? DeliveryType { get; set; }
+ public string LogisticsTrackingNumber { get; set; }
+ public int? DeliveryStatus { get; set; }
+ public int? ReceiptStatus { get; set; }
+ public int OrderStatus { get; set; }
+ }
+
+
+ ///
+ /// 订单详情输入对象Api
+ ///
+ /// @author lwh
+ /// @date 2023-09-01
+ ///
+ public class OrderDtoApi
+ {
+ [Required(ErrorMessage = "OrderGuid不能为空")]
+ public long OrderGuid { get; set; }
+ }
+
+}
diff --git a/ARW.Model/Dto/Api/Pay/CommitPayDtoApi.cs b/ARW.Model/Dto/Api/Pay/CommitPayDtoApi.cs
index 939d96f..a731e7f 100644
--- a/ARW.Model/Dto/Api/Pay/CommitPayDtoApi.cs
+++ b/ARW.Model/Dto/Api/Pay/CommitPayDtoApi.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
+using ARW.Model.Dto.Api.OrderManage.Orders;
using ARW.Model.Models.Business.Carts;
namespace ARW.Model.Dto.Api.Pay
@@ -54,5 +55,9 @@ namespace ARW.Model.Dto.Api.Pay
///
public long CustomerAddressGuid { get; set; }
+
+
+ public List CouponList;
+
}
}
diff --git a/ARW.Model/Models/Business/Marketing/CouponManage/Coupons/Coupon.cs b/ARW.Model/Models/Business/Marketing/CouponManage/Coupons/Coupon.cs
index a653897..8ee2ee8 100644
--- a/ARW.Model/Models/Business/Marketing/CouponManage/Coupons/Coupon.cs
+++ b/ARW.Model/Models/Business/Marketing/CouponManage/Coupons/Coupon.cs
@@ -203,8 +203,13 @@ namespace ARW.Model.Models.Business.Marketing.CouponManage.Coupons
public int CouponSort { get; set; }
-
-
+ ///
+ /// 描述 :优惠券状态(1: 正常 2: 失效)
+ /// 空值 : false
+ ///
+ [EpplusTableColumn(Header = "优惠券状态")]
+ [SugarColumn(ColumnName = "coupon_status")]
+ public int CouponStatus { get; set; }
}
diff --git a/ARW.Model/Vo/Api/Marketing/CouponManage/CustomerCoupons/CustomerCouponApiVo.cs b/ARW.Model/Vo/Api/Marketing/CouponManage/CustomerCoupons/CustomerCouponApiVo.cs
index 27056bc..1c90d0d 100644
--- a/ARW.Model/Vo/Api/Marketing/CouponManage/CustomerCoupons/CustomerCouponApiVo.cs
+++ b/ARW.Model/Vo/Api/Marketing/CouponManage/CustomerCoupons/CustomerCouponApiVo.cs
@@ -22,6 +22,13 @@ namespace ARW.Model.Vo.Api.Marketing.CouponManage.CustomerCoupons
public long CouponGuid { get; set; }
+ ///
+ /// 描述 : CouponGuid
+ ///
+ [JsonConverter(typeof(ValueToStringConverter))]
+ public long ShopGuid { get; set; }
+
+
///
/// 描述 : Key
///
diff --git a/ARW.Model/Vo/Business/Marketing/CouponManage/Coupons/CouponVo.cs b/ARW.Model/Vo/Business/Marketing/CouponManage/Coupons/CouponVo.cs
index ffa1dec..f85839d 100644
--- a/ARW.Model/Vo/Business/Marketing/CouponManage/Coupons/CouponVo.cs
+++ b/ARW.Model/Vo/Business/Marketing/CouponManage/Coupons/CouponVo.cs
@@ -159,5 +159,9 @@ namespace ARW.Model.Vo.Business.Marketing.CouponManage.Coupons
public string CouponGoodsIdsArr { get; set; }
[EpplusIgnore]
public string[] CouponGoodsIds { get; set; }
+
+ public int CouponStatus { get; set; }
+
+
}
}
diff --git a/ARW.Service/Api/BusinessService/Marketing/CouponManage/Coupons/CouponServiceApi.cs b/ARW.Service/Api/BusinessService/Marketing/CouponManage/Coupons/CouponServiceApi.cs
index 73ffdd9..bf946d0 100644
--- a/ARW.Service/Api/BusinessService/Marketing/CouponManage/Coupons/CouponServiceApi.cs
+++ b/ARW.Service/Api/BusinessService/Marketing/CouponManage/Coupons/CouponServiceApi.cs
@@ -14,6 +14,8 @@ using ARW.Model.Dto.Api.Marketing.CouponManage.Coupons;
using ARW.Model.Models.Business.Marketing.CouponManage.Coupons;
using ARW.Model.Vo.Api.Marketing.CouponManage.Coupons;
using Senparc.Weixin.WxOpen.AdvancedAPIs.Tcb;
+using ARW.Model.Vo.Api.Marketing.CouponManage.CustomerCoupons;
+using ARW.Repository.Business.Marketing.CouponManage.CustomerCoupons;
namespace ARW.Service.Api.BusinessService.Marketing.CouponManage.Coupons
{
@@ -41,41 +43,52 @@ namespace ARW.Service.Api.BusinessService.Marketing.CouponManage.Coupons
///
///
///
- public async Task> GetCouponListApi(CouponQueryDtoApi parm)
+ public async Task> GetCouponListApi(CouponQueryDtoApi parm)
{
//开始拼装查询条件d
var predicate = Expressionable.Create();
- predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.CouponName), s => s.CouponName == parm.CouponName);
- predicate = predicate.AndIF(parm.CouponType != null, s => s.CouponType == parm.CouponType);
- predicate = predicate.AndIF(parm.CouponExpireType != null, s => s.CouponExpireType == parm.CouponExpireType);
- predicate = predicate.AndIF(parm.CouponApplicableScope != null, s => s.CouponApplicableScope == parm.CouponApplicableScope);
- predicate = predicate.AndIF(parm.CouponDisplayStatus != null, s => s.CouponDisplayStatus == parm.CouponDisplayStatus);
+ predicate = predicate.AndIF(parm.ShopGuid != 0, s => s.ShopGuid == parm.ShopGuid);
var query = _CouponRepository
.Queryable()
.Where(predicate.ToExpression())
.OrderBy(s => s.CouponSort, OrderByType.Desc)
- .Select(s => new CouponVoApi
+ .Select(s => new CustomerCouponVoApi
{
- CouponId = s.CouponId,
CouponGuid = s.CouponGuid,
- CouponName = s.CouponName,
- CouponType = s.CouponType,
- CouponDeductionMoney = s.CouponDeductionMoney,
- CouponDiscountRate = s.CouponDiscountRate,
- CouponMinConsumeMoney = s.CouponMinConsumeMoney,
- CouponExpireType = s.CouponExpireType,
- CouponEffectiveDays = s.CouponEffectiveDays,
- CouponFixedStartTime = s.CouponFixedStartTime,
- CouponFixedEndTime = s.CouponFixedEndTime,
- CouponApplicableScope = s.CouponApplicableScope,
- CouponSendNumber = s.CouponSendNumber,
- CouponDisplayStatus = s.CouponDisplayStatus,
- CouponSort = s.CouponSort,
+ ShopGuid = s.ShopGuid,
+ Type = s.CouponType,
+ Value = s.CouponDeductionMoney != 0 ? s.CouponDeductionMoney.ToString() : s.CouponDiscountRate.ToString(),
+ Desc = s.CouponDesc,
+ Title = s.CouponName,
+ Base = s.CouponMinConsumeMoney,
+ CreateTime = s.Create_time
});
+ var list = await query.ToListAsync();
- return await query.ToPageAsync(parm);
+
+ foreach (var item in list)
+ {
+ // 处理有效日期
+ var coupon = await _CouponRepository.GetFirstAsync(s => s.CouponGuid == item.CouponGuid);
+ if (coupon.CouponExpireType == 1)
+ {
+ var firstTime = item.CreateTime.ToString("yyyy.MM.dd");
+ var lastTime = item.CreateTime.AddDays(coupon.CouponEffectiveDays).ToString("yyyy.MM.dd");
+ item.TimeLimit = firstTime + "-" + lastTime;
+ }
+ else
+ {
+ var firstTime = coupon.CouponFixedStartTime.ToString("yyyy.MM.dd");
+ var lastTime = coupon.CouponFixedEndTime.ToString("yyyy.MM.dd");
+ item.TimeLimit = firstTime + "-" + lastTime;
+ }
+
+ }
+
+
+ return list;
}
///
diff --git a/ARW.Service/Api/BusinessService/Marketing/CouponManage/CustomerCoupons/CustomerCouponServiceApi.cs b/ARW.Service/Api/BusinessService/Marketing/CouponManage/CustomerCoupons/CustomerCouponServiceApi.cs
index 18196e1..502bd21 100644
--- a/ARW.Service/Api/BusinessService/Marketing/CouponManage/CustomerCoupons/CustomerCouponServiceApi.cs
+++ b/ARW.Service/Api/BusinessService/Marketing/CouponManage/CustomerCoupons/CustomerCouponServiceApi.cs
@@ -58,6 +58,7 @@ namespace ARW.Service.Api.BusinessService.Marketing.CouponManage.CustomerCoupons
.Queryable()
.LeftJoin((s, c) => s.CouponGuid == c.CouponGuid)
.Where(s => s.CustomerGuid == parm.CustomerGuid)
+ .WhereIF(parm.ShopGuid != 0, (s, c) => c.ShopGuid == parm.ShopGuid)
.WhereIF(parm.Status == 1, s => s.CustomerCouponIsUsed == 1 && s.CustomerCouponIsExpired == 1)
.WhereIF(parm.Status == 2, s => s.CustomerCouponIsUsed == 2)
.WhereIF(parm.Status == 3, s => s.CustomerCouponIsExpired == 2)
@@ -65,6 +66,7 @@ namespace ARW.Service.Api.BusinessService.Marketing.CouponManage.CustomerCoupons
.Select((s, c) => new CustomerCouponVoApi
{
CouponGuid = c.CouponGuid,
+ ShopGuid = c.ShopGuid,
Key = s.CustomerCouponId,
Type = c.CouponType,
Value = c.CouponDeductionMoney != 0 ? c.CouponDeductionMoney.ToString() : c.CouponDiscountRate.ToString(),
@@ -151,7 +153,7 @@ namespace ARW.Service.Api.BusinessService.Marketing.CouponManage.CustomerCoupons
var coupon = await _CouponRepository.GetFirstAsync(s => s.CouponGuid == data.CouponGuid);
// 使用范围
- if(coupon.CouponApplicableScope == 1)
+ if (coupon.CouponApplicableScope == 1)
data.StoreAdapt = "全部商品";
if (coupon.CouponApplicableScope == 2)
data.StoreAdapt = "指定商品";
diff --git a/ARW.Service/Api/BusinessService/PayManage/PayServiceApi.cs b/ARW.Service/Api/BusinessService/PayManage/PayServiceApi.cs
index 5c14299..33d3304 100644
--- a/ARW.Service/Api/BusinessService/PayManage/PayServiceApi.cs
+++ b/ARW.Service/Api/BusinessService/PayManage/PayServiceApi.cs
@@ -152,7 +152,7 @@ namespace ARW.Service.Api.BusinessService.PaymentManage
jsApiUiPackage = payEntity,
outTradeNo = orderNo,
CreateTime = res.Create_time,
- OverTime = res.Create_time.AddMinutes(1)
+ OverTime = res.Create_time.AddMinutes(30)
};
return payRes;
@@ -256,22 +256,28 @@ namespace ARW.Service.Api.BusinessService.PaymentManage
var res = new DiscountRes();
res.DiscountPrice = parm.TotalAmount;
// 优惠券减免价格
- if (parm.CouponId != 0)
+ if (parm.CouponList.Count > 0)
{
- var coupon = await _CouponRepository.GetFirstAsync(s => s.CouponId == parm.CouponId);
- if (coupon != null)
+ foreach (var item in parm.CouponList)
{
- res.CouponGuid = coupon.CouponGuid;
- res.CouponMoney = coupon.CouponDeductionMoney;
- res.DiscountPrice -= coupon.CouponDeductionMoney;
- }
- else
- {
- throw new CustomException($"优惠券Id为 {parm.CouponId} 找不到");
+ if(item.Key != 0)
+ {
+ var customerCoupon = await _CustomerCouponRepository.GetFirstAsync(s => s.CustomerCouponId == item.Key);
+ var coupon = await _CouponRepository.GetFirstAsync(s => s.CouponGuid == customerCoupon.CouponGuid);
+ if (coupon != null)
+ {
+ res.CouponGuid = coupon.CouponGuid;
+ res.CouponMoney = coupon.CouponDeductionMoney;
+ res.DiscountPrice -= coupon.CouponDeductionMoney;
+ }
+ else
+ {
+ throw new CustomException($"优惠券Id为 {parm.CouponId} 找不到");
+ }
+ }
}
}
-
return res;
}
diff --git a/ARW.Service/Api/IBusinessService/Marketing/CouponManage/Coupons/ICouponServiceApi.cs b/ARW.Service/Api/IBusinessService/Marketing/CouponManage/Coupons/ICouponServiceApi.cs
index 4b11a41..b96585d 100644
--- a/ARW.Service/Api/IBusinessService/Marketing/CouponManage/Coupons/ICouponServiceApi.cs
+++ b/ARW.Service/Api/IBusinessService/Marketing/CouponManage/Coupons/ICouponServiceApi.cs
@@ -7,6 +7,7 @@ using ARW.Model;
using ARW.Model.Dto.Api.Marketing.CouponManage.Coupons;
using ARW.Model.Models.Business.Marketing.CouponManage.Coupons;
using ARW.Model.Vo.Api.Marketing.CouponManage.Coupons;
+using ARW.Model.Vo.Api.Marketing.CouponManage.CustomerCoupons;
namespace ARW.Service.Api.IBusinessService.Marketing.CouponManage.Coupons
{
@@ -23,7 +24,7 @@ namespace ARW.Service.Api.IBusinessService.Marketing.CouponManage.Coupons
///
///
///
- Task> GetCouponListApi(CouponQueryDtoApi parm);
+ Task> GetCouponListApi(CouponQueryDtoApi parm);
///
/// 获取优惠券详情(Api)
diff --git a/ARW.Service/Business/BusinessService/Marketing/CouponManage/Coupons/CouponService.cs b/ARW.Service/Business/BusinessService/Marketing/CouponManage/Coupons/CouponService.cs
index b4cf3ab..32c3321 100644
--- a/ARW.Service/Business/BusinessService/Marketing/CouponManage/Coupons/CouponService.cs
+++ b/ARW.Service/Business/BusinessService/Marketing/CouponManage/Coupons/CouponService.cs
@@ -15,6 +15,8 @@ using ARW.Model.Dto.Business.Marketing.CouponManage.Coupons;
using ARW.Model.Models.Business.Marketing.CouponManage.Coupons;
using ARW.Model.Vo.Business.Marketing.CouponManage.Coupons;
using ARW.Model.Models.Business.ShopManager.Shops;
+using ARW.Common;
+using MySqlX.XDevAPI.Relational;
namespace ARW.Service.Business.BusinessService.Marketing.CouponManage.Coupons
{
@@ -79,17 +81,13 @@ namespace ARW.Service.Business.BusinessService.Marketing.CouponManage.Coupons
CouponDisplayStatus = s.CouponDisplayStatus,
CouponSort = s.CouponSort,
CouponApplicableScopeConfig = s.CouponApplicableScopeConfig,
- CouponGoodsIdsArr = s.CouponGoodsIds
+ CouponGoodsIdsArr = s.CouponGoodsIds,
+ CouponStatus = s.CouponStatus,
});
var list = await query.ToPageAsync(parm);
- //foreach (var item in list.Result)
- //{
- // item.CouponGoodsIds = item.CouponGoodsIdsArr.Split(',');
- //}
-
return list;
}