From c80281c4269623609f5b815d60b241f5462de9cc Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期日, 09 六月 2024 18:52:47 +0800
Subject: [PATCH] 提交【管理后台】-营销管理模块相关接口

---
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/MemberClient.java                          |    4 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CouponMemberDTO.java                        |    2 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/CouponUseEnum.java                          |   28 +
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberController.java                     |    8 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java                  |  242 ++++++++++++++
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/CouponReceiveDetailVO.java  |   40 ++
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/MemberFallbackFactory.java                     |   19 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberService.java                                |    2 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponMemberServiceImpl.java            |   17 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponReceiveQuery.java |   33 +
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionWishListServiceImpl.java       |   21 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/CouponMember.java                               |    7 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/async/AsyncMethodService.java                |   50 ++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java                                   |   11 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionVideoVO.java    |    2 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponUpdDTO.java       |   28 +
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponQuery.java        |   30 +
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java                          |   38 ++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/inner/OrderController.java                        |   24 +
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/validate/InsertGroup.java                              |   10 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/OrderFallbackFactory.java                      |    9 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java                           |   47 +
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtCouponVO.java            |   72 ++++
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/domain/Coupon.java                                   |    7 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/OrderClient.java                           |   15 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/validate/ModifyGroup.java                              |   10 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/DistributionMethodEnum.java                 |   27 +
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponDTO.java          |   85 +++++
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionWishListVO.java |    2 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionBannerVO.java   |    2 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java                        |   10 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java       |   83 ++++
 32 files changed, 934 insertions(+), 51 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/CouponMember.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/CouponMember.java
index e6493e0..01d7989 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/CouponMember.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/CouponMember.java
@@ -7,6 +7,7 @@
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ruoyi.common.core.enums.CouponTypeEnum;
+import com.ruoyi.common.core.enums.CouponUseEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import java.io.Serializable;
@@ -46,9 +47,9 @@
     @ApiModelProperty(value = "优惠券类型 1=满减券 2=代金券 3=折扣券")
     private CouponTypeEnum couponType;
 
-    @ApiModelProperty(value = "优惠券状态-1删除0已过期1已领取2已使用")
-    private Integer couponStatus;
-
+    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用")
+    private CouponUseEnum couponStatus;
+    
     @ApiModelProperty(value = "满减金额,例如:满100元")
     private BigDecimal fullReductionAmount;
 
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CouponMemberDTO.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CouponMemberDTO.java
index 6d3d586..cc634b2 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CouponMemberDTO.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CouponMemberDTO.java
@@ -15,6 +15,6 @@
     @ApiModelProperty(value = "会员id")
     private  Long memberId;
 
-    @ApiModelProperty(value = "优惠券状态-1删除0已过期1已领取2已使用")
+    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用")
     private Integer couponStatus;
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/MemberFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/MemberFallbackFactory.java
index 0bd58bc..0d9b379 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/MemberFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/MemberFallbackFactory.java
@@ -5,12 +5,12 @@
 import com.ruoyi.system.api.domain.Member;
 import com.ruoyi.system.api.domain.MemberAddress;
 import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
-import com.ruoyi.system.api.domain.dto.AppMiniRegisterDTO;
+import com.ruoyi.system.api.domain.dto.MemberDTO;
 import com.ruoyi.system.api.domain.dto.MemberPointsDTO;
 import com.ruoyi.system.api.domain.dto.updMembeOneDTO;
 import com.ruoyi.system.api.feignClient.MemberClient;
+import java.util.Collection;
 import java.util.List;
