mitao
2024-07-08 85f12011f76f3cf4eb665c20138a0e939a1fb6db
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -53,7 +53,7 @@
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.security.utils.SecurityUtils;
import com.ruoyi.system.api.RemoteFileService;
import com.ruoyi.system.api.constants.NotificationTypeConstant;
import com.ruoyi.system.api.domain.AppMiniLoginVO;
import com.ruoyi.system.api.domain.AuctionGoods;
@@ -63,6 +63,7 @@
import com.ruoyi.system.api.domain.OrderAuctionBond;
import com.ruoyi.system.api.domain.PromotionVideo;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.domain.WebsocketMessageDTO;
import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
import com.ruoyi.system.api.domain.dto.AuctionSalesroomDTO;
import com.ruoyi.system.api.domain.dto.BidDTO;
@@ -84,7 +85,6 @@
import com.ruoyi.system.api.feignClient.OrderClient;
import com.ruoyi.system.api.feignClient.PromotionClient;
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.util.WebSocketUsers;
import io.seata.spring.annotation.GlobalTransactional;
import java.io.IOException;
import java.math.BigDecimal;
@@ -159,6 +159,8 @@
    @Resource
    private AuctionBidRecordMapper auctionBidRecordMapper;
    @Resource
    private RemoteFileService remoteFileService;
    public static RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(5000).build();
    // 配置您申请的KEY,在个人中心->我的数据,接口名称上方查看
    public static final String APPKEY = "";
@@ -203,6 +205,7 @@
    private static final ObjectMapper objectMapper = new ObjectMapper();
    @Override
    public List<AuctionSalesroom> getAuctionBidRecordList(AuctionSalesroomDTO ationSalesroomGoodsDTO) {
        LambdaQueryWrapper<AuctionSalesroom> wrapper=Wrappers.lambdaQuery();
@@ -237,14 +240,17 @@
        if (sysUser==null){
            throw new ServiceException("手机号未注册");
        }
        if (!SecurityUtils.matchesPassword(arepartAuctionBidRecordDTO.getPassword(), sysUser.getPassword())){
    /*   if (!SecurityUtils.matchesPassword(arepartAuctionBidRecordDTO.getPassword(), sysUser.getPassword())){
            throw new ServiceException("密码输入错误");
        }
        }*/
        LambdaQueryWrapper<AuctionSalesroom> wrapper=Wrappers.lambdaQuery();
        wrapper.eq(AuctionSalesroom::getAuctionSalesroomNo,arepartAuctionBidRecordDTO.getAuctionSalesroomQrcode());
        wrapper.eq(AuctionSalesroom::getDelFlag,0);
        AuctionSalesroom auctionBidRecord = this.getOne(wrapper);
        if(auctionBidRecord.getType().getCode()==0){
            throw new ServiceException("当前扫码是线下拍卖会");
        }
        return auctionBidRecord;
    }
@@ -345,7 +351,7 @@
        R<SysUser> sysUserR = sysUserClient.queryUserByPhone(appMiniLoginDto.getPhone());
        SysUser data = sysUserR.getData();
        appMiniLoginVo.setSysUser(data);
        appMiniLoginVo.setPhone(appMiniLoginDto.getAuth_code());
        appMiniLoginVo.setPhone(appMiniLoginDto.getPhone());
            return appMiniLoginVo;
    }
@@ -389,8 +395,14 @@
            MemberAuctionSalesroomDTO memberAuctionSalesroomDTO1=new MemberAuctionSalesroomDTO();
            memberAuctionSalesroomDTO1.setAuctionSalesroomId(auctionSalesroom.getId());
            List<OrderAuctionBond> data1 = orderClient.getOrderAuctionBondList1(memberAuctionSalesroomDTO1, SecurityConstants.INNER).getData();
            memberAuctionSalesroomVO.setApplyNum(data1.size());
            List.add(memberAuctionSalesroomVO);
            if(data1!=null){
                memberAuctionSalesroomVO.setApplyNum(data1.size());
                List.add(memberAuctionSalesroomVO);
            }else{
                memberAuctionSalesroomVO.setApplyNum(0);
            }
        }
        page.setRecords(List);
        return PageDTO.of(page);
