From fe2d5b14031edbe43238770fb1fc21e8a322b51a Mon Sep 17 00:00:00 2001
From: rentaiming <806181062@qq.com>
Date: 星期四, 13 六月 2024 18:18:08 +0800
Subject: [PATCH] 用户端商品

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java |  171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 169 insertions(+), 2 deletions(-)

diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java
index 710ea35..898e392 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java
@@ -1,5 +1,7 @@
 package com.ruoyi.goods.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -7,6 +9,7 @@
 import com.google.common.collect.Lists;
 import com.ruoyi.common.core.constant.CacheConstants;
 import com.ruoyi.common.core.constant.SecurityConstants;
+import com.ruoyi.common.core.enums.ClientTypeEnum;
 import com.ruoyi.common.core.enums.ListingStatusEnum;
 import com.ruoyi.common.core.enums.StartStatusEnum;
 import com.ruoyi.common.core.exception.ServiceException;
@@ -24,17 +27,31 @@
 import com.ruoyi.goods.service.async.AsyncMethodService;
 import com.ruoyi.system.api.constants.DelayTaskEnum;
 import com.ruoyi.system.api.constants.NotificationTypeConstant;
+import com.ruoyi.system.api.domain.GoodsBrand;
+import com.ruoyi.system.api.domain.GoodsCategory;
+import com.ruoyi.system.api.domain.GoodsFlavorType;
 import com.ruoyi.system.api.domain.GoodsSeckill;
+import com.ruoyi.system.api.domain.GoodsSeries;
 import com.ruoyi.system.api.domain.GoodsSku;
+import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
 import com.ruoyi.system.api.domain.dto.ListStatusDTO;
+import com.ruoyi.system.api.domain.vo.HomeGoodsSeckillInfoVO;
+import com.ruoyi.system.api.domain.vo.HomeGoodsSeckillVO;
+import com.ruoyi.system.api.feignClient.GoodsSkuClient;
 import com.ruoyi.system.api.feignClient.OrderClient;
 import com.ruoyi.system.api.feignClient.SysUserClient;
 import com.ruoyi.system.api.util.WebSocketUsers;
+
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -55,6 +72,7 @@
 
     private final IGoodsSkuService goodsSkuService;
     private final OrderClient orderClient;
+    private final GoodsSkuClient goodsSkuClient;
     private final RedisService redisService;
     private final SysUserClient sysUserClient;
     private final AsyncMethodService asyncMethodService;
@@ -197,7 +215,7 @@
         map.put("target_id", seckillId);
         map.put("message_type", "start");
         String msg = objectMapper.writeValueAsString(map);
-        WebSocketUsers.sendMessageToUsersByText(msg);
+        WebSocketUsers.sendMessageToUsersByType(ClientTypeEnum.MEMBER.getCode(), msg);
         log.info("===================>发送websocket通知,消息体{}", msg);
     }
 
@@ -224,7 +242,156 @@
         map.put("target_id", seckillId);
         map.put("message_type", "end");
         String msg = objectMapper.writeValueAsString(map);
-        WebSocketUsers.sendMessageToUsersByText(msg);
+        WebSocketUsers.sendMessageToUsersByType(ClientTypeEnum.MEMBER.getCode(), msg);
         log.info("===================>发送websocket通知,消息体{}", msg);
     }
