Browse Source

基础配置

master
张彭杰 1 year ago
parent
commit
95348dd60e
13 changed files with 118 additions and 22 deletions
  1. 5
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java
  2. 8
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java
  3. 7
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java
  4. 8
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/product/user/request/UserCreateProductDto.java
  5. 4
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/product/user/request/UserEditProductDto.java
  6. 22
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java
  7. 45
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByMatchmakerVo.java
  8. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java
  9. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java
  10. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java
  11. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java
  12. 6
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java
  13. 21
      dating-agency-mall-server/src/main/resources/mapper/product/ProductViewMapper.xml

5
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java

@ -18,7 +18,10 @@ public enum ProductMainCategoryEnum {
UNLOCKING_INFORMATION(3, "解锁信息"), UNLOCKING_INFORMATION(3, "解锁信息"),
OFFLINE_SERVICES(4, "线下服务"), OFFLINE_SERVICES(4, "线下服务"),
CHAT_CARD(5,"聊天卡"), CHAT_CARD(5,"聊天卡"),
VIP(6, "会员");
VIP(6, "会员"),
MATCHMAKER(888,"红娘合伙人");
@EnumValue @EnumValue
@JsonValue @JsonValue
private final Integer value; private final Integer value;

8
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java

@ -22,13 +22,15 @@ public enum ProductSubCategoryEnum {
OFFLINE_MEET(401, "线下约见面"), OFFLINE_MEET(401, "线下约见面"),
CHAT_CARD(501,"聊天卡"),
CHAT_CARD(501, "聊天卡"),
VIP(601, "会员"), VIP(601, "会员"),
CONTRACT_LOVE(701,"包恋爱"),
CONTRACT_LOVE(701, "包恋爱"),
CONTRACTED_MARRIAGE(801,"包领证");
CONTRACTED_MARRIAGE(801, "包领证"),
MATCHMAKER(88801, "红娘合伙人加盟费");
@EnumValue @EnumValue
@JsonValue @JsonValue

7
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java

@ -10,8 +10,11 @@ import lombok.Getter;
@JsonFormat(shape = JsonFormat.Shape.OBJECT) @JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum ProductTypeEnum { public enum ProductTypeEnum {
PHYSICAL(1, "实物"),
VIRTUAL(2, "虚拟物品");
CUSTOMER_PHYSICAL(1, "客户实物"),
CUSTOMER_VIRTUAL(2, "客户虚拟物品"),
MATCHMAKER_VIRTUAL(3, "红娘虚拟物品");
@EnumValue @EnumValue
@JsonValue @JsonValue

8
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/product/user/request/UserCreateProductDto.java

@ -25,6 +25,10 @@ import java.util.Objects;
@Data @Data
public class UserCreateProductDto implements Trans2DomainAssembler<Product> { public class UserCreateProductDto implements Trans2DomainAssembler<Product> {
@ApiModelProperty("产品类型")
@NotNull(message = "产品类型不能为空")
private ProductTypeEnum productType;
@ApiModelProperty("产品主分类") @ApiModelProperty("产品主分类")
@NotNull(message = "产品主分类不能为空") @NotNull(message = "产品主分类不能为空")
private ProductMainCategoryEnum mainCategory; private ProductMainCategoryEnum mainCategory;
@ -68,9 +72,7 @@ public class UserCreateProductDto implements Trans2DomainAssembler<Product> {
@Override @Override
public Product trans2Domain() { public Product trans2Domain() {
Product product = TypeConvertUtils.convert(this, Product.class);
product.setProductType(ProductTypeEnum.VIRTUAL);
return product;
return TypeConvertUtils.convert(this, Product.class);
} }
public ProductSpec trans2ProductSpec() { public ProductSpec trans2ProductSpec() {

4
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/product/user/request/UserEditProductDto.java

@ -36,6 +36,10 @@ public class UserEditProductDto implements Trans2DomainAssembler<Product> {
@NotNull(message = "产品规格标识不能为空") @NotNull(message = "产品规格标识不能为空")
private Long productSpecId; private Long productSpecId;
@ApiModelProperty("产品类型")
@NotNull(message = "产品类型不能为空")
private ProductTypeEnum productType;
@ApiModelProperty("产品主分类") @ApiModelProperty("产品主分类")
@NotNull(message = "产品主分类不能为空") @NotNull(message = "产品主分类不能为空")
private ProductMainCategoryEnum mainCategory; private ProductMainCategoryEnum mainCategory;

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

@ -2,10 +2,7 @@ package com.qniao.dam.api.query.product.user;
import com.qniao.dam.api.query.product.user.request.UserPageProductByCustomerQueryParam; import com.qniao.dam.api.query.product.user.request.UserPageProductByCustomerQueryParam;
import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam; 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.UserPageProductByCustomerGroupVo;
import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerVo;
import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo;
import com.qniao.dam.api.query.product.user.response.*;
import com.qniao.dam.query.product.ProductQueryService; import com.qniao.dam.query.product.ProductQueryService;
import com.qniao.dau.infrastructure.constant.RequestHeaderFields; import com.qniao.dau.infrastructure.constant.RequestHeaderFields;
import com.qniao.domain.QnPage; import com.qniao.domain.QnPage;
@ -45,6 +42,7 @@ public class ProductUserQueryController {
/** /**
* todo 考虑放缓存 * todo 考虑放缓存
*
* @param pageUtil * @param pageUtil
* @param queryParam * @param queryParam
* @param userId * @param userId
@ -58,9 +56,23 @@ public class ProductUserQueryController {
return PageUtil.convert(productQueryService.pageProductByCustomer(pageUtil, queryParam), UserPageProductByCustomerVo.class); return PageUtil.convert(productQueryService.pageProductByCustomer(pageUtil, queryParam), UserPageProductByCustomerVo.class);
} }
/**
* todo 考虑放缓存
*
* @param pageUtil
* @param userId
* @return
*/
@GetMapping("page/product/by/matchmaker")
@ApiOperation("红娘合伙人获取商品分页列表")
public QnPage<UserPageProductByMatchmakerVo> userPageProductByMatchMaker(PageUtil pageUtil,
@RequestParam("userId") Long userId) {
return PageUtil.convert(productQueryService.pageProductByMatchmaker(pageUtil), UserPageProductByMatchmakerVo.class);
}
@GetMapping("get/product/by/customer/list") @GetMapping("get/product/by/customer/list")
@ApiOperation("客户获取商品列表") @ApiOperation("客户获取商品列表")
public List<UserPageProductByCustomerGroupVo> getPageProductByCustomer(){
public List<UserPageProductByCustomerGroupVo> getPageProductByCustomer() {
return productQueryService.getPageProductByCustomer(); return productQueryService.getPageProductByCustomer();
} }
} }

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

@ -0,0 +1,45 @@
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.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 UserPageProductByMatchmakerVo {
@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 BigDecimal unitOriginalPrice;
@ApiModelProperty("售价")
private BigDecimal unitSellingPrice;
}

2
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java

@ -51,7 +51,7 @@ public class OrderEventHandler extends BaseApplicationService {
if (CollUtil.isNotEmpty(order.getOrderItemList())) { if (CollUtil.isNotEmpty(order.getOrderItemList())) {
List<Right> rightList = new ArrayList<>(); List<Right> rightList = new ArrayList<>();
for (OrderItem orderItem : order.getOrderItemList()) { for (OrderItem orderItem : order.getOrderItemList()) {
if (ProductTypeEnum.VIRTUAL.equals(orderItem.getProductType())) {
if (ProductTypeEnum.CUSTOMER_VIRTUAL.equals(orderItem.getProductType())) {
ProductSpec productSpec = productSpecRepository.load(orderItem.getProductSpecId()); ProductSpec productSpec = productSpecRepository.load(orderItem.getProductSpecId());
Product product = productRepository.load(productSpec.getProductId()); Product product = productRepository.load(productSpec.getProductId());
Right right = rightApplicationService.init(product, productSpec, order, orderItem.getQuantity()); Right right = rightApplicationService.init(product, productSpec, order, orderItem.getQuantity());

2
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java

@ -96,7 +96,7 @@ public class OrderApplicationService {
} }
//1.1. 同类型权益不同规格限制购买和提醒 //1.1. 同类型权益不同规格限制购买和提醒
if(order.getGroupType() == null || order.getGroupType() == 0) { if(order.getGroupType() == null || order.getGroupType() == 0) {
if (ProductTypeEnum.VIRTUAL.equals(product.getProductType())) {
if (ProductTypeEnum.CUSTOMER_VIRTUAL.equals(product.getProductType())) {
boolean diffFlag = orderQueryService.checkDiffSpecRight(order, orderItem, productSpec); boolean diffFlag = orderQueryService.checkDiffSpecRight(order, orderItem, productSpec);
if (diffFlag) { if (diffFlag) {
throw new BizException("您已经拥有相同类型的权益"); throw new BizException("您已经拥有相同类型的权益");

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

@ -6,6 +6,7 @@ import com.qniao.dam.api.query.product.user.request.UserPageProductByCustomerQue
import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam; import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam;
import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerExtendVo; import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerExtendVo;
import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerVo; import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerVo;
import com.qniao.dam.api.query.product.user.response.UserPageProductByMatchmakerVo;
import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo; import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -25,4 +26,6 @@ public interface ProductViewDao {
List<UserPageProductByOperatorVo> pageProductByOperator(@Param("queryParam") UserPageProductByOperatorQueryParam queryParam); List<UserPageProductByOperatorVo> pageProductByOperator(@Param("queryParam") UserPageProductByOperatorQueryParam queryParam);
List<UserPageProductByCustomerExtendVo> selectProductByCustomerList(); List<UserPageProductByCustomerExtendVo> selectProductByCustomerList();
IPage<UserPageProductByMatchmakerVo> pageProductByMatchmaker(Page<Object> pageWithoutOrders);
} }

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

@ -3,10 +3,7 @@ package com.qniao.dam.query.product;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.dam.api.query.product.user.request.UserPageProductByCustomerQueryParam; import com.qniao.dam.api.query.product.user.request.UserPageProductByCustomerQueryParam;
import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam; 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.UserPageProductByCustomerGroupVo;
import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerVo;
import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo;
import com.qniao.dam.api.query.product.user.response.*;
import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm; import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm;
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum; import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum;
import com.qniao.framework.utils.PageUtil; import com.qniao.framework.utils.PageUtil;
@ -23,4 +20,6 @@ public interface ProductQueryService {
ProductSpecTerm getTermByName(List<ProductSpecTerm> productSpecTermList, ProductSpecTermNameEnum name); ProductSpecTerm getTermByName(List<ProductSpecTerm> productSpecTermList, ProductSpecTermNameEnum name);
List<UserPageProductByCustomerGroupVo> getPageProductByCustomer(); List<UserPageProductByCustomerGroupVo> getPageProductByCustomer();
IPage<UserPageProductByMatchmakerVo> pageProductByMatchmaker(PageUtil pageUtil);
} }

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

@ -75,6 +75,11 @@ public class ProductQueryServiceImpl implements ProductQueryService {
return productViewDao.pageProductByCustomer(pageUtil.toPageWithoutOrders(), queryParam); return productViewDao.pageProductByCustomer(pageUtil.toPageWithoutOrders(), queryParam);
} }
@Override
public IPage<UserPageProductByMatchmakerVo> pageProductByMatchmaker(PageUtil pageUtil) {
return productViewDao.pageProductByMatchmaker(pageUtil.toPageWithoutOrders());
}
@Override @Override
public ProductSpecTerm getTermByName(List<ProductSpecTerm> productSpecTermList, ProductSpecTermNameEnum name) { public ProductSpecTerm getTermByName(List<ProductSpecTerm> productSpecTermList, ProductSpecTermNameEnum name) {
ProductSpecTerm productSpecTerm = null; ProductSpecTerm productSpecTerm = null;
@ -111,6 +116,7 @@ public class ProductQueryServiceImpl implements ProductQueryService {
return groupVoList; return groupVoList;
} }
/** /**
* 找出对应name的value * 找出对应name的value
*/ */

21
dating-agency-mall-server/src/main/resources/mapper/product/ProductViewMapper.xml

@ -59,7 +59,7 @@
LEFT JOIN da_product_spec_term as dpst2 on dpst2.is_delete=0 and dpst2.product_spec_id =dps.id and dpst2.`name`=3 LEFT JOIN da_product_spec_term as dpst2 on dpst2.is_delete=0 and dpst2.product_spec_id =dps.id and dpst2.`name`=3
LEFT JOIN da_product_spec_term as dpst3 on dpst3.is_delete=0 and dpst3.product_spec_id =dps.id and dpst3.`name`=2 LEFT JOIN da_product_spec_term as dpst3 on dpst3.is_delete=0 and dpst3.product_spec_id =dps.id and dpst3.`name`=2
LEFT JOIN da_product_spec_term as dpst4 on dpst4.is_delete=0 and dpst4.product_spec_id =dps.id and dpst4.`name`=4 LEFT JOIN da_product_spec_term as dpst4 on dpst4.is_delete=0 and dpst4.product_spec_id =dps.id and dpst4.`name`=4
where dp.is_delete=0 and dp.`status`=1
where dp.is_delete=0 and dp.`status`=1 and dp.product_type=2
<if test="queryParam.subCategory != null"> <if test="queryParam.subCategory != null">
AND dp.sub_category = #{queryParam.subCategory} AND dp.sub_category = #{queryParam.subCategory}
</if> </if>
@ -118,7 +118,24 @@
LEFT JOIN da_product_spec_term as dpst2 on dpst2.is_delete=0 and dpst2.product_spec_id =dps.id and dpst2.`name`=3 LEFT JOIN da_product_spec_term as dpst2 on dpst2.is_delete=0 and dpst2.product_spec_id =dps.id and dpst2.`name`=3
LEFT JOIN da_product_spec_term as dpst3 on dpst3.is_delete=0 and dpst3.product_spec_id =dps.id and dpst3.`name`=2 LEFT JOIN da_product_spec_term as dpst3 on dpst3.is_delete=0 and dpst3.product_spec_id =dps.id and dpst3.`name`=2
LEFT JOIN da_product_spec_term as dpst4 on dpst4.is_delete=0 and dpst4.product_spec_id =dps.id and dpst4.`name`=4 LEFT JOIN da_product_spec_term as dpst4 on dpst4.is_delete=0 and dpst4.product_spec_id =dps.id and dpst4.`name`=4
where dp.is_delete=0 and dp.`status`=1
where dp.is_delete=0 and dp.`status`=1 and dp.product_type=2
</select>
<select id="pageProductByMatchmaker"
resultType="com.qniao.dam.api.query.product.user.response.UserPageProductByMatchmakerVo">
select
dp.id as productId,
dps.id as productSpecId,
dp.main_category,
dp.sub_category,
dp.product_title,
dp.product_desc,
dp.detail_desc,
dps.unit_original_price,
dps.unit_selling_price
from da_product as dp
LEFT JOIN da_product_spec as dps on dps.is_delete=0 and dps.product_id=dp.id
where dp.is_delete=0 and dp.`status`=1 and dp.product_type=3
</select> </select>
</mapper> </mapper>
Loading…
Cancel
Save