From 1f3e9dc85399290910cde7149806323305544e0d Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期六, 20 七月 2024 19:17:23 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java      |   74 +++++++---
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CouponMemberDTO.java              |    2 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java        |    4 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java         |   10 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderReturnDTO.java               |    4 
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java  |   36 ++--
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java                            |    1 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java    |   10 +
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java   |    2 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java              |    2 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/scheduler/PromotionScheduler.java          |   28 ++++
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponMemberServiceImpl.java  |   12 
 ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                              |    1 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberPointsController.java     |   12 -
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/CouponMember.java                     |    2 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/async/AsyncMethodService.java      |   14 -
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java    |   26 +++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderVO.java           |    2 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponMemberService.java          |    6 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/forepart/vo/CouponMemberVO.java |   11 +
 ruoyi-modules/ruoyi-promotion/src/main/resources/mapper/promotion/CouponMemberMapper.xml                   |    7 +
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/mapper/CouponMemberMapper.java             |    1 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java                 |   74 +++++++---
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java        |   14 ++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java              |    3 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java                |    3 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java             |   34 ++--
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/GoodsGroupPurchaseInfo.java           |    2 
 28 files changed, 270 insertions(+), 127 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 01d7989..27fbb47 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
@@ -47,7 +47,7 @@
     @ApiModelProperty(value = "优惠券类型 1=满减券 2=代金券 3=折扣券")
     private CouponTypeEnum couponType;
 
-    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用")
+    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用 2:已过期")
     private CouponUseEnum couponStatus;
     
     @ApiModelProperty(value = "满减金额,例如:满100元")
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/GoodsGroupPurchaseInfo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/GoodsGroupPurchaseInfo.java
index 09f2848..01fa962 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/GoodsGroupPurchaseInfo.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/GoodsGroupPurchaseInfo.java
@@ -46,7 +46,7 @@
     @ApiModelProperty(value = "成团人数")
     private Integer groupSize;
 
-    @ApiModelProperty(value = "0 是未成团,1 是已经成团")
+    @ApiModelProperty(value = "0 是未成团,1 是已经成团 2 成团失败")
     private Integer groupStatus;
 
     @ApiModelProperty(value = "创建者")
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java
index 427c0c8..d44a34b 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java
@@ -163,4 +163,5 @@
 
     @ApiModelProperty("团购编号")
     private String groupNo;
+
 }
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 cc634b2..da15d8e 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 = "优惠券状态 0:未使用, 1:已使用")
+    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用 2:已过期")
     private Integer couponStatus;
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderReturnDTO.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderReturnDTO.java
index bd66e6a..9d0b33d 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderReturnDTO.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderReturnDTO.java
@@ -1,12 +1,8 @@
 package com.ruoyi.system.api.domain.dto;
 
-import com.ruoyi.common.core.enums.RequestTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.time.LocalDateTime;
 
 @Data
 @ApiModel(value = "售后订单传输对象", description = "售后订单传输对象")
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java
index 983c10c..23d8683 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java
@@ -54,7 +54,7 @@
     }
 
     private boolean isWithinOneHour(LocalDateTime startTime) {
-        LocalDateTime checkTime = LocalDateTime.now().plusHours(1);
+        LocalDateTime checkTime = LocalDateTime.now().plusMinutes(61);
         return checkTime.isAfter(startTime);
     }
 
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
index fa8ca17..987e1c0 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
@@ -317,12 +317,29 @@
                     id);
             List<AuctionBidRecord> auctionBidRecordList = new ArrayList<>();
             if (StringUtils.isNotEmpty(auctionBidRecords)) {
-                // 中标
-                for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
-                    AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
-                    auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
-                    auctionBidRecordList.add(auctionBidRecord);
+                if (auctionBidRecords.size() >= auctionGoods.getAuctionStock()) {
+                    // 中标
+                    for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
+                        AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
+                        auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
+                        auctionBidRecordList.add(auctionBidRecord);
+                    }
+                } else {
+                    // 中标
+                    for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
+                        AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
+                        auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
+                        auctionBidRecordList.add(auctionBidRecord);
+                    }
+                    // 退回剩余库存
+                    GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
+                    goodsStockUpdDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId());
+                    goodsStockUpdDTO.setAuctionStock(
+                            auctionGoods.getAuctionStock() - auctionBidRecordList.size());
+                    goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
+                            SecurityConstants.INNER);
                 }
+
                 auctionBidRecordService.updateBatchById(auctionBidRecordList);
 
                 // 创建待支付订单
@@ -330,11 +347,12 @@
                         ConfigEnum.MEMBER_POINTS_MONEY.getKey()).getData();
                 CustomConfig pointsConfig = sysUserClient.getconfig(
                         ConfigEnum.MEMBER_POINTS_POINTS.getKey()).getData();
