Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
919d3190f3
|
|
@ -0,0 +1,42 @@
|
|||
package com.czg.product.param;
|
||||
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import com.czg.validator.group.DefaultGroup;
|
||||
import jakarta.validation.constraints.Max;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 商品修改库存
|
||||
*
|
||||
* @author Tankaikai tankaikai@aliyun.com
|
||||
* @since 1.0 2025-02-16
|
||||
*/
|
||||
@Data
|
||||
public class ProductModifyStockParam implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@NotNull(message = "ID不能为空", groups = DefaultGroup.class)
|
||||
private Long id;
|
||||
/**
|
||||
* 库存数量
|
||||
*/
|
||||
@NotNull(message = "库存数量不能为空", groups = DefaultGroup.class)
|
||||
@Min(value = 0, message = "库存数量不能小于0", groups = DefaultGroup.class)
|
||||
@Max(value = Integer.MAX_VALUE, message = "库存数量不能大于" + Integer.MAX_VALUE, groups = DefaultGroup.class)
|
||||
private Integer stockNumber;
|
||||
/**
|
||||
* 店铺id
|
||||
*/
|
||||
@JSONField(serialize = false)
|
||||
private Long shopId;
|
||||
}
|
||||
|
|
@ -1,9 +1,11 @@
|
|||
package com.czg.product.vo;
|
||||
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -26,6 +28,21 @@ public class ShopGroupProductVo implements Serializable {
|
|||
* 分组名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 开启时间管控 0:否;1:是
|
||||
*/
|
||||
@JSONField(serialize = false)
|
||||
private Integer useTime;
|
||||
/**
|
||||
* 售卖开始时间
|
||||
*/
|
||||
@JSONField(serialize = false)
|
||||
private LocalTime saleStartTime;
|
||||
/**
|
||||
* 售卖结束时间
|
||||
*/
|
||||
@JSONField(serialize = false)
|
||||
private LocalTime saleEndTime;
|
||||
/**
|
||||
* 商品列表
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前日期是星期几的英文名称
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in New Issue