mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-07-25 00:15:06 +08:00
feature(管理后台): 商品列表
This commit is contained in:
@ -29,4 +29,19 @@ public class ProductSpuPageReqVO extends PageParam {
|
||||
@ApiModelProperty(value = "上下架状态: 0 上架(开启) 1 下架(禁用)")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty(value = "销量最小值", example = "1")
|
||||
private Integer salesCountMin;
|
||||
|
||||
@ApiModelProperty(value = "销量最大值", example = "1024")
|
||||
private Integer salesCountMax;
|
||||
|
||||
@ApiModelProperty(value = "市场价最小值", example = "1")
|
||||
private Integer marketPriceMin;
|
||||
|
||||
@ApiModelProperty(value = "市场价最大值", example = "1024")
|
||||
private Integer marketPriceMax;
|
||||
|
||||
@ApiModelProperty(value = "tab 状态 null 全部, 0:销售中(上架) 1:仓库中(下架) 2:预警中", example = "1")
|
||||
private Integer tabStatus;
|
||||
|
||||
}
|
||||
|
@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.product.controller.admin.spu.vo.ProductSpuPageReq
|
||||
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 商品spu Mapper
|
||||
*
|
||||
@ -20,7 +22,32 @@ public interface ProductSpuMapper extends BaseMapperX<ProductSpuDO> {
|
||||
.likeIfPresent(ProductSpuDO::getName, reqVO.getName())
|
||||
.eqIfPresent(ProductSpuDO::getCategoryId, reqVO.getCategoryId())
|
||||
.eqIfPresent(ProductSpuDO::getStatus, reqVO.getStatus())
|
||||
.leIfPresent(ProductSpuDO::getSalesCount, reqVO.getSalesCountMax())
|
||||
.geIfPresent(ProductSpuDO::getSalesCount, reqVO.getSalesCountMin())
|
||||
.leIfPresent(ProductSpuDO::getMarketPrice, reqVO.getMarketPriceMax())
|
||||
.geIfPresent(ProductSpuDO::getMarketPrice, reqVO.getMarketPriceMin())
|
||||
.orderByDesc(ProductSpuDO::getSort));
|
||||
}
|
||||
|
||||
default PageResult<ProductSpuDO> selectPage(ProductSpuPageReqVO reqVO, List<Long> spuIds) {
|
||||
LambdaQueryWrapperX<ProductSpuDO> productSpuDOLambdaQueryWrapperX = new LambdaQueryWrapperX<ProductSpuDO>()
|
||||
.likeIfPresent(ProductSpuDO::getName, reqVO.getName())
|
||||
.eqIfPresent(ProductSpuDO::getCategoryId, reqVO.getCategoryId())
|
||||
.eqIfPresent(ProductSpuDO::getStatus, reqVO.getStatus())
|
||||
.leIfPresent(ProductSpuDO::getSalesCount, reqVO.getSalesCountMax())
|
||||
.geIfPresent(ProductSpuDO::getSalesCount, reqVO.getSalesCountMin())
|
||||
.leIfPresent(ProductSpuDO::getMarketPrice, reqVO.getMarketPriceMax())
|
||||
.geIfPresent(ProductSpuDO::getMarketPrice, reqVO.getMarketPriceMin())
|
||||
.orderByDesc(ProductSpuDO::getSort);
|
||||
|
||||
if(reqVO.getTabStatus()!= null && reqVO.getTabStatus() == 2){
|
||||
productSpuDOLambdaQueryWrapperX.inIfPresent(ProductSpuDO::getId, spuIds);
|
||||
}else{
|
||||
productSpuDOLambdaQueryWrapperX.eqIfPresent(ProductSpuDO::getStatus, reqVO.getTabStatus());
|
||||
}
|
||||
|
||||
return selectPage(reqVO, productSpuDOLambdaQueryWrapperX);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -83,4 +83,11 @@ public interface ProductSkuService {
|
||||
*/
|
||||
void deleteSkuBySpuId(Long spuId);
|
||||
|
||||
/**
|
||||
* 获得商品预警中的spu集合
|
||||
*
|
||||
* @return 商品spuId集合
|
||||
*/
|
||||
List<Long> getRemindSpuIds();
|
||||
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.product.service.sku;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyRespVO;
|
||||
import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueRespVO;
|
||||
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuBaseVO;
|
||||
@ -14,6 +15,7 @@ import cn.iocoder.yudao.module.product.enums.ErrorCodeConstants;
|
||||
import cn.iocoder.yudao.module.product.enums.spu.ProductSpuSpecTypeEnum;
|
||||
import cn.iocoder.yudao.module.product.service.property.ProductPropertyService;
|
||||
import cn.iocoder.yudao.module.product.service.property.ProductPropertyValueService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -131,6 +133,12 @@ public class ProductSkuServiceImpl implements ProductSkuService {
|
||||
productSkuMapper.deleteBySpuId(spuId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Long> getRemindSpuIds() {
|
||||
List<ProductSkuDO> productSkuDOS = productSkuMapper.selectList(new QueryWrapper<ProductSkuDO>().apply("stock <= warn_stock"));
|
||||
return productSkuDOS.stream().map(ProductSkuDO::getSpuId).distinct().collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void updateProductSkus(Long spuId, List<ProductSkuCreateOrUpdateReqVO> skus) {
|
||||
|
@ -3,8 +3,8 @@ package cn.iocoder.yudao.module.product.service.spu;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||
import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyRespVO;
|
||||
import cn.iocoder.yudao.module.product.controller.admin.property.vo.ProductPropertyViewRespVO;
|
||||
import cn.iocoder.yudao.module.product.controller.admin.property.vo.property.ProductPropertyRespVO;
|
||||
import cn.iocoder.yudao.module.product.controller.admin.property.vo.value.ProductPropertyValueRespVO;
|
||||
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuBaseVO;
|
||||
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuCreateOrUpdateReqVO;
|
||||
@ -190,16 +190,15 @@ public class ProductSpuServiceImpl implements ProductSpuService {
|
||||
|
||||
@Override
|
||||
public PageResult<ProductSpuRespVO> getSpuPage(ProductSpuPageReqVO pageReqVO) {
|
||||
PageResult<ProductSpuRespVO> spuVOs = ProductSpuConvert.INSTANCE.convertPage(ProductSpuMapper.selectPage(pageReqVO));
|
||||
// 查询 sku 的信息
|
||||
// List<Long> spuIds = spuVOs.getList().stream().map(ProductSpuRespVO::getId).collect(Collectors.toList());
|
||||
// List<ProductSkuRespVO> skus = ProductSkuConvert.INSTANCE.convertList(productSkuService.getSkusBySpuIds(spuIds));
|
||||
// TODO @franky:使用 CollUtil 里的方法替代哈
|
||||
// TODO 芋艿:临时注释
|
||||
// Map<Long, List<ProductSkuRespVO>> skuMap = skus.stream().collect(Collectors.groupingBy(ProductSkuRespVO::getSpuId));
|
||||
// // 将 spu 和 sku 进行组装
|
||||
// spuVOs.getList().forEach(p -> p.setSkus(skuMap.get(p.getId())));
|
||||
return spuVOs;
|
||||
List<Long> remindSpuIds= null;
|
||||
// todo @yunai 预警类型的判断应该可以优化,看下怎么处理
|
||||
if(pageReqVO.getTabStatus() != null && pageReqVO.getTabStatus() == 2){
|
||||
remindSpuIds= productSkuService.getRemindSpuIds();
|
||||
if(remindSpuIds.isEmpty()){
|
||||
remindSpuIds.add(null);
|
||||
}
|
||||
}
|
||||
return ProductSpuConvert.INSTANCE.convertPage(ProductSpuMapper.selectPage(pageReqVO, remindSpuIds));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user