rentaiming
2024-06-02 d7ff3f15da7272ffa1bd84104b176969b0e1ac59
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
@@ -8,6 +8,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Lists;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.enums.GroupStatusEnum;
import com.ruoyi.common.core.enums.ListingStatusEnum;
import com.ruoyi.common.core.enums.OrderStatusEnum;
@@ -17,12 +18,13 @@
import com.ruoyi.common.core.utils.page.BeanUtils;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.goods.controller.forepart.vo.GoodsGroupPurchaseInfoVO;
import com.ruoyi.system.api.domain.Member;
import com.ruoyi.system.api.domain.dto.*;
import com.ruoyi.system.api.domain.vo.GoodsGroupPurchaseInfoVO;
import com.ruoyi.goods.controller.management.dto.GoodsGroupPurchaseDTO;
import com.ruoyi.goods.controller.management.dto.GoodsGroupPurchaseQuery;
import com.ruoyi.goods.controller.management.vo.GoodsGroupPurchaseVO;
import com.ruoyi.goods.domain.GoodsGroupPurchase;
import com.ruoyi.goods.domain.MemberGoodsCollection;
import com.ruoyi.goods.mapper.GoodsGroupPurchaseMapper;
import com.ruoyi.goods.service.IGoodsGroupPurchaseService;
import com.ruoyi.goods.service.IGoodsSkuService;
@@ -31,10 +33,8 @@
import com.ruoyi.system.api.constants.NotificationTypeConstant;
import com.ruoyi.system.api.domain.GoodsSku;
import com.ruoyi.system.api.domain.Order;
import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
import com.ruoyi.system.api.domain.dto.ListStatusDTO;
import com.ruoyi.system.api.domain.dto.OrderUpdDTO;
import com.ruoyi.system.api.domain.dto.RefundDTO;
import com.ruoyi.system.api.domain.vo.OrderVO;
import com.ruoyi.system.api.domain.vo.WdGoodsGroupPurchaseVO;
import com.ruoyi.system.api.feignClient.OrderClient;
import com.ruoyi.system.api.util.WebSocketUsers;
import java.time.LocalDateTime;
@@ -283,7 +283,6 @@
    @Override
    public GoodsGroupPurchaseInfoVO getGoodsGroupPurchaseInfo(HomeGoodsSkuDTO homeGoodsSkuDTO) {
        GoodsSku byId = goodsSkuService.getById(homeGoodsSkuDTO.getGoodsSkuId());
        LambdaQueryWrapper<GoodsGroupPurchase> wrapper3= Wrappers.lambdaQuery();
        wrapper3.eq(GoodsGroupPurchase::getDelFlag,0);
        wrapper3.eq(GoodsGroupPurchase::getGoodsSkuId,homeGoodsSkuDTO.getGoodsSkuId());
@@ -306,6 +305,81 @@
        goodsGroupPurchaseInfoVO.setListingStatus(one.getListingStatus());
        goodsGroupPurchaseInfoVO.setGroupStatus(one.getGroupStatus());
        Order data = orderClient.getOrderByGroupPurchaseMemberId(homeGoodsSkuDTO, SecurityConstants.INNER).getData();
        if (data!=null){
            goodsGroupPurchaseInfoVO.setIsGoodsGroupPurchase(2);
        }else{
            goodsGroupPurchaseInfoVO.setIsGoodsGroupPurchase(1);
        }
        return goodsGroupPurchaseInfoVO;
    }
    @Override
    public void QxGoodsGroupPurchase(HomeGoodsSkuDTO homeGoodsSkuDTO) {
        Order order1 = orderClient.getOrderByGroupPurchaseMemberId(homeGoodsSkuDTO, SecurityConstants.INNER).getData();
        RefundDTO refundDTO = new RefundDTO();
        refundDTO.setOrderNo(order1.getOrderNo());
        refundDTO.setAmount(order1.getTotalAmount());
        List<RefundDTO>refundDTOList=new ArrayList<>();
        refundDTOList.add(refundDTO);
        List<Order> orderList=new ArrayList<>();
        orderList.add(order1);
        Map<String, Object> data = orderClient.refund(refundDTOList,
                SecurityConstants.INNER).getData();
        if (StringUtils.isNotEmpty(data)) {
            // 处理退款返回结果
            List<String> successfulOrders = new ArrayList<>();
            List<String> failedOrders = new ArrayList<>();
            data.forEach((key, value) -> {
                if ((boolean) value) {
                    successfulOrders.add(key);
                } else {
                    failedOrders.add(key);
                }
            });
            // 处理退款结果
            List<Order> updateOrderList = orderList.stream()
                    .filter(order -> successfulOrders.contains(order.getOrderNo()))
                    .peek(order -> {
                        order.setOrderStatus(OrderStatusEnum.CANCELED);
                    }).collect(Collectors.toList());
            List<OrderUpdDTO> orderUpdDTOS = BeanUtils.copyList(updateOrderList,
                    OrderUpdDTO.class);
            orderClient.updateOrderList(orderUpdDTOS, SecurityConstants.INNER);
        }
    }
    @Override
    public PageDTO<WdGoodsGroupPurchaseVO> CtjlGoodsGroupPurchase(HomeGoodsSkuDTO homeGoodsSkuDTO) {
        List<OrderVO> data = orderClient.getOrderByGroupPurchaseMemberList(homeGoodsSkuDTO, SecurityConstants.INNER).getData();
        List<Long> goodsSkuIdList = data.stream()
                .map(OrderVO::getGoodsSkuId)
                .collect(Collectors.toList());
        Page<GoodsGroupPurchase> page = new Page<>(homeGoodsSkuDTO.getPageCurr(), homeGoodsSkuDTO.getPageSize());
        LambdaQueryWrapper< GoodsGroupPurchase> wrapper= Wrappers.lambdaQuery();
        wrapper.in(GoodsGroupPurchase::getGoodsSkuId,goodsSkuIdList);
        wrapper.eq(GoodsGroupPurchase::getListingStatus,0);
        wrapper.eq( GoodsGroupPurchase::getDelFlag,0);
        Page< GoodsGroupPurchase> page1 = this.page(page, wrapper);
        PageDTO<WdGoodsGroupPurchaseVO> GoodsGroupPurchaseVOPageDTO = PageDTO.of(page1, WdGoodsGroupPurchaseVO.class);
        List<WdGoodsGroupPurchaseVO> list2 = GoodsGroupPurchaseVOPageDTO.getList();
        for (WdGoodsGroupPurchaseVO goodsGroupPurchaseeVO:list2) {
            GoodsSku byId = goodsSkuService.getById(goodsGroupPurchaseeVO.getGoodsSkuId());
            goodsGroupPurchaseeVO.setGoodsSkuName(byId.getSkuName());
            goodsGroupPurchaseeVO.setCoverPic(byId.getCoverPic());
            goodsGroupPurchaseeVO.setPrice(byId.getPrice());
            goodsGroupPurchaseeVO.setYears(String.valueOf(byId.getYears().getYear()));
            goodsGroupPurchaseeVO.setIsGoodsGroupPurchase(2);
        }
        return GoodsGroupPurchaseVOPageDTO;
    }
}