rentaiming
2024-06-07 2f1988b9b3047e64d1a7b85fbaf8518d16eb88ec
Merge remote-tracking branch 'origin/master'

# Conflicts:
# ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberService.java
# ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
1个文件已删除
12个文件已添加
28个文件已修改
941 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AuctionSalesroom.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/util/HuaWeiOBSUtil.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionGoodsController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionScreenController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionGoodsVO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionSalesroomGoodsVO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionSalesroomVO.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/CreateQrCode.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/HuaWeiOBSUtil.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberLevelController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDTO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberPointsQuery.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberLevelVO.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberPointsVO.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberVO.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberLevelService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/async/AsyncMethodService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberLevelServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponMemberController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionBannerController.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionWishListController.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerDTO.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerQuery.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerUpdDTO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionBannerVO.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/domain/PromotionBanner.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/IPromotionBannerService.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionBannerServiceImpl.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/SupplierDTO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
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
     *
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));
    }
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) {
        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));
    }
}
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) {
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;
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;
}
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;
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);
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) {
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())
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){
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);
    }
}
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;
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/HuaWeiOBSUtil.java
File was deleted
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)
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));
    }
}
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();
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDTO.java
New file
@@ -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;
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberPointsQuery.java
New file
@@ -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;
}
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,7 +12,9 @@
 */
@Data
@ApiModel("会员等级视图对象")
public class MgtMemberLevelVO {
public class MgtMemberLevelVO implements Serializable {
    private static final long serialVersionUID = -1084266587029415541L;
    @ApiModelProperty(value = "会员等级id")
    private Long id;
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/vo/MgtMemberPointsVO.java
New file
@@ -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;
}
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;
}
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);
}
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);
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/async/AsyncMethodService.java
New file
@@ -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();
    }
}
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);
    }
}
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);
    }
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java
New file
@@ -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 {
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponMemberController.java
New file
@@ -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 {
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionBannerController.java
New file
@@ -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();
    }
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionWishListController.java
New file
@@ -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();
    }
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerDTO.java
New file
@@ -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;
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerQuery.java
New file
@@ -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;
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionBannerUpdDTO.java
New file
@@ -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;
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/MgtPromotionBannerVO.java
New file
@@ -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;
}
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;
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);
}
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();
    }
}
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;
}
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);
    }