From fdee14d77f5c3136c2855df3736fef0140f933db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 16 Apr 2025 13:36:13 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=98=AF=E5=90=A6=E5=8F=AF?= =?UTF-8?q?=E5=94=AE=E5=8D=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/czg/product/vo/ProductVO.java | 1 + .../service/impl/PadProdServiceImpl.java | 46 +++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ProductVO.java b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ProductVO.java index 5a74b0c7..917eadf4 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ProductVO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ProductVO.java @@ -16,4 +16,5 @@ import java.util.List; public class ProductVO extends Product { private BigDecimal lowPrice; private List skuList; + private Integer isSaleTime; } diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/PadProdServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/PadProdServiceImpl.java index 2c568f95..b3c72d92 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/PadProdServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/PadProdServiceImpl.java @@ -1,8 +1,12 @@ package com.czg.service.account.service.impl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.StrUtil; import com.czg.account.dto.pad.*; import com.czg.account.entity.*; import com.czg.account.service.*; +import com.czg.enums.YesNoEnum; import com.czg.exception.ApiNotPrintException; import com.czg.product.entity.ProdSku; import com.czg.product.entity.Product; @@ -20,8 +24,13 @@ import jakarta.annotation.Resource; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.stereotype.Service; +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.format.TextStyle; import java.util.ArrayList; import java.util.List; +import java.util.Locale; /** * @author Administrator @@ -49,6 +58,40 @@ public class PadProdServiceImpl implements PadProdService { return PageUtil.convert(new PageInfo<>(padProductCategoryDetailMapper.selectPageByKeyAndShopId(shopId, productCategoryId))); } + /** + * 计算是否在可售时间内 + * + * @param days 星期几,例如 "Monday,Tuesday" + * @param startTime 起售时间 + * @param endTime 停售时间 + * @return 是否可售时间 1-是,0-否 + */ + public Integer calcIsSaleTime(String days, LocalTime startTime, LocalTime endTime) { + if (StrUtil.isBlank(days) || ObjUtil.isNull(startTime) || ObjUtil.isNull(endTime)) { + return YesNoEnum.NO.value(); + } + String today = getWeekDayEnName(); + List dayList = StrUtil.split(days, ","); + LocalTime now = LocalTime.now().withNano(0); + if (CollUtil.contains(dayList, today) && now.isAfter(startTime) && now.isBefore(endTime)) { + return YesNoEnum.YES.value(); + } + return YesNoEnum.NO.value(); + } + + /** + * 获取当前日期是星期几的英文名称 + * + * @return 星期几的英文名称,例如 "Monday" 或 "Friday" + */ + private String getWeekDayEnName() { + // 获取当前日期 + LocalDate currentDate = LocalDate.now(); + // 获取当前日期是星期几,返回一个 DayOfWeek 枚举类型的实例 + DayOfWeek dayOfWeek = currentDate.getDayOfWeek(); + return dayOfWeek.getDisplayName(TextStyle.FULL, Locale.ENGLISH); + } + @Override public PadDetailDTO detail(Long shopId, Long padProductCategory) { PadProductCategory padCategory = padProductCategoryService.getOne(new QueryWrapper().eq(PadProductCategory::getShopId, shopId).eq(PadProductCategory::getId, padProductCategory)); @@ -66,10 +109,13 @@ public class PadProdServiceImpl implements PadProdService { products.parallelStream().forEach(item -> { List skuList = prodSkuService.list(new QueryWrapper().eq(ProdSku::getProductId, item.getId())); item.setSkuList(skuList); + item.setIsSaleTime(calcIsSaleTime(item.getDays(), item.getStartTime(), item.getEndTime())); + }); padDetailDTO.setProductList(products); } + return padDetailDTO; }