mitao
2025-03-11 ab34ef62429262bcde69186f1e5edecc5f66c001
拍卖结果弹窗消息
16个文件已修改
1个文件已添加
504 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/ForepartAuctionSalesroomGoodsVO.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/PopUpVO.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionBidRecordController.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java 182 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/dto/MgtAuctionSalesroomQuery.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/dto/MgtScreenSalesroomGoodsDTO.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/AuctionBidRecord.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/mapper/AuctionBidRecordMapper.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionBidRecordService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomGoodsService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionBidRecordServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java 88 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/resources/mapper/auction/AuctionBidRecordMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/inner/OrderController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/ForepartAuctionSalesroomGoodsVO.java
@@ -105,4 +105,13 @@
    @ApiModelProperty(value = "商品介绍")
    @JsonInclude(JsonInclude.Include.ALWAYS)
    private String goodsDescription;
    @ApiModelProperty(value = "可中拍人数")
    private Integer bidNum;
    @ApiModelProperty(value = "最高出价金额")
    private BigDecimal maxAmount;
    @ApiModelProperty(value = "一次性每人成交数量")
    private Integer dealQuantity;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/PopUpVO.java
New file
@@ -0,0 +1,28 @@
package com.ruoyi.system.api.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author mitao
 * @date 2025/3/11
 */