-                double ratio =
-                        Double.parseDouble(
-                                pointsConfig.getConfigValue()) / Double.parseDouble(
-                                moneyConfig.getConfigValue());
                 for (AuctionBidRecord auctionBidRecord : auctionBidRecordList) {
+                    BigDecimal lastBidAmount = auctionBidRecord.getLastBidAmount();
+                    BigDecimal divide = lastBidAmount.divide(
+                            new BigDecimal(moneyConfig.getConfigValue()), 0, RoundingMode.DOWN);
+                    int points = divide.multiply(
+                            new BigDecimal(pointsConfig.getConfigValue())).intValue();
                     OrderDTO orderDTO = new OrderDTO();
                     orderDTO.setAuctionType(AuctionOrderTypeEnum.REGULAR_ITEMS);
                     orderDTO.setGoodsQuantity(auctionGoods.getAuctionStock());
@@ -344,8 +362,7 @@
                     orderDTO.setTotalAmount(auctionBidRecord.getLastBidAmount());
                     orderDTO.setOrderFrom(OrderFromEnum.AUCTION_ORDERS);
                     orderDTO.setOrderTime(LocalDateTime.now());
-                    orderDTO.setPoints(auctionBidRecord.getLastBidAmount()
-                            .multiply(BigDecimal.valueOf(ratio)).intValue());
+                    orderDTO.setPoints(points);
                     orderDTO.setBound(auctionGoods.getBond());
                     MemberAddress data = memberClient.getMemberAddressOne(
                             auctionBidRecord.getMemberId(), SecurityConstants.INNER).getData();
@@ -692,12 +709,29 @@
                         id);
                 List<AuctionBidRecord> auctionBidRecordList = new ArrayList<>();
                 if (StringUtils.isNotEmpty(auctionBidRecords)) {
-                    // 中标
-                    for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
-                        AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
-                        auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
-                        auctionBidRecordList.add(auctionBidRecord);
+                    if (auctionBidRecords.size() >= auctionGoods.getAuctionStock()) {
+                        // 中标
+                        for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
+                            AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
+                            auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
+                            auctionBidRecordList.add(auctionBidRecord);
+                        }
+                    } else {
+                        // 中标
+                        for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
+                            AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
+                            auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
+                            auctionBidRecordList.add(auctionBidRecord);
+                        }
+                        // 退回剩余库存
+                        GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
+                        goodsStockUpdDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId());
+                        goodsStockUpdDTO.setAuctionStock(
+                                auctionGoods.getAuctionStock() - auctionBidRecords.size());
+                        goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
+                                SecurityConstants.INNER);
                     }
+
                     auctionBidRecordService.updateBatchById(auctionBidRecordList);
 
                     // 创建待支付订单
@@ -705,12 +739,6 @@
                             ConfigEnum.MEMBER_POINTS_MONEY.getKey()).getData();
                     CustomConfig pointsConfig = sysUserClient.getconfig(
                             ConfigEnum.MEMBER_POINTS_POINTS.getKey()).getData();
-                    BigDecimal ratio =
-                            BigDecimal.valueOf(Double.parseDouble(
-                                            pointsConfig.getConfigValue()))
-                                    .divide(BigDecimal.valueOf(Double.parseDouble(
-                                            moneyConfig.getConfigValue())), 0, RoundingMode.DOWN);
-
                     for (AuctionBidRecord auctionBidRecord : auctionBidRecordList) {
                         BigDecimal lastBidAmount = auctionBidRecord.getLastBidAmount();
                         BigDecimal divide = lastBidAmount.divide(
@@ -798,7 +826,7 @@
                         return null;
                     }).filter(Objects::nonNull).collect(Collectors.toList());
                     // 远程调用订单服务修改订单状态
-                    orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID,
+                    orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.REFUNDED,
                             SecurityConstants.INNER);
                 }
             }
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
index 053ad8a..21709c0 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -884,7 +884,7 @@
     public String getQrCode(Long id) throws Exception {
         AuctionSalesroom auctionSalesroom = this.getById(id);
         String auctionSalesroomNo = auctionSalesroom.getAuctionSalesroomNo();
-        return CreateQrCode.createQRCode(auctionSalesroomNo);
+        return auctionSalesroom.getQrCode();
     }
 
     @Override
