商品分组,可售时间管控

This commit is contained in:
Tankaikai
2025-03-20 16:58:13 +08:00
parent e2956752ec
commit c736bcee90
3 changed files with 87 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
package com.czg.service.product.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.czg.constant.CacheConstant;
@@ -72,7 +73,7 @@ public class UProductServiceImpl extends ServiceImpl<ProductMapper, Product> imp
@Override
@Cacheable(value = CacheConstant.USER_CLIENT_GROUPS_PRODUCT, key = "#shopId", unless = "#result.isEmpty()")
public List<ShopGroupProductVo> queryGroupProductList(Long shopId) {
List<ShopGroupProductVo> groupList = prodGroupMapper.selectListByQueryAs(query().select(ProdGroup::getId, ProdGroup::getName).eq(ProdGroup::getShopId, shopId).eq(ProdGroup::getStatus, StatusEnum.ENABLED.value()).orderBy(ProdGroup::getSort, true), ShopGroupProductVo.class);
List<ShopGroupProductVo> groupList = prodGroupMapper.selectListByQueryAs(query().select(ProdGroup::getId, ProdGroup::getName, ProdGroup::getUseTime, ProdGroup::getSaleStartTime, ProdGroup::getSaleEndTime).eq(ProdGroup::getShopId, shopId).eq(ProdGroup::getStatus, StatusEnum.ENABLED.value()).orderBy(ProdGroup::getSort, true), ShopGroupProductVo.class);
List<ShopProductVo> productAllList = productMapper.selectGroupProductList(shopId);
productAllList.forEach(item -> {
item.setIsSaleTime(calcIsSaleTime(item.getDays(), item.getStartTime(), item.getEndTime()));
@@ -96,6 +97,10 @@ public class UProductServiceImpl extends ServiceImpl<ProductMapper, Product> imp
productList.add(product);
}
}
Integer isSaleTime = calcIsSaleTime(group.getUseTime(), group.getSaleStartTime(), group.getSaleEndTime());
productList.parallelStream().forEach(product -> {
product.setIsSaleTime(isSaleTime);
});
group.setProductList(productList);
}
return groupList.stream().filter(group -> CollUtil.isNotEmpty(group.getProductList())).toList();
@@ -154,6 +159,28 @@ public class UProductServiceImpl extends ServiceImpl<ProductMapper, Product> imp
return YesNoEnum.NO.value();
}
/**
* 计算是否在可售时间内
*
* @param useTime 开启时间管控 0:否1:是
* @param startTime 起售时间
* @param endTime 停售时间
* @return 是否可售时间 1-是0-否
*/
private Integer calcIsSaleTime(Integer useTime, LocalTime startTime, LocalTime endTime) {
if (NumberUtil.nullToZero(useTime) == 0) {
return YesNoEnum.NO.value();
}
if (ObjUtil.isNull(startTime) || ObjUtil.isNull(endTime)) {
return YesNoEnum.NO.value();
}
LocalTime now = LocalTime.now().withNano(0);
if (now.isAfter(startTime) && now.isBefore(endTime)) {
return YesNoEnum.YES.value();
}
return YesNoEnum.NO.value();
}
/**
* 获取当前日期是星期几的英文名称
*