mitao
2024-07-31 9bbd528db300cce1f373d1c2e812f67eb380cecd
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -108,6 +108,7 @@
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -115,6 +116,8 @@
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.util.EntityUtils;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -174,6 +177,9 @@
    @Resource
    private RemoteFileService remoteFileService;
    @Resource
    private RedissonClient redissonClient;
    public static RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(5000).build();
    // 配置您申请的KEY,在个人中心->我的数据,接口名称上方查看
    public static final String APPKEY = "";
@@ -1038,9 +1044,8 @@
    }
    @Override
    public PageDTO<WdMemberAuctionSalesroomVO> getWdAuctionSalesroomList(MemberAuctionSalesroomDTO MemberAuctionSalesroomDTO) {
        MemberAuctionSalesroomDTO memberAuctionSalesroomDTO =new MemberAuctionSalesroomDTO();
        memberAuctionSalesroomDTO.setMemberId(MemberAuctionSalesroomDTO.getMemberId());
    public PageDTO<WdMemberAuctionSalesroomVO> getWdAuctionSalesroomList(
            MemberAuctionSalesroomDTO memberAuctionSalesroomDTO) {
        List<OrderAuctionBond> data = orderClient.getOrderAuctionBondList1(memberAuctionSalesroomDTO, SecurityConstants.INNER).getData();
        Set<Long> goodsSkuIdList = null;
        goodsSkuIdList = data.stream().map(OrderAuctionBond::getAuctionSalesroomId)
@@ -1064,9 +1069,10 @@
        }*/
        Page<AuctionSalesroom> page = new Page<>();
        page.setSize(memberAuctionSalesroomDTO.getPageSize());
        page.setCurrent(memberAuctionSalesroomDTO.getPageCurr());
        Page<AuctionSalesroom> page = new Page<>(memberAuctionSalesroomDTO.getPageCurr(),
                memberAuctionSalesroomDTO.getPageSize());
        // page.setSize(memberAuctionSalesroomDTO.getPageSize());
        // page.setCurrent(memberAuctionSalesroomDTO.getPageCurr());
        LambdaQueryWrapper<AuctionSalesroom> wrapper1=Wrappers.lambdaQuery();
        if (goodsSkuIdList.size()>0){
            wrapper1.in(AuctionSalesroom::getId,goodsSkuIdList);
@@ -1075,12 +1081,13 @@
            goodsSkuIdList1.add(0L);
            wrapper1.in(AuctionSalesroom::getId,goodsSkuIdList);
        }
        if (MemberAuctionSalesroomDTO.getSalesroomName()!=null){
            wrapper1.like(AuctionSalesroom::getSalesroomName,MemberAuctionSalesroomDTO.getSalesroomName());
        if (memberAuctionSalesroomDTO.getSalesroomName() != null) {
            wrapper1.like(AuctionSalesroom::getSalesroomName,
                    memberAuctionSalesroomDTO.getSalesroomName());
        }
        wrapper1.eq(AuctionSalesroom::getDelFlag,0);
        if(MemberAuctionSalesroomDTO.getStatus()!=4){
             wrapper1.eq(AuctionSalesroom::getStatus,MemberAuctionSalesroomDTO.getStatus());
        if (memberAuctionSalesroomDTO.getStatus() != 4) {
            wrapper1.eq(AuctionSalesroom::getStatus, memberAuctionSalesroomDTO.getStatus());
        }
        wrapper1.last("ORDER BY\n" +
                "        CASE\n" +
@@ -1096,7 +1103,7 @@
            auctionSalesroom.setSalesroomId(auctionSalesroom.getId());
            MemberAuctionSalesroomDTO memberAuctionSalesroomDTO1=new MemberAuctionSalesroomDTO();
            memberAuctionSalesroomDTO1.setAuctionSalesroomId(auctionSalesroom.getId());
            memberAuctionSalesroomDTO1.setMemberId(MemberAuctionSalesroomDTO.getMemberId());
            memberAuctionSalesroomDTO1.setMemberId(memberAuctionSalesroomDTO.getMemberId());
            auctionSalesroom.setIsBond(2);
            List<OrderAuctionBond> data1 = orderClient.getOrderAuctionBondList1(memberAuctionSalesroomDTO1, SecurityConstants.INNER).getData();
            if (data1.size()>0){
@@ -1249,7 +1256,6 @@
        MgtAuctionSalesroomVO mgtAuctionSalesroomVO = this.getAuctionSalesroom(id, Boolean.TRUE);
        MgtAuctionSalesroomScreenVO vo = BeanUtils.copyBean(
                mgtAuctionSalesroomVO, MgtAuctionSalesroomScreenVO.class);
        if (vo.getStatus().equals(AuctionStartStatusEnum.IN_AUCTION)) {
            List<MgtAuctionSalesroomGoodsVO> auctionSalesroomGoodsVOS = vo.getAuctionSalesroomGoodsVOS();
            if (StringUtils.isNotEmpty(auctionSalesroomGoodsVOS)) {
                List<MgtAuctionSalesroomGoodsVO> collect = auctionSalesroomGoodsVOS.stream()
@@ -1295,7 +1301,6 @@
                            .filter(c -> c.getStatus().equals(AuctionGoodsStatusEnum.WAITING))
                            .findFirst();
                    vo.setNextAuctionSalesroomGoods(first.orElse(null));
                }
            }
        }
        return vo;
@@ -1454,10 +1459,15 @@
     */
    @Override
    public void stopCurrentGoods(Long id) throws JsonProcessingException {
        AuctionSalesroomGoods auctionSalesroomGoods = auctionSalesroomGoodsMapper.selectById(id);
        RLock lock = redissonClient.getLock("stopCurrentGoods" + id);
        lock.lock(10, TimeUnit.SECONDS);
        try {
            AuctionSalesroomGoods auctionSalesroomGoods = auctionSalesroomGoodsMapper.selectById(
                    id);
        if (StringUtils.isNull(auctionSalesroomGoods)) {
            throw new ServiceException("拍卖商品不存在");
        }
            if (auctionSalesroomGoods.getStatus().equals(AuctionGoodsStatusEnum.IN_PROGRESS)) {
        AuctionSalesroom auctionSalesroom = this.getById(
                auctionSalesroomGoods.getAuctionSalesroomId());
        auctionSalesroomGoods.setStatus(AuctionGoodsStatusEnum.ENDED);
@@ -1467,7 +1477,8 @@
                        .eq(AuctionBidRecord::getAuctionSalesroomId,
                                auctionSalesroomGoods.getAuctionSalesroomId())
                        .eq(AuctionBidRecord::getTargetId, auctionSalesroomGoods.getId())
                        .eq(AuctionBidRecord::getAuctionType, AuctionOrderTypeEnum.AUCTION_ITEMS)
                                .eq(AuctionBidRecord::getAuctionType,
                                        AuctionOrderTypeEnum.AUCTION_ITEMS)
                        .orderByDesc(AuctionBidRecord::getLastBidAmount));
        if (CollUtils.isNotEmpty(auctionBidRecordList)) {
            List<AuctionBidRecord> auctionBidRecords = new ArrayList<>();
@@ -1489,7 +1500,8 @@
                GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                goodsStockUpdDTO.setGoodsSkuId(auctionSalesroomGoods.getGoodsSkuId());
                goodsStockUpdDTO.setAuctionStock(
                        auctionSalesroomGoods.getSalesroomStock() - auctionBidRecordList.size());
                                auctionSalesroomGoods.getSalesroomStock()
                                        - auctionBidRecordList.size());
                goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
                        SecurityConstants.INNER);
            }
@@ -1509,13 +1521,20 @@
        }
        Map<String, Object> map = new ConcurrentHashMap<>();
        map.put("notification_type", NotificationTypeConstant.AUCTION_SALESROOM_GOODS);
        map.put("auctionSalesroomId", auctionSalesroomGoods.getAuctionSalesroomId().toString());
                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);
            }
        } finally {
            if (lock.isLocked() && lock.isHeldByCurrentThread()) {
                lock.unlock();
            }
        }
    }
    public void addOrder(Long goodsSkuId, Long memberId, BigDecimal lastBidAmount,
@@ -1705,7 +1724,7 @@
        List<AuctionBidRecord> auctionBidRecordList = auctionBidRecordMapper.selectList(
                Wrappers.<AuctionBidRecord>lambdaQuery()
                        .eq(AuctionBidRecord::getAuctionSalesroomId, auctionSalesroomId)
                        .ne(AuctionBidRecord::getStatus, BidStatusEnum.SUCCESSFUL));
                        .eq(AuctionBidRecord::getStatus, BidStatusEnum.SUCCESSFUL));
        Set<Long> memberIdList = new HashSet<>();
        if (CollUtils.isNotEmpty(auctionBidRecordList)) {
            memberIdList = auctionBidRecordList.stream().map(AuctionBidRecord::getMemberId)