|
|
|
@ -12,9 +12,9 @@ import com.qniao.dam.domain.aggregate.externalproduct.valueobj.ExternalProductRe |
|
|
|
import com.qniao.dam.domain.aggregate.product.entity.Product; |
|
|
|
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; |
|
|
|
import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm; |
|
|
|
import com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.product.constant.PurchaseTimeLimitTypeEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermUnitEnum; |
|
|
|
import com.qniao.dam.infrastructure.persistent.dao.domain.ExternalProductRelDao; |
|
|
|
@ -23,10 +23,10 @@ import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecDao; |
|
|
|
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecTermDao; |
|
|
|
import com.qniao.dam.infrastructure.persistent.dao.view.ProductViewDao; |
|
|
|
import com.qniao.dam.query.product.ProductQueryService; |
|
|
|
import com.qniao.dam.query.purchaseproductrecord.PurchaseProductRecordQueryService; |
|
|
|
import com.qniao.das.domian.aggregate.marriageinformation.constant.GenderEnum; |
|
|
|
import com.qniao.framework.utils.PageUtil; |
|
|
|
import com.qniao.framework.utils.TypeConvertUtils; |
|
|
|
import org.checkerframework.checker.units.qual.A; |
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
@ -48,6 +48,8 @@ public class ProductQueryServiceImpl implements ProductQueryService { |
|
|
|
private ExternalProductRelDao externalProductRelDao; |
|
|
|
@Resource |
|
|
|
private ProductSpecTermDao productSpecTermDao; |
|
|
|
@Resource |
|
|
|
private PurchaseProductRecordQueryService purchaseProductRecordQueryService; |
|
|
|
@Value("${service-phone}") |
|
|
|
private String servicePhone; |
|
|
|
|
|
|
|
@ -120,6 +122,33 @@ public class ProductQueryServiceImpl implements ProductQueryService { |
|
|
|
return productViewDao.getProductByCategory(subCategory); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<UserListProductByVipVo> listProductByVip(Long userId) { |
|
|
|
List<UserListProductByVipVo> list = productViewDao.listProductByVip(); |
|
|
|
list = eliminatePurchaseTimeLimit(list, userId); |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
private List<UserListProductByVipVo> eliminatePurchaseTimeLimit(List<UserListProductByVipVo> list, |
|
|
|
Long userId) { |
|
|
|
List<UserListProductByVipVo> resultList = new ArrayList<>(); |
|
|
|
if (CollUtil.isNotEmpty(list)) { |
|
|
|
list.forEach(record -> { |
|
|
|
if (Objects.nonNull(record.getPurchaseTimeLimit())) { |
|
|
|
if (PurchaseTimeLimitTypeEnum.UNLIMITED.equals(record.getPurchaseTimeLimit())) { |
|
|
|
resultList.add(record); |
|
|
|
} else { |
|
|
|
int count = purchaseProductRecordQueryService.countPurchasedBy(record.getProductSpecId(), userId); |
|
|
|
if (count < record.getPurchaseTimeLimit().getValue()) { |
|
|
|
list.add(record); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
return resultList; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Product queryBy(Long userId, Long miId, ProductSubCategoryEnum subCategory) { |
|
|
|
return productDao.selectOne(new LambdaQueryWrapper<Product>() |
|
|
|
|