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; }