mitao
2024-06-03 0904adc5bf8e308064dd388da07a5e883e65dbfa
提交【管理后台】-大屏操作台相关接口
10个文件已修改
1个文件已添加
214 ■■■■ 已修改文件
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionGoodsController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionScreenController.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/dto/MgtScreenBidPage.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionGoodsVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionSalesroomScreenVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionGoodsService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsSkuController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionGoodsController.java
@@ -7,8 +7,10 @@
import com.ruoyi.auction.service.IAuctionGoodsService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.system.api.domain.dto.ListStatusDTO;
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.GetMapping;
@@ -56,7 +58,8 @@
     */
    @ApiOperation(value = "查看详情", notes = "查看详情")
    @GetMapping("/{id}")
    public R<MgtAuctionGoodsVO> getAuctionGoods(@PathVariable("id") Long id) {
    public R<MgtAuctionGoodsVO> getAuctionGoods(
            @ApiParam(name = "id", value = "拍卖商品id", required = true) @PathVariable("id") Long id) {
        return R.ok(auctionGoodsService.getAuctionGoodsById(id));
    }
@@ -72,10 +75,29 @@
        return R.ok();
    }
    /**
     * 立即结束
     *
     * @param id 拍卖商品id
     */
    @ApiOperation("立即结束")
    @PutMapping("/stop/{id}")
    public R<?> stopAuctionGoods(@PathVariable("id") Long id) {
    public R<?> stopAuctionGoods(
            @ApiParam(name = "id", value = "拍卖商品id", required = true) @PathVariable("id") Long id) {
        auctionGoodsService.stopAuctionGoods(id);
        return R.ok();
    }
    /**
     * 下架/上架 拍卖商品
     *
     * @param dto 商品上下架状态对象
     */
    @ApiOperation(value = "下架/上架 拍卖商品", notes = "下架/上架 拍卖商品")
    @PutMapping("/upd-status")
    public R<?> updStatus(@Validated @RequestBody ListStatusDTO dto) {
        auctionGoodsService.updStatus(dto);
        return R.ok();
    }
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java
@@ -11,6 +11,7 @@
import com.ruoyi.common.core.utils.page.PageDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
@@ -59,7 +60,8 @@
     */
    @GetMapping("/qr-code/{id}")
    @ApiOperation(value = "查看二维码", notes = "查看二维码")
    public R<String> getQrCode(@PathVariable("id") Long id) {
    public R<String> getQrCode(
            @ApiParam(name = "id", value = "拍卖场id", required = true) @PathVariable("id") Long id) {
        try {
            return R.ok(auctionSalesroomService.getQrCode(id));
        } catch (Exception e) {
@@ -89,7 +91,8 @@
     */
    @GetMapping("/{id}")
    @ApiOperation(value = "查看详情", notes = "查看详情")
    public R<MgtAuctionSalesroomVO> getAuctionSalesroom(@PathVariable("id") Long id) {
    public R<MgtAuctionSalesroomVO> getAuctionSalesroom(
            @ApiParam(name = "id", value = "拍卖会id", required = true) @PathVariable("id") Long id) {
        return R.ok(auctionSalesroomService.getAuctionSalesroom(id));
    }
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionScreenController.java
@@ -2,19 +2,23 @@
import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomQuery;
import com.ruoyi.auction.controller.management.dto.MgtScreenBidPage;
import com.ruoyi.auction.controller.management.vo.MgtAuctionBidRecordVO;
import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomScreenVO;
import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomVO;
import com.ruoyi.auction.service.IAuctionSalesroomService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.common.core.web.page.BasePage;
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.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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
@@ -52,10 +56,24 @@
     * @param id 拍卖会id
     * @return 大屏操作台拍卖场视图对象
     */
    @PostMapping("/detail/{id}")
    @GetMapping("/detail/{id}")
    @ApiOperation(value = "进入详情", notes = "进入详情")
    public R<MgtAuctionSalesroomScreenVO> getAuctionSalesroomDetail(@PathVariable("id") Long id,
            @RequestParam("basePage") BasePage basePage) {
        return R.ok(auctionSalesroomService.getAuctionSalesroomDetail(id, basePage));
    public R<MgtAuctionSalesroomScreenVO> getAuctionSalesroomDetail(
            @ApiParam(name = "id", value = "拍卖会id", required = true) @PathVariable("id") Long id) {
        return R.ok(auctionSalesroomService.getAuctionSalesroomDetail(id));
    }
    /**
     * 进入详情-出价会员列表
     *
     * @param mgtScreenBidPage 分页参数对象
     * @return PageDTO<MgtAuctionBidRecordVO>
     */
    @PostMapping("/bid-list")
    @ApiOperation(value = "进入详情-出价会员列表", notes = "进入详情-出价会员列表")
    public R<PageDTO<MgtAuctionBidRecordVO>> getAuctionSalesroomDetail(
            @Validated @RequestBody MgtScreenBidPage mgtScreenBidPage) {
        return R.ok(auctionSalesroomService.getScreenBidRecordList(mgtScreenBidPage));
    }
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/dto/MgtScreenBidPage.java
New file
@@ -0,0 +1,24 @@
package com.ruoyi.auction.controller.management.dto;
import com.ruoyi.common.core.web.page.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * @author mitao
 * @date 2024/6/3
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "分页参数对象")
public class MgtScreenBidPage extends BasePage {
    private static final long serialVersionUID = 5385286841730866302L;
    @ApiModelProperty(value = "拍卖会id")
    @NotNull(message = "拍卖会id不能为空")
    private Long id;
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionGoodsVO.java
@@ -45,6 +45,9 @@
    @ApiModelProperty(value = "拍品数量")
    private Integer auctionStock;
    @ApiModelProperty(value = "商品规格")
    private String spec;
    @ApiModelProperty(value = "保证金")
    private BigDecimal bond;
@@ -59,6 +62,7 @@
    @ApiModelProperty(value = "开始状态 0=预展中 1=拍卖中 2=已结束")
    private AuctionStartStatusEnum startStatus;
    @ApiModelProperty(value = "出价记录")
    private List<MgtAuctionBidRecordVO> recordList;
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/vo/MgtAuctionSalesroomScreenVO.java
@@ -2,7 +2,6 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.enums.AuctionStartStatusEnum;
import com.ruoyi.common.core.utils.page.PageDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
@@ -44,6 +43,6 @@
    @ApiModelProperty(value = "拍卖信息")
    private List<MgtAuctionSalesroomGoodsVO> auctionSalesroomGoodsVOS;
    @ApiModelProperty(value = "当前拍品出价信息")
    private PageDTO<MgtAuctionBidRecordVO> mgtAuctionBidRecordVOPageDTO;
    @ApiModelProperty(value = "出价会员列表")
    private List<MgtAuctionBidRecordVO> mgtAuctionBidRecordVOList;
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionGoodsService.java
@@ -8,6 +8,7 @@
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.system.api.domain.AuctionGoods;
import com.ruoyi.system.api.domain.dto.AuctionGoodsListDTO;
import com.ruoyi.system.api.domain.dto.ListStatusDTO;
import com.ruoyi.system.api.domain.vo.AuctionGoodsListVO;
import com.ruoyi.system.api.domain.vo.AuctionGoodsinfoVO;
import org.springframework.web.bind.annotation.RequestBody;
@@ -44,6 +45,11 @@
     */
    MgtAuctionGoodsVO getAuctionGoodsById(Long id);
    /**
     * 立即结束
     *
     * @param id 拍卖商品id
     */
    void stopAuctionGoods(Long id);
    PageDTO<AuctionGoodsListVO> getAuctionGoodsList(AuctionGoodsListDTO auctionGoodsListDTO);
@@ -55,4 +61,11 @@
    void endAuctionGoods(Long id) throws JsonProcessingException;
    void startAuctionGoods(Long id) throws JsonProcessingException;
    /**
     * 下架/上架 拍卖商品
     *
     * @param dto 商品上下架状态对象
     */
    void updStatus(ListStatusDTO dto);
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java
@@ -9,11 +9,11 @@
import com.ruoyi.auction.controller.management.dto.MgtAuctionSaleroomBidRecordQuery;
import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomDTO;
import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomQuery;
import com.ruoyi.auction.controller.management.dto.MgtScreenBidPage;
import com.ruoyi.auction.controller.management.vo.MgtAuctionBidRecordVO;
import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomScreenVO;
import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomVO;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.common.core.web.page.BasePage;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.AuctionSalesroom;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
@@ -113,8 +113,15 @@
     * 进入详情
     *
     * @param id   拍卖会id
     * @param page
     * @return 大屏操作台拍卖场视图对象
     */
    MgtAuctionSalesroomScreenVO getAuctionSalesroomDetail(Long id, BasePage basePage);
    MgtAuctionSalesroomScreenVO getAuctionSalesroomDetail(Long id);
    /**
     * 进入详情-出价会员列表
     *
     * @param mgtScreenBidPage
     * @return PageDTO<MgtAuctionBidRecordVO>
     */
    PageDTO<MgtAuctionBidRecordVO> getScreenBidRecordList(MgtScreenBidPage mgtScreenBidPage);
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
@@ -44,6 +44,7 @@
import com.ruoyi.system.api.domain.dto.AuctionGoodsListDTO;
import com.ruoyi.system.api.domain.dto.AuctionGoodsListPageDTO;
import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO;
import com.ruoyi.system.api.domain.dto.ListStatusDTO;
import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO;
import com.ruoyi.system.api.domain.dto.OrderDTO;
import com.ruoyi.system.api.domain.dto.RefundDTO;
@@ -127,7 +128,28 @@
                .eq(StringUtils.isNotNull(query.getStartStatus()), AuctionGoods::getStartStatus,
                        query.getStartStatus())
                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
        return PageDTO.of(page, MgtAuctionGoodsVO.class);
        if (StringUtils.isEmpty(page.getRecords())) {
            return PageDTO.empty(page.getTotal(), page.getPages());
        }
        // 查询商品信息
        Set<Long> goodsIdList = page.getRecords().stream().map(AuctionGoods::getGoodsSkuId)
                .collect(Collectors.toSet());
        List<GoodsSku> data = goodsSkuClient.getGoodsListByIds(goodsIdList, SecurityConstants.INNER)
                .getData();
        PageDTO<MgtAuctionGoodsVO> pageDTO = PageDTO.of(page,
                MgtAuctionGoodsVO.class);
        if (StringUtils.isNotEmpty(data)) {
            Map<Long, GoodsSku> goodsSkuMap = data.stream()
                    .collect(Collectors.toMap(GoodsSku::getId, e -> e));
            for (MgtAuctionGoodsVO mgtAuctionGoodsVO : pageDTO.getList()) {
                GoodsSku goodsSku = goodsSkuMap.get(mgtAuctionGoodsVO.getGoodsSkuId());
                if (StringUtils.isNotNull(goodsSku)) {
                    mgtAuctionGoodsVO.setGoodsSkuName(goodsSku.getSkuName());
                    mgtAuctionGoodsVO.setSpec(goodsSku.getSpec());
                }
            }
        }
        return pageDTO;
    }
    @Override
@@ -567,4 +589,19 @@
            log.info("===================>发送websocket通知,消息体{}", msg);
        }
    }
    /**
     * 下架/上架 拍卖商品
     *
     * @param dto 商品上下架状态对象
     */
    @Override
    public void updStatus(ListStatusDTO dto) {
        AuctionGoods auctionGoods = this.getById(dto.getId());
        if (StringUtils.isNull(auctionGoods)) {
            throw new ServiceException("拍卖商品不存在");
        }
        auctionGoods.setListingStatus(dto.getListingStatus());
        this.updateById(auctionGoods);
    }
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -24,6 +24,7 @@
import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomDTO;
import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomGoodsDTO;
import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomQuery;
import com.ruoyi.auction.controller.management.dto.MgtScreenBidPage;
import com.ruoyi.auction.controller.management.vo.MgtAuctionBidRecordVO;
import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomGoodsVO;
import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomScreenVO;
@@ -55,7 +56,6 @@
import com.ruoyi.common.core.utils.page.Checker;
import com.ruoyi.common.core.utils.page.CollUtils;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.common.core.web.page.BasePage;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.AuctionGoods;
import com.ruoyi.system.api.domain.AuctionSalesroom;
@@ -84,6 +84,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.Resource;
@@ -931,11 +932,10 @@
     * 进入详情
     *
     * @param id       拍卖会id
     * @param basePage
     * @return 大屏操作台拍卖场视图对象
     */
    @Override
    public MgtAuctionSalesroomScreenVO getAuctionSalesroomDetail(Long id, BasePage basePage) {
    public MgtAuctionSalesroomScreenVO getAuctionSalesroomDetail(Long id) {
        MgtAuctionSalesroomVO mgtAuctionSalesroomVO = this.getAuctionSalesroom(id);
        MgtAuctionSalesroomScreenVO vo = BeanUtils.copyBean(
                mgtAuctionSalesroomVO, MgtAuctionSalesroomScreenVO.class);
@@ -966,20 +966,55 @@
                int index = collect.indexOf(vo.getCurrentAuctionSalesroomGoods());
                vo.setNextAuctionSalesroomGoods(collect.get(index + 1));
                // 分页查询当前拍品出价信息
                Page<AuctionBidRecord> page = auctionBidRecordService.lambdaQuery()
                List<AuctionBidRecord> list = auctionBidRecordService.lambdaQuery()
                        .eq(AuctionBidRecord::getTargetId,
                                vo.getCurrentAuctionSalesroomGoods().getId())
                        .eq(AuctionBidRecord::getAuctionType,
                                AuctionOrderTypeEnum.AUCTION_ITEMS)
                        .page(new Page<>(basePage.getPageCurr(), basePage.getPageSize()));
                if (StringUtils.isNotEmpty(page.getRecords())) {
                    vo.setMgtAuctionBidRecordVOPageDTO(PageDTO.empty(page));
                        .list();
                if (StringUtils.isNotEmpty(list)) {
                    vo.setMgtAuctionBidRecordVOList(CollUtils.emptyList());
                }
                vo.setMgtAuctionBidRecordVOPageDTO(PageDTO.of(page, MgtAuctionBidRecordVO.class));
                vo.setMgtAuctionBidRecordVOList(
                        BeanUtils.copyList(list, MgtAuctionBidRecordVO.class));
            } else {
                vo.setNextAuctionSalesroomGoods(collect.get(0));
            }
        }
        return vo;
    }
    /**
     * 进入详情-出价会员列表
     *
     * @param mgtScreenBidPage
     * @return PageDTO<MgtAuctionBidRecordVO>
     */
    @Override
    public PageDTO<MgtAuctionBidRecordVO> getScreenBidRecordList(
            MgtScreenBidPage mgtScreenBidPage) {
        MgtAuctionSalesroomVO mgtAuctionSalesroomVO = this.getAuctionSalesroom(
                mgtScreenBidPage.getId());
        List<MgtAuctionSalesroomGoodsVO> auctionSalesroomGoodsVOS = mgtAuctionSalesroomVO.getAuctionSalesroomGoodsVOS();
        if (StringUtils.isEmpty(auctionSalesroomGoodsVOS)) {
            throw new ServiceException("该拍卖会暂无拍卖商品");
        }
        AtomicReference<Long> currentAuctionGoodsId = new AtomicReference<>();
        auctionSalesroomGoodsVOS.stream()
                .filter(item -> item.getStatus().equals(AuctionGoodsStatusEnum.IN_PROGRESS))
                .findFirst().ifPresent(goods -> {
                    currentAuctionGoodsId.set(goods.getId());
                });
        Page<AuctionBidRecord> page = auctionBidRecordService.lambdaQuery()
                .eq(StringUtils.isNotNull(currentAuctionGoodsId.get()),
                        AuctionBidRecord::getTargetId,
                        currentAuctionGoodsId.get())
                .eq(AuctionBidRecord::getAuctionType,
                        AuctionOrderTypeEnum.AUCTION_ITEMS)
                .page(new Page<>(mgtScreenBidPage.getPageCurr(), mgtScreenBidPage.getPageSize()));
        if (StringUtils.isNotEmpty(page.getRecords())) {
            return PageDTO.empty(page);
        }
        return PageDTO.of(page, MgtAuctionBidRecordVO.class);
    }
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsSkuController.java
@@ -158,7 +158,7 @@
     */
    @ApiOperation(value = "下架/上架 商品", notes = "下架/上架 商品")
    @PutMapping("/upd-status")
    public R<Void> updStatus(@RequestBody ListStatusDTO dto) {
    public R<Void> updStatus(@Validated @RequestBody ListStatusDTO dto) {
        goodsSkuService.updStatus(dto);
        return R.ok();
    }