From 2f1988b9b3047e64d1a7b85fbaf8518d16eb88ec Mon Sep 17 00:00:00 2001
From: rentaiming <806181062@qq.com>
Date: 星期五, 07 六月 2024 11:21:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionGoodsController.java          |    2 
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java      |   12 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/IPromotionBannerService.java                      |   41 ++
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponMemberController.java      |   22 +
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java                     |    9 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/SupplierDTO.java                                     |    1 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/util/HuaWeiOBSUtil.java                                     |   11 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionWishListController.java |   61 +++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java                  |   22 +
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionBannerServiceImpl.java              |   81 +++++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberLevelService.java                                |    8 
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java                 |   15 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberService.java                                     |   21 +
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java                  |    3 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberPointsQuery.java             |   23 +
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerQuery.java    |   26 +
 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java                                   |    2 
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionSalesroomGoodsVO.java      |    6 
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionScreenController.java         |   12 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDTO.java                |   24 +
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberLevelController.java             |   19 +
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionGoodsVO.java               |    6 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java                                     |    2 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/async/AsyncMethodService.java                           |   31 +
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberLevelServiceImpl.java                        |   19 +
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AuctionSalesroom.java                                |    3 
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/CreateQrCode.java                                        |   30 +
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/domain/PromotionBanner.java                               |    4 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionBannerController.java   |  102 ++++++
 /dev/null                                                                                                                 |   79 ----
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerUpdDTO.java   |   27 +
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberLevelVO.java                  |    5 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java                                     |    2 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberVO.java                       |   12 
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java                         |   14 
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionBannerVO.java        |   43 ++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java                             |   43 ++
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java            |   19 +
 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerDTO.java      |   38 ++
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionSalesroomVO.java           |    5 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberPointsVO.java                 |   38 ++
 41 files changed, 828 insertions(+), 115 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AuctionSalesroom.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AuctionSalesroom.java
index d06e436..75f3099 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AuctionSalesroom.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AuctionSalesroom.java
@@ -74,6 +74,9 @@
     @ApiModelProperty(value = "拍卖场编码")
     private String auctionSalesroomNo;
 
+    @ApiModelProperty(value = "拍卖场二维码")
+    private String qrCode;
+
     @ApiModelProperty(value = "创建者")
     @TableField(value = "create_by", fill = FieldFill.INSERT)
     private String createBy;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/util/HuaWeiOBSUtil.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/util/HuaWeiOBSUtil.java
index 50452a2..5f6713c 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/util/HuaWeiOBSUtil.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/util/HuaWeiOBSUtil.java
@@ -42,6 +42,17 @@
         return fileName;
     }
 
+    public static String obsUploadStream(String code, InputStream content) throws IOException {
+        String fileName = "";
+        ObjectMetadata meta = new ObjectMetadata();// 创建上传Object的Metadata
+        fileName = UUID.randomUUID().toString().replaceAll("-", "") + "-id" + code + ".png";
+        obsClient.putObject(bucketName, "qrCode/" + fileName, content, meta);// 上传Object.
+        if (fileName != null && !"".equals(fileName)) {
+            System.out.println(fileName);
+            fileName = oss_domain + "qrCode/" + fileName;
+        }
+        return fileName;
+    }
     /**
      * 删除某个Object
      *
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionGoodsController.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionGoodsController.java
index 800240a..4fab669 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionGoodsController.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionGoodsController.java
@@ -46,7 +46,7 @@
     @ApiOperation(value = "获取拍卖商品列表的分页数据", notes = "获取拍卖商品列表的分页数据")
     @PostMapping("/page")
     public R<PageDTO<MgtAuctionGoodsVO>> getAuctionGoodsPage(
-            MgtAuctionGoodsQuery query) {
+            @Validated @RequestBody MgtAuctionGoodsQuery query) {
         return R.ok(auctionGoodsService.getAuctionGoodsPage(query));
     }
 
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java
index 7edd5c3..80f5cd5 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java
@@ -1,6 +1,7 @@
 package com.ruoyi.auction.controller.management;
 
 
+import com.google.zxing.WriterException;
 import com.ruoyi.auction.controller.management.dto.MgtAuctionSaleroomBidRecordQuery;
 import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomDTO;
 import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomQuery;
@@ -12,6 +13,7 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import java.io.IOException;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
@@ -48,7 +50,7 @@
     @PostMapping("/page")
     @ApiOperation(value = "获取拍卖场列表的分页数据", notes = "获取拍卖场列表的分页数据")
     public R<PageDTO<MgtAuctionSalesroomVO>> getAuctionSalesroomPage(
-            MgtAuctionSalesroomQuery query) {
+            @Validated @RequestBody MgtAuctionSalesroomQuery query) {
         return R.ok(auctionSalesroomService.getAuctionSalesroomPage(query));
     }
 
@@ -79,7 +81,11 @@
     @ApiOperation(value = "添加/编辑 拍卖场", notes = "添加/编辑 拍卖场")
     public R<?> saveAuctionSalesroom(
             @Validated @RequestBody MgtAuctionSalesroomDTO dto) {
-        auctionSalesroomService.saveAuctionSalesroom(dto);
+        try {
+            auctionSalesroomService.saveAuctionSalesroom(dto);
+        } catch (IOException | WriterException e) {
+            throw new RuntimeException(e);
+        }
         return R.ok();
     }
 
@@ -105,7 +111,7 @@
     @PostMapping("/bid-record")
     @ApiOperation(value = "查看详情-出价记录", notes = "查看详情-出价记录")
     public R<PageDTO<MgtAuctionBidRecordVO>> getAuctionSalesroomBidRecordList(
-            @RequestBody MgtAuctionSaleroomBidRecordQuery query) {
+            @Validated @RequestBody MgtAuctionSaleroomBidRecordQuery query) {
         return R.ok(auctionSalesroomService.getAuctionSalesroomBidRecordList(query));
     }
 }
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionScreenController.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionScreenController.java
index 1bd2565..0369a2e 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionScreenController.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionScreenController.java
@@ -52,7 +52,7 @@
     @PostMapping("/page")
     @ApiOperation(value = "获取拍卖场列表的分页数据", notes = "获取拍卖场列表的分页数据")
     public R<PageDTO<MgtAuctionSalesroomVO>> getAuctionSalesroom4ScreenPage(
-            MgtAuctionSalesroomQuery query) {
+            @Validated @RequestBody MgtAuctionSalesroomQuery query) {
         return R.ok(auctionSalesroomService.getAuctionSalesroom4ScreenPage(query));
     }
 
@@ -89,7 +89,7 @@
      */
     @PostMapping("/add-goods")
     @ApiOperation(value = "添加商品", notes = "添加商品")