@@ -1483,11 +1483,10 @@
 
         if (lastBidAmount.intValue() > 0) {
             BigDecimal divide = lastBidAmount.divide(
-                    BigDecimal.valueOf(Long.parseLong(memberPointsMoney.getConfigValue())), 0,
+                    new BigDecimal(memberPointsMoney.getConfigValue()), 0,
                     RoundingMode.DOWN);
             int points = divide.multiply(
-                    BigDecimal.valueOf(
-                            Long.parseLong((memberPointsPoints.getConfigValue())))).intValue();
+                    new BigDecimal(memberPointsPoints.getConfigValue())).intValue();
             order.setPoints(points);
         } else {
             order.setPoints(0);
@@ -1630,10 +1629,14 @@
             List<GoodsStockUpdDTO> dtoList = new ArrayList<>();
             for (AuctionSalesroomGoods salesroomGoods : auctionSalesroomGoods) {
                 salesroomGoods.setStatus(AuctionGoodsStatusEnum.ENDED);
-                GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
-                goodsStockUpdDTO.setGoodsSkuId(salesroomGoods.getGoodsSkuId());
-                goodsStockUpdDTO.setAuctionStock(salesroomGoods.getSalesroomStock());
-                dtoList.add(goodsStockUpdDTO);
+                // 等待中的商品退库存
+                if (salesroomGoods.getStatus().equals(AuctionGoodsStatusEnum.WAITING)) {
+                    GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
+                    goodsStockUpdDTO.setGoodsSkuId(salesroomGoods.getGoodsSkuId());
+                    goodsStockUpdDTO.setAuctionStock(salesroomGoods.getSalesroomStock());
+                    dtoList.add(goodsStockUpdDTO);
+                }
+
             }
             // 批量更新商品库存
             auctionSalesroomGoodsMapper.updateBatchById(auctionSalesroomGoods);
@@ -1643,15 +1646,16 @@
         List<AuctionBidRecord> auctionBidRecordList = auctionBidRecordMapper.selectList(
                 Wrappers.<AuctionBidRecord>lambdaQuery()
                         .eq(AuctionBidRecord::getAuctionSalesroomId, auctionSalesroomId)
-                        .eq(AuctionBidRecord::getStatus, BidStatusEnum.ELIMINATE));
-        Set<Long> memberIdlist = auctionBidRecordList.stream().map(AuctionBidRecord::getMemberId)
-                .collect(Collectors.toSet());
-        if (StringUtils.isNotEmpty(memberIdlist)) {
-            OrderAuctionBondDTO orderAuctionBondDTO = new OrderAuctionBondDTO();
-            orderAuctionBondDTO.setAuctionSalesroomId(auctionSalesroom.getId());
-            orderAuctionBondDTO.setUserList(memberIdlist);
-            orderClient.getOrderAuctionBond(orderAuctionBondDTO, SecurityConstants.INNER);
+                        .ne(AuctionBidRecord::getStatus, BidStatusEnum.SUCCESSFUL));
+        Set<Long> memberIdList = new HashSet<>();
+        if (CollUtils.isNotEmpty(auctionBidRecordList)) {
+            memberIdList = auctionBidRecordList.stream().map(AuctionBidRecord::getMemberId)
+                    .collect(Collectors.toSet());
         }
+        OrderAuctionBondDTO orderAuctionBondDTO = new OrderAuctionBondDTO();
+        orderAuctionBondDTO.setAuctionSalesroomId(auctionSalesroom.getId());
+        orderAuctionBondDTO.setUserList(memberIdList);
+        orderClient.getOrderAuctionBond(orderAuctionBondDTO, SecurityConstants.INNER);
         Map<String, Object> map = new ConcurrentHashMap<>();
         map.put("notification_type", NotificationTypeConstant.AUCTION_SALESROOM);
         map.put("auctionSalesroomId", auctionSalesroom.getId().toString());
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java
index 4dfb39a..a6dd4da 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java
@@ -79,7 +79,7 @@
     }
     
     private boolean isWithinOneHour(LocalDateTime startTime) {
-        LocalDateTime checkTime = LocalDateTime.now().plusHours(1);
+        LocalDateTime checkTime = LocalDateTime.now().plusMinutes(61);
         return checkTime.isAfter(startTime);
     }
 
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
index 9c92c18..1602f6a 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
@@ -292,6 +292,7 @@
         groupPurchase.setGroupStatus(
                 res ? GroupStatusEnum.FORMED_INTO_A_GROUP : GroupStatusEnum.GROUP_FAILURE);
         groupPurchase.setStartStatus(StartStatusEnum.ENDED);
+
         this.updateById(groupPurchase);
     }
 
@@ -329,7 +330,7 @@
                     });
                     try {
                         log.info(
-                                "============  =================退款结束=============================");
+                                "=============================退款结束=============================");
                         log.info("退款成功订单:{}",
                                 objectMapper.writeValueAsString(successfulOrders));
                         log.info("退款失败订单:{}", objectMapper.writeValueAsString(failedOrders));
@@ -356,6 +357,13 @@
                 orderClient.updateOrderStatusByMubres(formedGroupMubres, SecurityConstants.INNER);
                 return true;
             }
+            List<GoodsGroupPurchaseInfo> notGroupedList = groupPurchaseInfoList.stream()
+                    .filter(g -> !g.getCurrentNumber()
+                            .equals(g.getGroupSize())).peek(p -> {
+                        p.setGroupStatus(GroupStatusEnum.GROUP_FAILURE.getCode());
+                    }).collect(
+                            Collectors.toList());
+            goodsGroupPurchaseInfoService.updateBatchById(notGroupedList);
         }
         return false;
     }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberPointsController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberPointsController.java
index 993e5c2..e87124e 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberPointsController.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberPointsController.java
@@ -2,18 +2,14 @@
 
 
 import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.utils.page.PageDTO;
-import com.ruoyi.system.api.domain.MemberPoints;
 import com.ruoyi.member.service.IMemberPointsService;
-import com.ruoyi.system.api.domain.dto.MemberDTO;
 import com.ruoyi.system.api.domain.dto.MemberPointsDTO;
 import io.swagger.annotations.ApiOperation;