-import java.util.Set;
 import org.springframework.cloud.openfeign.FallbackFactory;
 
 /**
@@ -35,10 +35,12 @@
             }
 
             @Override
-            public R<List<Member>> getMemberListByIds(Set<Long> memberIdList, String source) {
+            public R<List<Member>> getMemberListByIds(Collection<Long> memberIdList,
+                    String source) {
                 return R.fail("获取用户列表失败:" + cause.getMessage());
             }
 
+            @Override
             public R<AppMiniLoginVO> miniLogin(AppMiniLoginDTO appMiniLoginDto)
             {
                 return R.fail("登录用户失败:" + cause.getMessage());
@@ -54,6 +56,17 @@
             public R<?> updMembeOne(updMembeOneDTO dMembeOneDTO) {
                 return R.fail("修改用户等级失败:" + cause.getMessage());
             }
+
+            @Override
+            public R<List<Member>> getMemberListByCondition(MemberDTO memberDTO, String source) {
+                return R.fail("获取用户列表失败:" + cause.getMessage());
+            }
+
+            @Override
+            public R<List<Member>> getMemberListByLevel(List<String> memberLevelList,
+                    String source) {
+                return R.fail("获取用户列表失败:" + cause.getMessage());
+            }
         };
 
         }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/OrderFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/OrderFallbackFactory.java
index b95b0f8..c66ac4f 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/OrderFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/OrderFallbackFactory.java
@@ -5,15 +5,17 @@
 import com.ruoyi.common.core.enums.BondStatusEnum;
 import com.ruoyi.system.api.domain.Order;
 import com.ruoyi.system.api.domain.OrderAuctionBond;
+import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
+import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO;
 import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO;
 import com.ruoyi.system.api.domain.dto.OrderAuctionBondDTO;
 import com.ruoyi.system.api.domain.dto.OrderDTO;
 import com.ruoyi.system.api.domain.dto.OrderUpdDTO;
 import com.ruoyi.system.api.domain.dto.RefundDTO;
-import com.ruoyi.system.api.domain.dto.*;
 import com.ruoyi.system.api.domain.vo.OrderVO;
 import com.ruoyi.system.api.domain.vo.PayInfoVO;
 import com.ruoyi.system.api.feignClient.OrderClient;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import org.springframework.cloud.openfeign.FallbackFactory;
@@ -107,7 +109,10 @@
                 return R.fail("生成保证金失败" + cause.getMessage());
             }
 
-
+            @Override
+            public R<List<Order>> getOrderByCouponIds(Collection<Long> couponIds, String source) {
+                return R.fail("根据优惠券id列表获取订单列表失败" + cause.getMessage());
+            }
         };
 
     }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/MemberClient.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/MemberClient.java
index f7bd36e..ca31aaf 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/MemberClient.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/MemberClient.java
@@ -46,4 +46,8 @@
     @PostMapping("/member/list-by-condition")
     R<List<Member>> getMemberListByCondition(@RequestBody MemberDTO memberDTO,
             @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+    @PostMapping("/member/list-by-level")
+    R<List<Member>> getMemberListByLevel(@RequestBody List<String> memberLevelList,
+            @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/OrderClient.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/OrderClient.java
index 933c141..ed131cb 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/OrderClient.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/OrderClient.java
@@ -7,15 +7,17 @@
 import com.ruoyi.common.core.enums.BondStatusEnum;
 import com.ruoyi.system.api.domain.Order;
 import com.ruoyi.system.api.domain.OrderAuctionBond;
+import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
+import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO;
 import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO;
 import com.ruoyi.system.api.domain.dto.OrderAuctionBondDTO;
 import com.ruoyi.system.api.domain.dto.OrderDTO;
 import com.ruoyi.system.api.domain.dto.OrderUpdDTO;
 import com.ruoyi.system.api.domain.dto.RefundDTO;
-import com.ruoyi.system.api.domain.dto.*;
 import com.ruoyi.system.api.domain.vo.OrderVO;
 import com.ruoyi.system.api.domain.vo.PayInfoVO;
 import com.ruoyi.system.api.factory.OrderFallbackFactory;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -137,5 +139,14 @@
     R<PayInfoVO> SaveOrderAuctionBond(@RequestBody MemberAuctionSalesroomBondDTO memberAuctionSalesroomBondDTO,
                                      @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
-
+    /**
+     * 根据优惠券id集合查询订单列表
+     *
+     * @param couponIdSet 优惠券id集合
+     * @param inner       内部调用标志
+     * @return List<Order>
+     */
+    @PostMapping("/order/list-by-coupon")
+    R<List<Order>> getOrderByCouponIds(@RequestBody Collection<Long> couponIds,
+            @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/validate/InsertGroup.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/validate/InsertGroup.java
new file mode 100644
index 0000000..00df1a5
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/validate/InsertGroup.java
@@ -0,0 +1,10 @@
+package com.ruoyi.system.api.validate;
+
+/**
+ * @author mitao
+ * @date 2024/6/9
+ * <p>插入数据校验分组</p>
+ */
+public interface InsertGroup {
+
+}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/validate/ModifyGroup.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/validate/ModifyGroup.java
new file mode 100644
index 0000000..795af03
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/validate/ModifyGroup.java
@@ -0,0 +1,10 @@
+package com.ruoyi.system.api.validate;
+
+/**
+ * @author mitao
+ * @date 2024/6/9
+ * <p>编辑数据校验分组</p>
+ */
+public interface ModifyGroup {
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/CouponUseEnum.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/CouponUseEnum.java
new file mode 100644
index 0000000..802f624
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/CouponUseEnum.java
@@ -0,0 +1,28 @@
+package com.ruoyi.common.core.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum CouponUseEnum {
+    UNUSED(0, "未使用"),
+    USED(1, "已使用");
+
+    @EnumValue
+    private final Integer code;
+	
+    @JsonValue
+    private final String desc;
+
+    public static CouponUseEnum getEnumByCode(Integer code) {
+        for (CouponUseEnum e : CouponUseEnum.values()) {
+            if (e.code.equals(code)) {
+                return e;
+            }
+        }
+        return null;
+    }
+} 
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/DistributionMethodEnum.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/DistributionMethodEnum.java
new file mode 100644
index 0000000..982e56e
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/DistributionMethodEnum.java
@@ -0,0 +1,27 @@
+package com.ruoyi.common.core.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum DistributionMethodEnum {
+    ALL_MEMBERS(1, "全部会员"),
+    SPECIFY_MEMBERSHIP_LEVEL(2, "指定会员等级"),
+    DESIGNATED_MEMBERS(3, "指定会员");
+    @EnumValue
+    private final Integer code;
+    @JsonValue
+    private final String desc;
+
+    public static DistributionMethodEnum getEnumByCode(Integer code) {
+        for (DistributionMethodEnum e : DistributionMethodEnum.values()) {
+            if (e.code.equals(code)) {
+                return e;
+            }
+        }
+        return null;
+    }
+} 
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberController.java
index 472c4fb..a868acc 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberController.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberController.java
@@ -48,8 +48,14 @@
     }
 
     @InnerAuth
-    @PostMapping("/member/list-by-condition")
+    @PostMapping("/list-by-condition")
     R<List<Member>> getMemberListByCondition(@RequestBody MemberDTO memberDTO) {
         return R.ok(memberService.getMemberListByCondition(memberDTO));
     }
+    
+    @InnerAuth
+    @PostMapping("/list-by-level")
+    R<List<Member>> getMemberListByLevel(@RequestBody List<String> memberLevelList) {
+        return R.ok(memberService.getMemberListByLevel(memberLevelList));
+    }
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberService.java
index 2f460c2..3536ffc 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberService.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberService.java
@@ -66,4 +66,6 @@
     void updMembeOne(@RequestBody updMembeOneDTO dMembeOneDTO);
 
     List<Member> getMemberListByCondition(MemberDTO memberDTO);
+
+    List<Member> getMemberListByLevel(List<String> memberLevelList);
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
index ea14810..1d500f6 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
@@ -592,9 +592,19 @@
         return this.lambdaQuery()
                 .like(StringUtils.isNotBlank(memberDTO.getNickname()), Member::getNickname,
                         memberDTO.getNickname())
+                .like(StringUtils.isNotBlank(memberDTO.getRealName()), Member::getRealName,
+                        memberDTO.getRealName())
                 .like(StringUtils.isNotBlank(memberDTO.getPhone()), Member::getPhone,
                         memberDTO.getPhone()).list();
     }
+
+    @Override
+    public List<Member> getMemberListByLevel(List<String> memberLevelList) {
+        return this.lambdaQuery()
+                .in(StringUtils.isNotEmpty(memberLevelList), Member::getLevel, memberLevelList)
+                .orderByDesc(Member::getLevel)
+                .list();
+    }
 }
 
 
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/inner/OrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/inner/OrderController.java
index 8ad93a3..f01f4a8 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/inner/OrderController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/inner/OrderController.java
@@ -9,13 +9,20 @@
 import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
 import com.ruoyi.system.api.domain.dto.OrderDTO;
 import com.ruoyi.system.api.domain.dto.OrderUpdDTO;
-import java.util.List;
-
 import com.ruoyi.system.api.domain.vo.OrderVO;