-    public R<?> addGoods(@RequestBody MgtScreenSalesroomGoodsDTO dto) {
+    public R<?> addGoods(@Validated @RequestBody MgtScreenSalesroomGoodsDTO dto) {
         auctionSalesroomService.addGoods(dto);
         return R.ok();
     }
@@ -103,7 +103,7 @@
     @PostMapping("/backup-goods")
     @ApiOperation(value = "获取备选拍品列表的分页数据", notes = "获取备选拍品列表的分页数据")
     public R<PageDTO<MgtAuctionSalesroomGoodsVO>> backupGoods(
-            @RequestBody MgtAuctionSalesroomGoodsQuery query) {
+            @Validated @RequestBody MgtAuctionSalesroomGoodsQuery query) {
         return R.ok(auctionSalesroomService.backupGoods(query));
     }
 
@@ -151,14 +151,14 @@
      * @param dto 大屏播放视频对象
      */
     @PostMapping("/play")
-    @ApiOperation("播放视频")
-    public R<?> play(@RequestBody MgtScreenVideoDTO dto) {
+    @ApiOperation("播放视频-确认")
+    public R<?> play(@Validated @RequestBody MgtScreenVideoDTO dto) {
         auctionSalesroomService.play(dto);
         return R.ok();
     }
 
     @PostMapping("/stop-play/{auctionSalesroomId}")
-    @ApiOperation("播放视频")
+    @ApiOperation("结束播放")
     public R<?> stopPlay(
             @ApiParam(name = "auctionSalesroomId", value = "拍卖场id", required = true)
             @PathVariable("auctionSalesroomId") Long auctionSalesroomId) {
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionGoodsVO.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionGoodsVO.java
index 8451660..be5637e 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionGoodsVO.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionGoodsVO.java
@@ -57,6 +57,12 @@
     @ApiModelProperty(value = "拍品说明")
     private String description;
 
+    @ApiModelProperty(value = "分享标题")
+    private String shareTitle;
+
+    @ApiModelProperty(value = "分享图片")
+    private String sharePic;
+
     @ApiModelProperty(value = "上架状态 0=上架中 1=已下架")
     private ListingStatusEnum listingStatus;
 
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionSalesroomGoodsVO.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionSalesroomGoodsVO.java
index c088218..1d0a340 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionSalesroomGoodsVO.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionSalesroomGoodsVO.java
@@ -62,4 +62,10 @@
     @ApiModelProperty(value = "已拍人数")
     private Integer bidPersonCount = 0;
 
+    @ApiModelProperty(value = "起拍价格")
+    private BigDecimal startingPrice;
+
+    @ApiModelProperty(value = "排序")
+    private Integer sortNum;
+
 }
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionSalesroomVO.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionSalesroomVO.java
index 27910c8..607f0c5 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionSalesroomVO.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionSalesroomVO.java
@@ -46,7 +46,7 @@
     private AuctionTypeEnum type;
 
     @ApiModelProperty(value = "保证金")
-    private BigDecimal bound;
+    private BigDecimal bond;
 
     @ApiModelProperty(value = "实名认证 0=不需认证 1=需要实名")
     private AuthenticationEnum authentication;
@@ -69,6 +69,9 @@
     @ApiModelProperty(value = "拍卖场编码")
     private String auctionSalesroomNo;
 
+    @ApiModelProperty(value = "拍卖场二维码")
+    private String qrCode;
+
     @ApiModelProperty(value = "创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime createTime;
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java
index 5f84714..28c11e4 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java
@@ -1,11 +1,7 @@
 package com.ruoyi.auction.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.system.api.domain.dto.AuctionSalesroomGoodsDTO;
-import com.ruoyi.system.api.domain.dto.ForepartAuctionBidRecordDTO;
-import com.ruoyi.system.api.domain.vo.ForepartAuctionSalesroomVO;
-import com.ruoyi.system.api.domain.vo.MemberAuctionSalesroomInfoVO;
-import com.ruoyi.system.api.domain.vo.MemberAuctionSalesroomVO;
+import com.google.zxing.WriterException;
 import com.ruoyi.auction.controller.management.dto.MgtAuctionSaleroomBidRecordQuery;
 import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomDTO;
 import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomGoodsQuery;
@@ -21,11 +17,17 @@
 import com.ruoyi.system.api.domain.AppMiniLoginVO;
 import com.ruoyi.system.api.domain.AuctionSalesroom;
 import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
+import com.ruoyi.system.api.domain.dto.AuctionSalesroomGoodsDTO;
 import com.ruoyi.system.api.domain.dto.BidDTO;
+import com.ruoyi.system.api.domain.dto.ForepartAuctionBidRecordDTO;
 import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO;
 import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO;
+import com.ruoyi.system.api.domain.vo.ForepartAuctionSalesroomVO;
+import com.ruoyi.system.api.domain.vo.MemberAuctionSalesroomInfoVO;
+import com.ruoyi.system.api.domain.vo.MemberAuctionSalesroomVO;
 import com.ruoyi.system.api.domain.vo.PayInfoVO;
 import com.ruoyi.system.api.domain.vo.WdMemberAuctionSalesroomVO;
+import java.io.IOException;
 import java.util.List;
 import org.springframework.web.bind.annotation.RequestBody;
 
@@ -85,7 +87,7 @@
     void SaveBid(@RequestBody BidDTO BidVO);
 
 
-    void saveAuctionSalesroom(MgtAuctionSalesroomDTO dto);
+    void saveAuctionSalesroom(MgtAuctionSalesroomDTO dto) throws IOException, WriterException;
 
     PageDTO<WdMemberAuctionSalesroomVO> getWdAuctionSalesroomList(@RequestBody MemberAuctionSalesroomDTO MemberAuctionSalesroomDTO);
 
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 2886e27..5d335c8 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
@@ -13,7 +13,6 @@
 import java.util.concurrent.TimeUnit;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -29,7 +28,7 @@
     private final RedisService redisService;
     private final SysUserClient sysUserClient;
 
-    @Async
+    // @Async
     @Transactional(rollbackFor = Exception.class)
     public void auctionGoodsScheduleTask(List<AuctionGoods> auctionGoodsList) {
         for (AuctionGoods auctionGoods : auctionGoodsList) {
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 90a79ed..1e70310 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
@@ -122,7 +122,8 @@
                 .select(AuctionGoods::getId, AuctionGoods::getGoodsSkuId,
                         AuctionGoods::getListingStatus, AuctionGoods::getStartStatus,
                         AuctionGoods::getStartTime, AuctionGoods::getEndTime,
-                        AuctionGoods::getAuctionStock, AuctionGoods::getMinimumMarkupAmount).in(
+                        AuctionGoods::getAuctionStock, AuctionGoods::getMinimumMarkupAmount,
+                        AuctionGoods::getAuthentication, AuctionGoods::getStartingPrice).in(
                         StringUtils.isNotEmpty(goodsSkuIdList), AuctionGoods::getGoodsSkuId,
                         goodsSkuIdList).eq(StringUtils.isNotNull(query.getAuthentication()),
                         AuctionGoods::getAuthentication, query.getAuthentication())
@@ -238,6 +239,12 @@
         }
         MgtAuctionGoodsVO auctionGoodsVO = BeanUtils.copyBean(auctionGoods,
                 MgtAuctionGoodsVO.class);
+        // 远程调用商品服务,获取商品信息
+        GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(auctionGoods.getGoodsSkuId(),
+                SecurityConstants.INNER).getData();
+        if (StringUtils.isNotNull(goodsSku)) {
+            auctionGoodsVO.setGoodsSkuName(goodsSku.getSkuName());
+        }
         if (!auctionGoods.getStartStatus().equals(AuctionStartStatusEnum.IN_PREVIEW)) {
             List<AuctionBidRecord> list = auctionBidRecordService.lambdaQuery()
                     .eq(AuctionBidRecord::getTargetId, auctionGoodsVO.getId())
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 72655bd..cfa2347 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
@@ -1,25 +1,20 @@
 package com.ruoyi.auction.service.impl;
 
 import cn.binarywang.wx.miniapp.api.WxMaService;
-import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
 import com.alibaba.fastjson.parser.Feature;
 import com.alipay.api.AlipayApiException;
 import com.alipay.api.AlipayClient;
-import com.alipay.api.DefaultAlipayClient;
 import com.alipay.api.internal.util.AlipayEncrypt;
 import com.alipay.api.internal.util.AlipaySignature;
-import com.alipay.api.request.AlipaySystemOauthTokenRequest;
-import com.alipay.api.request.AlipayUserInfoShareRequest;
-import com.alipay.api.response.AlipaySystemOauthTokenResponse;
-import com.alipay.api.response.AlipayUserInfoShareResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.google.common.collect.Lists;
+import com.google.zxing.WriterException;
 import com.ruoyi.auction.controller.management.dto.MgtAuctionSaleroomBidRecordQuery;
 import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomDTO;
 import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomGoodsDTO;
@@ -90,6 +85,7 @@
 import com.ruoyi.system.api.feignClient.PromotionClient;
 import com.ruoyi.system.api.feignClient.SysUserClient;
 import io.seata.spring.annotation.GlobalTransactional;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
@@ -709,7 +705,8 @@
     @Override
     @Transactional
     @GlobalTransactional(rollbackFor = Exception.class)
-    public void saveAuctionSalesroom(MgtAuctionSalesroomDTO dto) {
+    public void saveAuctionSalesroom(MgtAuctionSalesroomDTO dto)
+            throws IOException, WriterException {
         Long id = dto.getId();
         AuctionSalesroom auctionSalesroom = BeanUtils.copyBean(dto, AuctionSalesroom.class);
         List<MgtAuctionSalesroomGoodsDTO> auctionSalesroomGoodsDTOS = dto.getAuctionSalesroomGoodsDTOS();
@@ -737,6 +734,8 @@
             // 生成唯一编号
             Long nextId = IDhelper.getNextId();
             auctionSalesroom.setAuctionSalesroomNo(nextId.toString());
+            String qrCodeToObs = CreateQrCode.createQRCodeToObs(nextId.toString());
+            auctionSalesroom.setQrCode(qrCodeToObs);
             // 添加
             this.save(auctionSalesroom);
             List<GoodsStockUpdDTO> goodsStockUpdDTOS = auctionSalesroomGoods.stream().map(item -> {
@@ -782,7 +781,7 @@
                     .eq(AuctionSalesroomGoods::getAuctionSalesroomId, id));
         }
         for (AuctionSalesroomGoods auctionSalesroomGood : auctionSalesroomGoods) {
-            auctionSalesroomGood.setAuctionSalesroomId(id);
+            auctionSalesroomGood.setAuctionSalesroomId(auctionSalesroom.getId());
         }
         // 添加拍卖商品
         for (AuctionSalesroomGoods auctionSalesroomGoodss:auctionSalesroomGoods){
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/CreateQrCode.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/CreateQrCode.java
index 095f5a3..6ba60d0 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/CreateQrCode.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/CreateQrCode.java
@@ -5,8 +5,11 @@
 import com.google.zxing.WriterException;
 import com.google.zxing.common.BitMatrix;
 import com.google.zxing.qrcode.QRCodeWriter;
+import com.ruoyi.system.api.util.HuaWeiOBSUtil;
+import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.Base64;
 import java.util.HashMap;
 
@@ -35,4 +38,31 @@
         String text = encoder.encodeToString(outputStream.toByteArray());
         return base64Url + text;
     }
+
+    /**
+     * 创建二维码
+     *
+     * @param
+     * @param
+     * @return
+     * @throws IOException
+     * @throws WriterException
+     */
+    public static String createQRCodeToObs(String json) throws IOException, WriterException {
+        QRCodeWriter qrCodeWriter = new QRCodeWriter();
+
+        HashMap<EncodeHintType, Object> hints = new HashMap<>();
+        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
+        BitMatrix bitMatrix = qrCodeWriter.encode(json, BarcodeFormat.QR_CODE, 600, 600, hints);
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream);
+        InputStream is = new ByteArrayInputStream(
+                outputStream.toByteArray());
+        return HuaWeiOBSUtil.obsUploadStream(json, is);
+    }
+
+    public static void main(String[] args) throws IOException, WriterException {
+        String qrCodeToObs = createQRCodeToObs("123456");
+        System.out.println(qrCodeToObs);
+    }
 }
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
index 65930df..0e4578f 100644
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
+++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
@@ -3,8 +3,8 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.file.FileUtils;
 import com.ruoyi.file.service.ISysFileService;
-import com.ruoyi.file.utils.HuaWeiOBSUtil;
 import com.ruoyi.system.api.domain.SysFile;
+import com.ruoyi.system.api.util.HuaWeiOBSUtil;
 import io.swagger.annotations.ApiOperation;
 import java.util.ArrayList;
 import java.util.List;
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/HuaWeiOBSUtil.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/HuaWeiOBSUtil.java
deleted file mode 100644
index 13e5417..0000000
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/HuaWeiOBSUtil.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.ruoyi.file.utils;
-
-import com.obs.services.ObsClient;
-import com.obs.services.model.ObjectMetadata;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.UUID;
-import org.springframework.web.multipart.MultipartFile;
-
-public class HuaWeiOBSUtil {
-
-    //TODO 修改配置文件
-    //OBS图片访问域名
-    public static String endPoint = "obs.cn-southwest-2.myhuaweicloud.com";
-    public static String accessKeyId = "IZB26ZHC7C5MWIOH1TGE";
-    public static String accessKeySecret = "y5PXhFMDOHiPH0nnQMz4gkvA63oqKAC621zXzOPk";
-    public static String bucketName = "mimishejiao";
-    public static String oss_domain = "https://mimishejiao.obs.cn-southwest-2.myhuaweicloud.com/";
-
-    // 创建ObsClient实例
-    public static ObsClient obsClient = new ObsClient(accessKeyId, accessKeySecret, endPoint);
-
-    public static String obsUpload(MultipartFile file)
-            throws IOException {
-        //CommonsMultipartFile file = (CommonsMultipartFile)multipartFile;
-        String fileName = "";
-        if (file != null && !"".equals(file.getOriginalFilename())
-                && file.getOriginalFilename() != null) {
-            InputStream content = file.getInputStream();//获得指定文件的输入流
-            ObjectMetadata meta = new ObjectMetadata();// 创建上传Object的Metadata
-            meta.setContentLength(file.getSize());  // 必须设置ContentLength
-            String originalFilename = file.getOriginalFilename();
-            fileName =
-                    UUID.randomUUID().toString().replaceAll("-", "") + originalFilename.subSequence(
-                            originalFilename.lastIndexOf("."), originalFilename.length());
-            obsClient.putObject(bucketName, fileName, content, meta);// 上传Object.
-            if (fileName != null && !"".equals(fileName)) {
-                System.out.println(fileName);
-                fileName = oss_domain + fileName;
-            }
-        }
-        return fileName;
-    }
-
-    /**
-     * 删除某个Object
-     *
-     * @param bucketUrl
-     * @return
-     */
-    public static boolean deleteObject(String bucketUrl) {
-        try {
-            bucketUrl = bucketUrl.replace(oss_domain, "");
-            // 删除Object.
-            obsClient.deleteObject(bucketName, bucketUrl);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return false;
-        } finally {
-//            obsClient.shutdown();
-        }
-        return true;
-    }
-
-//	 public static void createBucket(String bucketName)
-//     {
-//         //初始化 OSSClient
-////          ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);
-//
-//         // 新建一个Bucket
-//         Bucket bucket = ossClient.createBucket(bucketName);
-//         System.out.println(bucket.getName());
-//         System.out.println(bucket.getCreationDate());
-//     }
-//
-//	 public static void main(String[] args) {
-//		 OssUploadUtil.createBucket("ssfdfsd");
-//	}
-}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java
index 5786867..b90f38d 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java
@@ -6,6 +6,7 @@
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableAsync;
 
 /**
  * 系统模块
@@ -17,6 +18,7 @@
 @EnableCustomSwagger2
 @EnableRyFeignClients
 @SpringBootApplication
+@EnableAsync
 public class RuoYiMemberApplication
 {
     public static void main(String[] args)
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
index a08404f..c58bd1d 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
@@ -2,12 +2,16 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.member.controller.management.dto.MgtMemberPointsQuery;
 import com.ruoyi.member.controller.management.dto.MgtMemberQuery;
+import com.ruoyi.member.controller.management.vo.MgtMemberPointsVO;
 import com.ruoyi.member.controller.management.vo.MgtMemberVO;
 import com.ruoyi.member.service.IMemberService;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.validation.annotation.Validated;
+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.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -36,4 +40,22 @@
         return R.ok(memberService.getMemberPage(query));
     }
 
+    @ApiOperation("查看详情")
+    @GetMapping("/detail/{id}")
+    public R<MgtMemberVO> getMemberById(@PathVariable("id") Long id) {
+        return R.ok(memberService.getMemberById(id));
+    }
+
+    /**
+     * 获取积分明细分页列表
+     *
+     * @param query 会员积分明细查询对象
+     * @return PageDTO<MgtMemberPointsVO>
+     */
+    @ApiOperation("查看详情-积分明细")
+    @PostMapping("/points/detail")
+    public R<PageDTO<MgtMemberPointsVO>> getMemberPoints(
+            @Validated @RequestBody MgtMemberPointsQuery query) {
+        return R.ok(memberService.getMemberPoints(query));
+    }
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberLevelController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberLevelController.java
index 330f13c..adbcac7 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberLevelController.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberLevelController.java
@@ -2,12 +2,17 @@
 
 
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.member.controller.management.dto.MgtMemberLevelDTO;
 import com.ruoyi.member.controller.management.vo.MgtMemberLevelVO;
 import com.ruoyi.member.service.IMemberLevelService;
 import io.swagger.annotations.ApiOperation;
 import java.util.List;
+import javax.validation.constraints.NotEmpty;
 import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
+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;
 
@@ -19,6 +24,7 @@
  * @author mitao
  * @since 2024-05-16
  */
+@Validated
 @RestController
 @RequestMapping("/mgt/member-level")
 @RequiredArgsConstructor
@@ -36,4 +42,17 @@
     public R<List<MgtMemberLevelVO>> getMemberLevelList() {
         return R.ok(memberLevelService.getMemberLevelList());
     }
+
+    /**
+     * 保存会员等级配置
+     *
+     * @param memberLevelDTOList 会员等级配置列表
+     */
+    @ApiOperation("保存会员等级配置")
+    @PostMapping("/save")
+    public R<?> saveOrUpdateMemberLevel(
+            @RequestBody @NotEmpty(message = "会员等级不能为空") List<MgtMemberLevelDTO> memberLevelDTOList) {
+        memberLevelService.saveOrUpdateMemberLevel(memberLevelDTOList);
+        return R.ok();
+    }
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDTO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDTO.java
new file mode 100644
index 0000000..beef6db
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDTO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.member.controller.management.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import javax.validation.constraints.NotNull;
+import lombok.Data;
+
+@Data
+@ApiModel("会员等级数据传输对象对象")
+public class MgtMemberLevelDTO implements Serializable {
+
+    private static final long serialVersionUID = 841295965476674650L;
+
+    @ApiModelProperty(value = "会员等级")
+    @NotNull(message = "会员等级不能为空")
+    private Integer level;
+
+    @ApiModelProperty(value = "累计消费")
+    @NotNull(message = "累计消费不能为空")
+    private BigDecimal cumulativeConsumption;
+
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberPointsQuery.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberPointsQuery.java
new file mode 100644
index 0000000..6cad328
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberPointsQuery.java
@@ -0,0 +1,23 @@
+package com.ruoyi.member.controller.management.dto;
+
+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/5
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "会员积分明细查询对象", description = "会员积分明细查询对象")
+public class MgtMemberPointsQuery extends BasePage {
+
+    private static final long serialVersionUID = -5584030212572003337L;
+
+    @ApiModelProperty(value = "积分id")
+    private Long id;
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberLevelVO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberLevelVO.java
index 139710c..15c1ecd 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberLevelVO.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberLevelVO.java
@@ -2,6 +2,7 @@
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
 import java.math.BigDecimal;
 import lombok.Data;
 
@@ -11,8 +12,10 @@
  */
 @Data
 @ApiModel("会员等级视图对象")
-public class MgtMemberLevelVO {
+public class MgtMemberLevelVO implements Serializable {
 
+    private static final long serialVersionUID = -1084266587029415541L;
+    
     @ApiModelProperty(value = "会员等级id")
     private Long id;
 
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberPointsVO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberPointsVO.java
new file mode 100644
index 0000000..165a448
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberPointsVO.java
@@ -0,0 +1,38 @@
+package com.ruoyi.member.controller.management.vo;
+
+import com.ruoyi.common.core.enums.PointStatusEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @author mitao
+ * @date 2024/6/6
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "MemberPoints对象", description = "会员积分表")
+public class MgtMemberPointsVO implements Serializable {
+
+    private static final long serialVersionUID = -6160012928127594726L;
+    
+    @ApiModelProperty(value = "积分id")
+    private Long id;
+
+    @ApiModelProperty(value = "积分")
+    private Integer points;
+
+    @ApiModelProperty(value = "积分类型 1支付订单")
+    private Integer pointsType;
+
+    @ApiModelProperty(value = "积分状态 1增加,2 减少")
+    private PointStatusEnum pointsStatus;
+
+    @ApiModelProperty(value = "时间")
+    private LocalDateTime createTime;
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberVO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberVO.java
index 421900c..58d3aa7 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberVO.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberVO.java
@@ -1,5 +1,7 @@
 package com.ruoyi.member.controller.management.vo;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.ruoyi.common.core.enums.GenderEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -12,11 +14,9 @@
 
     private static final long serialVersionUID = 4977665063990741285L;
 
-    @ApiModelProperty(value = "1未认证,2已认证")
-    private Integer isAuthentication;
-
     @ApiModelProperty(value = "会员id")
-    private Long memberid;
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
 
     @ApiModelProperty(value = "会员昵称")
     private String nickname;
@@ -44,4 +44,8 @@
 
     @ApiModelProperty(value = "已用积分")
     private Integer usedPoints;
+
+    @ApiModelProperty(value = "1未认证,2已认证")
+    private Integer isAuthentication;
+    
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberLevelService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberLevelService.java
index e75c4ea..900f23e 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberLevelService.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberLevelService.java
@@ -1,6 +1,7 @@
 package com.ruoyi.member.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.member.controller.management.dto.MgtMemberLevelDTO;
 import com.ruoyi.member.controller.management.vo.MgtMemberLevelVO;
 import com.ruoyi.member.domain.MemberLevel;
 import java.util.List;
@@ -21,4 +22,11 @@
      * @return List<MgtMemberLevelVO>
      */
     List<MgtMemberLevelVO> getMemberLevelList();
+
+    /**
+     * 保存会员等级配置
+     *
+     * @param memberLevelDTOList 会员等级配置列表
+     */
+    void saveOrUpdateMemberLevel(List<MgtMemberLevelDTO> memberLevelDTOList);
 }
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 a7a0279..11fb930 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
@@ -2,10 +2,15 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.member.controller.management.dto.MgtMemberPointsQuery;
 import com.ruoyi.member.controller.management.dto.MgtMemberQuery;
+import com.ruoyi.member.controller.management.vo.MgtMemberPointsVO;
 import com.ruoyi.member.controller.management.vo.MgtMemberVO;
 import com.ruoyi.system.api.domain.AppMiniLoginVO;
 import com.ruoyi.system.api.domain.Member;
+import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
+import com.ruoyi.system.api.domain.dto.MemberDTO;
+import com.ruoyi.system.api.domain.dto.MobileDTO;
 import com.ruoyi.system.api.domain.dto.*;
 
 import java.util.List;
@@ -44,5 +49,21 @@
      */
     PageDTO<MgtMemberVO> getMemberPage(MgtMemberQuery query);
 
+    /**
+     * 获取用户详情
+     *
+     * @param id 会员id
+     * @return MgtMemberVO
+     */
+    MgtMemberVO getMemberById(Long id);
+
+    /**
+     * 获取积分明细分页列表
+     *
+     * @param query 会员积分明细查询对象
+     * @return PageDTO<MgtMemberPointsVO>
+     */
+    PageDTO<MgtMemberPointsVO> getMemberPoints(MgtMemberPointsQuery query);
+
     void updMembeOne(@RequestBody updMembeOneDTO dMembeOneDTO);
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/async/AsyncMethodService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/async/AsyncMethodService.java
new file mode 100644
index 0000000..101fcbb
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/async/AsyncMethodService.java
@@ -0,0 +1,31 @@
+package com.ruoyi.member.service.async;
+
+import com.ruoyi.member.domain.MemberLevel;
+import com.ruoyi.member.service.IMemberService;
+import java.util.List;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author mitao
+ * @date 2024/6/6
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class AsyncMethodService {
+
+    private final IMemberService memberService;
+
+    /**
+     * 处理修改等级条件金额后,同步调整用户等级
+     *
+     * @param memberLevels 会员等级条件列表
+     */
+    @Async
+    public void handleMemberLevel(List<MemberLevel> memberLevels) {
+        memberService.list();
+    }
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberLevelServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberLevelServiceImpl.java
index 7ebc575..17418e8 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberLevelServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberLevelServiceImpl.java
@@ -4,16 +4,20 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.page.BeanUtils;
+import com.ruoyi.member.controller.management.dto.MgtMemberLevelDTO;
 import com.ruoyi.member.controller.management.vo.MgtMemberLevelVO;
 import com.ruoyi.member.domain.MemberLevel;
 import com.ruoyi.member.mapper.MemberLevelMapper;
 import com.ruoyi.member.service.IMemberLevelService;
 import com.ruoyi.member.service.IMemberService;
+import com.ruoyi.member.service.async.AsyncMethodService;
 import com.ruoyi.system.api.domain.Member;
 import java.util.List;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * <p>
@@ -29,7 +33,7 @@
 public class MemberLevelServiceImpl extends ServiceImpl<MemberLevelMapper, MemberLevel> implements IMemberLevelService {
 
     private final IMemberService memberService;
-
+    private final AsyncMethodService asyncMethodService;
     /**
      * 获取会员等级管理列表
      *
@@ -48,4 +52,17 @@
         }
         return mgtMemberLevelVOS;
     }
+
+    /**
+     * 保存会员等级配置
+     *
+     * @param memberLevelDTOList 会员等级配置列表
+     */
+    @Override
+    @Transactional(propagation = Propagation.REQUIRES_NEW)
+    public void saveOrUpdateMemberLevel(List<MgtMemberLevelDTO> memberLevelDTOList) {
+        List<MemberLevel> memberLevels = BeanUtils.copyList(memberLevelDTOList, MemberLevel.class);
+        this.saveOrUpdateBatch(memberLevels);
+        asyncMethodService.handleMemberLevel(memberLevels);
+    }
 }
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 8a1c8ec..c8f8d9b 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
@@ -21,14 +21,18 @@
 import com.ruoyi.common.core.enums.GenderEnum;
 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.PageDTO;
 import com.ruoyi.common.core.utils.uuid.IdUtils;
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.member.controller.management.dto.MgtMemberPointsQuery;
 import com.ruoyi.member.controller.management.dto.MgtMemberQuery;
+import com.ruoyi.member.controller.management.vo.MgtMemberPointsVO;
 import com.ruoyi.member.controller.management.vo.MgtMemberVO;
 import com.ruoyi.member.domain.MemberLevel;
 import com.ruoyi.member.mapper.MemberMapper;
+import com.ruoyi.member.service.IMemberPointsService;
 import com.ruoyi.member.service.IMemberLevelService;
 import com.ruoyi.member.service.IMemberService;
 import com.ruoyi.member.util.HttpUtils;
@@ -36,9 +40,13 @@
 import com.ruoyi.system.api.constants.SecurityConstant;
 import com.ruoyi.system.api.domain.AppMiniLoginVO;
 import com.ruoyi.system.api.domain.Member;
+import com.ruoyi.system.api.domain.MemberPoints;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.domain.dto.*;
 
+import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
+import com.ruoyi.system.api.domain.dto.MemberDTO;
+import com.ruoyi.system.api.domain.dto.MobileDTO;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
@@ -129,6 +137,8 @@
     private IMemberLevelService iMemberLevelService;
 
 
+    @Resource
+    private IMemberPointsService memberPointsService;
     @Override
     public AppMiniLoginVO loginThird(AppMiniLoginDTO appMiniLoginDto) throws Exception {
         AppMiniLoginVO appMiniLoginVo = new AppMiniLoginVO();
@@ -547,5 +557,38 @@
 }
 
 
+    /**
+     * 获取用户详情
+     *
+     * @param id 会员id
+     * @return MgtMemberVO
+     */
+    @Override
+    public MgtMemberVO getMemberById(Long id) {
+        Member member = this.getById(id);
+        if (StringUtils.isNull(member)) {
+            throw new ServiceException("会员不存在");
+        }
+        return BeanUtils.copyBean(member, MgtMemberVO.class);
+    }
+
+    /**
+     * 获取积分明细分页列表
+     *
+     * @param query 会员积分明细查询对象
+     * @return PageDTO<MgtMemberPointsVO>
+     */
+    @Override
+    public PageDTO<MgtMemberPointsVO> getMemberPoints(MgtMemberPointsQuery query) {
+        Page<MemberPoints> page = memberPointsService.lambdaQuery()
+                .eq(MemberPoints::getMemberId, query.getId())
+                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
+        if (StringUtils.isEmpty(page.getRecords())) {
+            return PageDTO.empty(page);
+        }
+        return PageDTO.of(page, MgtMemberPointsVO.class);
+    }
+}
+
 
 
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
new file mode 100644
index 0000000..ea7dd90
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java
@@ -0,0 +1,19 @@
+package com.ruoyi.promotion.controller.management;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 优惠券表 前端控制器
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-05-16
+ */
+@RestController
+@RequestMapping("/mgt/coupon")
+public class MgtCouponController {
+
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponMemberController.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponMemberController.java
new file mode 100644
index 0000000..8e4f1c0
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponMemberController.java
@@ -0,0 +1,22 @@
+package com.ruoyi.promotion.controller.management;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 优惠券领取表 前端控制器
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-05-16
+ */
+@RestController
+@RequestMapping("/mgt/coupon-member")
+@Api(value = "用户端-获取用户优惠卷", tags = "用户端-获取用户优惠卷")
+public class MgtCouponMemberController {
+
+
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionBannerController.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionBannerController.java
new file mode 100644
index 0000000..464724a
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionBannerController.java
@@ -0,0 +1,102 @@
+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.MgtPromotionBannerDTO;
+import com.ruoyi.promotion.controller.management.dto.MgtPromotionBannerQuery;
+import com.ruoyi.promotion.controller.management.dto.MgtPromotionBannerUpdDTO;
+import com.ruoyi.promotion.controller.management.vo.MgtPromotionBannerVO;
+import com.ruoyi.promotion.service.IPromotionBannerService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+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.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 轮播图表 前端控制器
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-05-16
+ */
+@RestController
+@RequestMapping("/mgt/promotion-banner")
+@RequiredArgsConstructor
+@Api(value = "管理后台-轮播图管理相关接口", tags = "管理后台-轮播图管理相关接口")
+public class MgtPromotionBannerController {
+
+    private final IPromotionBannerService promotionBannerService;
+
+    /**
+     * 获取banner列表分页数据
+     *
+     * @param query 轮播图列表查询对象
+     * @return PageDTO<MgtPromotionBannerVO>
+     */
+    @ApiOperation("获取轮播图列表分页数据 ")
+    @PostMapping("/page")
+    public R<PageDTO<MgtPromotionBannerVO>> getBannerPage(
+            @Validated @RequestBody MgtPromotionBannerQuery query) {
+        return R.ok(promotionBannerService.getBannerPage(query));
+    }
+
+    /**
+     * 添加/编辑轮播图
+     *
+     * @param dto 轮播图数据传输对象
+     */
+    @ApiOperation("添加/编辑轮播图")
+    @PostMapping("/save")
+    public R<?> savePromotionBanner(@Validated @RequestBody MgtPromotionBannerDTO dto) {
+        promotionBannerService.savePromotionBanner(dto);
+        return R.ok();
+    }
+
+    /**
+     * 删除轮播图
+     *
+     * @param id 轮播图id
+     */
+    @ApiOperation("删除轮播图")
+    @DeleteMapping("/{id}")
+    public R<?> delPromotionBanner(
+            @ApiParam(name = "id", value = "轮播图id", required = true) @PathVariable("id") Long id) {
+        promotionBannerService.delPromotionBanner(id);
+        return R.ok();
+    }
+
+    /**
+     * 查看轮播图详情
+     *
+     * @param id 轮播图id
+     * @return MgtPromotionBannerVO
+     */
+    @ApiOperation("查看轮播图详情")
+    @GetMapping("/detail/{id}")
+    public R<MgtPromotionBannerVO> getPromotionBanner(
+            @ApiParam(name = "id", value = "轮播图id", required = true) @PathVariable("id") Long id) {
+        return R.ok(promotionBannerService.getPromotionBanner(id));
+    }
+
+    /**
+     * 轮播图 上架/下架
+     *
+     * @param dto 轮播图状态数据传输对象
+     */
+    @ApiOperation("轮播图 上架/下架")
+    @PostMapping("/upd-status")
+    public R<?> updStatus(MgtPromotionBannerUpdDTO dto) {
+        promotionBannerService.updStatus(dto);
+        return R.ok();
+    }
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionWishListController.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionWishListController.java
new file mode 100644
index 0000000..879f7bc
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionWishListController.java
@@ -0,0 +1,61 @@
+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.domain.PromotionWishList;
+import com.ruoyi.promotion.service.IPromotionWishListService;
+import com.ruoyi.system.api.domain.dto.PromotionWishListDTO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import javax.annotation.Resource;
+import org.apache.poi.ss.formula.functions.T;
+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;
+
+/**
+ * <p>
+ * 心愿求购表 前端控制器
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-05-16
+ */
+@RestController
+@RequestMapping("/mgt/promotion-wish-list")
+@Api(value = "用户端-心愿单相关接口", tags = "用户端-心愿单相关接口", description = "用户端-心愿单相关接口")
+public class MgtPromotionWishListController {
+
+    @Resource
+    private IPromotionWishListService iPromotionWishListService;
+
+    @PostMapping("/getPromotionWishList")
+    @ApiOperation(value = "用户端-获取心愿单列表")
+    public R<PageDTO<PromotionWishList>> getPromotionWishList(
+            @RequestBody PromotionWishListDTO promotionWishListDTO) {
+        return R.ok(iPromotionWishListService.getPromotionWishList(promotionWishListDTO));
+    }
+
+    @PostMapping("/savePromotionWishList")
+    @ApiOperation(value = "用户端-添加心愿单列表")
+    public R<T> savePromotionWishList(@RequestBody PromotionWishListDTO promotionWishListDTO) {
+        iPromotionWishListService.savePromotionWishList(promotionWishListDTO);
+        return R.ok();
+    }
+
+    @PostMapping("/getPromotionWishOne")
+    @ApiOperation(value = "用户端-获取心愿单个")
+    public R<PromotionWishList> getPromotionWishOne(
+            @RequestBody PromotionWishListDTO promotionWishListDTO) {
+        return R.ok(iPromotionWishListService.getPromotionWishOne(promotionWishListDTO));
+    }
+
+    @PostMapping("/delPromotionWishOne")
+    @ApiOperation(value = "用户端-删除心愿单个")
+    public R<T> delPromotionWishOne(@RequestBody PromotionWishListDTO promotionWishListDTO) {
+        iPromotionWishListService.delPromotionWishOne(promotionWishListDTO);
+        return R.ok();
+    }
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerDTO.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerDTO.java
new file mode 100644
index 0000000..9585b13
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerDTO.java
@@ -0,0 +1,38 @@
+package com.ruoyi.promotion.controller.management.dto;
+
+import com.ruoyi.common.core.enums.BannerTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2024/6/6
+ */
+@Data
+@ApiModel(value = "轮播图数据传输对象", description = "轮播图数据传输对象")
+public class MgtPromotionBannerDTO implements Serializable {
+
+    private static final long serialVersionUID = -4704935971439543965L;
+
+    @ApiModelProperty(value = "轮播图id")
+    private Long id;
+
+    @ApiModelProperty(value = "轮播图名称")
+    @NotBlank(message = "轮播图不能为空")
+    private String bannerName;
+
+    @ApiModelProperty(value = "轮播图类型 1=商城首页 2=资讯首页", notes = "添加必传")
+    private BannerTypeEnum bannerType;
+
+    @ApiModelProperty(value = "图片")
+    @NotBlank(message = "图片不能为空")
+    private String picUrl;
+
+    @ApiModelProperty(value = "排序 数字越大,权重越大")
+    @NotNull(message = "排序不能为空")
+    private Integer sortNum;
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerQuery.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerQuery.java
new file mode 100644
index 0000000..fb536da
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerQuery.java
@@ -0,0 +1,26 @@
+package com.ruoyi.promotion.controller.management.dto;
+
+import com.ruoyi.common.core.enums.ListingStatusEnum;
+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/6
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "轮播图列表查询对象", description = "轮播图列表查询对象")
+public class MgtPromotionBannerQuery extends BasePage {
+
+    private static final long serialVersionUID = -7522813593652423582L;
+
+    @ApiModelProperty(value = "轮播图名称")
+    private String bannerName;
+
+    @ApiModelProperty("上架状态 上架中 已下架")
+    private ListingStatusEnum listingStatus;
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerUpdDTO.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerUpdDTO.java
new file mode 100644
index 0000000..8c61898
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerUpdDTO.java
@@ -0,0 +1,27 @@
+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/6
+ */
+@Data
+@ApiModel(value = "轮播图状态数据传输对象", description = "轮播图状态数据传输对象")
+public class MgtPromotionBannerUpdDTO implements Serializable {
+
+    private static final long serialVersionUID = 6029452666679276625L;
+
+    @ApiModelProperty(value = "轮播图id")
+    @NotNull(message = "轮播图id不能为空")
+    private Long id;
+
+    @ApiModelProperty("上架状态 上架中 已下架")
+    @NotNull(message = "上架状态不能为空")
+    private ListingStatusEnum listingStatus;
+}
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
new file mode 100644
index 0000000..8ecb6c0
--- /dev/null
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionBannerVO.java
@@ -0,0 +1,43 @@
+package com.ruoyi.promotion.controller.management.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.enums.BannerTypeEnum;
+import com.ruoyi.common.core.enums.ListingStatusEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2024/6/6
+ */
+@Data
+@ApiModel(value = "轮播图视图对象", description = "轮播图视图对象")
+public class MgtPromotionBannerVO implements Serializable {
+
+    private static final long serialVersionUID = -6660029413001641863L;
+
+    @ApiModelProperty(value = "轮播图id")
+    private Long id;
+
+    @ApiModelProperty(value = "轮播图名称")
+    private String bannerName;
+
+    @ApiModelProperty(value = "轮播图类型 1=商城首页 2=资讯首页")
+    private BannerTypeEnum bannerType;
+
+    @ApiModelProperty(value = "图片")
+    private String picUrl;
+
+    @ApiModelProperty(value = "排序 数字越大,权重越大")
+    private Integer sortNum;
+
+    @ApiModelProperty("上架状态 上架中 已下架")
+    private ListingStatusEnum listingStatus;
+
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
+}
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/domain/PromotionBanner.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/domain/PromotionBanner.java
index 9fde932..3795089 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/domain/PromotionBanner.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/domain/PromotionBanner.java
@@ -7,6 +7,7 @@
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ruoyi.common.core.enums.BannerTypeEnum;
+import com.ruoyi.common.core.enums.ListingStatusEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import java.io.Serializable;
@@ -48,6 +49,9 @@
     @ApiModelProperty(value = "排序 数字越大,权重越大")
     private Integer sortNum;
 
+    @ApiModelProperty("上架状态 上架中 已下架")
+    private ListingStatusEnum listingStatus;
+
     @ApiModelProperty(value = "创建者")
     @TableField(value = "create_by", fill = FieldFill.INSERT)
     private String createBy;
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/IPromotionBannerService.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/IPromotionBannerService.java
index 9252229..8f8ee94 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/IPromotionBannerService.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/IPromotionBannerService.java
@@ -1,6 +1,11 @@
 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.MgtPromotionBannerDTO;
+import com.ruoyi.promotion.controller.management.dto.MgtPromotionBannerQuery;
+import com.ruoyi.promotion.controller.management.dto.MgtPromotionBannerUpdDTO;
+import com.ruoyi.promotion.controller.management.vo.MgtPromotionBannerVO;
 import com.ruoyi.promotion.domain.PromotionBanner;
 import java.util.List;
 
@@ -16,4 +21,40 @@
 
     List<PromotionBanner> getBaanerList(Integer bannerType);
 
+    /**
+     * 获取banner列表分页数据
+     *
+     * @param query 轮播图列表查询对象
+     * @return PageDTO<MgtPromotionBannerVO>
+     */
+    PageDTO<MgtPromotionBannerVO> getBannerPage(MgtPromotionBannerQuery query);
+
+    /**
+     * 添加/编辑轮播图
+     *
+     * @param dto 轮播图数据传输对象
+     */
+    void savePromotionBanner(MgtPromotionBannerDTO dto);
+
+    /**
+     * 删除轮播图
+     *
+     * @param id 轮播图id
+     */
+    void delPromotionBanner(Long id);
+
+    /**
+     * 查看轮播图详情
+     *
+     * @param id 轮播图id
+     * @return MgtPromotionBannerVO
+     */
+    MgtPromotionBannerVO getPromotionBanner(Long id);
+
+    /**
+     * 轮播图 上架/下架
+     *
+     * @param dto 轮播图状态数据传输对象
+     */
+    void updStatus(MgtPromotionBannerUpdDTO dto);
 }
diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionBannerServiceImpl.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionBannerServiceImpl.java
index 393ea44..9ab37bc 100644
--- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionBannerServiceImpl.java
+++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionBannerServiceImpl.java
@@ -2,7 +2,17 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.ListingStatusEnum;
+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.PageDTO;
+import com.ruoyi.promotion.controller.management.dto.MgtPromotionBannerDTO;
+import com.ruoyi.promotion.controller.management.dto.MgtPromotionBannerQuery;
+import com.ruoyi.promotion.controller.management.dto.MgtPromotionBannerUpdDTO;
+import com.ruoyi.promotion.controller.management.vo.MgtPromotionBannerVO;
 import com.ruoyi.promotion.domain.PromotionBanner;
 import com.ruoyi.promotion.mapper.PromotionBannerMapper;
 import com.ruoyi.promotion.service.IPromotionBannerService;
@@ -25,7 +35,78 @@
         LambdaQueryWrapper<PromotionBanner> wrapper= Wrappers.lambdaQuery();
         wrapper.eq(PromotionBanner::getBannerType,bannerType);
         wrapper.eq(PromotionBanner::getDelFlag,0);
+        wrapper.eq(PromotionBanner::getListingStatus, ListingStatusEnum.ON_SHELVES);
         wrapper.orderByDesc(PromotionBanner::getSortNum);
         return this.list(wrapper);
     }
+
+    @Override
+    public PageDTO<MgtPromotionBannerVO> getBannerPage(MgtPromotionBannerQuery query) {
+        Page<PromotionBanner> page = this.lambdaQuery()
+                .eq(StringUtils.isNotNull(query.getListingStatus()),
+                        PromotionBanner::getListingStatus, query.getListingStatus())
+                .like(StringUtils.isNotBlank(query.getBannerName()), PromotionBanner::getBannerName,
+                        query.getBannerName())
+                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
+        if (StringUtils.isEmpty(page.getRecords())) {
+            return PageDTO.empty(page);
+        }
+        return PageDTO.of(page, MgtPromotionBannerVO.class);
+    }
+
+    /**
+     * 添加/编辑轮播图
+     *
+     * @param dto 轮播图数据传输对象
+     */
+    @Override
+    public void savePromotionBanner(MgtPromotionBannerDTO dto) {
+        PromotionBanner promotionBanner = BeanUtils.copyBean(dto, PromotionBanner.class);
+        // 添加
+        if (StringUtils.isNull(promotionBanner.getId())) {
+            if (StringUtils.isNull(promotionBanner.getBannerType())) {
+                throw new ServiceException("轮播图类型不能为空");
+            }
+            this.save(promotionBanner);
+        } else {
+            // 更新
+            this.updateById(promotionBanner);
+        }
+    }
+
+    /**
+     * 删除轮播图
+     *
+     * @param id 轮播图id
+     */
+    @Override
+    public void delPromotionBanner(Long id) {
+        this.removeById(id);
+    }
+
+    /**
+     * 查看轮播图详情
+     *
+     * @param id 轮播图id
+     * @return MgtPromotionBannerVO
+     */
+    @Override
+    public MgtPromotionBannerVO getPromotionBanner(Long id) {
+        PromotionBanner promotionBanner = this.getById(id);
+        if (StringUtils.isNull(promotionBanner)) {
+            throw new ServiceException("轮播图不存在");
+        }
+        return BeanUtils.copyBean(promotionBanner, MgtPromotionBannerVO.class);
+    }
+
+    /**
+     * 轮播图 上架/下架
+     *
+     * @param dto 轮播图状态数据传输对象
+     */
+    @Override
+    public void updStatus(MgtPromotionBannerUpdDTO dto) {
+        this.lambdaUpdate().set(PromotionBanner::getListingStatus, dto.getListingStatus())
+                .eq(PromotionBanner::getId, dto.getId()).update();
+    }
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/SupplierDTO.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/SupplierDTO.java
index 3c6c941..f942688 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/SupplierDTO.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/SupplierDTO.java
@@ -24,6 +24,5 @@
     private String phonenumber;
 
     @ApiModelProperty("登录密码")
-    @NotBlank(message = "登录密码不能为空")
     private String password;
 }
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java
index 8d11737..89d7bcb 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java
@@ -84,11 +84,13 @@
 
     @Async
     public void autoEndAuctionGoods(Long id) {
+        log.info("autoEndAuctionGoods scheduler task is running :{}", id);
         auctionClient.endAuctionGoods(id, SecurityConstants.INNER);
     }
 
     @Async
     public void autoStartAuctionGoods(Long id) {
+        log.info("autoStartAuctionGoods scheduler task is running :{}", id);
         auctionClient.startAuctionGoods(id, SecurityConstants.INNER);
     }
 

--
Gitblit v1.7.1