@@ -399,6 +411,12 @@
    @Override
    public MemberAuctionSalesroomInfoVO getMemberAuctionSalesroomInfo(MemberAuctionSalesroomDTO memberAuctionSalesroomDTO) {
        AuctionSalesroom byId = this.getById(memberAuctionSalesroomDTO.getAuctionSalesroomId());
        if(byId==null){
            LambdaQueryWrapper<AuctionSalesroom> wrapper=Wrappers.lambdaQuery();
            wrapper.eq(AuctionSalesroom::getAuctionSalesroomNo,memberAuctionSalesroomDTO.getAuctionSalesroomId());
            wrapper.eq(AuctionSalesroom::getDelFlag,0);
            byId =this.getOne(wrapper);
        }
        MemberAuctionSalesroomInfoVO memberAuctionSalesroomInfoVO=new MemberAuctionSalesroomInfoVO();
        memberAuctionSalesroomInfoVO.setId(byId.getId());
        memberAuctionSalesroomInfoVO.setBound(byId.getBond());
@@ -419,7 +437,9 @@
            memberAuctionSalesroomInfoVO.setIsApply(1);
        }
        List<ForepartAuctionSalesroomGoodsVO> forepartAuctionSalesroomGoodsVOS=new ArrayList<>();
        List<AuctionSalesroomGoods> auctionSalesroomGoods = auctionSalesroomGoodsMapper.getAuctionSalesroomGoods(memberAuctionSalesroomDTO);
        MemberAuctionSalesroomDTO memberAuctionSalesroomDTO1 =new MemberAuctionSalesroomDTO();
        memberAuctionSalesroomDTO1.setAuctionSalesroomId(byId.getId());
        List<AuctionSalesroomGoods> auctionSalesroomGoods = auctionSalesroomGoodsMapper.getAuctionSalesroomGoods(memberAuctionSalesroomDTO1);
        for (AuctionSalesroomGoods salesroomGoods:auctionSalesroomGoods){
            ForepartAuctionSalesroomGoodsVO forepartAuctionSalesroomGoodsVO=new ForepartAuctionSalesroomGoodsVO();
            forepartAuctionSalesroomGoodsVO.setSalesroomId(byId.getId());
@@ -431,8 +451,10 @@
            forepartAuctionSalesroomGoodsVO.setCoverPic(goodsSku.getCoverPic());
            forepartAuctionSalesroomGoodsVO.setStartingPrice(salesroomGoods.getStartingPrice());
            forepartAuctionSalesroomGoodsVO.setSalesroomStock(salesroomGoods.getSalesroomStock());
            forepartAuctionSalesroomGoodsVO.setGoodsSkustatus(salesroomGoods.getStatus());
            forepartAuctionSalesroomGoodsVO.setGoodsSkustatus(salesroomGoods.getStatus().getCode());
            forepartAuctionSalesroomGoodsVO.setYears(String.valueOf(goodsSku.getYears()));
            forepartAuctionSalesroomGoodsVO.setSpec(goodsSku.getSpec());
            forepartAuctionSalesroomGoodsVO.setSpecUnit(goodsSku.getSpecUnit());
            LambdaQueryWrapper<AuctionBidRecord> wrapper1=Wrappers.lambdaQuery();
            wrapper1.eq(AuctionBidRecord::getMemberId,memberAuctionSalesroomDTO.getMemberId());
            wrapper1.eq(AuctionBidRecord::getAuctionSalesroomId,byId.getId());
@@ -461,6 +483,7 @@
        LambdaQueryWrapper<AuctionBrowseRecord> wrapper3=Wrappers.lambdaQuery();
        wrapper3.eq(AuctionBrowseRecord::getDelFlag,0);
        wrapper3.eq(AuctionBrowseRecord::getTargetId,memberAuctionSalesroomDTO.getAuctionSalesroomId());
        wrapper3.eq(AuctionBrowseRecord::getBrowseType,AuctionOrderTypeEnum.AUCTION_ITEMS);
        wrapper3.eq(AuctionBrowseRecord::getMemberId,memberAuctionSalesroomDTO.getMemberId());
        wrapper3.ge(AuctionBrowseRecord::getCreateTime, now)
                .le(AuctionBrowseRecord::getCreateTime, newTime7);
@@ -610,6 +633,8 @@
                one.setTargetId(bidVO.getTargetId());
                one.setMemberId(bidVO.getMemberId());
                one.setLastBidTime(LocalDateTime.now());
                one.setNickname(membeOne.getNickname());
                one.setPhone(membeOne.getPhone());
                one.setAuctionType(AuctionOrderTypeEnum.AUCTION_ITEMS);
                one.setStatus(BidStatusEnum.ELIMINATE);
                one.setBidCount(1);
@@ -618,41 +643,97 @@
            }
            LambdaQueryWrapper<AuctionBidRecord> wrapper2=Wrappers.lambdaQuery();
            wrapper2.eq(AuctionBidRecord::getAuctionSalesroomId,bidVO.getAuctionSalesroomId());
            wrapper2.eq(AuctionBidRecord::getTargetId,bidVO.getTargetId());
            wrapper2.eq(AuctionBidRecord::getDelFlag,0);
            wrapper2.orderByDesc(AuctionBidRecord::getLastBidAmount);
            AuctionBidRecord one2 = auctionBidRecordService.getOne(wrapper1);
            Map<String, Object> map = new ConcurrentHashMap<>();
            map.put("notification_type", NotificationTypeConstant.AUCTION_SALESROOM);
            map.put("auctionSalesroomId", bidVO.getAuctionSalesroomId());
            map.put("byId", byId.getStatus());
            map.put("lastBidAmount",one2.getLastBidAmount());
            map.put("message_type", "BidRecor");
            map.put("type",3);
            String msg = null;
            try {
                msg = objectMapper.writeValueAsString(map);
            } catch (JsonProcessingException e) {
            }
            String finalMsg = msg;
                    sysUserClient.pushByClientType(WebsocketMessageDTO.builder().message(finalMsg)
                            .clientType(ClientTypeEnum.MEMBER).build(), SecurityConstants.INNER);
        }else {
            AuctionGoods byId = auctionGoodsService.getById(bidVO.getTargetId());
            if (byId.getStartingPrice().doubleValue()<bidVO.getLastBidAmount().doubleValue()){
            if (byId.getStartingPrice().doubleValue()>bidVO.getLastBidAmount().doubleValue()){
                throw new ServiceException("出价不能比起拍价低");
            }
            BigDecimal bigDecimal=byId.getStartingPrice().add(byId.getMinimumMarkupAmount());
            if (bigDecimal.doubleValue()<bidVO.getLastBidAmount().doubleValue()){
            if (bigDecimal.doubleValue()>bidVO.getLastBidAmount().doubleValue()){
                throw new ServiceException("出价不能比每次最少加价低");
            }
            LambdaQueryWrapper<AuctionBidRecord> wrapper1=Wrappers.lambdaQuery();
            wrapper1.eq(AuctionBidRecord::getMemberId,bidVO.getMemberId());
            wrapper1.eq(AuctionBidRecord::getTargetId,bidVO.getTargetId());
            wrapper1.eq(AuctionBidRecord::getDelFlag,0);
            wrapper1.orderByDesc(AuctionBidRecord::getLastBidAmount);
            wrapper1.last("limit 1");
            AuctionBidRecord one = auctionBidRecordService.getOne(wrapper1);
            if (one!=null){
                BigDecimal bigDecimal1=one.getLastBidAmount().add(byId.getMinimumMarkupAmount());
                if (bigDecimal1.doubleValue()<bidVO.getLastBidAmount().doubleValue()){
                    throw new ServiceException("出价不能比上次出价加每次最少加价低");
            if (byId.getAuctionStock()==1) {
                if (one != null) {
                    BigDecimal bigDecimal1 = one.getLastBidAmount().add(byId.getMinimumMarkupAmount());
                    if (bigDecimal1.doubleValue() > bidVO.getLastBidAmount().doubleValue()) {
                        throw new ServiceException("出价不能比上次出价加每次最少加价低");
                    }
                }
                one.setLastBidAmount(bidVO.getLastBidAmount());
                one.setLastBidTime(LocalDateTime.now());
                one.setBidCount(one.getBidCount()+1);
                auctionBidRecordService.updateById(one);
            }else{
                one=new AuctionBidRecord();
                one.setAuctionSalesroomId(bidVO.getAuctionSalesroomId());
                one.setTargetId(bidVO.getTargetId());
                one.setMemberId(bidVO.getMemberId());
                one.setLastBidTime(LocalDateTime.now());
                one.setAuctionType(AuctionOrderTypeEnum.REGULAR_ITEMS);
                one.setStatus(BidStatusEnum.ELIMINATE);
                one.setBidCount(1);
                one.setLastBidAmount(bidVO.getLastBidAmount());
                auctionBidRecordService.save(one);
            }
            LambdaQueryWrapper<AuctionBidRecord> wrapper3=Wrappers.lambdaQuery();
            wrapper3.eq(AuctionBidRecord::getTargetId,bidVO.getTargetId());
            wrapper3.eq(AuctionBidRecord::getDelFlag,0);
            wrapper3.eq(AuctionBidRecord::getMemberId,bidVO.getMemberId());
            wrapper3.orderByDesc(AuctionBidRecord::getLastBidAmount);
            wrapper3.last("limit 1");
            AuctionBidRecord one3 = auctionBidRecordService.getOne(wrapper3);
                if (one3!=null){
                    one3.setLastBidAmount(bidVO.getLastBidAmount());
                    one3.setLastBidTime(LocalDateTime.now());
                    one3.setBidCount(one.getBidCount()+1);
                    auctionBidRecordService.updateById(one3);
                }else{
                    one3=new AuctionBidRecord();
                    one3.setAuctionSalesroomId(bidVO.getAuctionSalesroomId());
                    one3.setTargetId(bidVO.getTargetId());
                    one3.setMemberId(bidVO.getMemberId());
                    one3.setLastBidTime(LocalDateTime.now());
                    one3.setAuctionType(AuctionOrderTypeEnum.REGULAR_ITEMS);
                    one3.setStatus(BidStatusEnum.ELIMINATE);
                    one3.setBidCount(1);
                    one3.setLastBidAmount(bidVO.getLastBidAmount());
                    auctionBidRecordService.save(one3);
                }
            Map<String, Object> map = new ConcurrentHashMap<>();
            map.put("notification_type", NotificationTypeConstant.AUCTION_SALESROOM);
            map.put("auctionSalesroomId", byId.getId());
            map.put("byId", byId.getStartStatus());
            map.put("lastBidAmount",one.getLastBidAmount());
            map.put("message_type", "BidRecor");
            map.put("type",4);
            String msg = null;
            try {
                msg = objectMapper.writeValueAsString(map);
            } catch (JsonProcessingException e) {
            }
            String finalMsg = msg;
            sysUserClient.pushByClientType(WebsocketMessageDTO.builder().message(finalMsg)
                            .clientType(ClientTypeEnum.MEMBER).build(), SecurityConstants.INNER);
        }
    }
@@ -702,7 +783,9 @@
                                query.getEndTime()), AuctionSalesroom::getStartTime,
                        query.getStartTime(),
                        query.getEndTime())
                .orderByDesc(AuctionSalesroom::getCreateTime)
                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
        List<AuctionSalesroom> records = page.getRecords();
        if (StringUtils.isNull(records)) {
            return PageDTO.empty(page);
@@ -712,18 +795,21 @@
        List<MgtAuctionSalesroomVO> list = auctionSalesroomVOPageDTO.getList();
        List<Long> auctionSalesroomIdList = list.stream().map(MgtAuctionSalesroomVO::getId)
                .collect(Collectors.toList());
        // 所有拍卖场的拍卖商品
        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::getSalesroomStock)));
        for (MgtAuctionSalesroomVO mgtAuctionSalesroomVO : list) {
            Integer i = map.get(mgtAuctionSalesroomVO.getId());
            if (StringUtils.isNotNull(i)) {
                mgtAuctionSalesroomVO.setAuctionGoodsNum(i);
        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::getSalesroomStock)));
            for (MgtAuctionSalesroomVO mgtAuctionSalesroomVO : list) {
                Integer i = map.get(mgtAuctionSalesroomVO.getId());
                if (StringUtils.isNotNull(i)) {
                    mgtAuctionSalesroomVO.setAuctionGoodsNum(i);
                }
            }
        }
        return auctionSalesroomVOPageDTO;
