Browse Source

基础配置

master
张彭杰 2 years ago
parent
commit
9e9729e351
5 changed files with 162 additions and 0 deletions
  1. 11
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java
  2. 61
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserGetProductDetailByOperatorVo.java
  3. 1
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java
  4. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java
  5. 86
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java

11
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java

@ -1,6 +1,7 @@
package com.qniao.dam.api.query.product.user;
import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam;
import com.qniao.dam.api.query.product.user.response.UserGetProductDetailByOperatorVo;
import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo;
import com.qniao.dam.query.product.ProductQueryService;
import com.qniao.dau.infrastructure.constant.RequestHeaderFields;
@ -8,6 +9,7 @@ import com.qniao.domain.QnPage;
import com.qniao.framework.utils.PageUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -29,4 +31,13 @@ public class ProductUserQueryController {
return PageUtil.convert(productQueryService.pageProductByOperator(pageUtil, queryParam), UserPageProductByOperatorVo.class);
}
@GetMapping("get/product-detail/by/operator/{id}")
@ApiOperation("运营获取商品详情")
public UserGetProductDetailByOperatorVo userGetProductDetailByOperator(@ApiParam("商品标识") @PathVariable Long id,
@RequestParam("userId") Long userId,
@RequestHeader(name = RequestHeaderFields.FIELD_ORGANIZATION_ID) Long orgId) {
return productQueryService.getProductDetailByOperator(id);
}
}

61
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserGetProductDetailByOperatorVo.java

@ -0,0 +1,61 @@
package com.qniao.dam.api.query.product.user.response;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum;
import com.qniao.dam.domian.aggregate.product.constant.ProductStatusEnum;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermUnitEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class UserGetProductDetailByOperatorVo {
@ApiModelProperty("商品标识")
@JsonSerialize(using = ToStringSerializer.class)
private Long productId;
@ApiModelProperty("商品规格标识")
@JsonSerialize(using = ToStringSerializer.class)
private Long productSpecId;
@ApiModelProperty("产品主分类")
private ProductMainCategoryEnum mainCategory;
@ApiModelProperty("产品次分类")
private ProductSubCategoryEnum subCategory;
@ApiModelProperty("产品标题")
private String productTitle;
@ApiModelProperty("产品描述")
private String productDesc;
@ApiModelProperty("详情描述")
private String detailDesc;
@ApiModelProperty("状态(已上架、已下架)")
private ProductStatusEnum status;
@ApiModelProperty("原价")
private BigDecimal unitOriginalPrice;
@ApiModelProperty("售价")
private BigDecimal unitSellingPrice;
@ApiModelProperty("产品规格(周期、次数)")
private ProductSpecTermUnitEnum productSpecUnit;
@ApiModelProperty("有效期")
private String validityPeriodValue;
@ApiModelProperty("购买次数")
private String purchaseTimeValue;
@ApiModelProperty("单日使用上限")
private String dailyUseLimitValue;
}

1
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java

@ -3,6 +3,7 @@ package com.qniao.dam.infrastructure.persistent.dao.view;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam;
import com.qniao.dam.api.query.product.user.response.UserGetProductDetailByOperatorVo;
import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

3
dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java

@ -2,9 +2,12 @@ package com.qniao.dam.query.product;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam;
import com.qniao.dam.api.query.product.user.response.UserGetProductDetailByOperatorVo;
import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo;
import com.qniao.framework.utils.PageUtil;
public interface ProductQueryService {
IPage<UserPageProductByOperatorVo> pageProductByOperator(PageUtil pageUtil, UserPageProductByOperatorQueryParam queryParam);
UserGetProductDetailByOperatorVo getProductDetailByOperator(Long productId);
}

86
dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java

@ -1,24 +1,110 @@
package com.qniao.dam.query.product.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam;
import com.qniao.dam.api.query.product.user.response.UserGetProductDetailByOperatorVo;
import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo;
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.entity.ProductSpecTerm;
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.ProductDao;
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.framework.utils.PageUtil;
import com.qniao.framework.utils.TypeConvertUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
@Service
public class ProductQueryServiceImpl implements ProductQueryService {
@Resource
private ProductViewDao productViewDao;
@Resource
private ProductDao productDao;
@Resource
private ProductSpecDao productSpecDao;
@Resource
private ProductSpecTermDao productSpecTermDao;
@Override
public IPage<UserPageProductByOperatorVo> pageProductByOperator(PageUtil pageUtil,
UserPageProductByOperatorQueryParam queryParam) {
return productViewDao.pageProductByOperator(pageUtil.toPageWithoutOrders(), queryParam);
}
@Override
public UserGetProductDetailByOperatorVo getProductDetailByOperator(Long productId) {
UserGetProductDetailByOperatorVo detailVo = null;
Product product = productDao.selectById(productId);
if (Objects.nonNull(product)) {
detailVo = TypeConvertUtils.convert(product, UserGetProductDetailByOperatorVo.class);
ProductSpec productSpec = queryProductSpecByProductId(productId);
if (Objects.nonNull(productSpec)) {
detailVo.setUnitOriginalPrice(productSpec.getUnitOriginalPrice());
detailVo.setUnitSellingPrice(productSpec.getUnitSellingPrice());
if (CollUtil.isNotEmpty(productSpec.getProductSpecTermList())) {
detailVo.setProductSpecUnit(getProductSpecUnit(productSpec.getProductSpecTermList(), ProductSpecTermNameEnum.SPEC));
detailVo.setValidityPeriodValue(getProductSpecValue(productSpec.getProductSpecTermList(), ProductSpecTermNameEnum.VALIDITY_PERIOD));
detailVo.setPurchaseTimeValue(getProductSpecValue(productSpec.getProductSpecTermList(), ProductSpecTermNameEnum.PURCHASE_TIME));
detailVo.setDailyUseLimitValue(getProductSpecValue(productSpec.getProductSpecTermList(), ProductSpecTermNameEnum.DAILY_USE_LIMIT));
}
}
}
return detailVo;
}
/**
* 找出对应name的value
*/
private String getProductSpecValue(List<ProductSpecTerm> productSpecTermList,
ProductSpecTermNameEnum name) {
String value = null;
if (CollUtil.isNotEmpty(productSpecTermList)) {
for (ProductSpecTerm term : productSpecTermList) {
if (name.equals(term.getName())) {
value = term.getValue();
break;
}
}
}
return value;
}
/**
* 找出对应name的unit
*/
private ProductSpecTermUnitEnum getProductSpecUnit(List<ProductSpecTerm> productSpecTermList,
ProductSpecTermNameEnum name) {
ProductSpecTermUnitEnum unitEnum = null;
if (CollUtil.isNotEmpty(productSpecTermList)) {
for (ProductSpecTerm term : productSpecTermList) {
if (name.equals(term.getName())) {
unitEnum = term.getUnit();
break;
}
}
}
return unitEnum;
}
private ProductSpec queryProductSpecByProductId(Long productId) {
ProductSpec productSpec = productSpecDao.selectOne(new LambdaQueryWrapper<ProductSpec>()
.eq(ProductSpec::getProductId, productId)
.last("limit 1"));
if (Objects.nonNull(productSpec)) {
productSpec.setProductSpecTermList(productSpecTermDao.selectList(new LambdaQueryWrapper<ProductSpecTerm>()
.eq(ProductSpecTerm::getProductSpecId, productSpec.getId())));
}
return productSpec;
}
}
Loading…
Cancel
Save