@Data
@ApiModel("拍卖结果弹窗视图对象")
public class PopUpVO {
    @ApiModelProperty("出价记录id")
    private Long auctionBidRecordId;
    @ApiModelProperty("商品名称")
    private String goodsName;
    @ApiModelProperty("是否中拍 1:是 0:否")
    private Integer successFlag;
    @ApiModelProperty("订单id")
    private Long orderId;
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionBidRecordController.java
@@ -1,22 +1,27 @@
package com.ruoyi.auction.controller.forepart;
import com.ruoyi.system.api.domain.dto.AuctionSalesroomDTO;
import com.ruoyi.system.api.domain.dto.AuctionSalesroomGoodsInfoDTO;
import com.ruoyi.system.api.domain.vo.AuctionBidRecordVO;
import com.ruoyi.auction.domain.AuctionBidRecord;
import com.ruoyi.auction.service.IAuctionBidRecordService;
import com.ruoyi.auction.service.IAuctionSalesroomGoodsService;
import com.ruoyi.auction.service.IAuctionSalesroomService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.dto.AuctionSalesroomDTO;
import com.ruoyi.system.api.domain.dto.AuctionSalesroomGoodsInfoDTO;
import com.ruoyi.system.api.domain.dto.BidDTO;
import com.ruoyi.system.api.domain.vo.AuctionBidRecordVO;
import com.ruoyi.system.api.domain.vo.PopUpVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.annotation.Resource;
import lombok.Synchronized;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
@@ -65,4 +70,17 @@
        return R.ok(iAuctionSalesroomGoodsService.getAuctionBidRecord(auctionSalesroomGoodsInfoDTO));
    }
    @GetMapping("/setPopup/{auctionBidRecordId}")
    @ApiOperation("标记已弹出弹窗")
    public R<?> setPopup(@PathVariable("auctionBidRecordId") Long auctionBidRecordId) {
        iAuctionBidRecordService.setPopup(auctionBidRecordId);
        return R.ok();
    }
    @ApiOperation("【2024.12.31】查询用户弹窗")
    @GetMapping("/popupList")
    public R<List<PopUpVO>> popupList() {
        List<PopUpVO> popupList = iAuctionBidRecordService.popupList();
        return R.ok(popupList);
    }
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java
@@ -13,8 +13,6 @@
import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.annotation.Resource;
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;
@@ -100,13 +98,6 @@
    @ApiOperation(value = "用户端-拍卖场商品详情")
    public R<AuctionSalesroomGoodsInfoVO> getAuctionSalesroomGoodsInfo(@RequestBody AuctionSalesroomGoodsInfoDTO auctionSalesroomGoodsInfoDTO) {
        return R.ok(iAuctionSalesroomGoodsService.getAuctionSalesroomGoodsInfo(auctionSalesroomGoodsInfoDTO));
    }
    @GetMapping("/setPopup/{id}")
    @ApiOperation("标记已弹出弹窗")
    public R<?> setPopup(@PathVariable("id") Long id) {
        iAuctionSalesroomGoodsService.setPopup(id);
        return R.ok();
    }
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionSalesroomController.java
@@ -3,9 +3,7 @@
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.util.DateUtils;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.google.zxing.WriterException;
import com.ruoyi.auction.controller.management.dto.MgtAuctionSaleroomBidRecordQuery;
import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomDTO;
@@ -25,29 +23,36 @@
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.page.BeanUtils;
import com.ruoyi.common.core.utils.page.CollUtils;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.system.api.domain.AuctionSalesroom;
import com.ruoyi.system.api.domain.AuctionSalesroomGoods;
import com.ruoyi.system.api.domain.GoodsSku;
import com.ruoyi.system.api.feignClient.GoodsSkuClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import java.io.IOException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.*;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
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>
@@ -171,27 +176,8 @@
    @ApiOperation("导出列表")
    @PostMapping("/export")
    public void export(@RequestBody MgtAuctionSalesroomQuery query, HttpServletResponse response) {
        PageDTO<MgtAuctionSalesroomVO> page = auctionSalesroomService.getAuctionSalesroomPage(query);
        if (page.isEmpty()){
            response.setContentType(
                    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("utf-8");
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
            try {
                String fileName = URLEncoder.encode(
                                "优惠券领取明细" + DateUtils.format(new Date(), "yyyyMMddHHmmss"), "UTF-8")
                        .replaceAll("\\+", "%20");
                response.setHeader("Content-disposition",
                        "attachment;filename*=utf-8''" + fileName + ".xlsx");
                EasyExcel.write(response.getOutputStream(), AuctionBidRecordVO.class)
                        .sheet("优惠券领取明细")
                        .doWrite(new ArrayDeque<>());
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        List<MgtAuctionSalesroomVO> list = page.getList();
        List<AuctionBidRecordVO> result = Collections.emptyList();
        List<MgtAuctionSalesroomVO> list = auctionSalesroomService.getAuctionSalesroomList(query);
        List<Long> ids = list.stream().map(MgtAuctionSalesroomVO::getId).collect(Collectors.toList());
@@ -200,72 +186,76 @@
                        .in(!CollectionUtils.isEmpty(ids),AuctionBidRecord::getAuctionSalesroomId, ids)
                        .eq(AuctionBidRecord::getAuctionType, AuctionOrderTypeEnum.AUCTION_ITEMS)
        );
        if (CollUtils.isNotEmpty(auctionBidRecordList)) {
            // 提取 goodsIds 和 auctionSalesroomIds
            Set<Long> goodsIds = auctionBidRecordList.stream()
                    .map(AuctionBidRecord::getTargetId)
                    .collect(Collectors.toSet());
        if (CollectionUtils.isEmpty(auctionBidRecordList)) {
            return;
            Set<Long> auctionSalesroomIds = auctionBidRecordList.stream()
                    .map(AuctionBidRecord::getAuctionSalesroomId)
                    .collect(Collectors.toSet());
            // 查询拍卖场商品信息
            List<AuctionSalesroomGoods> salesroomGoodss = auctionSalesroomGoodsService.list(
                    new LambdaQueryWrapper<AuctionSalesroomGoods>()
                            .in(AuctionSalesroomGoods::getAuctionSalesroomId, auctionSalesroomIds)
                            .in(AuctionSalesroomGoods::getGoodsSkuId, goodsIds)
            );
            Map<String, AuctionSalesroomGoods> roomMap = salesroomGoodss.stream()
                    .collect(Collectors.toMap(
                            i -> String.format("%s-%s", i.getAuctionSalesroomId(),
                                    i.getGoodsSkuId()),
                            i -> i
                    ));
            // 查询拍卖场信息
            List<AuctionSalesroom> auctionSalesroomList = auctionSalesroomService.listByIds(
                    auctionSalesroomIds);
            Map<Long, AuctionSalesroom> auctionSalesroomMap = auctionSalesroomList.stream()
                    .collect(Collectors.toMap(AuctionSalesroom::getId, e -> e));
            // 查询商品信息
            R<List<GoodsSku>> goodsListByIdsR = goodsSkuClient.getGoodsListByIds(goodsIds,
                    SecurityConstants.INNER);
            if (R.isError(goodsListByIdsR)) {
                throw new ServiceException("查询商品信息失败");
            }
            List<GoodsSku> goodsSkuList = goodsListByIdsR.getData();
            Map<Long, GoodsSku> goodsSkuMap = goodsSkuList.stream()
                    .collect(Collectors.toMap(GoodsSku::getId, e -> e));
            // 构建结果列表
            result = auctionBidRecordList.stream().map(auctionBidRecord -> {
                AuctionBidRecordVO auctionBidRecordVO = BeanUtils.copyBean(auctionBidRecord,
                        AuctionBidRecordVO.class);
                auctionBidRecordVO.setNum(auctionBidRecordList.indexOf(auctionBidRecord) + 1);
                AuctionSalesroomGoods salesroomGoods = roomMap.get(
                        String.format("%s-%s", auctionBidRecord
                                .getAuctionSalesroomId(), auctionBidRecord.getTargetId()));
                if (salesroomGoods != null) {
                    BigDecimal totalAmount = auctionBidRecord.getLastBidAmount()
                            .multiply(new BigDecimal(salesroomGoods
                                    .getDealQuantity()));
                    auctionBidRecordVO.setTotalAmount(totalAmount);
                }
                AuctionSalesroom auctionSalesroom = auctionSalesroomMap.get(
                        auctionBidRecord.getAuctionSalesroomId());
                if (auctionSalesroom != null) {
                    auctionBidRecordVO.setAuctionSalesroomName(auctionSalesroom.getSalesroomName());
                }
                GoodsSku goodsSku = goodsSkuMap.get(auctionBidRecord.getTargetId());
                if (goodsSku != null) {
                    auctionBidRecordVO.setGoodsSkuName(goodsSku.getSkuName());
                }
                return auctionBidRecordVO;
            }).collect(Collectors.toList());
        }
        // 提取 goodsIds 和 auctionSalesroomIds
        Set<Long> goodsIds = auctionBidRecordList.stream()
                .map(AuctionBidRecord::getTargetId)
                .collect(Collectors.toSet());
        Set<Long> auctionSalesroomIds = auctionBidRecordList.stream()
                .map(AuctionBidRecord::getAuctionSalesroomId)
                .collect(Collectors.toSet());
        // 查询拍卖场商品信息
        List<AuctionSalesroomGoods> salesroomGoodss = auctionSalesroomGoodsService.list(
                new LambdaQueryWrapper<AuctionSalesroomGoods>()
                        .in(AuctionSalesroomGoods::getAuctionSalesroomId, auctionSalesroomIds)
                        .in(AuctionSalesroomGoods::getGoodsSkuId, goodsIds)
        );
        Map<String, AuctionSalesroomGoods> roomMap = salesroomGoodss.stream()
                .collect(Collectors.toMap(
                        i -> String.format("%s-%s", i.getAuctionSalesroomId(), i.getGoodsSkuId()),
                        i -> i
                ));
        // 查询拍卖场信息
        List<AuctionSalesroom> auctionSalesroomList = auctionSalesroomService.listByIds(auctionSalesroomIds);
        Map<Long, AuctionSalesroom> auctionSalesroomMap = auctionSalesroomList.stream()
                .collect(Collectors.toMap(AuctionSalesroom::getId, e -> e));
        // 查询商品信息
        R<List<GoodsSku>> goodsListByIdsR = goodsSkuClient.getGoodsListByIds(goodsIds, SecurityConstants.INNER);
        if (R.isError(goodsListByIdsR)) {
            throw new ServiceException("查询商品信息失败");
        }
        List<GoodsSku> goodsSkuList = goodsListByIdsR.getData();
        Map<Long, GoodsSku> goodsSkuMap = goodsSkuList.stream().collect(Collectors.toMap(GoodsSku::getId, e -> e));
        // 构建结果列表
        List<AuctionBidRecordVO> result = auctionBidRecordList.stream().map(auctionBidRecord -> {
            AuctionBidRecordVO auctionBidRecordVO = BeanUtils.copyBean(auctionBidRecord, AuctionBidRecordVO.class);
            auctionBidRecordVO.setNum(auctionBidRecordList.indexOf(auctionBidRecord) + 1);
            AuctionSalesroomGoods salesroomGoods = roomMap.get(String.format("%s-%s", auctionBidRecord
                    .getAuctionSalesroomId(), auctionBidRecord.getTargetId()));
            if (salesroomGoods != null) {
                BigDecimal totalAmount = auctionBidRecord.getLastBidAmount().multiply(new BigDecimal(salesroomGoods
                        .getDealQuantity()));
                auctionBidRecordVO.setTotalAmount(totalAmount);
            }
            AuctionSalesroom auctionSalesroom = auctionSalesroomMap.get(auctionBidRecord.getAuctionSalesroomId());
            if (auctionSalesroom != null) {
                auctionBidRecordVO.setAuctionSalesroomName(auctionSalesroom.getSalesroomName());
            }
            GoodsSku goodsSku = goodsSkuMap.get(auctionBidRecord.getTargetId());
            if (goodsSku != null) {
                auctionBidRecordVO.setGoodsSkuName(goodsSku.getSkuName());
            }
            return auctionBidRecordVO;
        }).collect(Collectors.toList());
        response.setContentType(
                "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
@@ -273,12 +263,12 @@
        // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
        try {
            String fileName = URLEncoder.encode(
                            "优惠券领取明细" + DateUtils.format(new Date(), "yyyyMMddHHmmss"), "UTF-8")
                            "拍卖场出价记录" + DateUtils.format(new Date(), "yyyyMMddHHmmss"), "UTF-8")
                    .replaceAll("\\+", "%20");
            response.setHeader("Content-disposition",
                    "attachment;filename*=utf-8''" + fileName + ".xlsx");
            EasyExcel.write(response.getOutputStream(), AuctionBidRecordVO.class)
                    .sheet("优惠券领取明细")
                    .sheet("拍卖场出价记录")
                    .doWrite(result);
        } catch (IOException e) {
            throw new RuntimeException(e);
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/dto/MgtAuctionSalesroomQuery.java
@@ -8,7 +8,6 @@
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDateTime;
import java.util.List;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -41,7 +40,7 @@
    private LocalDateTime endTime;
    @ApiModelProperty(value = "拍卖场Id")
    private List<Long> ids;
    private List<String> ids;
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/dto/MgtScreenSalesroomGoodsDTO.java
@@ -34,7 +34,6 @@
    private BigDecimal minimumMarkupAmount;
    @ApiModelProperty(value = "拍品数量")
    @NotNull(message = "拍品数量不能为空")
    private Integer salesroomStock;
    @ApiModelProperty(value = "兜底成交个数")
@@ -44,4 +43,14 @@
    @NotNull(message = "拍卖时间不能为空")
    private Integer listingDuration;
    @ApiModelProperty(value = "一次性每人成交数量")
    private Integer dealQuantity;
    @ApiModelProperty(value = "可中拍人数")
    @NotNull(message = "可中拍人数不能为空")
    private Integer bidNum;
    @ApiModelProperty(value = "最高出价金额")
    private BigDecimal maxAmount;
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/AuctionBidRecord.java
@@ -1,17 +1,21 @@
package com.ruoyi.auction.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.enums.AuctionOrderTypeEnum;
import com.ruoyi.common.core.enums.BidStatusEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
@@ -86,4 +90,10 @@
    @ApiModelProperty("关联订单id")
    private Long orderId;
    @ApiModelProperty("弹窗通知状态:(0:未通知;1:已通知)")
    private Integer notifyFlag;
    @ApiModelProperty("商品名称")
    private String goodsName;
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/mapper/AuctionBidRecordMapper.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.auction.domain.AuctionBidRecord;
import com.ruoyi.system.api.domain.vo.PopUpVO;
import java.util.List;
/**
 * <p>
@@ -13,5 +15,10 @@
 */
public interface AuctionBidRecordMapper extends BaseMapper<AuctionBidRecord> {
    /**
     * 获取弹窗列表
     * @param id
     * @return
     */
    List<PopUpVO> popupList(Long id);
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionBidRecordService.java
@@ -1,8 +1,9 @@
package com.ruoyi.auction.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.api.domain.dto.AuctionSalesroomDTO;
import com.ruoyi.auction.domain.AuctionBidRecord;
import com.ruoyi.system.api.domain.dto.AuctionSalesroomDTO;
import com.ruoyi.system.api.domain.vo.PopUpVO;
import java.util.List;
/**
@@ -21,4 +22,16 @@
    public List<AuctionBidRecord> getAuctionBidRecordList(AuctionSalesroomDTO auctionSalesroomGoodsDTO);
    List<AuctionBidRecord> getBidRecordByGoodsId(Long id);
    /**
     * 标记已弹出弹窗
     * @param auctionBidRecordId
     */
    void setPopup(Long auctionBidRecordId);
    /**
     * 【2024.12.31】查询用户弹窗
     * @return
     */
    List<PopUpVO> popupList();
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomGoodsService.java
@@ -60,5 +60,4 @@
       List<AuctionBidRecordVO> getAuctionBidRecord(@RequestBody AuctionSalesroomGoodsInfoDTO auctionSalesroomGoodsInfoDTO);
    void setPopup(Long id);
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java
@@ -81,6 +81,13 @@
    PageDTO<MgtAuctionSalesroomVO> getAuctionSalesroomPage(MgtAuctionSalesroomQuery query);
    /**
     * 分页查询拍卖场
     *
     * @param query 拍卖场查询对象
     * @return PageDTO<MgtAuctionSalesroomVO>
     */
    List<MgtAuctionSalesroomVO> getAuctionSalesroomList(MgtAuctionSalesroomQuery query);
    /**
     * 查看二维码
     *
     * @param id 拍卖场id
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionBidRecordServiceImpl.java
@@ -7,11 +7,20 @@
import com.ruoyi.auction.mapper.AuctionBidRecordMapper;
import com.ruoyi.auction.mapper.AuctionSalesroomGoodsMapper;
import com.ruoyi.auction.service.IAuctionBidRecordService;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.enums.AuctionOrderTypeEnum;
import com.ruoyi.common.core.enums.BidStatusEnum;
import com.ruoyi.common.core.enums.DisabledEnum;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.AuctionSalesroomGoods;
import com.ruoyi.system.api.domain.Member;
import com.ruoyi.system.api.domain.dto.AuctionSalesroomDTO;
import com.ruoyi.system.api.domain.vo.PopUpVO;
import com.ruoyi.system.api.feignClient.MemberClient;
import com.ruoyi.system.api.model.LoginUser;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
@@ -29,6 +38,8 @@
    @Resource
    private AuctionSalesroomGoodsMapper auctionSalesroomGoodsMapper;
    @Resource
    private MemberClient memberClient;
    @Override
    public List<AuctionBidRecord> getAuctionBidRecordList(AuctionSalesroomDTO auctionSalesroomGoodsDTO) {
@@ -43,8 +54,8 @@
                wrapper.orderByAsc(AuctionBidRecord::getLastBidTime);
                auctionBidRecordList = this.list(wrapper);
                //判断
                if (auctionBidRecordList.size()>=auctionSalesroomGoods.getSalesroomStock()){
                    for (int i=0;i<auctionSalesroomGoods.getSalesroomStock();i++){
                if (auctionBidRecordList.size() >= auctionSalesroomGoods.getBidNum()) {
                    for (int i = 0; i < auctionSalesroomGoods.getBidNum(); i++) {
                        AuctionBidRecord auctionBidRecord= auctionBidRecordList.get(i);
                        auctionBidRecord.setStatus(BidStatusEnum.LEAD);
                    }
@@ -78,4 +89,32 @@
                        AuctionOrderTypeEnum.REGULAR_ITEMS)
                .orderByDesc(AuctionBidRecord::getLastBidAmount).list();
    }
    /**
     * 标记已弹出弹窗
     * @param auctionBidRecordId
     */
    @Override
    public void setPopup(Long auctionBidRecordId) {
        this.lambdaUpdate()
                .set(AuctionBidRecord::getNotifyFlag, DisabledEnum.YES.getCode())
                .eq(AuctionBidRecord::getId, auctionBidRecordId).update();
    }
    /**
     * 【2024.12.31】查询用户弹窗
     * @return
     */
    @Override
    public List<PopUpVO> popupList() {
        LoginUser loginUser = SecurityUtils.getLoginUser();
        R<Member> member = memberClient.getMemberByUserId(loginUser.getUserid(),
                SecurityConstants.INNER);
        List<PopUpVO> res = Collections.emptyList();
        if (R.isSuccess(member)) {
            Member memberData = member.getData();
            res = baseMapper.popupList(memberData.getId());
        }
        return res;
    }
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java
@@ -163,7 +163,10 @@
        forepartAuctionSalesroomGoodsVO.setGoodsSkuName(goodsSku.getSkuName());
        forepartAuctionSalesroomGoodsVO.setGoodsSkustatus(auctionSalesroomGoods.getStatus().getCode());
        forepartAuctionSalesroomGoodsVO.setStartingPrice(auctionSalesroomGoods.getStartingPrice());
        forepartAuctionSalesroomGoodsVO.setSalesroomStock(auctionSalesroomGoods.getSalesroomStock());
        // forepartAuctionSalesroomGoodsVO.setSalesroomStock(auctionSalesroomGoods.getSalesroomStock());
        forepartAuctionSalesroomGoodsVO.setBidNum(auctionSalesroomGoods.getBidNum());
        forepartAuctionSalesroomGoodsVO.setDealQuantity(auctionSalesroomGoods.getDealQuantity());
        forepartAuctionSalesroomGoodsVO.setMaxAmount(auctionSalesroomGoods.getMaxAmount());
        forepartAuctionSalesroomGoodsVO.setListingDuration(auctionSalesroomGoods.getListingDuration());
        forepartAuctionSalesroomGoodsVO.setStartTime(auctionSalesroomGoods.getStartTime());
        forepartAuctionSalesroomGoodsVO.setCoverPic(goodsSku.getScreenCoverPic());
@@ -392,7 +395,8 @@
                GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                goodsStockUpdDTO.setGoodsSkuId(salesroomGoods.getGoodsSkuId());
                goodsStockUpdDTO.setAuctionStock(salesroomGoods.getSalesroomStock());
                goodsStockUpdDTO.setAuctionStock(
                        salesroomGoods.getBidNum() * salesroomGoods.getDealQuantity());
                goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
                        SecurityConstants.INNER);
@@ -519,7 +523,7 @@
            if (auctionBidRecordList.size() > 0) {
                //判断
                if (auctionBidRecordList.size() >= auctionSalesroomGoods.getBidNum()) {
                    for (int i = 0; i < auctionSalesroomGoods.getSalesroomStock(); i++) {
                    for (int i = 0; i < auctionSalesroomGoods.getBidNum(); i++) {
                        AuctionBidRecord auctionBidRecord = auctionBidRecordList.get(i);
                        auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
                        Long orderId = AddOrder(auctionBidRecord.getTargetId(),
@@ -538,7 +542,9 @@
                } else {
                    GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                    goodsStockUpdDTO.setGoodsSkuId(auctionSalesroomGoods.getGoodsSkuId());
                    goodsStockUpdDTO.setAuctionStock(auctionSalesroomGoods.getSalesroomStock()- auctionBidRecordList.size());
                    goodsStockUpdDTO.setAuctionStock(auctionSalesroomGoods.getBidNum()
                            * auctionSalesroomGoods.getDealQuantity() - auctionBidRecordList.size()
                            * auctionSalesroomGoods.getDealQuantity());
                    goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
                            SecurityConstants.INNER);
@@ -666,7 +672,10 @@
        AuctionSalesroomGoodsInfoVO.setGoodsSkuId(byId1.getId());
        AuctionSalesroomGoodsInfoVO.setGoodsSkuName(goodsSku.getSkuName());
        AuctionSalesroomGoodsInfoVO.setStartingPrice(byId1.getStartingPrice());
        AuctionSalesroomGoodsInfoVO.setSalesroomStock(byId1.getSalesroomStock());
        // AuctionSalesroomGoodsInfoVO.setSalesroomStock(byId1.getSalesroomStock());
        AuctionSalesroomGoodsInfoVO.setBidNum(byId1.getBidNum());
        AuctionSalesroomGoodsInfoVO.setMaxAmount(byId1.getMaxAmount());
        AuctionSalesroomGoodsInfoVO.setDealQuantity(byId1.getDealQuantity());
        AuctionSalesroomGoodsInfoVO.setSalesroomType(byId.getType().getCode());
        AuctionSalesroomGoodsInfoVO.setGoodsSkustatus(byId1.getStatus().getCode());
        AuctionSalesroomGoodsInfoVO.setListingDuration(byId1.getListingDuration());
@@ -898,12 +907,4 @@
        return orderClient.saveOrderOne(order, SecurityConstants.INNER).getData();
    }
    /**
     * 设置弹窗状态已弹出
     * @param id
     */
    @Override
    public void setPopup(Long id) {
    }
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -36,7 +36,6 @@
import com.ruoyi.auction.service.IAuctionGoodsService;
import com.ruoyi.auction.service.IAuctionSalesroomService;
import com.ruoyi.auction.service.IAuctionVideoService;
import com.ruoyi.auction.util.CreateQrCode;
import com.ruoyi.auction.util.HttpUtils;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.constant.SecurityConstants;
@@ -516,7 +515,7 @@
            forepartAuctionSalesroomGoodsVO.setGoodsSkuId(salesroomGoods.getId());
            forepartAuctionSalesroomGoodsVO.setCoverPic(goodsSku.getCoverPic());
            forepartAuctionSalesroomGoodsVO.setStartingPrice(salesroomGoods.getStartingPrice());
            forepartAuctionSalesroomGoodsVO.setSalesroomStock(salesroomGoods.getSalesroomStock());
            // forepartAuctionSalesroomGoodsVO.setSalesroomStock(salesroomGoods.getSalesroomStock());
            forepartAuctionSalesroomGoodsVO.setGoodsSkustatus(salesroomGoods.getStatus().getCode());
            forepartAuctionSalesroomGoodsVO.setMinimumMarkupAmount(salesroomGoods.getMinimumMarkupAmount());
            forepartAuctionSalesroomGoodsVO.setStartTime(salesroomGoods.getStartTime());
@@ -524,6 +523,9 @@
            forepartAuctionSalesroomGoodsVO.setListingDuration(salesroomGoods.getListingDuration());
            forepartAuctionSalesroomGoodsVO.setSpec(goodsSku.getSpec());
            forepartAuctionSalesroomGoodsVO.setSpecUnit(goodsSku.getSpecUnit());
            forepartAuctionSalesroomGoodsVO.setDealQuantity(salesroomGoods.getDealQuantity());
            forepartAuctionSalesroomGoodsVO.setMaxAmount(salesroomGoods.getMaxAmount());
            forepartAuctionSalesroomGoodsVO.setBidNum(salesroomGoods.getBidNum());
            LambdaQueryWrapper<AuctionBidRecord> wrapper1=Wrappers.lambdaQuery();
            wrapper1.eq(AuctionBidRecord::getMemberId,memberAuctionSalesroomDTO.getMemberId());
            wrapper1.eq(AuctionBidRecord::getAuctionSalesroomId,byId.getId());
@@ -698,6 +700,9 @@
            if (bidVO.getAuctionType() == 2) {
                AuctionSalesroomGoods byId = auctionSalesroomGoodsMapper.selectById(
                        bidVO.getTargetId());
                R<GoodsSku> goodsSkuOneR = goodsSkuClient.getGoodsSkuOne(byId.getGoodsSkuId(),
                        SecurityConstants.INNER);
                GoodsSku goodsSku = goodsSkuOneR.getData();
                // 判断否大于最高价
                if (byId.getMaxAmount().compareTo(bidVO.getLastBidAmount()) < 0) {
                    throw new ServiceException("出价不能高出最高价");
@@ -730,7 +735,7 @@
                wrapper3.orderByDesc(AuctionBidRecord::getLastBidAmount);
                wrapper3.last("limit 1");
                AuctionBidRecord one3 = auctionBidRecordService.getOne(wrapper3);
                if (byId.getSalesroomStock() == 1) {
                if (byId.getBidNum() == 1) {
                    if (one3 != null) {
                        if (bidVO.getLastBidAmount().doubleValue() < one3.getLastBidAmount()
                                .doubleValue()) {
@@ -746,7 +751,8 @@
                }
                BigDecimal bigDecimal = byId.getStartingPrice().add(byId.getMinimumMarkupAmount());
                if (bigDecimal.doubleValue() > bidVO.getLastBidAmount().doubleValue()) {
                if (bigDecimal.doubleValue() > bidVO.getLastBidAmount().doubleValue()
                        && count > 0) {
                    throw new ServiceException("出价不能比每次最少加价低");
                }
@@ -779,6 +785,7 @@
                    one.setStatus(BidStatusEnum.ELIMINATE);
                    one.setBidCount(1);
                    one.setLastBidAmount(bidVO.getLastBidAmount());
                    one.setGoodsName(Objects.nonNull(goodsSku) ? goodsSku.getSkuName() : "");
                    auctionBidRecordService.save(one);
                }
@@ -806,6 +813,9 @@
                        .clientType(ClientTypeEnum.MEMBER).build(), SecurityConstants.INNER);
            } else {
                AuctionGoods byId = auctionGoodsService.getById(bidVO.getTargetId());
                R<GoodsSku> goodsSkuOneR = goodsSkuClient.getGoodsSkuOne(byId.getGoodsSkuId(),
                        SecurityConstants.INNER);
                GoodsSku goodsSku = goodsSkuOneR.getData();
                // 查询用户出价记录判断是否第一次出价 首次出价,可以只出起拍价,而不是需要比起拍价高。
                Long count = auctionBidRecordService.lambdaQuery()
                        .eq(AuctionBidRecord::getTargetId, bidVO.getTargetId())
@@ -816,7 +826,8 @@
                    throw new ServiceException("出价不能比起拍价低");
                }
                BigDecimal bigDecimal = byId.getStartingPrice().add(byId.getMinimumMarkupAmount());
                if (bigDecimal.doubleValue() > bidVO.getLastBidAmount().doubleValue()) {
                if (bigDecimal.doubleValue() > bidVO.getLastBidAmount().doubleValue()
                        && count > 0) {
                    throw new ServiceException("出价不能比每次最少加价低");
                }
                LambdaQueryWrapper<AuctionBidRecord> wrapper1 = Wrappers.lambdaQuery();
@@ -863,6 +874,7 @@
                    one3.setStatus(BidStatusEnum.ELIMINATE);
                    one3.setBidCount(1);
                    one3.setLastBidAmount(bidVO.getLastBidAmount());
                    one3.setGoodsName(Objects.nonNull(goodsSku) ? goodsSku.getSkuName() : "");
                    auctionBidRecordService.save(one3);
                }
@@ -927,7 +939,7 @@
                        AuctionSalesroom::getEndTime, AuctionSalesroom::getType,
                        AuctionSalesroom::getAuthentication, AuctionSalesroom::getStatus,
                        AuctionSalesroom::getQrCode)
                .in(StringUtils.isNotNull(query.getIds()), AuctionSalesroom::getId,query.getIds())
                .in(CollUtils.isNotEmpty(query.getIds()), AuctionSalesroom::getId, query.getIds())
                .like(StringUtils.isNotEmpty(query.getSalesroomName()),
                        AuctionSalesroom::getSalesroomName, query.getSalesroomName())
                .eq(StringUtils.isNotNull(query.getAuthentication()),
@@ -970,6 +982,52 @@
        return auctionSalesroomVOPageDTO;
    }
    @Override
    public List<MgtAuctionSalesroomVO> getAuctionSalesroomList(MgtAuctionSalesroomQuery query) {
        // 分页查询
        List<AuctionSalesroom> auctionSalesroomList = this.lambdaQuery()
                .select(AuctionSalesroom::getId, AuctionSalesroom::getSalesroomName,
                        AuctionSalesroom::getCreateTime, AuctionSalesroom::getStartTime,
                        AuctionSalesroom::getEndTime, AuctionSalesroom::getType,
                        AuctionSalesroom::getAuthentication, AuctionSalesroom::getStatus,
                        AuctionSalesroom::getQrCode)
                .in(CollUtils.isNotEmpty(query.getIds()), AuctionSalesroom::getId, query.getIds())
                .like(StringUtils.isNotEmpty(query.getSalesroomName()),
                        AuctionSalesroom::getSalesroomName, query.getSalesroomName())
                .eq(StringUtils.isNotNull(query.getAuthentication()),
                        AuctionSalesroom::getAuthentication, query.getAuthentication())
                .eq(StringUtils.isNotNull(query.getStatus()), AuctionSalesroom::getStatus,
                        query.getStatus()).between(
                        StringUtils.isNotNull(query.getStartTime()) && StringUtils.isNotNull(
                                query.getEndTime()), AuctionSalesroom::getStartTime,
                        query.getStartTime(),
                        query.getEndTime())
                .orderByDesc(AuctionSalesroom::getCreateTime)
                .list();
        List<MgtAuctionSalesroomVO> list = BeanUtils.copyList(auctionSalesroomList,
                MgtAuctionSalesroomVO.class);
        List<Long> auctionSalesroomIdList = list.stream().map(MgtAuctionSalesroomVO::getId)
                .collect(Collectors.toList());
        if (StringUtils.isNotEmpty(auctionSalesroomIdList)) {
            // 所有拍卖场的拍卖商品
            List<AuctionSalesroomGoods> auctionSalesroomGoods = auctionSalesroomGoodsMapper.selectList(
                    Wrappers.<AuctionSalesroomGoods>lambdaQuery()
                            .in(AuctionSalesroomGoods::getAuctionSalesroomId,
                                    auctionSalesroomIdList));
            // 计算每个拍卖场所有拍品数量
            Map<Long, Integer> map = auctionSalesroomGoods.stream()
                    .collect(Collectors.groupingBy(AuctionSalesroomGoods::getAuctionSalesroomId,
                            Collectors.summingInt(AuctionSalesroomGoods::getBidNum)));
            for (MgtAuctionSalesroomVO mgtAuctionSalesroomVO : list) {
                Integer i = map.get(mgtAuctionSalesroomVO.getId());
                if (StringUtils.isNotNull(i)) {
                    mgtAuctionSalesroomVO.setAuctionGoodsNum(i);
                }
            }
        }
        return list;
    }
    @Override
    @Transactional
@@ -1379,7 +1437,7 @@
        // 扣减库存
        GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
        goodsStockUpdDTO.setGoodsSkuId(data.getId());
        goodsStockUpdDTO.setAuctionStock(dto.getSalesroomStock() * -1);
        goodsStockUpdDTO.setAuctionStock(dto.getBidNum() * dto.getDealQuantity() * -1);
        R<?> result = goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
                SecurityConstants.INNER);
        if (result.getCode() != Constants.SUCCESS) {
@@ -1490,8 +1548,8 @@
                if (CollUtils.isNotEmpty(auctionBidRecordList)) {
                    List<AuctionBidRecord> auctionBidRecords = new ArrayList<>();
                    Map<Long, String> orderIdMap = new HashMap<>();
                    if (auctionBidRecordList.size() >= auctionSalesroomGoods.getSalesroomStock()) {
                        for (int i = 0; i < auctionSalesroomGoods.getSalesroomStock(); i++) {
                    if (auctionBidRecordList.size() >= auctionSalesroomGoods.getBidNum()) {
                        for (int i = 0; i < auctionSalesroomGoods.getBidNum(); i++) {
                            AuctionBidRecord auctionBidRecord = auctionBidRecordList.get(i);
                            auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
                            auctionBidRecords.add(auctionBidRecord);
@@ -1520,8 +1578,10 @@
                        GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                        goodsStockUpdDTO.setGoodsSkuId(auctionSalesroomGoods.getGoodsSkuId());
                        goodsStockUpdDTO.setAuctionStock(
                                auctionSalesroomGoods.getSalesroomStock()
                                        - auctionBidRecordList.size());
                                auctionSalesroomGoods.getBidNum()
                                        * auctionSalesroomGoods.getDealQuantity()
                                        - auctionBidRecordList.size()
                                        * auctionSalesroomGoods.getDealQuantity());
                        goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
                                SecurityConstants.INNER);
                    }
@@ -1579,7 +1639,8 @@
                    GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                    goodsStockUpdDTO.setGoodsSkuId(auctionSalesroomGoods.getGoodsSkuId());
                    goodsStockUpdDTO.setAuctionStock(
                            auctionSalesroomGoods.getSalesroomStock());
                            auctionSalesroomGoods.getBidNum()
                                    * auctionSalesroomGoods.getDealQuantity());
                    goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
                            SecurityConstants.INNER);
                }
@@ -1802,7 +1863,8 @@
                // 等待中的商品退库存
                GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                goodsStockUpdDTO.setGoodsSkuId(salesroomGoods.getGoodsSkuId());
                goodsStockUpdDTO.setAuctionStock(salesroomGoods.getSalesroomStock());
                goodsStockUpdDTO.setAuctionStock(
                        salesroomGoods.getBidNum() * salesroomGoods.getDealQuantity());
                dtoList.add(goodsStockUpdDTO);
            }
            // 批量更新商品库存
ruoyi-modules/ruoyi-auction/src/main/resources/mapper/auction/AuctionBidRecordMapper.xml
@@ -2,4 +2,25 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.auction.mapper.AuctionBidRecordMapper">
  <select id="popupList" resultType="com.ruoyi.system.api.domain.vo.PopUpVO"
    parameterType="java.lang.Long">
    SELECT tabr.id AS auctionBidRecordId,
    tabr.order_id,
    tabr.goods_name,
    CASE
    WHEN tabr.`status` = 0 THEN
    0
    WHEN tabr.`status` = 2 THEN
    1
    END
    AS successFlag
    FROM t_auction_bid_record tabr
    LEFT JOIN t_auction_goods tag ON tabr.auction_type = 1
    AND tag.id = tabr.target_id AND tag.start_status = 3
    LEFT JOIN t_auction_salesroom_goods tasg ON tabr.auction_type = 2 AND tasg.`status` = 3
    AND tasg.id = tabr.target_id
    <where>
      tabr.member_id = #{id}
    </where>
  </select>
</mapper>
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/inner/OrderController.java
@@ -49,8 +49,7 @@
    @ResponseBody
    @InnerAuth
    public R<Long> saveOrderOne(@RequestBody OrderDTO OrderDTO) {
        orderService.saveOrderOne(OrderDTO);
        return R.ok();
        return R.ok(orderService.saveOrderOne(OrderDTO));
    }