diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/dto/ProductDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/product/dto/ProductDTO.java index da7273acf..63e345a63 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/dto/ProductDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/dto/ProductDTO.java @@ -227,11 +227,14 @@ public class ProductDTO implements Serializable { * 耗材信息 */ private String consName; - /** * 商品销售状态 sold_out=已售罄 on_sale=在售中 off_sale=已下架 */ private String status; + /** + * 是否可售时间 1-是 0-否 + */ + private Integer isSaleTime; public Object getImages() { return JSON.parseArray(Convert.toStr(images, "[]")); diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java index 48c8e928d..252b791e1 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java @@ -38,10 +38,11 @@ import org.springframework.cache.annotation.CacheEvict; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.format.TextStyle; +import java.util.*; import static com.czg.product.entity.table.ProductTableDef.PRODUCT; import static com.czg.product.entity.table.ShopProdCategoryTableDef.SHOP_PROD_CATEGORY; @@ -124,6 +125,7 @@ public class ProductServiceImpl extends ServiceImpl impl private void buildProductExtInfo(List records) { records.forEach(record -> { + record.setIsSaleTime(calcIsSaleTime(record.getDays(), record.getStartTime(), record.getEndTime())); List skuList = prodSkuMapper.selectListByQueryAs(query().eq(ProdSku::getProductId, record.getId()).eq(ProdSku::getIsDel, DeleteEnum.NORMAL.value()), ProdSkuDTO.class); if (CollUtil.isNotEmpty(skuList)) { Optional lowPriceIsPresent = skuList.stream().map(obj -> NumberUtil.nullToZero(obj.getSalePrice())).min(BigDecimal::compareTo); @@ -161,6 +163,40 @@ public class ProductServiceImpl extends ServiceImpl impl return records; } + /** + * 计算是否在可售时间内 + * + * @param days 星期几,例如 "Monday,Tuesday" + * @param startTime 起售时间 + * @param endTime 停售时间 + * @return 是否可售时间 1-是,0-否 + */ + private 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 ProductDTO getProductById(Long id) { ProductDTO param = new ProductDTO();