+
+    @Override
+    public PageDTO<HomeGoodsSeckillVO> getHomeGoodsSeckillVOList(HomeGoodsSkuDTO homeGoodsSkuDTO) {
+        LambdaQueryWrapper<GoodsSku> wrapper3= Wrappers.lambdaQuery();
+        wrapper3.eq(GoodsSku::getDelFlag,0);
+        wrapper3.eq(GoodsSku::getListingStatus,0);
+        if (homeGoodsSkuDTO.getSkuName()!=null){
+            wrapper3.like(GoodsSku::getSkuName,homeGoodsSkuDTO.getSkuName());
+        }
+        if (homeGoodsSkuDTO.getBrandId()!=null){
+            wrapper3.eq(GoodsSku::getBrandId,homeGoodsSkuDTO.getBrandId());
+        }
+        if (homeGoodsSkuDTO.getCategoryId()!=null){
+            wrapper3.eq(GoodsSku::getCategoryId,homeGoodsSkuDTO.getCategoryId());
+        }
+        if (homeGoodsSkuDTO.getSeriesId()!=null){
+            wrapper3.eq(GoodsSku::getSeriesId,homeGoodsSkuDTO.getSeriesId());
+        }
+        if (homeGoodsSkuDTO.getFlavorTypeId()!=null){
+            wrapper3.eq(GoodsSku::getFlavorTypeId,homeGoodsSkuDTO.getFlavorTypeId());
+        }
+        if (homeGoodsSkuDTO.getSort()==2){
+            wrapper3.orderByAsc(GoodsSku::getPrice);
+        }
+        if (homeGoodsSkuDTO.getSort()==3){
+            wrapper3.orderByDesc(GoodsSku::getPrice);
+        }
+        if (homeGoodsSkuDTO.getSort()==4){
+            wrapper3.orderByAsc(GoodsSku::getSoldQuantity);
+        }
+        if (homeGoodsSkuDTO.getSort()==5){
+            wrapper3.orderByDesc(GoodsSku::getSoldQuantity);
+        }
+        if(homeGoodsSkuDTO.getYear()==2){
+            LocalDateTime now = LocalDateTime.now();
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            LocalDateTime newTime7 = now.minusYears(30);
+            String formattedDate7 = newTime7.format(formatter);
+            LocalDateTime parseTime7 = LocalDate.parse(formattedDate7).atStartOfDay();
+            wrapper3.le(GoodsSku::getYears,parseTime7);
+        }
+        if(homeGoodsSkuDTO.getYear()==3){
+            LocalDateTime now = LocalDateTime.now();
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            LocalDateTime newTime7 = now.minusYears(30);
+            String formattedDate7 = newTime7.format(formatter);
+            LocalDateTime parseTime7 = LocalDate.parse(formattedDate7).atStartOfDay();
+
+            LocalDateTime newTime15 = now.minusYears(15);
+            String formattedDate15 = newTime15.format(formatter);
+            LocalDateTime parseTime15= LocalDate.parse(formattedDate15).atStartOfDay();
+            wrapper3.le(GoodsSku::getYears, parseTime15)
+                    .gt(GoodsSku::getYears, parseTime7);
+        }
+
+        if(homeGoodsSkuDTO.getYear()==4){
+            LocalDateTime now = LocalDateTime.now();
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            LocalDateTime newTime7 = now.minusYears(5);
+            String formattedDate7 = newTime7.format(formatter);
+            LocalDateTime parseTime7 = LocalDate.parse(formattedDate7).atStartOfDay();
+
+            LocalDateTime newTime15 = now.minusYears(15);
+            String formattedDate15 = newTime15.format(formatter);
+            LocalDateTime parseTime15= LocalDate.parse(formattedDate15).atStartOfDay();
+            wrapper3.le(GoodsSku::getYears, parseTime7)
+                    .gt(GoodsSku::getYears, parseTime15);
+        }
+
+        if(homeGoodsSkuDTO.getYear()==5){
+            LocalDateTime now = LocalDateTime.now();
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            LocalDateTime newTime7 = now.minusYears(1);
+            String formattedDate7 = newTime7.format(formatter);
+            LocalDateTime parseTime7 = LocalDate.parse(formattedDate7).atStartOfDay();
+
+            LocalDateTime newTime15 = now.minusYears(5);
+            String formattedDate15 = newTime15.format(formatter);
+            LocalDateTime parseTime15= LocalDate.parse(formattedDate15).atStartOfDay();
+            wrapper3.le(GoodsSku::getYears, parseTime7)
+                    .ge(GoodsSku::getYears, parseTime15);
+        }
+
+        List<GoodsSku> page1 =  goodsSkuService.list(wrapper3);
+
+        Set<Long> goodsSkuIdList = null;
+        goodsSkuIdList = page1.stream().map(GoodsSku::getId)
+                .collect(Collectors.toSet());
+
+        Page<GoodsSeckill> page = new Page<>();
+        page.setSize(homeGoodsSkuDTO.getPageSize());
+        page.setCurrent(homeGoodsSkuDTO.getPageCurr());
+
+        LambdaQueryWrapper<GoodsSeckill> wrapper4= Wrappers.lambdaQuery();
+        wrapper4.eq(GoodsSeckill::getDelFlag,0);
+        wrapper4.eq(GoodsSeckill::getListingStatus,0);
+        List<Integer> in=new ArrayList<>();
+        in.add(0);
+        in.add(1);
+        wrapper4.in(GoodsSeckill::getStartStatus,in);
+        wrapper4.in(GoodsSeckill::getGoodsSkuId,goodsSkuIdList);
+        wrapper4.orderByAsc(GoodsSeckill::getSortNum);
+        Page<GoodsSeckill> page2 = this.page(page, wrapper4);
+
+        PageDTO<HomeGoodsSeckillVO> HomeGoodsSeckillVOPageDTO = PageDTO.of(page2, HomeGoodsSeckillVO.class);
+        List<HomeGoodsSeckillVO> list2 = HomeGoodsSeckillVOPageDTO.getList();
+        for (HomeGoodsSeckillVO homeGoodsSeckillVO:list2){
+            GoodsSku data = goodsSkuClient.getGoodsSkuOne(homeGoodsSeckillVO.getGoodsSkuId(), SecurityConstants.INNER).getData();
+            homeGoodsSeckillVO.setPrice(data.getPrice());
+            homeGoodsSeckillVO.setYears(String.valueOf(data.getYears().getYear()));
+            homeGoodsSeckillVO.setCoverPic(data.getCoverPic());
+            homeGoodsSeckillVO.setSkuName(data.getSkuName());
+        }
+        return HomeGoodsSeckillVOPageDTO;
+    }
+
+    @Override
+    public HomeGoodsSeckillInfoVO getHomeGoodsSeckillInfo(HomeGoodsSkuDTO homeGoodsSkuDTO) {
+        GoodsSeckill byId = this.getById(homeGoodsSkuDTO.getGoodsSkuId());
+        GoodsSku data6 = goodsSkuClient.getGoodsSkuOne(byId.getGoodsSkuId(), SecurityConstants.INNER).getData();
+        HomeGoodsSeckillInfoVO homeGoodsSeckillInfoVO=new HomeGoodsSeckillInfoVO();
+        homeGoodsSeckillInfoVO.setGoodsSkuId(byId.getId());
+        homeGoodsSeckillInfoVO.setSkuName(data6.getSkuName());
+        homeGoodsSeckillInfoVO.setYears(String.valueOf(data6.getYears().getYear()));
+        GoodsBrand data = goodsSkuClient.getBrandOne(data6.getBrandId(), SecurityConstants.INNER).getData();
+        GoodsCategory data1 = goodsSkuClient.getCategoryOne(data6.getCategoryId(), SecurityConstants.INNER).getData();
+        GoodsSeries data2 = goodsSkuClient.getSeriesOne(data6.getSeriesId(), SecurityConstants.INNER).getData();
+        GoodsFlavorType data3 = goodsSkuClient.getFlavorTypeOne(data6.getFlavorTypeId(), SecurityConstants.INNER).getData();
+        homeGoodsSeckillInfoVO.setBrand(data.getBrandName());
+        homeGoodsSeckillInfoVO.setCategory(data1.getCategoryName());
+        homeGoodsSeckillInfoVO.setSeries(data2.getSeriesName());
+        homeGoodsSeckillInfoVO.setFlavorType(data3.getFlavorTypeName());
+        homeGoodsSeckillInfoVO.setPrice(data6.getPrice());
+        homeGoodsSeckillInfoVO.setSoldQuantity(byId.getSoldQuantity());
+        homeGoodsSeckillInfoVO.setUnit(data6.getUnit());
+        homeGoodsSeckillInfoVO.setSpecUnit(data6.getSpecUnit());
+        homeGoodsSeckillInfoVO.setCoverPic(data6.getCoverPic());
+        homeGoodsSeckillInfoVO.setAlbum(data6.getAlbum());
+        homeGoodsSeckillInfoVO.setShareTitle(byId.getShareTitle());
+        homeGoodsSeckillInfoVO.setSeckillPrice(byId.getSeckillPrice());
+        homeGoodsSeckillInfoVO.setDescription(data6.getDescription());
+        homeGoodsSeckillInfoVO.setDetail(data6.getDetail());
+        homeGoodsSeckillInfoVO.setLimitNumber(byId.getLimitNumber());
+        homeGoodsSeckillInfoVO.setSeckillPrice(byId.getSeckillPrice());
+        homeGoodsSeckillInfoVO.setStartTime(byId.getStartTime());
+        homeGoodsSeckillInfoVO.setEndTime(byId.getEndTime());
+        homeGoodsSeckillInfoVO.setStartStatus(byId.getStartStatus());
+        return homeGoodsSeckillInfoVO;
+    }
 }

--
Gitblit v1.7.1