+import java.util.Collection;
+import java.util.List;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.formula.functions.T;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
 
 
 /**
@@ -106,4 +113,15 @@
         orderService.updateBatchById(orders);
         return R.ok();
     }
+
+    /**
+     * 根据优惠券id集合查询订单列表
+     *
+     * @param couponIds 优惠券id集合
+     * @return List<Order>
+     */
+    @PostMapping("/order/list-by-coupon")
+    R<List<Order>> getOrderByCouponIds(@RequestBody Collection<Long> couponIds) {
+        return R.ok(orderService.getOrderByCouponIds(couponIds));
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java
index f41cdb2..c1d75ad 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java
@@ -10,9 +10,9 @@
 import com.ruoyi.system.api.domain.vo.MemberOrderListVO;
 import com.ruoyi.system.api.domain.vo.MemberTiOrderVO;
 import com.ruoyi.system.api.domain.vo.OrderVO;
-import org.springframework.web.bind.annotation.RequestBody;
-
+import java.util.Collection;
 import java.util.List;
+import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * <p>
@@ -64,4 +64,11 @@
 
     void AffirmOrderOne(@RequestBody MemberOrderListDTO memberOrderListDTO);
 
+    /**
+     * 根据优惠券id集合查询订单列表
+     *
+     * @param couponIds 优惠券id集合
+     * @return List<Order>
+     */
+    List<Order> getOrderByCouponIds(Collection<Long> couponIds);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index ad15e76..3e46d1b 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -12,27 +12,28 @@
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.page.PageDTO;
-import com.ruoyi.order.domain.MemberInvoiceRise;
 import com.ruoyi.order.domain.Paylog;
 import com.ruoyi.order.mapper.OrderAuctionBondMapper;
 import com.ruoyi.order.mapper.OrderMapper;
-import com.ruoyi.order.service.IOrderAuctionBondService;
 import com.ruoyi.order.service.IOrderService;
 import com.ruoyi.order.service.IPaylogService;
 import com.ruoyi.order.util.OrderUtil;
-import com.ruoyi.system.api.domain.*;
-import com.ruoyi.system.api.domain.dto.*;
-
-import java.lang.reflect.InvocationTargetException;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-import javax.annotation.Resource;
 import com.ruoyi.order.util.SinataUtil;
+import com.ruoyi.system.api.domain.CouponMember;
+import com.ruoyi.system.api.domain.CustomConfig;
+import com.ruoyi.system.api.domain.GoodsGroupPurchase;
+import com.ruoyi.system.api.domain.GoodsSeckill;
+import com.ruoyi.system.api.domain.GoodsSku;
+import com.ruoyi.system.api.domain.MemberAddress;
+import com.ruoyi.system.api.domain.Order;
+import com.ruoyi.system.api.domain.OrderAuctionBond;
+import com.ruoyi.system.api.domain.dto.CouponMemberDTO;
+import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO;
+import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
+import com.ruoyi.system.api.domain.dto.MemberOrderDTO;
+import com.ruoyi.system.api.domain.dto.MemberOrderListDTO;
+import com.ruoyi.system.api.domain.dto.OrderDTO;
+import com.ruoyi.system.api.domain.dto.updMembeOneDTO;
 import com.ruoyi.system.api.domain.vo.MemberOrderListVO;
 import com.ruoyi.system.api.domain.vo.MemberTiOrderVO;
 import com.ruoyi.system.api.domain.vo.OrderVO;
@@ -40,6 +41,13 @@
 import com.ruoyi.system.api.feignClient.MemberClient;
 import com.ruoyi.system.api.feignClient.PromotionClient;
 import com.ruoyi.system.api.feignClient.SysUserClient;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Collection;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.annotation.Resource;
 import org.apache.commons.beanutils.BeanUtils;
 import org.springframework.stereotype.Service;
 
@@ -608,4 +616,15 @@
             baseMapper.updateById(order);
         }
     }
+
+    /**
+     * 根据优惠券id集合查询订单列表
+     *
+     * @param couponIds 优惠券id集合
+     * @return List<Order>
+     */
+    @Override
+    public List<Order> getOrderByCouponIds(Collection<Long> couponIds) {
+        return this.lambdaQuery().in(Order::getCouponId, couponIds).list();
+    }
 }
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java
index ea7dd90..af8bba0 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java
@@ -1,6 +1,24 @@
 package com.ruoyi.promotion.controller.management;
 
 
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.promotion.controller.management.dto.MgtCouponDTO;
+import com.ruoyi.promotion.controller.management.dto.MgtCouponQuery;
+import com.ruoyi.promotion.controller.management.dto.MgtCouponReceiveQuery;
+import com.ruoyi.promotion.controller.management.dto.MgtCouponUpdDTO;
+import com.ruoyi.promotion.controller.management.vo.CouponReceiveDetailVO;
+import com.ruoyi.promotion.controller.management.vo.MgtCouponVO;
+import com.ruoyi.promotion.service.ICouponService;
+import com.ruoyi.system.api.validate.InsertGroup;
+import com.ruoyi.system.api.validate.ModifyGroup;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -14,6 +32,71 @@
  */
 @RestController
 @RequestMapping("/mgt/coupon")
