|
@@ -1,12 +1,17 @@
|
|
|
package cn.kdan.cloud.pdf.office.product.service.impl;
|
|
|
|
|
|
+import cn.kdan.cloud.pdf.office.api.account.feign.UserApi;
|
|
|
+import cn.kdan.cloud.pdf.office.api.account.utils.SubscriptionUtil;
|
|
|
+import cn.kdan.cloud.pdf.office.api.account.vo.UserSubscriptionInfoVO;
|
|
|
import cn.kdan.cloud.pdf.office.api.product.dto.ProductListDTO;
|
|
|
import cn.kdan.cloud.pdf.office.api.product.vo.ActivityInfoVO;
|
|
|
import cn.kdan.cloud.pdf.office.api.product.vo.ProductPriceVo;
|
|
|
import cn.kdan.cloud.pdf.office.api.product.vo.ProductVO;
|
|
|
+import cn.kdan.cloud.pdf.office.common.enums.account.PDFOfficeUserStatusEnum;
|
|
|
import cn.kdan.cloud.pdf.office.common.exception.BackendRuntimeException;
|
|
|
import cn.kdan.cloud.pdf.office.common.utils.JsonUtils;
|
|
|
import cn.kdan.cloud.pdf.office.product.entity.Product;
|
|
|
+import cn.kdan.cloud.pdf.office.product.error.ErrorMessage;
|
|
|
import cn.kdan.cloud.pdf.office.product.mapper.ProductMapper;
|
|
|
import cn.kdan.cloud.pdf.office.product.service.ActivityInformationService;
|
|
|
import cn.kdan.cloud.pdf.office.product.service.ProductService;
|
|
@@ -33,10 +38,12 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
|
|
|
|
|
|
private final ActivityInformationService activityService;
|
|
|
|
|
|
+ private final UserApi userAPi;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<ProductVO> page(ProductListDTO query) {
|
|
|
Page<Product> productPage = this.page(new Page<>(query.getPage(), query.getSize()), new LambdaQueryWrapper<Product>()
|
|
|
- .eq(Product::getAppId,query.getAppId()));
|
|
|
+ .eq(Product::getAppId, query.getAppId()));
|
|
|
List<ProductVO> productVOS = JsonUtils.jsonStringToList(JsonUtils.getJsonString(productPage.getRecords()), ProductVO.class);
|
|
|
productVOS.forEach(productVO -> {
|
|
|
if (!ObjectUtils.isEmpty(productVO.getActivityId())) {
|
|
@@ -51,20 +58,24 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
|
|
|
@Override
|
|
|
public ProductPriceVo getProductPrice(String productId, String userId) {
|
|
|
Product product = this.baseMapper.selectOne(new LambdaQueryWrapper<Product>()
|
|
|
- .select(Product::getPrice, Product::getCnyPrice, Product::getPaddleProductId,Product::getActivityId)
|
|
|
+ .select(Product::getPrice, Product::getCnyPrice, Product::getPaddleProductId, Product::getActivityId)
|
|
|
.eq(Product::getId, productId));
|
|
|
-
|
|
|
ProductPriceVo productPriceVo = new ProductPriceVo();
|
|
|
productPriceVo.setPaddleProductId(product.getPaddleProductId());
|
|
|
// 判断当前产品是否有活动 获取活动的最终价格
|
|
|
- if (!ObjectUtils.isEmpty(product.getActivityId())){
|
|
|
+ if (!ObjectUtils.isEmpty(product.getActivityId())) {
|
|
|
ActivityInfoVO activityInfo = activityService.getActivityInfoByActivityId(product.getActivityId());
|
|
|
// 判断是否是新用户专用
|
|
|
- if (activityInfo.getActivityType() == 1){
|
|
|
- // TODO 判断当前用户是否是新用户
|
|
|
- productPriceVo.setPrice(BigDecimal.ONE);
|
|
|
- productPriceVo.setCnyPrice(BigDecimal.ONE);
|
|
|
- }else {
|
|
|
+ List<UserSubscriptionInfoVO> subscriptionInfoList = userAPi.getInfoById(userId).getResult().getSubscriptionInfoList();
|
|
|
+ if (activityInfo.getActivityType() == 1) {
|
|
|
+ UserSubscriptionInfoVO userSubscriptionInfoVO = SubscriptionUtil.getUserSubscriptionInfoByPlatform(subscriptionInfoList, product.getPlatform());
|
|
|
+ if (ObjectUtils.isEmpty(userSubscriptionInfoVO)) {
|
|
|
+ productPriceVo.setPrice(activityInfo.getFinalPrice());
|
|
|
+ productPriceVo.setCnyPrice(activityInfo.getFinalCnyPrice());
|
|
|
+ } else {
|
|
|
+ throw new BackendRuntimeException(ErrorMessage.USER_IS_NOT_NEW_USER);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
productPriceVo.setPrice(activityInfo.getFinalPrice());
|
|
|
productPriceVo.setCnyPrice(activityInfo.getFinalCnyPrice());
|
|
|
}
|
|
@@ -78,4 +89,14 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
|
|
|
BeanUtils.copyProperties(this.baseMapper.selectOne(new LambdaQueryWrapper<Product>().eq(Product::getId, productId)), productVO);
|
|
|
return productVO;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ProductVO> getNewUserProduct(String appId) {
|
|
|
+ List<ProductVO> productVOS = this.baseMapper.selectNewUserProductByAppId(appId);
|
|
|
+ for (ProductVO productVO : productVOS) {
|
|
|
+ productVO.setActivityInfo(activityService.getActivityInfoByActivityId(productVO.getActivityId()));
|
|
|
+ }
|
|
|
+ return productVOS;
|
|
|
+ }
|
|
|
+
|
|
|
}
|