|
|
@@ -15,7 +15,9 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import org.apache.dubbo.common.logger.FluentLogger;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
+import org.dromara.common.core.exception.ServiceException;
|
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
|
+import org.dromara.common.core.utils.NumberGeneratorUtil;
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
@@ -24,6 +26,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
import org.dromara.easyes.core.biz.EsPageInfo;
|
|
|
import org.dromara.easyes.core.biz.SAPageInfo;
|
|
|
import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper;
|
|
|
@@ -472,13 +475,18 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
|
|
|
.eq(ObjectUtil.isNotEmpty(bo.getIsSelf()), ProductBaseVo::getIsSelf, bo.getIsSelf())
|
|
|
.eq(ObjectUtil.isNotEmpty(bo.getProductReviewStatus()), ProductBaseVo::getProductReviewStatus, bo.getProductReviewStatus())
|
|
|
.eq(ObjectUtil.isNotEmpty(bo.getDataSource()), ProductBaseVo::getDataSource, bo.getDataSource())
|
|
|
+ .eq(ObjectUtil.isNotEmpty(bo.getProductCategory()), ProductBaseVo::getProductCategory, bo.getProductCategory())
|
|
|
// .orderByDesc(ProductBaseVo::getCreateTime)
|
|
|
;
|
|
|
if (ObjectUtil.isNotEmpty(bo.getIds())){
|
|
|
productBaseVoLambdaEsQueryWrapper.in(ProductBaseVo::getId, bo.getIds().split(","));
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+ if (ObjectUtil.isNotEmpty(bo.getBrandIds())){
|
|
|
+ productBaseVoLambdaEsQueryWrapper.in(ProductBaseVo::getBrandId, bo.getBrandIds().split(","));
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(bo.getCategoryIds())){
|
|
|
+ productBaseVoLambdaEsQueryWrapper.in(ProductBaseVo::getBottomCategoryId, bo.getCategoryIds().split(","));
|
|
|
+ }
|
|
|
return productBaseVoLambdaEsQueryWrapper;
|
|
|
}
|
|
|
|
|
|
@@ -636,6 +644,24 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
|
|
|
// 1. 保存产品基础信息
|
|
|
ProductBase productBase = MapstructUtils.convert(bo, ProductBase.class);
|
|
|
validEntityBeforeSave(productBase);
|
|
|
+ //查询最大productNo生成productNo
|
|
|
+ if(ObjectUtil.isEmpty(productBase.getProductNo())){
|
|
|
+ ProductBase one = baseMapper.selectOne(Wrappers.lambdaQuery(ProductBase.class).orderByDesc(ProductBase::getProductNo).last("limit 1"));
|
|
|
+ if (one == null) {
|
|
|
+ productBase.setProductNo("0000000001");
|
|
|
+ }else {
|
|
|
+ productBase.setProductNo(NumberGeneratorUtil.generateNumber(one.getProductNo()));
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ //校验编号不能重复
|
|
|
+ ProductBase one = baseMapper.selectOne(Wrappers.lambdaQuery(ProductBase.class)
|
|
|
+ .eq(ProductBase::getProductNo, productBase.getProductNo())
|
|
|
+ .last("limit 1")
|
|
|
+ );
|
|
|
+ if (one != null) {
|
|
|
+ throw new ServiceException("编号已存在");
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
// 设置默认值
|
|
|
setDefaultValues(productBase);
|
|
|
@@ -1266,6 +1292,7 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
|
|
|
.set(ProductExtend::getReviewComments, bo.getReviewComments())
|
|
|
.eq(ProductExtend::getProductId, bo.getId())
|
|
|
);
|
|
|
+ syncToES(bo.getId());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -1283,6 +1310,7 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
|
|
|
.set(ProductExtend::getShelfComments, bo.getShelfComments())
|
|
|
.eq(ProductExtend::getProductId, bo.getId())
|
|
|
);
|
|
|
+ syncToES(bo.getId());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -1299,6 +1327,7 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
|
|
|
.set(ProductBase::getProductCategory, bo.getProductCategory())
|
|
|
.eq(ProductBase::getId, bo.getId())
|
|
|
);
|
|
|
+ syncToES(bo.getId());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -1439,6 +1468,12 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
|
|
|
if(ObjectUtil.isNotEmpty( bo.getIds())){
|
|
|
lqw.in("b.id", bo.getIds());
|
|
|
}
|
|
|
+ if (ObjectUtil.isNotEmpty(bo.getBrandIds())){
|
|
|
+ lqw.in("b.brand_id", bo.getBrandIds().split(","));
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(bo.getCategoryIds())){
|
|
|
+ lqw.in("b.bottom_category_id", bo.getCategoryIds().split(","));
|
|
|
+ }
|
|
|
lqw.ge(ObjectUtil.isNotEmpty(pageQuery.getFirstSeenId()) && pageQuery.getWay() == 0,"b.id", pageQuery.getFirstSeenId());
|
|
|
lqw.gt(ObjectUtil.isNotEmpty(pageQuery.getLastSeenId()) && pageQuery.getWay() == 1,"b.id", pageQuery.getLastSeenId());
|
|
|
// lqw.eq("b.product_status", 1);
|
|
|
@@ -1492,6 +1527,12 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
|
|
|
if(ObjectUtil.isNotEmpty(bo.getIds())){
|
|
|
esQueryWrapper.in(ProductBaseVo::getId, bo.getIds());
|
|
|
}
|
|
|
+ if (ObjectUtil.isNotEmpty(bo.getBrandIds())){
|
|
|
+ esQueryWrapper.in(ProductBaseVo::getBrandId, bo.getBrandIds().split(","));
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(bo.getCategoryIds())){
|
|
|
+ esQueryWrapper.in(ProductBaseVo::getBottomCategoryId, bo.getCategoryIds().split(","));
|
|
|
+ }
|
|
|
// 添加额外的查询条件
|
|
|
if (ObjectUtil.isNotEmpty(bo.getSearchKeyword())) {
|
|
|
esQueryWrapper.and(wrapper -> wrapper
|
|
|
@@ -1675,6 +1716,15 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
|
|
|
List<ProductBaseVo> productBaseVos = baseMapper.selectAllList(Wrappers.query(ProductBase.class)
|
|
|
.eq("b.id", productShoppingCart.getProductId())
|
|
|
);
|
|
|
+ //查询商品是否在收藏夹收藏
|
|
|
+ if(productCollectMapper.exists(Wrappers.lambdaQuery(ProductCollect.class)
|
|
|
+ .eq(ProductCollect::getUserId, LoginHelper.getUserId())
|
|
|
+ .eq(ProductCollect::getProductId, productShoppingCart.getProductId())
|
|
|
+ )){
|
|
|
+ productVo.setIsCollect("1");
|
|
|
+ }else {
|
|
|
+ productVo.setIsCollect("0");
|
|
|
+ }
|
|
|
if (CollUtil.isNotEmpty(productBaseVos)) {
|
|
|
BeanUtil.copyProperties(productBaseVos.get(0), productVo);
|
|
|
productVo.setProductNum(productShoppingCart.getProductNum());
|
|
|
@@ -1886,7 +1936,7 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
|
|
|
* @param programId
|
|
|
*/
|
|
|
@Override
|
|
|
- public Map<String, List<PcProductVo>> getProductProgramProductList(Long programId) {
|
|
|
+ public Map<Long, List<PcProductVo>> getProductProgramProductList(Long programId) {
|
|
|
List<ProductProgramLinkVo> productProgramLinkVos = productProgramLinkMapper.selectVoList(
|
|
|
Wrappers.lambdaQuery(ProductProgramLink.class)
|
|
|
.eq(ProductProgramLink::getProgramId, programId)
|
|
|
@@ -1900,7 +1950,7 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
|
|
|
|
|
|
List<PcProductVo> pcProductVos = BeanUtil.copyToList(productBaseVos, PcProductVo.class);
|
|
|
//通过分类名称分组
|
|
|
- Map<String, List<PcProductVo>> map = pcProductVos.stream().collect(Collectors.groupingBy(PcProductVo::getCategoryName));
|
|
|
+ Map<Long, List<PcProductVo>> map = pcProductVos.stream().collect(Collectors.groupingBy(PcProductVo::getBrandId));
|
|
|
if (CollUtil.isNotEmpty(map)) {
|
|
|
return map;
|
|
|
}
|