@@ -774,8 +860,9 @@
            // 生成唯一编号
            Long nextId = IDhelper.getNextId();
            auctionSalesroom.setAuctionSalesroomNo(nextId.toString());
            String qrCodeToObs = CreateQrCode.createQRCodeToObs(nextId.toString());
            auctionSalesroom.setQrCode(qrCodeToObs);
            String url = remoteFileService.obsUpload(
                    CreateQrCode.createQRCodeStream(nextId.toString())).getData();
            auctionSalesroom.setQrCode(url);
            // 添加
            this.save(auctionSalesroom);
            List<GoodsStockUpdDTO> goodsStockUpdDTOS = auctionSalesroomGoods.stream().map(item -> {
@@ -1005,6 +1092,7 @@
                .between(StringUtils.isNotNull(query.getStartTime()) && StringUtils.isNotNull(
                                query.getEndTime()), AuctionSalesroom::getStartTime, query.getStartTime(),
                        query.getEndTime())
                .orderByAsc(AuctionSalesroom::getStartTime)
                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
        List<AuctionSalesroom> records = page.getRecords();
        if (StringUtils.isNull(records)) {
@@ -1207,13 +1295,22 @@
     * @param id 拍卖场商品id
     */
    @Override
    public void stopCurrentGoods(Long id) {
    public void stopCurrentGoods(Long id) throws JsonProcessingException {
        AuctionSalesroomGoods auctionSalesroomGoods = auctionSalesroomGoodsMapper.selectById(id);
        if (StringUtils.isNull(auctionSalesroomGoods)) {
            throw new ServiceException("拍卖商品不存在");
        }
        auctionSalesroomGoods.setStatus(AuctionGoodsStatusEnum.ENDED);
        auctionSalesroomGoodsMapper.updateById(auctionSalesroomGoods);
        Map<String, Object> map = new ConcurrentHashMap<>();
        map.put("notification_type", NotificationTypeConstant.AUCTION_SALESROOM_GOODS);
        map.put("auctionSalesroomId", auctionSalesroomGoods.getAuctionSalesroomId().toString());
        map.put("auctionSalesroomGoodsId", auctionSalesroomGoods.getId().toString());
        map.put("AuctionTypeEnum", auctionSalesroomGoods.getStatus());
        map.put("message_type", "stop");
        map.put("type", "2");
        String msg = objectMapper.writeValueAsString(map);
        sysUserClient.pushAll(msg, SecurityConstants.INNER);
    }
    /**
@@ -1222,13 +1319,22 @@
     * @param id 拍卖场商品id
     */
    @Override
    public void startNextGoods(Long id) {
    public void startNextGoods(Long id) throws JsonProcessingException {
        AuctionSalesroomGoods auctionSalesroomGoods = auctionSalesroomGoodsMapper.selectById(id);
        if (StringUtils.isNull(auctionSalesroomGoods)) {
            throw new ServiceException("拍卖商品不存在");
        }
        auctionSalesroomGoods.setStatus(AuctionGoodsStatusEnum.IN_PROGRESS);
        auctionSalesroomGoodsMapper.updateById(auctionSalesroomGoods);
        Map<String, Object> map = new ConcurrentHashMap<>();
        map.put("notification_type", NotificationTypeConstant.AUCTION_SALESROOM_GOODS);
        map.put("auctionSalesroomId", auctionSalesroomGoods.getAuctionSalesroomId().toString());
        map.put("auctionSalesroomGoodsId", auctionSalesroomGoods.getId().toString());
        map.put("AuctionTypeEnum", auctionSalesroomGoods.getStatus());
        map.put("message_type", "start");
        map.put("type", "2");
        String msg = objectMapper.writeValueAsString(map);
        sysUserClient.pushAll(msg, SecurityConstants.INNER);
    }
    /**
@@ -1243,6 +1349,8 @@
        if (StringUtils.isNull(data)) {
            throw new ServiceException("视频不存在");
        }
        iAuctionVideoService.remove(Wrappers.<AuctionVideo>lambdaQuery().eq
                (AuctionVideo::getAuctionSalesroomId, dto.getAuctionSalesroomId()));
        AuctionVideo auctionVideo = new AuctionVideo();
        auctionVideo.setAuctionSalesroomId(dto.getAuctionSalesroomId());
        auctionVideo.setPromotionVideoId(dto.getVideoId());
@@ -1258,7 +1366,7 @@
    @Override
    public void stopPlay(Long auctionSalesroomId) {
        iAuctionVideoService.remove(Wrappers.<AuctionVideo>lambdaQuery().eq
                (AuctionVideo::getAuctionSalesroomId, 1L));
                (AuctionVideo::getAuctionSalesroomId, auctionSalesroomId));
    }
    /**
@@ -1288,10 +1396,13 @@
        Map<String, Object> map = new ConcurrentHashMap<>();
        map.put("notification_type", NotificationTypeConstant.AUCTION_SALESROOM);
        map.put("auctionSalesroomId", auctionSalesroom.getId());
        map.put("auctionSalesroomId", auctionSalesroom.getId().toString());
        map.put("AuctionTypeEnum", auctionSalesroom.getStatus());
        map.put("message_type", "start");
        map.put("type", "1");
        String msg = objectMapper.writeValueAsString(map);
        WebSocketUsers.sendMessageToUsersByType(ClientTypeEnum.AUCTIONEER.getCode(), msg);
        sysUserClient.pushByClientType(WebsocketMessageDTO.builder().message(msg)
                .clientType(ClientTypeEnum.AUCTIONEER).build(), SecurityConstants.INNER);
    }
    @Override
@@ -1299,17 +1410,24 @@
    @Transactional
    public void stopCurrentAuctionSalesroom(Long auctionSalesroomId)
            throws JsonProcessingException {
        // 修改拍卖场开始状态
        AuctionSalesroom auctionSalesroom = this.getById(auctionSalesroomId);
        auctionSalesroom.setStatus(AuctionStartStatusEnum.ENDED);
        auctionSalesroom.setEndTime(LocalDateTime.now());
        auctionSalesroomMapper.updateById(auctionSalesroom);
        LambdaQueryWrapper<AuctionSalesroomGoods> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(AuctionSalesroomGoods::getStatus, AuctionGoodsStatusEnum.WAITING);
        wrapper.eq(AuctionSalesroomGoods::getAuctionSalesroomId, auctionSalesroomId);
        wrapper.orderByDesc(AuctionSalesroomGoods::getSortNum);
        List<AuctionSalesroomGoods> auctionSalesroomGoods = auctionSalesroomGoodsMapper.selectList(
                wrapper);
        long count = auctionSalesroomGoods.stream()
                .filter(goods -> goods.getStatus().equals(AuctionGoodsStatusEnum.IN_PROGRESS))
                .count();
        if (count > 0) {
            throw new ServiceException("当前拍卖场正在拍卖商品,不能停止");
        }
        // 修改拍卖场开始状态
        AuctionSalesroom auctionSalesroom = this.getById(auctionSalesroomId);
        auctionSalesroom.setStatus(AuctionStartStatusEnum.ENDED);
        auctionSalesroom.setEndTime(LocalDateTime.now());
        auctionSalesroomMapper.updateById(auctionSalesroom);
        if (StringUtils.isNotEmpty(auctionSalesroomGoods)) {
            List<GoodsStockUpdDTO> dtoList = new ArrayList<>();
            for (AuctionSalesroomGoods salesroomGoods : auctionSalesroomGoods) {
@@ -1338,10 +1456,13 @@
        }
        Map<String, Object> map = new ConcurrentHashMap<>();
        map.put("notification_type", NotificationTypeConstant.AUCTION_SALESROOM);
        map.put("auctionSalesroomId", auctionSalesroom.getId());
        map.put("auctionSalesroomId", auctionSalesroom.getId().toString());
        map.put("AuctionTypeEnum",auctionSalesroom.getStatus());
        map.put("message_type", "end");
        map.put("type", "1");
        String msg = objectMapper.writeValueAsString(map);
        WebSocketUsers.sendMessageToUsersByType(ClientTypeEnum.AUCTIONEER.getCode(), msg);
        sysUserClient.pushByClientType(WebsocketMessageDTO.builder().message(msg)
                .clientType(ClientTypeEnum.AUCTIONEER).build(), SecurityConstants.INNER);
    }
    @Override