+import javax.annotation.Resource;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
 
 /**
  * <p>
@@ -31,11 +27,7 @@
     @PostMapping("/addMemberPoints")
     @ApiOperation(value = "用户端-添加或减少用户积分")
     public R addMemberPoints(@RequestBody MemberPointsDTO memberPointsDTO) {
-        MemberPoints points=new MemberPoints();
-        points.setMemberId(memberPointsDTO.getMemberId());
-        points.setPointsType(memberPointsDTO.getPointsType());
-        points.setPoints(memberPointsDTO.getPoints());
-        iMemberPointsService.save(points);
+        iMemberPointsService.addMemberPoints(memberPointsDTO);
         return R.ok();
     }
 
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java
index f1bf9c7..a2116d1 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java
@@ -6,6 +6,7 @@
 import com.ruoyi.member.controller.management.vo.MgtMemberPointsVO;
 import com.ruoyi.system.api.domain.MemberPoints;
 import com.ruoyi.system.api.domain.dto.MemberDTO;
+import com.ruoyi.system.api.domain.dto.MemberPointsDTO;
 
 /**
  * <p>
@@ -26,4 +27,6 @@
      * @return PageDTO<MgtMemberPointsVO>
      */
     PageDTO<MgtMemberPointsVO> getMemberPointsPage(MgtMemberPointsQuery query);
+
+    void addMemberPoints(MemberPointsDTO memberPointsDTO);
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java
index 05885ba..7e9434f 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java
@@ -14,6 +14,7 @@
 import com.ruoyi.system.api.domain.Member;
 import com.ruoyi.system.api.domain.MemberPoints;
 import com.ruoyi.system.api.domain.dto.MemberDTO;
+import com.ruoyi.system.api.domain.dto.MemberPointsDTO;
 import com.ruoyi.system.api.feignClient.MemberClient;
 import java.util.List;
 import java.util.Map;
@@ -22,6 +23,8 @@
 import java.util.stream.Collectors;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * <p>
@@ -69,6 +72,7 @@
                 .eq(StringUtils.isNotNull(query.getPointsStatus()), MemberPoints::getPointsStatus,
                         query.getPointsStatus())
                 .in(StringUtils.isNotEmpty(memberIdSet), MemberPoints::getMemberId, memberIdSet)
+                .eq(StringUtils.isNotNull(query.getId()), MemberPoints::getMemberId, query.getId())
                 .orderByDesc(MemberPoints::getCreateTime)
                 .page(page);
         if (StringUtils.isEmpty(page.getRecords())) {
@@ -116,4 +120,14 @@
         }
         return memberDTO;
     }
+
+    @Override
+    @Transactional(propagation = Propagation.REQUIRES_NEW)
+    public void addMemberPoints(MemberPointsDTO memberPointsDTO) {
+        MemberPoints points = new MemberPoints();
+        points.setMemberId(memberPointsDTO.getMemberId());
+        points.setPointsType(memberPointsDTO.getPointsType());
+        points.setPoints(memberPointsDTO.getPoints());
+        this.save(points);
+    }
 }
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 5fce8fc..69c6dcf 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
@@ -64,6 +64,8 @@
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * <p>
@@ -525,6 +527,7 @@
     }
 
     @Override