+@RequiredArgsConstructor
+@Api(value = "管理后台-优惠券管理相关接口", tags = "管理后台-优惠券管理相关接口")
 public class MgtCouponController {
 
+    private final ICouponService couponService;
+
+    /**
+     * 获取优惠券列表的分页数据
+     *
+     * @param query 管理后台-优惠券查询对象
+     * @return PageDTO<MgtCouponVO>
+     */
+    @ApiOperation(value = "获取优惠券列表的分页数据", notes = "优惠券列表的分页数据")
+    @PostMapping("/page")
+    public R<PageDTO<MgtCouponVO>> getCouponPage(@Validated @RequestBody MgtCouponQuery query) {
+        return R.ok(couponService.getCouponPage(query));
+    }
+
+    /**
+     * 添加优惠券
+     *
+     * @param dto 管理后台-优惠券数据传输对象
+     */
+    @ApiOperation("添加优惠券")
+    @PostMapping("/add")
+    public R<?> saveCoupon(@Validated(InsertGroup.class) @RequestBody MgtCouponDTO dto) {
+        couponService.saveCoupon(dto);
+        return R.ok();
+    }
+
+    /**
+     * 编辑优惠券
+     *
+     * @param dto 管理后台-优惠券数据传输对象
+     */
+    @ApiOperation("编辑优惠券")
+    @PutMapping("/update")
+    public R<?> updateCoupon(@Validated(ModifyGroup.class) @RequestBody MgtCouponDTO dto) {
+        couponService.updateCoupon(dto);
+        return R.ok();
+    }
+
+    /**
+     * 上架/下架
+     *
+     * @param dto
+     * @return
+     */
+    @ApiOperation("上架/下架")
+    @PutMapping("/upd-status")
+    public R<?> updStatus(@Validated @RequestBody MgtCouponUpdDTO dto) {
+        couponService.updStatus(dto);
+        return R.ok();
+    }
+
+    /**
+     * 领取详情
+     *
+     * @param query 管理后台-优惠券领取详情查询对象
+     * @return PageDTO<CouponReceiveDetailVO>
+     */
+    @ApiOperation("领取详情")
+    @PostMapping("/receive-detail")
+    public R<PageDTO<CouponReceiveDetailVO>> getReceiveDetail(
+            @Validated @RequestBody MgtCouponReceiveQuery query) {
+        return R.ok(couponService.getReceiveDetail(query));
+    }
 }
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponDTO.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponDTO.java
new file mode 100644
index 0000000..6e00781
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponDTO.java
@@ -0,0 +1,85 @@
+package com.ruoyi.promotion.controller.management.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.enums.CouponTypeEnum;
+import com.ruoyi.common.core.enums.DistributionMethodEnum;
+import com.ruoyi.system.api.validate.InsertGroup;
+import com.ruoyi.system.api.validate.ModifyGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2024/6/9
+ */
+@Data
+@ApiModel(value = "管理后台-优惠券数据传输对象", description = "管理后台-优惠券数据传输对象")
+public class MgtCouponDTO implements Serializable {
+
+    private static final long serialVersionUID = 471073836029292058L;
+    
+    @ApiModelProperty(value = "优惠券id", notes = "添加不传,更新必传")
+    @NotNull(message = "优惠券id不能为空", groups = {ModifyGroup.class})
+    private Long id;
+
+    @ApiModelProperty(value = "优惠券名称")
+    @NotBlank(message = "优惠券名称不能为空", groups = {InsertGroup.class, ModifyGroup.class})
+    private String couponName;
+
+    @ApiModelProperty(value = "优惠券类型 1=满减券 2=代金券 3=折扣券")
+    @NotNull(message = "优惠券类型不能为空", groups = {InsertGroup.class})
+    private CouponTypeEnum couponType;
+
+    @ApiModelProperty(value = "满减金额,例如:满100元")
+    private BigDecimal fullReductionAmount;
+
+    @ApiModelProperty(value = "减少金额,例如:减50元")
+    private BigDecimal reductionAmount;
+
+    @ApiModelProperty(value = "代金券金额,例如:50元")
+    private BigDecimal voucherAmount;
+
+    @ApiModelProperty(value = "折扣额度,例如:8折")
+    private Double discountRate;
+
+    @ApiModelProperty(value = "最高可抵扣金额,例如:200元")
+    private BigDecimal maxDiscount;
+
+    @ApiModelProperty(value = "优惠券说明")
+    @NotBlank(message = "优惠券说明不能为空", groups = {InsertGroup.class, ModifyGroup.class})
+    private String description;
+
+    @ApiModelProperty(value = "有效期起")
+    @NotNull(message = "有效期起不能为空", groups = {InsertGroup.class})
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime startDate;
+
+    @ApiModelProperty(value = "有效期止")
+    @NotNull(message = "有效期止不能为空", groups = {InsertGroup.class})
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime endDate;
+
+    @ApiModelProperty(value = "发放方式 全部会员 指定会员等级 指定会员")
+    @NotNull(message = "发放方式不能为空", groups = {InsertGroup.class})
+    private DistributionMethodEnum distributionMethod;
+
+    @ApiModelProperty(value = "会员等级,多等级以 , 隔开")
+    private String memberLevel;
+
+    @ApiModelProperty(value = "发放张数")
+    @NotNull(message = "发放张数不能为空", groups = {InsertGroup.class})
+    private Integer issuedQuantity;
+
+    @ApiModelProperty(value = "会员id列表")
+    @NotEmpty(message = "会员id列表不能为空", groups = {InsertGroup.class})
+    private List<Long> memberIdList;
+
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponQuery.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponQuery.java
new file mode 100644
index 0000000..0ecedb9
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponQuery.java
@@ -0,0 +1,30 @@
+package com.ruoyi.promotion.controller.management.dto;
+
+import com.ruoyi.common.core.enums.CouponTypeEnum;
+import com.ruoyi.common.core.enums.DistributionMethodEnum;
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author mitao
+ * @date 2024/6/9
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "管理后台-优惠券查询对象", description = "管理后台-优惠券查询对象")
+public class MgtCouponQuery extends BasePage {
+
+    private static final long serialVersionUID = -3645816773946506015L;
+
+    @ApiModelProperty(value = "优惠券名称")
+    private String couponName;
+
+    @ApiModelProperty(value = "优惠券类型 1=满减券 2=代金券 3=折扣券")
+    private CouponTypeEnum couponType;
+    
+    @ApiModelProperty(value = "发放方式 1=全部会员 2=指定会员等级 3=指定会员")
+    private DistributionMethodEnum distributionMethod;
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponReceiveQuery.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponReceiveQuery.java
new file mode 100644
index 0000000..547886e
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponReceiveQuery.java
@@ -0,0 +1,33 @@
+package com.ruoyi.promotion.controller.management.dto;
+
+import com.ruoyi.common.core.enums.CouponUseEnum;
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import javax.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author mitao
+ * @date 2024/6/9
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "管理后台-优惠券领取详情查询对象", description = "管理后台-优惠券领取详情查询对象")
+public class MgtCouponReceiveQuery extends BasePage {
+
+    private static final long serialVersionUID = -2131590270318555753L;
+    @ApiModelProperty(value = "优惠券id")
+    @NotNull(message = "优惠券id不能为空")
+    private Long id;
+
+    @ApiModelProperty(value = "会员姓名")
+    private String realName;
+
+    @ApiModelProperty(value = "联系电话")
+    private String phone;
+
+    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用")
+    private CouponUseEnum couponStatus;
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponUpdDTO.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponUpdDTO.java
new file mode 100644
index 0000000..42c9e2b
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtCouponUpdDTO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.promotion.controller.management.dto;
+
+import com.ruoyi.common.core.enums.ListingStatusEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import javax.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2024/6/9
+ */
+@Data
+@ApiModel(value = "管理后台-优惠券上架下架数据传输对象", description = "管理后台-优惠券上架下架数据传输对象")
+public class MgtCouponUpdDTO implements Serializable {
+
+    private static final long serialVersionUID = 3742544140798931375L;
+    
+    @ApiModelProperty(value = "优惠券id", notes = "添加不传,更新必传")
+    @NotNull(message = "优惠券id不能为空")
+    private Long id;
+
+    @ApiModelProperty(value = "状态 上架中 已下架")
+    @NotNull(message = "状态不能为空")
+    private ListingStatusEnum couponStatus;
+
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/CouponReceiveDetailVO.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/CouponReceiveDetailVO.java
new file mode 100644
index 0000000..61c80c1
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/CouponReceiveDetailVO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.promotion.controller.management.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.enums.CouponUseEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.time.LocalDateTime;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2024/6/9
+ */
+@Data
+@ApiModel(value = "管理后台-优惠券领取详情视图对象", description = "管理后台-优惠券领取详情视图对象")
+public class CouponReceiveDetailVO {
+
+    @ApiModelProperty(value = "优惠券id")
+    private Long couponId;
+
+    @ApiModelProperty(value = "优惠券id")
+    private Long memberId;
+
+    @ApiModelProperty(value = "会员姓名")
+    private String realName;
+
+    @ApiModelProperty(value = "联系电话")
+    private String phone;
+
+    @ApiModelProperty(value = "订单编号")
+    private String orderNo;
+
+    @ApiModelProperty(value = "使用时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用")
+    private CouponUseEnum couponStatus;
+
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtCouponVO.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtCouponVO.java
new file mode 100644
index 0000000..b37ee48
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtCouponVO.java
@@ -0,0 +1,72 @@
+package com.ruoyi.promotion.controller.management.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.enums.CouponTypeEnum;
+import com.ruoyi.common.core.enums.DistributionMethodEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2024/6/9
+ */
+@Data
+@ApiModel(value = "管理后台-优惠券视图对象", description = "管理后台-优惠券视图对象")
+public class MgtCouponVO {
+
+    @ApiModelProperty(value = "优惠券id")
+    private Long id;
+
+    @ApiModelProperty(value = "优惠券名称")
+    private String couponName;
+
+    @ApiModelProperty(value = "优惠券类型 1=满减券 2=代金券 3=折扣券")
+    private CouponTypeEnum couponType;
+
+    @ApiModelProperty(value = "状态 0=已上架 1=已下架")
+    private Integer couponStatus;
+
+    @ApiModelProperty(value = "满减金额,例如:满100元")
+    private BigDecimal fullReductionAmount;
+
+    @ApiModelProperty(value = "减少金额,例如:减50元")
+    private BigDecimal reductionAmount;
+
+    @ApiModelProperty(value = "代金券金额,例如:50元")
+    private BigDecimal voucherAmount;
+
+    @ApiModelProperty(value = "折扣额度,例如:8折")
+    private Double discountRate;
+
+    @ApiModelProperty(value = "最高可抵扣金额,例如:200元")
+    private BigDecimal maxDiscount;
+
+    @ApiModelProperty(value = "优惠券说明")
+    private String description;
+
+    @ApiModelProperty(value = "有效期起")
+    private LocalDateTime startDate;
+
+    @ApiModelProperty(value = "有效期止")
+    private LocalDateTime endDate;
+
+    @ApiModelProperty(value = "发放方式 1=全部会员 2=指定会员等级 3=指定会员")
+    private DistributionMethodEnum distributionMethod;
+
+    @ApiModelProperty(value = "会员等级,多等级以 , 隔开")
+    private String memberLevel;
+
+    @ApiModelProperty(value = "发放张数")
+    private Integer issuedQuantity;
+
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "优惠券详情")
+    private String details;
+
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionBannerVO.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionBannerVO.java
index 8ecb6c0..a80a6aa 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionBannerVO.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionBannerVO.java
@@ -14,7 +14,7 @@
  * @date 2024/6/6
  */
 @Data
-@ApiModel(value = "轮播图视图对象", description = "轮播图视图对象")
+@ApiModel(value = "管理后台-轮播图视图对象", description = "管理后台-轮播图视图对象")
 public class MgtPromotionBannerVO implements Serializable {
 
     private static final long serialVersionUID = -6660029413001641863L;
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionVideoVO.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionVideoVO.java
index 773879d..5654539 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionVideoVO.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionVideoVO.java
@@ -10,7 +10,7 @@
  * @date 2024/6/3
  */
 @Data
-@ApiModel(value = "大屏视频视图对象", description = "大屏视频视图对象")
+@ApiModel(value = "管理后台-大屏视频视图对象", description = "管理后台-大屏视频视图对象")
 public class MgtPromotionVideoVO implements Serializable {
 
     private static final long serialVersionUID = -1717120548273715375L;
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionWishListVO.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionWishListVO.java
index 58281cb..2e23de9 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionWishListVO.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionWishListVO.java
@@ -20,7 +20,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@ApiModel(value = "心愿求购视图对象", description = "心愿求购视图对象")
+@ApiModel(value = "管理后台-心愿求购视图对象", description = "管理后台-心愿求购视图对象")
 public class MgtPromotionWishListVO implements Serializable {
 
     private static final long serialVersionUID = 1L;
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/domain/Coupon.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/domain/Coupon.java
index 2a13280..a8b87e5 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/domain/Coupon.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/domain/Coupon.java
@@ -7,6 +7,8 @@
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ruoyi.common.core.enums.CouponTypeEnum;
+import com.ruoyi.common.core.enums.DistributionMethodEnum;
+import com.ruoyi.common.core.enums.ListingStatusEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import java.io.Serializable;
@@ -43,7 +45,7 @@
     private CouponTypeEnum couponType;
 
     @ApiModelProperty(value = "状态 0=已上架 1=已下架")
-    private Integer couponStatus;
+    private ListingStatusEnum couponStatus;
 
     @ApiModelProperty(value = "满减金额,例如:满100元")
     private BigDecimal fullReductionAmount;
@@ -69,6 +71,9 @@
     @ApiModelProperty(value = "有效期止")
     private LocalDateTime endDate;
 
+    @ApiModelProperty(value = "发放方式 1=全部会员 2=指定会员等级 3=指定会员")
+    private DistributionMethodEnum distributionMethod;
+
     @ApiModelProperty(value = "会员等级,多等级以 , 隔开")
     private String memberLevel;
 
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java
index 8ab187e..eb05110 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java
@@ -1,6 +1,13 @@
 package com.ruoyi.promotion.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.promotion.controller.management.dto.MgtCouponDTO;
+import com.ruoyi.promotion.controller.management.dto.MgtCouponQuery;
+import com.ruoyi.promotion.controller.management.dto.MgtCouponReceiveQuery;
+import com.ruoyi.promotion.controller.management.dto.MgtCouponUpdDTO;
+import com.ruoyi.promotion.controller.management.vo.CouponReceiveDetailVO;
+import com.ruoyi.promotion.controller.management.vo.MgtCouponVO;
 import com.ruoyi.promotion.domain.Coupon;
 
 /**
@@ -13,4 +20,35 @@
  */
 public interface ICouponService extends IService<Coupon> {
 
+    /**
+     * 获取优惠券列表的分页数据
+     *
+     * @param query 管理后台-优惠券查询对象
+     * @return PageDTO<MgtCouponVO>
+     */
+    PageDTO<MgtCouponVO> getCouponPage(MgtCouponQuery query);
+
+    /**
+     * 添加优惠券
+     *
+     * @param dto 管理后台-优惠券数据传输对象
+     */
+    void saveCoupon(MgtCouponDTO dto);
+
+    /**
+     * 编辑优惠券
+     *
+     * @param dto 管理后台-优惠券数据传输对象
+     */
+    void updateCoupon(MgtCouponDTO dto);
+
+    void updStatus(MgtCouponUpdDTO dto);
+
+    /**
+     * 领取详情
+     *
+     * @param query 管理后台-优惠券领取详情查询对象
+     * @return PageDTO<CouponReceiveDetailVO>
+     */
+    PageDTO<CouponReceiveDetailVO> getReceiveDetail(MgtCouponReceiveQuery query);
 }
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/async/AsyncMethodService.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/async/AsyncMethodService.java
new file mode 100644
index 0000000..015ce65
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/async/AsyncMethodService.java
@@ -0,0 +1,50 @@
+package com.ruoyi.promotion.service.async;
+
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.utils.page.BeanUtils;
+import com.ruoyi.promotion.domain.Coupon;
+import com.ruoyi.promotion.service.ICouponMemberService;
+import com.ruoyi.system.api.domain.CouponMember;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.RequiredArgsConstructor;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author mitao
+ * @date 2024/6/9
+ */
+@Service
+@RequiredArgsConstructor
+public class AsyncMethodService {
+
+    private final ICouponMemberService couponMemberService;
+
+    /**
+     * 异步处理优惠券发放
+     *
+     * @param coupon       发放的优惠券
+     * @param memberIdList 发放的会员id
+     */
+    @Async
+    public void issueCoupon(Coupon coupon, List<Long> memberIdList) {
+        Long couponId = coupon.getId();
+        Integer issuedQuantity = coupon.getIssuedQuantity();
+        List<CouponMember> memberCouponList = new ArrayList<>();
+        for (Long memberId : memberIdList) {
+            coupon.setId(null);
+            CouponMember couponMember = BeanUtils.copyBean(coupon, CouponMember.class);
+            couponMember.setMemberId(memberId);
+            couponMember.setCouponId(couponId);
+            memberCouponList.add(couponMember);
+            if (StringUtils.isNotNull(issuedQuantity)
+                    && memberCouponList.size() >= issuedQuantity) {
+                break;
+            }
+        }
+        if (StringUtils.isNotEmpty(memberCouponList)) {
+            couponMemberService.saveBatch(memberCouponList);
+        }
+    }
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponMemberServiceImpl.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponMemberServiceImpl.java
index f50c186..8bb9f28 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponMemberServiceImpl.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponMemberServiceImpl.java
@@ -4,12 +4,12 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.enums.CouponUseEnum;
 import com.ruoyi.common.core.utils.page.PageDTO;
-import com.ruoyi.system.api.domain.dto.CouponMemberDTO;
-import com.ruoyi.system.api.domain.CouponMember;
 import com.ruoyi.promotion.mapper.CouponMemberMapper;
 import com.ruoyi.promotion.service.ICouponMemberService;
-import java.time.LocalDateTime;
+import com.ruoyi.system.api.domain.CouponMember;
+import com.ruoyi.system.api.domain.dto.CouponMemberDTO;
 import java.util.List;
 import org.springframework.stereotype.Service;
 
@@ -28,18 +28,19 @@
     @Override
     public PageDTO<CouponMember> getCouponMemberList(CouponMemberDTO couponMemberDTO) {
         LambdaQueryWrapper<CouponMember> wrapper= Wrappers.lambdaQuery();
-        wrapper.eq(CouponMember::getCouponStatus,1);
+        wrapper.eq(CouponMember::getCouponStatus, CouponUseEnum.UNUSED);
         wrapper.eq(CouponMember::getDelFlag,0);
             List<CouponMember> couponMemberList=this.list(wrapper);
-        for (CouponMember couponMember:couponMemberList){
+    /*    for (CouponMember couponMember:couponMemberList){
             if(LocalDateTime.now().isAfter(couponMember.getEndDate())){
                 couponMember.setCouponStatus(0);
                 this.updateById(couponMember);
             }
-        }
+        }*/
         Page<CouponMember> page = new Page<>(couponMemberDTO.getPageCurr(), couponMemberDTO.getPageSize());
         LambdaQueryWrapper<CouponMember> wrapper1= Wrappers.lambdaQuery();
-        wrapper1.eq(CouponMember::getCouponStatus,couponMemberDTO.getCouponStatus());
+        wrapper1.eq(CouponMember::getCouponStatus,
+                CouponUseEnum.getEnumByCode(couponMemberDTO.getCouponStatus()));
         wrapper1.eq(CouponMember::getDelFlag,0);
         Page<CouponMember> page1 = this.page(page, wrapper);
         return PageDTO.of(page1);
@@ -53,7 +54,7 @@
     @Override
     public void updCouponMember(CouponMemberDTO couponMemberDTO) {
         CouponMember byId = this.getById(couponMemberDTO.getId());
-        byId.setCouponStatus(couponMemberDTO.getCouponStatus());
+        byId.setCouponStatus(CouponUseEnum.getEnumByCode(couponMemberDTO.getCouponStatus()));
         this.updateById(byId);
     }
 }
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java
index 9bf43cf..a7455d7 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java
@@ -1,9 +1,41 @@
 package com.ruoyi.promotion.service.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.ruoyi.common.core.constant.SecurityConstants;
+import com.ruoyi.common.core.enums.CouponTypeEnum;
+import com.ruoyi.common.core.enums.CouponUseEnum;
+import com.ruoyi.common.core.enums.DistributionMethodEnum;
+import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.utils.page.BeanUtils;
+import com.ruoyi.common.core.utils.page.CollUtils;
+import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.promotion.controller.management.dto.MgtCouponDTO;
+import com.ruoyi.promotion.controller.management.dto.MgtCouponQuery;
+import com.ruoyi.promotion.controller.management.dto.MgtCouponReceiveQuery;
+import com.ruoyi.promotion.controller.management.dto.MgtCouponUpdDTO;
+import com.ruoyi.promotion.controller.management.vo.CouponReceiveDetailVO;
+import com.ruoyi.promotion.controller.management.vo.MgtCouponVO;
 import com.ruoyi.promotion.domain.Coupon;
 import com.ruoyi.promotion.mapper.CouponMapper;
+import com.ruoyi.promotion.service.ICouponMemberService;
 import com.ruoyi.promotion.service.ICouponService;
+import com.ruoyi.promotion.service.async.AsyncMethodService;
+import com.ruoyi.system.api.domain.CouponMember;
+import com.ruoyi.system.api.domain.Member;
+import com.ruoyi.system.api.domain.Order;
+import com.ruoyi.system.api.domain.dto.MemberDTO;
+import com.ruoyi.system.api.feignClient.MemberClient;
+import com.ruoyi.system.api.feignClient.OrderClient;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 /**
@@ -15,6 +47,216 @@
  * @since 2024-05-16
  */
 @Service
+@RequiredArgsConstructor
 public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> implements ICouponService {
 
+
+    private final AsyncMethodService asyncMethodService;
+    private final MemberClient memberClient;
+    private final OrderClient orderClient;
+    private final ICouponMemberService couponMemberService;
+
+    /**
+     * 获取优惠券列表的分页数据
+     *
+     * @param query 管理后台-优惠券查询对象
+     * @return PageDTO<MgtCouponVO>
+     */
+    @Override
+    public PageDTO<MgtCouponVO> getCouponPage(MgtCouponQuery query) {
+        Page<Coupon> page = this.lambdaQuery()
+                .select(Coupon::getId, Coupon::getCouponName, Coupon::getCouponType,
+                        Coupon::getFullReductionAmount, Coupon::getReductionAmount,
+                        Coupon::getVoucherAmount, Coupon::getDiscountRate,
+                        Coupon::getDistributionMethod, Coupon::getCouponStatus,
+                        Coupon::getDescription, Coupon::getCreateTime)
+                .like(StringUtils.isNotBlank(query.getCouponName()), Coupon::getCouponName,
+                        query.getCouponName())
+                .eq(StringUtils.isNotNull(query.getCouponType()), Coupon::getCouponType,
+                        query.getCouponType())
+                .eq(StringUtils.isNotNull(query.getDistributionMethod()),
+                        Coupon::getDistributionMethod, query.getDistributionMethod())
+                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
+        if (StringUtils.isEmpty(page.getRecords())) {
+            return PageDTO.empty(page);
+        }
+        PageDTO<MgtCouponVO> mgtCouponVOPageDTO = PageDTO.of(page, MgtCouponVO.class);
+        List<MgtCouponVO> collect = mgtCouponVOPageDTO.getList().stream().peek(coupon -> {
+            if (CouponTypeEnum.FULL_REDUCTION_COUPON.equals(coupon.getCouponType())) {
+                coupon.setDetails("满" + coupon.getFullReductionAmount() + "元减"
+                        + coupon.getReductionAmount() + "元");
+            } else if (CouponTypeEnum.CASH_COUPON.equals(coupon.getCouponType())) {
+                coupon.setDetails(coupon.getVoucherAmount().toString());
+            } else if (CouponTypeEnum.COUPON.equals(coupon.getCouponType())) {
+                coupon.setDetails(coupon.getDiscountRate() + "折");
+            }
+        }).collect(Collectors.toList());
+        mgtCouponVOPageDTO.setList(collect);
+        return mgtCouponVOPageDTO;
+    }
+
+    /**
+     * 添加优惠券
+     *
+     * @param dto 管理后台-优惠券数据传输对象
+     */
+    @Override
+    public void saveCoupon(MgtCouponDTO dto) {
+        // 参数校验
+        if (dto.getCouponType().equals(CouponTypeEnum.FULL_REDUCTION_COUPON)) {
+            if (StringUtils.isNull(dto.getFullReductionAmount()) || StringUtils.isNull(
+                    dto.getReductionAmount())) {
+                throw new ServiceException("满减券的满减金额不能为空");
+            }
+        } else if (dto.getCouponType().equals(CouponTypeEnum.CASH_COUPON) && StringUtils.isNull(
+                dto.getVoucherAmount())) {
+            throw new ServiceException("代金券的代金券金额不能为空");
+        } else if (dto.getCouponType().equals(CouponTypeEnum.COUPON) && StringUtils.isNull(
+                dto.getDiscountRate())) {
+            throw new ServiceException("折扣券的折扣额度不能为空");
+        }
+        if (dto.getDistributionMethod().equals(DistributionMethodEnum.SPECIFY_MEMBERSHIP_LEVEL)
+                && StringUtils.isBlank(dto.getMemberLevel())) {
+            throw new ServiceException("会员等级不能为空");
+        } else if (dto.getDistributionMethod().equals(DistributionMethodEnum.DESIGNATED_MEMBERS)
+                && StringUtils.isEmpty(dto.getMemberIdList())) {
+            throw new ServiceException("会员id列表不能为空");
+        }
+        Coupon coupon = BeanUtils.copyBean(dto, Coupon.class);
+        this.save(coupon);
+        List<Long> memberIdList = new ArrayList<>();
+        if (dto.getDistributionMethod().equals(DistributionMethodEnum.DESIGNATED_MEMBERS)) {
+            memberIdList = dto.getMemberIdList();
+        } else if (dto.getDistributionMethod()
+                .equals(DistributionMethodEnum.SPECIFY_MEMBERSHIP_LEVEL)) {
+            String[] memberLevelsStr = dto.getMemberLevel().replace(",", ",").split(",");
+            // 转为List<String>集合
+            List<Member> memberList = memberClient.getMemberListByLevel(
+                    Lists.newArrayList(memberLevelsStr), SecurityConstants.INNER).getData();
+            memberIdList = memberList.stream().map(Member::getId).collect(Collectors.toList());
+        } else if (dto.getDistributionMethod().equals(DistributionMethodEnum.ALL_MEMBERS)) {
+            List<Member> memberList = memberClient.getMemberListByLevel(
+                    CollUtils.emptyList(), SecurityConstants.INNER).getData();
+            memberIdList = memberList.stream().map(Member::getId).collect(Collectors.toList());
+        }
+
+        // 发放优惠券
+        asyncMethodService.issueCoupon(coupon, memberIdList);
+    }
+
+    /**
+     * 编辑优惠券
+     *
+     * @param dto 管理后台-优惠券数据传输对象
+     */
+    @Override
+    public void updateCoupon(MgtCouponDTO dto) {
+        Coupon coupon = this.getById(dto.getId());
+        if (StringUtils.isNull(coupon)) {
+            throw new ServiceException("优惠券不存在");
+        }
+        coupon.setCouponName(dto.getCouponName());
+        coupon.setDescription(dto.getDescription());
+        this.updateById(coupon);
+    }
+
+    @Override
+    public void updStatus(MgtCouponUpdDTO dto) {
+        this.lambdaUpdate()
+                .set(Coupon::getCouponStatus, dto.getCouponStatus())
+                .eq(Coupon::getId, dto.getId());
+    }
+
+    /**
+     * 领取详情
+     *
+     * @param query 管理后台-优惠券领取详情查询对象
+     * @return PageDTO<CouponReceiveDetailVO>
+     */
+    @Override
+    public PageDTO<CouponReceiveDetailVO> getReceiveDetail(MgtCouponReceiveQuery query) {
+        MemberDTO memberDTO = null;
+        Set<Long> memberIdSet = null;
+        if (StringUtils.isNotBlank(query.getRealName()) || StringUtils.isNotBlank(
+                query.getPhone())) {
+            memberDTO = new MemberDTO();
+            memberDTO.setRealName(query.getRealName());
+            memberDTO.setPhone(query.getPhone());
+        }
+        if (StringUtils.isNotNull(memberDTO)) {
+            List<Member> data = memberClient.getMemberListByCondition(memberDTO,
+                    SecurityConstants.INNER).getData();
+            memberIdSet = data.stream().map(Member::getId).collect(Collectors.toSet());
+        }
+        Page<CouponMember> page = couponMemberService.lambdaQuery()
+                .eq(StringUtils.isNotNull(query.getCouponStatus()),
+                        CouponMember::getCouponStatus, query.getCouponStatus())
+                .in(StringUtils.isNotEmpty(memberIdSet), CouponMember::getMemberId, memberIdSet)
+                .eq(CouponMember::getCouponId, query.getId())
+                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
+        if (StringUtils.isEmpty(page.getRecords())) {
+            return PageDTO.empty(page);
+        }
+        PageDTO<CouponReceiveDetailVO> couponReceiveDetailVOPageDTO = PageDTO.of(page,
+                CouponReceiveDetailVO.class);
+        // 远程调用会员服务,获取会员信息
+        List<Long> memberIdList = page.getRecords().stream().map(CouponMember::getMemberId)
+                .collect(Collectors.toList());
+        if (StringUtils.isNotEmpty(memberIdList)) {
+            List<Member> memberList = memberClient.getMemberListByIds(memberIdList,
+                    SecurityConstants.INNER).getData();
+            Map<Long, Member> memberMap = memberList.stream()
+                    .collect(Collectors.toMap(Member::getId, Function.identity()));
+            couponReceiveDetailVOPageDTO.getList().forEach(item -> {
+                Member member = memberMap.get(item.getMemberId());
+                item.setRealName(member.getRealName());
+                item.setPhone(member.getPhone());
+            });
+        }
+        // 远程调用订单服务,获取订单信息
+        List<CouponReceiveDetailVO> usedCouponList = couponReceiveDetailVOPageDTO.getList().stream()
+                .filter(item -> item.getCouponStatus().equals(
+                        CouponUseEnum.USED)).collect(Collectors.toList());
+        Set<Long> couponIdSet = usedCouponList.stream().map(CouponReceiveDetailVO::getCouponId)
+                .collect(Collectors.toSet());
+        Map<String, Order> orderMap = null;
+        Map<Long, Member> memberMap = null;
+        if (StringUtils.isNotEmpty(usedCouponList)) {
+            List<Order> data = orderClient.getOrderByCouponIds(couponIdSet, SecurityConstants.INNER)
+                    .getData();
+            orderMap = data.stream().collect(
+                    Collectors.toMap(order -> order.getCouponId() + "-" + order.getMemberId(),
+                            Function.identity()));
+
+        }
+        Set<Long> memberSet = couponReceiveDetailVOPageDTO.getList().stream()
+                .map(CouponReceiveDetailVO::getMemberId).collect(
+                        Collectors.toSet());
+        if (StringUtils.isNotEmpty(memberSet)) {
+            List<Member> data = memberClient.getMemberListByIds(memberSet, SecurityConstants.INNER)
+                    .getData();
+            memberMap = data.stream().collect(
+                    Collectors.toMap(Member::getId, Function.identity()));
+        }
+        // 封装VO
+        for (CouponReceiveDetailVO couponReceiveDetailVO : couponReceiveDetailVOPageDTO.getList()) {
+            if (StringUtils.isNotEmpty(memberMap)) {
+                Member member = memberMap.get(couponReceiveDetailVO.getMemberId());
+                if (StringUtils.isNotNull(member)) {
+                    couponReceiveDetailVO.setRealName(member.getRealName());
+                    couponReceiveDetailVO.setPhone(member.getPhone());
+                }
+            } else if (StringUtils.isNotEmpty(orderMap)) {
+                Order order = orderMap.get(couponReceiveDetailVO.getCouponId() + "-"
+                        + couponReceiveDetailVO.getMemberId());
+                if (StringUtils.isNotNull(order)) {
+                    couponReceiveDetailVO.setOrderNo(order.getOrderNo());
+                    couponReceiveDetailVO.setCreateTime(order.getCreateTime());
+                }
+            } else {
+                break;
+            }
+        }
+        return couponReceiveDetailVOPageDTO;
+    }
 }
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionWishListServiceImpl.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionWishListServiceImpl.java
index 2fbca28..b583f35 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionWishListServiceImpl.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionWishListServiceImpl.java
@@ -85,17 +85,22 @@
     public PageDTO<MgtPromotionWishListVO> getPromotionWishListPage(
             MgtPromotionWishListQuery query) {
         // 封装会员条件查询对象
-        MemberDTO memberDTO = new MemberDTO();
-        if (StringUtils.isNotBlank(query.getNickname())) {
+        MemberDTO memberDTO = null;
+        Set<Long> memberIdSet = null;
+        if (StringUtils.isNotBlank(query.getNickname()) || StringUtils.isNotBlank(
+                query.getPhone())) {
+            memberDTO = new MemberDTO();
             memberDTO.setNickname(query.getNickname());
-        }
-        if (StringUtils.isNotBlank(query.getPhone())) {
             memberDTO.setPhone(query.getPhone());
         }
-        // 远程调用会员服务进行条件查询
-        List<Member> memberList = memberClient.getMemberListByCondition(memberDTO,
-                SecurityConstants.INNER).getData();
-        Set<Long> memberIdSet = memberList.stream().map(Member::getId).collect(Collectors.toSet());
+        if (StringUtils.isNotNull(memberDTO)) {
+            // 远程调用会员服务进行条件查询
+            List<Member> memberList = memberClient.getMemberListByCondition(memberDTO,
+                    SecurityConstants.INNER).getData();
+            memberIdSet = memberList.stream().map(Member::getId)
+                    .collect(Collectors.toSet());
+        }
+
         // 分页查询心愿求购列表
         Page<PromotionWishList> page = this.lambdaQuery()
                 .eq(StringUtils.isNotNull(query.getReplyStatus()),

--
Gitblit v1.7.1