mitao
2024-08-14 8dceb015ec8bd9642297d757e73936af84f4aaf1
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
@@ -37,6 +37,7 @@
import com.ruoyi.system.api.domain.GoodsSku;
import com.ruoyi.system.api.domain.Order;
import com.ruoyi.system.api.domain.WebsocketMessageDTO;
import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO;
import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
import com.ruoyi.system.api.domain.dto.ListStatusDTO;
import com.ruoyi.system.api.domain.dto.OrderDTO;
@@ -45,12 +46,14 @@
import com.ruoyi.system.api.domain.vo.GoodsGroupPurchaseInfoVO;
import com.ruoyi.system.api.domain.vo.OrderVO;
import com.ruoyi.system.api.domain.vo.WdGoodsGroupPurchaseVO;
import com.ruoyi.system.api.feignClient.GoodsSkuClient;
import com.ruoyi.system.api.feignClient.OrderClient;
import com.ruoyi.system.api.feignClient.SysUserClient;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
@@ -77,6 +80,7 @@
    private final IMemberGoodsCollectionService iMemberGoodsCollectionService;
    private final SysUserClient sysUserClient;
    private final IGoodsGroupPurchaseInfoService goodsGroupPurchaseInfoService;
    private final GoodsSkuClient goodsSkuClient;
    // 创建一个静态共享的ObjectMapper实例以重用
    private static final ObjectMapper objectMapper = new ObjectMapper();
    /**
@@ -248,7 +252,7 @@
    public void endGroupPurchase(Long groupPurchaseId) throws JsonProcessingException {
        log.info(">>>>>>>>>>>>>>>>>>>>{}团购商品结束团购<<<<<<<<<<<<<<<<<<<<", groupPurchaseId);
        GoodsGroupPurchase groupPurchase = this.getById(groupPurchaseId);
        boolean res = handleGroupPurchase(groupPurchaseId);
        boolean res = handleGroupPurchase(groupPurchase);
        if (StringUtils.isNotNull(groupPurchase)) {
            groupPurchase.setStartStatus(StartStatusEnum.ENDED);
            groupPurchase.setGroupStatus(
@@ -278,7 +282,7 @@
            throw new ServiceException("团购商品不存在");
        }
        // 处理未成团订单退款和成团订单修改展示状态
        boolean res = handleGroupPurchase(id);
        boolean res = handleGroupPurchase(groupPurchase);
        groupPurchase.setGroupStatus(
                res ? GroupStatusEnum.FORMED_INTO_A_GROUP : GroupStatusEnum.GROUP_FAILURE);
        groupPurchase.setStartStatus(StartStatusEnum.ENDED);
@@ -286,14 +290,32 @@
        this.updateById(groupPurchase);
    }
    private boolean handleGroupPurchase(Long id) {
    private boolean handleGroupPurchase(GoodsGroupPurchase groupPurchase) {
        Long id = groupPurchase.getId();
        // 查询参团记录
        List<GoodsGroupPurchaseInfo> groupPurchaseInfoList = goodsGroupPurchaseInfoService.lambdaQuery()
                .eq(GoodsGroupPurchaseInfo::getGroupPurchaseId, id).list();
        if (CollUtils.isNotEmpty(groupPurchaseInfoList)) {
            List<String> mubres = groupPurchaseInfoList.stream()
            // 筛选未成团的记录
            List<GoodsGroupPurchaseInfo> notGroupedInfoList = groupPurchaseInfoList.stream()
                    .filter(g -> g.getCurrentNumber()
                            < g.getGroupSize())
                    .map(GoodsGroupPurchaseInfo::getMubre).collect(
                    .collect(
                            Collectors.toList());
            // 回退未成团记录的商品库存
            if (CollUtils.isNotEmpty(notGroupedInfoList)) {
                Integer goodsStock = notGroupedInfoList.stream()
                        .map(GoodsGroupPurchaseInfo::getPurchaseNum)
                        .reduce(Integer::sum).orElse(0);
                GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                goodsStockUpdDTO.setGoodsSkuId(groupPurchase.getGoodsSkuId());
                goodsStockUpdDTO.setAuctionStock(goodsStock);
                goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
                        SecurityConstants.INNER);
                // 根据唯一标识查询订单
                List<String> mubres = notGroupedInfoList.stream()
                        .map(GoodsGroupPurchaseInfo::getMubre)
                        .collect(
                            Collectors.toList());
            List<Order> orderList = orderClient.getOrderListByMubres(mubres,
                    SecurityConstants.INNER).getData();
@@ -323,7 +345,8 @@
                                "=============================退款结束=============================");
                        log.info("退款成功订单:{}",
                                objectMapper.writeValueAsString(successfulOrders));
                        log.info("退款失败订单:{}", objectMapper.writeValueAsString(failedOrders));
                            log.info("退款失败订单:{}",
                                    objectMapper.writeValueAsString(failedOrders));
                    } catch (JsonProcessingException e) {
                        throw new RuntimeException(e);
                    }
@@ -338,6 +361,9 @@
                    orderClient.updateOrderList(orderUpdDTOS, SecurityConstants.INNER);
                }
            }
            }
            // 已成团的记录更新订单状态
            List<String> formedGroupMubres = groupPurchaseInfoList.stream()
                    .filter(g -> g.getCurrentNumber()
                            >= g.getGroupSize())
@@ -362,7 +388,7 @@
        GoodsSku byId = goodsSkuService.getById(homeGoodsSkuDTO.getGoodsSkuId());
        LambdaQueryWrapper<GoodsGroupPurchase> wrapper3= Wrappers.lambdaQuery();
        wrapper3.eq(GoodsGroupPurchase::getDelFlag,0);
        wrapper3.eq(GoodsGroupPurchase::getGoodsSkuId,homeGoodsSkuDTO.getGoodsSkuId());
        wrapper3.eq(GoodsGroupPurchase::getId, homeGoodsSkuDTO.getId());
        wrapper3.eq(GoodsGroupPurchase::getListingStatus,0);
        List arr=new ArrayList<>();
        arr.add(0);
@@ -370,6 +396,7 @@
        wrapper3.in(GoodsGroupPurchase::getStartStatus,arr);
        GoodsGroupPurchase one = this.getOne(wrapper3);
        GoodsGroupPurchaseInfoVO  goodsGroupPurchaseInfoVO=new GoodsGroupPurchaseInfoVO();
        if (Objects.nonNull(one)) {
        goodsGroupPurchaseInfoVO.setGoodsSkuId(one.getId());
        goodsGroupPurchaseInfoVO.setGoodsSkuName(byId.getSkuName());
        goodsGroupPurchaseInfoVO.setYears(String.valueOf(byId.getYears().getYear()));
@@ -384,7 +411,6 @@
        goodsGroupPurchaseInfoVO.setGroupPurchasePrice(one.getGroupPurchasePrice());
        goodsGroupPurchaseInfoVO.setGroupSize(one.getGroupSize());
        goodsGroupPurchaseInfoVO.setLimitNumber(one.getLimitNumber());
        if (one.getGroupStatus().getCode()==0){
            LambdaQueryWrapper<GoodsGroupPurchaseInfo> wrapper6= Wrappers.lambdaQuery();
            wrapper6.eq(GoodsGroupPurchaseInfo::getDelFlag,0);
@@ -395,9 +421,12 @@
                goodsGroupPurchaseInfoVO.setCurrentNumber(one1.getCurrentNumber());
                if (one1.getGroupStatus()==0){
                    goodsGroupPurchaseInfoVO.setGroupStatus(GroupStatusEnum.TO_FORM_A_GROUP);
                }if(one1.getGroupStatus()==1){
                    goodsGroupPurchaseInfoVO.setGroupStatus(GroupStatusEnum.FORMED_INTO_A_GROUP);
                }if(one1.getGroupStatus()==2){
                    }
                    if (one1.getGroupStatus() == 1) {
                        goodsGroupPurchaseInfoVO.setGroupStatus(
                                GroupStatusEnum.FORMED_INTO_A_GROUP);
                    }
                    if (one1.getGroupStatus() == 2) {
                    goodsGroupPurchaseInfoVO.setGroupStatus(GroupStatusEnum.GROUP_FAILURE);
                }
@@ -431,7 +460,8 @@
        HomeGoodsSkuDTO homeGoodsSkuDTO1=new HomeGoodsSkuDTO();
        homeGoodsSkuDTO1.setGoodsSkuId(one.getId());
        homeGoodsSkuDTO1.setMemberId(homeGoodsSkuDTO.getMemberId());
        Order data = orderClient.getOrderByGroupPurchaseMemberId2(homeGoodsSkuDTO1, SecurityConstants.INNER).getData();
            Order data = orderClient.getOrderByGroupPurchaseMemberId2(homeGoodsSkuDTO1,
                    SecurityConstants.INNER).getData();
        if (data!=null){
            goodsGroupPurchaseInfoVO.setIsGoodsGroupPurchase(2);
            goodsGroupPurchaseInfoVO.setOrder(data);
@@ -446,11 +476,15 @@
                    if (one7.getGroupSize()-one7.getCurrentNumber()<5){
                        goodsGroupPurchaseInfoVO.setGroupStatus(GroupStatusEnum.MS_FAILURE);
                    }else{
                        goodsGroupPurchaseInfoVO.setGroupStatus(GroupStatusEnum.TO_FORM_A_GROUP);
                            goodsGroupPurchaseInfoVO.setGroupStatus(
                                    GroupStatusEnum.TO_FORM_A_GROUP);
                    }
                }if(one7.getGroupStatus()==1){
                    goodsGroupPurchaseInfoVO.setGroupStatus(GroupStatusEnum.FORMED_INTO_A_GROUP);
                }if(one7.getGroupStatus()==2){
                    }
                    if (one7.getGroupStatus() == 1) {
                        goodsGroupPurchaseInfoVO.setGroupStatus(
                                GroupStatusEnum.FORMED_INTO_A_GROUP);
                    }
                    if (one7.getGroupStatus() == 2) {
                    goodsGroupPurchaseInfoVO.setGroupStatus(GroupStatusEnum.GROUP_FAILURE);
                }
@@ -472,7 +506,7 @@
            }
            goodsGroupPurchaseInfoVO.setIsGoodsGroupPurchase(1);
        }
        }
        return goodsGroupPurchaseInfoVO;
    }