+    @Transactional(propagation = Propagation.REQUIRES_NEW)
     public void updMembeOne(updMembeOneDTO dMembeOneDTO) {
         Member byId = this.getById(dMembeOneDTO.getMemberId());
         if (dMembeOneDTO.getMoney()!=null){
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderVO.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderVO.java
index b2845da..67d3b50 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderVO.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderVO.java
@@ -35,7 +35,7 @@
     private LocalDateTime orderTime;
 
     @ApiModelProperty(value = "拍卖订单类型 1=普通拍品 2=拍卖会拍品")
-    private AuctionOrderTypeEnum auctionType;
+    private AuctionOrderTypeEnum auctionOrderType;
 
     @ApiModelProperty(value = "所属拍卖场")
     private String salesroomName;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java
index b63e90c..4feb7e1 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java
@@ -34,6 +34,7 @@
 import javax.annotation.Resource;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * <p>
@@ -208,6 +209,7 @@
      * @param dto 管理后台-开票申请审核数据传输对象
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void audit(MgtMemberInvoicingAuditDTO dto) {
         MemberInvoice memberInvoice = getMemberInvoice(dto.getId());
         if (!Objects.equals(memberInvoice.getInvoiceStatus(), 1)) {
@@ -222,13 +224,13 @@
         List<MemberInvoiceOrder> memberInvoiceOrderList = iMemberInvoiceOrderService.lambdaQuery()
                 .eq(MemberInvoiceOrder::getInvoiceId, memberInvoice)
                 .list();
-        Set<Long> orderIdSet = memberInvoiceOrderList.stream()
-                .map(MemberInvoiceOrder::getOrderId)
+        Set<String> orderNoSet = memberInvoiceOrderList.stream()
+                .map(MemberInvoiceOrder::getOrderNo)
                 .collect(Collectors.toSet());
-        if (!orderIdSet.isEmpty()) {
+        if (!orderNoSet.isEmpty()) {
             iOrderService.lambdaUpdate()
                     .set(Order::getInvoiceStatus, dto.getInvoiceStatus() == 2 ? 3 : 4)
-                    .in(Order::getId, orderIdSet).update();
+                    .in(Order::getOrderNo, orderNoSet).update();
         }
 
     }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java
index 5870ba1..3937bb6 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java
@@ -8,6 +8,7 @@
 import com.ruoyi.common.core.enums.AuditStatusEnum;
 import com.ruoyi.common.core.enums.OrderStatusEnum;
 import com.ruoyi.common.core.enums.PaymentMethodEnum;
+import com.ruoyi.common.core.enums.PointStatusEnum;
 import com.ruoyi.common.core.enums.RequestTypeEnum;
 import com.ruoyi.common.core.enums.ReturnRequestStatusEnum;
 import com.ruoyi.common.core.exception.ServiceException;
@@ -28,11 +29,14 @@
 import com.ruoyi.system.api.domain.Order;
 import com.ruoyi.system.api.domain.dto.LogisticsDTO;
 import com.ruoyi.system.api.domain.dto.MemberDTO;
+import com.ruoyi.system.api.domain.dto.MemberPointsDTO;
 import com.ruoyi.system.api.domain.dto.OrderReturnDTO;
+import com.ruoyi.system.api.domain.dto.updMembeOneDTO;
 import com.ruoyi.system.api.domain.vo.Express100VO;
 import com.ruoyi.system.api.domain.vo.OrderReturnVO;
 import com.ruoyi.system.api.feignClient.MemberClient;
 import com.ruoyi.system.api.feignClient.SysUserClient;
+import io.seata.spring.annotation.GlobalTransactional;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
@@ -248,7 +252,8 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @GlobalTransactional(rollbackFor = Exception.class)
+    @Transactional
     public void confirmReturnRequest(Long id) {
         OrderReturnRequest orderReturnRequest = getOrderReturnRequest(id);
         if (orderReturnRequest.getStatus()
@@ -268,14 +273,31 @@
         String orderNo = order.getOrderNo();
         Paylog paylog = paylogService.lambdaQuery().eq(Paylog::getOutTradeNo, orderNo)
                 .last("limit 1").one();
-        PaymentMethodEnum paymentMethod = order.getPaymentMethod();
         if (StringUtils.isNotNull(paylog)) {
+            PaymentMethodEnum paymentMethod = order.getPaymentMethod();
             boolean result = handleRefund(paymentMethod, paylog, orderNo);
             if (result) {
                 paylog.setState(3);// 已退款
                 paylogService.updateById(paylog);
             }
         }
+        // 扣除订单积分
+        Member member = memberClient.getMembeOne(order.getMemberId(), SecurityConstants.INNER)
+                .getData();
+        if (StringUtils.isNotNull(member)) {
+            MemberPointsDTO memberPointsDTO = new MemberPointsDTO();
+            memberPointsDTO.setMemberId(order.getMemberId());
+            memberPointsDTO.setPointsType(1);
+            memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE);
+            memberPointsDTO.setPoints(order.getPoints());
+            memberClient.addMemberPoints(memberPointsDTO);
+
+            updMembeOneDTO updMembeOneDTO = new updMembeOneDTO();
+            updMembeOneDTO.setMemberId(order.getMemberId());
+            updMembeOneDTO.setType(2);
+            updMembeOneDTO.setTotalPoints(Math.max(member.getTotalPoints() - order.getPoints(), 0));
+            memberClient.updMembeOne(updMembeOneDTO, SecurityConstants.INNER);
+        }
     }
 
     private boolean handleRefund(PaymentMethodEnum paymentMethod, Paylog paylog, String orderNo) {
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 a0dce86..4761a9f 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
@@ -14,12 +14,12 @@
 import com.ruoyi.common.core.enums.OrderStatusEnum;
 import com.ruoyi.common.core.enums.OrderTypeEnum;
 import com.ruoyi.common.core.enums.PaymentMethodEnum;
+import com.ruoyi.common.core.enums.PointStatusEnum;
 import com.ruoyi.common.core.enums.RequestTypeEnum;
 import com.ruoyi.common.core.enums.ReturnRequestStatusEnum;
 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.common.redis.service.RedisService;
 import com.ruoyi.order.controller.management.dto.MgtOrderConfirmShipmentDTO;
@@ -56,6 +56,7 @@
 import com.ruoyi.system.api.domain.dto.MemberDTO;
 import com.ruoyi.system.api.domain.dto.MemberOrderDTO;
 import com.ruoyi.system.api.domain.dto.MemberOrderListDTO;
+import com.ruoyi.system.api.domain.dto.MemberPointsDTO;
 import com.ruoyi.system.api.domain.dto.MgtAfterSaleSettingDTO;
 import com.ruoyi.system.api.domain.dto.OrderDTO;
 import com.ruoyi.system.api.domain.dto.updMembeOneDTO;
@@ -69,6 +70,7 @@
 import com.ruoyi.system.api.feignClient.MemberClient;
 import com.ruoyi.system.api.feignClient.PromotionClient;
 import com.ruoyi.system.api.feignClient.SysUserClient;
+import io.seata.spring.annotation.GlobalTransactional;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
@@ -1233,7 +1235,8 @@
             List<MgtOrderVO> list = voList;
             // 封装参数查询拍卖会
             Set<Long> auctionSalesroomGoodsIdSet = list.stream()
-                    .filter(order -> order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS)
+                    .filter(order -> order.getAuctionOrderType()
+                            == AuctionOrderTypeEnum.AUCTION_ITEMS)
                     .map(MgtOrderVO::getGoodsSkuId).collect(Collectors.toSet());
             List<AuctionSalesroom> auctionSalesroomList = auctionClient.getAuctionSalesroomByIds(
                             auctionSalesroomGoodsIdSet, SecurityConstants.INNER)
@@ -1243,7 +1246,8 @@
                             AuctionSalesroom::getSalesroomName));
             // 封装参数查询拍卖订单保证金
             Set<Long> auctionGoodsIdSet = list.stream()
-                    .filter(order -> order.getAuctionType() == AuctionOrderTypeEnum.REGULAR_ITEMS)
+                    .filter(order -> order.getAuctionOrderType()
+                            == AuctionOrderTypeEnum.REGULAR_ITEMS)
                     .map(MgtOrderVO::getGoodsSkuId)
                     .collect(Collectors.toSet());
 
@@ -1269,7 +1273,7 @@
                             Function.identity()));
 
             list.forEach(order -> {
-                if (order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS) {
+                if (order.getAuctionOrderType() == AuctionOrderTypeEnum.AUCTION_ITEMS) {
                     order.setSalesroomName(
                             StringUtils.isNotBlank(salesroomMap.get(order.getGoodsSkuId()))
                                     ? salesroomMap.get(order.getAuctionSalesroomId()) : "无");
@@ -1282,7 +1286,7 @@
                                     .getBoundStatus()
                                     : null);
                 }
-                if (order.getAuctionType() == AuctionOrderTypeEnum.REGULAR_ITEMS) {
+                if (order.getAuctionOrderType() == AuctionOrderTypeEnum.REGULAR_ITEMS) {
                     order.setSalesroomName("无");
                     order.setBoundStatus(
                             StringUtils.isNotNull(auctionSalesroomGoodsBondMap.get(
@@ -1410,9 +1414,13 @@
      * @param id 订单id
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @GlobalTransactional(rollbackFor = Exception.class)
+    @Transactional
     public void refund(Long id) {
         Order order = getOrder(id);
+        if (order.getIsRequest() == 2) {
+            throw new ServiceException("该订单已是售后状态");
+        }
         String orderNo = order.getOrderNo();
         Paylog paylog = iPaylogService.lambdaQuery().eq(Paylog::getOutTradeNo, orderNo)
                 .last("limit 1").one();
@@ -1431,10 +1439,28 @@
             orderReturnRequest.setRequestReason("管理后台退款");
             orderReturnRequest.setStatus(ReturnRequestStatusEnum.COMPLETED);
             orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED);
+            orderReturnRequest.setAuditTime(LocalDateTime.now());
             orderReturnRequestService.save(orderReturnRequest);
         }
         order.setIsRequest(2);
         this.updateById(order);
+        // 扣除订单积分
+        Member member = memberClient.getMembeOne(order.getMemberId(), SecurityConstants.INNER)
+                .getData();
+        if (StringUtils.isNotNull(member)) {
+            MemberPointsDTO memberPointsDTO = new MemberPointsDTO();
+            memberPointsDTO.setMemberId(order.getMemberId());
+            memberPointsDTO.setPointsType(1);
+            memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE);
+            memberPointsDTO.setPoints(order.getPoints());
+            memberClient.addMemberPoints(memberPointsDTO);
+
+            updMembeOneDTO updMembeOneDTO = new updMembeOneDTO();
+            updMembeOneDTO.setMemberId(order.getMemberId());
+            updMembeOneDTO.setType(2);
+            updMembeOneDTO.setTotalPoints(Math.max(member.getTotalPoints() - order.getPoints(), 0));
+            memberClient.updMembeOne(updMembeOneDTO, SecurityConstants.INNER);
+        }
     }
 
     private boolean handleRefund(PaymentMethodEnum paymentMethod, Paylog paylog, String orderNo) {
@@ -1467,6 +1493,9 @@
     @Override
     public void refundReturn(Long id) {
         Order order = getOrder(id);
+        if (order.getIsRequest() == 2) {
+            throw new ServiceException("该订单已是售后状态");
+        }
         if (order.getOrderStatus() == OrderStatusEnum.FINISHED) {
             OrderReturnRequest orderReturnRequest = new OrderReturnRequest();
             order.setIsRequest(2);
@@ -1484,6 +1513,7 @@
             orderReturnRequest.setRequestReason("管理后台退款退货");
             orderReturnRequest.setStatus(ReturnRequestStatusEnum.TO_BE_RETURNED);
             orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED);
+            orderReturnRequest.setAuditTime(LocalDateTime.now());
             orderReturnRequestService.save(orderReturnRequest);
         }
 
@@ -1505,33 +1535,33 @@
     @Override
     public void refundBond(Long id) {
         Order order = getOrder(id);
-        List<OrderAuctionBond> orderAuctionBond;
+        OrderAuctionBond orderAuctionBond;
         if (order.getAuctionOrderType() == AuctionOrderTypeEnum.AUCTION_ITEMS) {
-            orderAuctionBond = orderAuctionBondMapper.selectList(
+            orderAuctionBond = orderAuctionBondMapper.selectOne(
                     Wrappers.lambdaQuery(OrderAuctionBond.class)
+                            .eq(OrderAuctionBond::getOrderId, id)
                             .eq(OrderAuctionBond::getAuctionSalesroomId,
                                     order.getAuctionSalesroomId())
                             .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID));
         } else {
-            orderAuctionBond = orderAuctionBondMapper.selectList(
+            orderAuctionBond = orderAuctionBondMapper.selectOne(
                     Wrappers.lambdaQuery(OrderAuctionBond.class)
+                            .eq(OrderAuctionBond::getOrderId, id)
                             .eq(OrderAuctionBond::getAuctionGoodsId,
                                     order.getGoodsSkuId())
                             .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID));
         }
-        if (CollUtils.isNotEmpty(orderAuctionBond)) {
-            for (OrderAuctionBond auctionBond : orderAuctionBond) {
-                Paylog paylog = iPaylogService.lambdaQuery()
-                        .in(Paylog::getOutTradeNo, auctionBond.getOrderNo())
-                        .one();
-                boolean result = handleRefund(auctionBond.getPaymentMethod(), paylog,
-                        auctionBond.getOrderNo());
-                if (result) {
-                    paylog.setState(3);// 已退款
-                    auctionBond.setBoundStatus(BondStatusEnum.REFUNDED);
-                    iPaylogService.updateById(paylog);
-                    this.updateById(order);
-                }
+        if (StringUtils.isNotNull(orderAuctionBond)) {
+            Paylog paylog = iPaylogService.lambdaQuery()
+                    .in(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo())
+                    .one();
+            boolean result = handleRefund(orderAuctionBond.getPaymentMethod(), paylog,
+                    orderAuctionBond.getOrderNo());
+            if (result) {
+                paylog.setState(3);// 已退款
+                orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED);
+                iPaylogService.updateById(paylog);
+                this.updateById(order);
             }
         }
     }
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/forepart/vo/CouponMemberVO.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/forepart/vo/CouponMemberVO.java
index 727af79..4275027 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/forepart/vo/CouponMemberVO.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/forepart/vo/CouponMemberVO.java
@@ -1,13 +1,16 @@
 package com.ruoyi.promotion.controller.forepart.vo;
 
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.ruoyi.common.core.enums.CouponTypeEnum;
 import com.ruoyi.common.core.enums.CouponUseEnum;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import lombok.Data;
 
 @Data
 public class CouponMemberVO {
@@ -27,7 +30,7 @@
     @ApiModelProperty(value = "优惠券类型 1=满减券 2=代金券 3=折扣券")
     private CouponTypeEnum couponType;
 
-    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用")
+    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用 2:已过期")
     private CouponUseEnum couponStatus;
 
     @ApiModelProperty(value = "满减金额,例如:满100元")
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/mapper/CouponMemberMapper.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/mapper/CouponMemberMapper.java
index 663cc53..8d89f67 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/mapper/CouponMemberMapper.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/mapper/CouponMemberMapper.java
@@ -13,4 +13,5 @@
  */
 public interface CouponMemberMapper extends BaseMapper<CouponMember> {
 
+    void timingCheckMemberCoupon();
 }
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/scheduler/PromotionScheduler.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/scheduler/PromotionScheduler.java
new file mode 100644
index 0000000..f5b175e
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/scheduler/PromotionScheduler.java
@@ -0,0 +1,28 @@
+package com.ruoyi.promotion.scheduler;
+
+import com.ruoyi.promotion.service.ICouponMemberService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author mitao
+ * @date 2024/7/20
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class PromotionScheduler {
+
+    private final ICouponMemberService couponMemberService;
+
+    /**
+     * 每天凌晨定时检查优惠券过期
+     */
+    @Scheduled(cron = "1 0 0 * * ?")
+    private void timingCheckMemberCoupon() {
+        log.info("----------------定时检查优惠券过期任务开始执行----------------");
+        couponMemberService.timingCheckMemberCoupon();
+    }
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponMemberService.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponMemberService.java
index 42bad5a..f29c8ce 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponMemberService.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponMemberService.java
@@ -3,11 +3,10 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.utils.page.PageDTO;
 import com.ruoyi.promotion.controller.forepart.vo.CouponMemberVO;
-import com.ruoyi.system.api.domain.dto.CouponMemberDTO;
 import com.ruoyi.system.api.domain.CouponMember;
-import org.springframework.web.bind.annotation.RequestBody;
-
+import com.ruoyi.system.api.domain.dto.CouponMemberDTO;
 import java.util.List;
+import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * <p>
@@ -30,4 +29,5 @@
 
     List<CouponMemberVO> updCouponMember1(@RequestBody CouponMemberDTO couponMemberDTO);
 
+    void timingCheckMemberCoupon();
 }
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
index 015ce65..872b1b0 100644
--- 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
@@ -33,14 +33,12 @@
         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;
+            for (int i = 0; i < issuedQuantity; i++) {
+                coupon.setId(null);
+                CouponMember couponMember = BeanUtils.copyBean(coupon, CouponMember.class);
+                couponMember.setMemberId(memberId);
+                couponMember.setCouponId(couponId);
+                memberCouponList.add(couponMember);
             }
         }
         if (StringUtils.isNotEmpty(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 dffc79a..c6e15d4 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
@@ -13,19 +13,14 @@
 import com.ruoyi.promotion.mapper.CouponMapper;
 import com.ruoyi.promotion.mapper.CouponMemberMapper;
 import com.ruoyi.promotion.service.ICouponMemberService;
-import com.ruoyi.promotion.service.ICouponService;
 import com.ruoyi.system.api.domain.CouponMember;
-import com.ruoyi.system.api.domain.GoodsSku;
 import com.ruoyi.system.api.domain.dto.CouponMemberDTO;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
-
-import org.springframework.stereotype.Service;
-
 import javax.annotation.Resource;
+import org.springframework.stereotype.Service;
 
 /**
  * <p>
@@ -142,4 +137,9 @@
         }
         return couponMemberVOS;
     }
+
+    @Override
+    public void timingCheckMemberCoupon() {
+        this.baseMapper.timingCheckMemberCoupon();
+    }
 }
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 0d01e8e..4e80ed1 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
@@ -187,6 +187,10 @@
     public PageDTO<CouponReceiveDetailVO> getReceiveDetail(MgtCouponReceiveQuery query) {
         MemberDTO memberDTO = getMemberQueryParam(query);
         Set<Long> memberIdSet = getMemberIdSet(memberDTO);
+        if ((StringUtils.isNotBlank(query.getNickname()) || StringUtils.isNotBlank(
+                query.getPhone())) && CollUtils.isEmpty(memberIdSet)) {
+            return PageDTO.empty(0L, 0L);
+        }
         Page<CouponMember> page = couponMemberService.lambdaQuery()
                 .eq(StringUtils.isNotNull(query.getCouponStatus()),
                         CouponMember::getCouponStatus, query.getCouponStatus())
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/resources/mapper/promotion/CouponMemberMapper.xml b/ruoyi-modules/ruoyi-promotion/src/main/resources/mapper/promotion/CouponMemberMapper.xml
index 8628a06..b379d3e 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/resources/mapper/promotion/CouponMemberMapper.xml
+++ b/ruoyi-modules/ruoyi-promotion/src/main/resources/mapper/promotion/CouponMemberMapper.xml
@@ -2,4 +2,11 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.promotion.mapper.CouponMemberMapper">
 
+  <update id="timingCheckMemberCoupon">
+    UPDATE t_coupon_member
+    SET coupon_status = 2
+    WHERE del_flag = 0
+      AND coupon_status = 0
+      AND end_date &lt; CURDATE()
+  </update>
 </mapper>
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 67f2902..3f2e3a8 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -601,11 +601,9 @@
      */
     @Override
     public void saveSupplier(SupplierDTO dto) {
-
-        SysUser user = BeanUtils.copyBean(dto, SysUser.class);
-
         // 添加
         if (StringUtils.isNull(dto.getUserId())) {
+            SysUser user = BeanUtils.copyBean(dto, SysUser.class);
             boolean b = checkPhoneUnique(user);
             if (!b) {
                 throw new ServiceException("该手机号已存在");
@@ -618,25 +616,25 @@
             this.save(user);
         } else {
             // 编辑
-            user = this.getById(dto.getUserId());
-            if (!user.getPhonenumber().equals(dto.getPhonenumber())) {
-                boolean b = checkPhoneUnique(user);
+            SysUser userUpd = this.getById(dto.getUserId());
+            if (StringUtils.isNull(userUpd)) {
+                throw new ServiceException("供应商不存在");
+            }
+            userUpd.setNickName(dto.getNickName());
+            userUpd.setUpdateTime(new Date());
+            userUpd.setUpdateBy(SecurityUtils.getUsername());
+            if (StringUtils.isNotBlank(dto.getPassword())) {
+                userUpd.setPassword(SecurityUtils.encryptPassword(dto.getPassword()));
+            }
+            if (!userUpd.getPhonenumber().equals(dto.getPhonenumber())) {
+                userUpd.setPhonenumber(dto.getPhonenumber());
+                userUpd.setUserName(dto.getPhonenumber());
+                boolean b = checkPhoneUnique(userUpd);
                 if (!b) {
                     throw new ServiceException("该手机号已存在");
                 }
             }
-            if (StringUtils.isNull(user)) {
-                throw new ServiceException("供应商不存在");
-            }
-            user.setNickName(dto.getNickName());
-            user.setPhonenumber(dto.getPhonenumber());
-            user.setUserName(dto.getPhonenumber());
-            user.setUpdateTime(new Date());
-            user.setUpdateBy(SecurityUtils.getUsername());
-            if (StringUtils.isNotBlank(dto.getPassword())) {
-                user.setPassword(SecurityUtils.encryptPassword(dto.getPassword()));
-            }
-            this.updateById(user);
+            this.updateById(userUpd);
         }
     }
 
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 7471f7f..8eb9f50 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -130,6 +130,7 @@
 		from sys_user
 		where phonenumber = #{phonenumber}
 			and del_flag = '0'
+			and user_type in ('00', '04')
 		limit 1
 	</select>
 	

--
Gitblit v1.7.1