店铺端当前时间是否可售
This commit is contained in:
@@ -227,11 +227,14 @@ public class ProductDTO implements Serializable {
|
|||||||
* 耗材信息
|
* 耗材信息
|
||||||
*/
|
*/
|
||||||
private String consName;
|
private String consName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品销售状态 sold_out=已售罄 on_sale=在售中 off_sale=已下架
|
* 商品销售状态 sold_out=已售罄 on_sale=在售中 off_sale=已下架
|
||||||
*/
|
*/
|
||||||
private String status;
|
private String status;
|
||||||
|
/**
|
||||||
|
* 是否可售时间 1-是 0-否
|
||||||
|
*/
|
||||||
|
private Integer isSaleTime;
|
||||||
|
|
||||||
public Object getImages() {
|
public Object getImages() {
|
||||||
return JSON.parseArray(Convert.toStr(images, "[]"));
|
return JSON.parseArray(Convert.toStr(images, "[]"));
|
||||||
|
|||||||
@@ -38,10 +38,11 @@ import org.springframework.cache.annotation.CacheEvict;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.time.DayOfWeek;
|
||||||
import java.util.List;
|
import java.time.LocalDate;
|
||||||
import java.util.Objects;
|
import java.time.LocalTime;
|
||||||
import java.util.Optional;
|
import java.time.format.TextStyle;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
import static com.czg.product.entity.table.ProductTableDef.PRODUCT;
|
import static com.czg.product.entity.table.ProductTableDef.PRODUCT;
|
||||||
import static com.czg.product.entity.table.ShopProdCategoryTableDef.SHOP_PROD_CATEGORY;
|
import static com.czg.product.entity.table.ShopProdCategoryTableDef.SHOP_PROD_CATEGORY;
|
||||||
@@ -124,6 +125,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
|
|||||||
|
|
||||||
private void buildProductExtInfo(List<ProductDTO> records) {
|
private void buildProductExtInfo(List<ProductDTO> records) {
|
||||||
records.forEach(record -> {
|
records.forEach(record -> {
|
||||||
|
record.setIsSaleTime(calcIsSaleTime(record.getDays(), record.getStartTime(), record.getEndTime()));
|
||||||
List<ProdSkuDTO> skuList = prodSkuMapper.selectListByQueryAs(query().eq(ProdSku::getProductId, record.getId()).eq(ProdSku::getIsDel, DeleteEnum.NORMAL.value()), ProdSkuDTO.class);
|
List<ProdSkuDTO> skuList = prodSkuMapper.selectListByQueryAs(query().eq(ProdSku::getProductId, record.getId()).eq(ProdSku::getIsDel, DeleteEnum.NORMAL.value()), ProdSkuDTO.class);
|
||||||
if (CollUtil.isNotEmpty(skuList)) {
|
if (CollUtil.isNotEmpty(skuList)) {
|
||||||
Optional<BigDecimal> lowPriceIsPresent = skuList.stream().map(obj -> NumberUtil.nullToZero(obj.getSalePrice())).min(BigDecimal::compareTo);
|
Optional<BigDecimal> lowPriceIsPresent = skuList.stream().map(obj -> NumberUtil.nullToZero(obj.getSalePrice())).min(BigDecimal::compareTo);
|
||||||
@@ -161,6 +163,40 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
|
|||||||
return records;
|
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<String> 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
|
@Override
|
||||||
public ProductDTO getProductById(Long id) {
|
public ProductDTO getProductById(Long id) {
|
||||||
ProductDTO param = new ProductDTO();
|
ProductDTO param = new ProductDTO();
|
||||||
|
|||||||
Reference in New Issue
Block a user