diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderTypeEnum.java index f9d532d..ad6264a 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderTypeEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderTypeEnum.java @@ -10,7 +10,7 @@ import lombok.Getter; @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum OrderTypeEnum { - NORMAL(1, "正常"), + NORMAL(1, "普通"), MARRIAGE_BOUNTY(2, "悬赏招亲"); diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java index 5aaee9d..c2689e0 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java @@ -10,7 +10,6 @@ import lombok.Getter; @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum RewardTypeEnum { - GUEST_CERTIFICATION(101, "嘉宾实名认证"), PUBLISH_MARRIAGE_BOUNTY(102, "发布悬赏招亲"), diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java new file mode 100644 index 0000000..1eeba6e --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java @@ -0,0 +1,38 @@ +package com.qniao.dam.domain.aggregate.marriagebounty.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderProductRecord; +import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRel; +import com.qniao.domain.Entity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_marriage_bounty_order") +public class MarriageBountyOrder extends Entity { + + @ApiModelProperty("用户标识") + private Long userId; + + @ApiModelProperty("征婚资料标识") + private Long miId; + + @ApiModelProperty("状态") + private Integer status; + + @ApiModelProperty("悬赏招亲订单标识关系") + private transient List orderRelList; + + @ApiModelProperty("悬赏招亲订单") + private transient List productRecordList; + + @ApiModelProperty("悬赏招亲订单奖励") + private transient List orderRewardList; + private transient List insertOrderRewardList; + private transient List updateOrderRewardList; + private transient List deleteOrderRewardList; +} diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrderReward.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrderReward.java new file mode 100644 index 0000000..87b9e36 --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrderReward.java @@ -0,0 +1,35 @@ +package com.qniao.dam.domain.aggregate.marriagebounty.entity; + + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRewardReceiveRecord; +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; +import com.qniao.domain.Entity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_marriage_bounty_order_reward") +public class MarriageBountyOrderReward extends Entity { + + @ApiModelProperty("悬赏招亲订单标识") + private Long marriageBountyOrderId; + + @ApiModelProperty("奖励分类") + private ProductSubCategoryEnum rewardCategory; + + @ApiModelProperty("奖励金额") + private BigDecimal rewardAmount; + + @ApiModelProperty("是否领取") + private Boolean isReceive; + + @ApiModelProperty("悬赏招亲订单奖励领取记录") + private transient List rewardReceiveRecordList; + +} diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderProductRecord.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderProductRecord.java new file mode 100644 index 0000000..3d0f8bf --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderProductRecord.java @@ -0,0 +1,22 @@ +package com.qniao.dam.domain.aggregate.marriagebounty.valueobj; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.domain.ValueObject; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_marriage_bounty_order_product_record") +public class MarriageBountyOrderProductRecord extends ValueObject { + + @ApiModelProperty("悬赏招亲订单标识") + private Long marriageBountyOrderId; + + @ApiModelProperty("悬赏招亲订单产品规格记录") + private transient List productSpecRecordList; + +} diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderProductSpecRecord.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderProductSpecRecord.java new file mode 100644 index 0000000..54ae813 --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderProductSpecRecord.java @@ -0,0 +1,29 @@ +package com.qniao.dam.domain.aggregate.marriagebounty.valueobj; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; +import com.qniao.domain.ValueObject; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_marriage_bounty_order_product_spec_record") +public class MarriageBountyOrderProductSpecRecord extends ValueObject { + + @ApiModelProperty("悬赏招亲订单产品记录标识") + private Long MarriageBountyOrderProductRecordId; + + @ApiModelProperty("产品次分类") + private ProductSubCategoryEnum subCategory; + + @ApiModelProperty("原价") + private BigDecimal unitOriginalPrice; + + @ApiModelProperty("售价") + private BigDecimal unitSellingPrice; + +} diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRel.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRel.java new file mode 100644 index 0000000..e528bde --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRel.java @@ -0,0 +1,20 @@ +package com.qniao.dam.domain.aggregate.marriagebounty.valueobj; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.domain.ValueObject; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_marriage_bounty_order_rel") +public class MarriageBountyOrderRel extends ValueObject { + + @ApiModelProperty("悬赏招亲订单标识") + private Long marriageBountyOrderId; + + @ApiModelProperty("订单标识") + private Long orderId; + +} diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRewardReceiveRecord.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRewardReceiveRecord.java new file mode 100644 index 0000000..13c1271 --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRewardReceiveRecord.java @@ -0,0 +1,29 @@ +package com.qniao.dam.domain.aggregate.marriagebounty.valueobj; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; +import com.qniao.domain.ValueObject; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_marriage_bounty_order_reward_receive_record") +public class MarriageBountyOrderRewardReceiveRecord extends ValueObject { + + @ApiModelProperty("悬赏招亲订单奖励标识") + private Long marriageBountyOrderRewardId; + + @ApiModelProperty("奖励类型") + private RewardTypeEnum rewardType; + + @ApiModelProperty("领取人标识") + private Long receiver; + + @ApiModelProperty("领取金额") + private BigDecimal receivedAmount; + +} diff --git a/dating-agency-mall-server/pom.xml b/dating-agency-mall-server/pom.xml index 07a6f54..79200d8 100644 --- a/dating-agency-mall-server/pom.xml +++ b/dating-agency-mall-server/pom.xml @@ -44,6 +44,10 @@ com.ctrip.framework.apollo apollo-client + + com.qniao + rabbitmq-starter + com.qniao common-utils diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java index e411dd5..02d274e 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java @@ -13,6 +13,7 @@ import com.qniao.dam.domain.aggregate.productspec.repository.ProductSpecReposito import com.qniao.dam.domain.aggregate.right.RightAggregate; import com.qniao.dam.domain.aggregate.right.entity.Right; import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; +import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum; import com.qniao.dam.domian.aggregate.order.event.OrderCompletedEvent; import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum; import com.qniao.dau.application.UecServerApplicationService; @@ -52,6 +53,7 @@ public class OrderEventHandler extends BaseApplicationService { public void handle(OrderCompletedEvent event) { try { Order order = orderRepository.load(event.getId()); + //权益处理 if (CollUtil.isNotEmpty(order.getOrderItemList())) { List rightList = new ArrayList<>(); for (OrderItem orderItem : order.getOrderItemList()) { @@ -70,6 +72,10 @@ public class OrderEventHandler extends BaseApplicationService { if (OrderBelongingEnum.MATCHMAKER.equals(order.getOrderBelonging())) { uecServerApplicationService.userPaidMatchmakerFee(order.getUserId()); } + //悬赏招亲 + if (OrderTypeEnum.MARRIAGE_BOUNTY.equals(order.getOrderType())) { + //todo + } } catch (Exception e) { log.error("订单已完成事件处理异常"); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderAggregate.java new file mode 100644 index 0000000..4d56c6e --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderAggregate.java @@ -0,0 +1,4 @@ +package com.qniao.dam.application.service.marriagebounty; + +public class MarriageBountyOrderAggregate { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/repository/MarriageBountyOrderRepository.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/repository/MarriageBountyOrderRepository.java new file mode 100644 index 0000000..23a99cb --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/repository/MarriageBountyOrderRepository.java @@ -0,0 +1,7 @@ +package com.qniao.dam.application.service.marriagebounty.repository; + +import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder; +import com.qniao.domain.Repository; + +public interface MarriageBountyOrderRepository extends Repository { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java index 08c6d87..e699675 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java @@ -15,6 +15,7 @@ import com.qniao.dam.domain.aggregate.productspec.repository.ProductSpecReposito import com.qniao.dam.domain.service.order.SubmitOrderDomainService; import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum; +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum; import com.qniao.dam.infrastructure.persistent.dao.activity.ActivityProductDao; import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao; @@ -24,6 +25,7 @@ import com.qniao.dam.query.order.OrderQueryService; import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker; import com.qniao.framework.exception.BizException; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -54,6 +56,9 @@ public class OrderApplicationService { @Resource private ProductApplicationService productApplicationService; + @Value("${marriage_bounty_meeting_quantity:5}") + private Integer marriageBountyMeetingQuantity; + /** * todo 库存校验 暂时不用考虑 * @@ -172,7 +177,10 @@ public class OrderApplicationService { orderItem.setProductTitle(product.getProductTitle()); orderItem.setProductDesc(product.getProductDesc()); orderItem.setUnitSettlementPrice(productSpec.getUnitSellingPrice()); - orderItem.setQuantity(5); + orderItem.setQuantity(1); + if (ProductSubCategoryEnum.MARRIAGE_BOUNTY_MEETING_FEE.equals(product.getSubCategory())) { + orderItem.setQuantity(marriageBountyMeetingQuantity); + } orderItemList.add(orderItem); } order.setOrderItemList(orderItemList); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/config/MqBeanFactoryPostProcessor.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/config/MqBeanFactoryPostProcessor.java new file mode 100644 index 0000000..faeaa4f --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/config/MqBeanFactoryPostProcessor.java @@ -0,0 +1,76 @@ +package com.qniao.dam.infrastructure.config; + +import com.qniao.dam.infrastructure.constant.MqExchange; +import com.qniao.dam.infrastructure.constant.MqQueue; +import org.springframework.amqp.core.*; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.beans.factory.support.BeanDefinitionRegistry; +import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +/** + * 优先批量注册bean + * + * @description: + * @author: zhoukunhua + * @date: 2020-07-31 9:27 AM + */ +@Component +public class MqBeanFactoryPostProcessor implements BeanDefinitionRegistryPostProcessor { + + private final Map> exchangeType = new HashMap>() { + { + put("direct", DirectExchange.class); + put("fanout", FanoutExchange.class); + put("topic", TopicExchange.class); + } + }; + + @Override + public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { + + try { + Field[] declaredFields = MqQueue.class.getDeclaredFields(); + for (Field f : declaredFields) { + String queue = (String) f.get(MqQueue.class); + beanFactory.registerSingleton(queue, new Queue(queue)); + } + declaredFields = MqExchange.class.getDeclaredFields(); + for (Field f : declaredFields) { + String exchangeName = (String) f.get(MqExchange.class); + String exchangeTypeName = exchangeName.substring(0, exchangeName.indexOf(".")); + Class exchangeClass = exchangeType.get(exchangeTypeName); + if (exchangeClass != null) { + Constructor constructor = exchangeClass.getDeclaredConstructor(String.class); + Exchange o = constructor.newInstance(exchangeName); + beanFactory.registerSingleton(exchangeName, o); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + private boolean containsBeanDefinition(BeanDefinitionRegistry beanDefinitionRegistry, String... beans) { + + return Arrays.stream(beans).allMatch(beanDefinitionRegistry::containsBeanDefinition); + } + + @Override + public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException { + + // eureka的bug,参考 https://github.com/spring-cloud/spring-cloud-netflix/issues/1952 + if (containsBeanDefinition(beanDefinitionRegistry, "feignContext", "eurekaAutoServiceRegistration")) { + BeanDefinition bd = beanDefinitionRegistry.getBeanDefinition("feignContext"); + bd.setDependsOn("eurekaAutoServiceRegistration"); + } + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/config/RabbitmqConfig.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/config/RabbitmqConfig.java new file mode 100644 index 0000000..b6fed3e --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/config/RabbitmqConfig.java @@ -0,0 +1,27 @@ +package com.qniao.dam.infrastructure.config; + +import com.qniao.ppf.infrastructure.constant.MqQueue; +import com.qniao.ppf.infrastructure.constant.PrintingPackagingFactoryMqExchange; +import org.springframework.amqp.core.Binding; +import org.springframework.amqp.core.BindingBuilder; +import org.springframework.amqp.core.FanoutExchange; +import org.springframework.amqp.core.Queue; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class RabbitmqConfig { + + + @Bean + Binding paymentOrderPaidBinding() { + return BindingBuilder.bind(new Queue(MqQueue.PAYMENT_ORDER_PAID)) + .to(new FanoutExchange(PrintingPackagingFactoryMqExchange.PAYMENT_ORDER_PAID)); + } + + @Bean + Binding walletPaymentOrderPaidBinding() { + return BindingBuilder.bind(new Queue(MqQueue.WALLET_PAYMENT_ORDER_PAID)) + .to(new FanoutExchange(PrintingPackagingFactoryMqExchange.WALLET_PAYMENT_ORDER_PAID)); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java new file mode 100644 index 0000000..c1a30d1 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java @@ -0,0 +1,6 @@ +package com.qniao.dam.infrastructure.constant; + +public interface MqExchange { + + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java new file mode 100644 index 0000000..979539d --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java @@ -0,0 +1,9 @@ +package com.qniao.dam.infrastructure.constant; + +/** + * @author zhoukunhua + * @date 2022-03-15 + */ +public interface MqQueue { + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqRoutingKey.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqRoutingKey.java new file mode 100644 index 0000000..6e13dee --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqRoutingKey.java @@ -0,0 +1,9 @@ +package com.qniao.dam.infrastructure.constant; + +/** + * @author Lzk + * @date 2022/7/16 + **/ +public interface MqRoutingKey { + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderDao.java new file mode 100644 index 0000000..0326f85 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderDao.java @@ -0,0 +1,7 @@ +package com.qniao.dam.infrastructure.persistent.dao.domain; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder; + +public interface MarriageBountyOrderDao extends BaseMapper { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderProductRecordDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderProductRecordDao.java new file mode 100644 index 0000000..461a091 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderProductRecordDao.java @@ -0,0 +1,7 @@ +package com.qniao.dam.infrastructure.persistent.dao.domain; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderProductRecord; + +public interface MarriageBountyOrderProductRecordDao extends BaseMapper { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderProductSpecRecordDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderProductSpecRecordDao.java new file mode 100644 index 0000000..db29b16 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderProductSpecRecordDao.java @@ -0,0 +1,7 @@ +package com.qniao.dam.infrastructure.persistent.dao.domain; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderProductSpecRecord; + +public interface MarriageBountyOrderProductSpecRecordDao extends BaseMapper { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderRelDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderRelDao.java new file mode 100644 index 0000000..42205e2 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderRelDao.java @@ -0,0 +1,7 @@ +package com.qniao.dam.infrastructure.persistent.dao.domain; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRel; + +public interface MarriageBountyOrderRelDao extends BaseMapper { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderRewardDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderRewardDao.java new file mode 100644 index 0000000..2384180 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderRewardDao.java @@ -0,0 +1,7 @@ +package com.qniao.dam.infrastructure.persistent.dao.domain; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrderReward; + +public interface MarriageBountyOrderRewardDao extends BaseMapper { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderRewardReceiveRecordDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderRewardReceiveRecordDao.java new file mode 100644 index 0000000..67c53ad --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderRewardReceiveRecordDao.java @@ -0,0 +1,7 @@ +package com.qniao.dam.infrastructure.persistent.dao.domain; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRewardReceiveRecord; + +public interface MarriageBountyOrderRewardReceiveRecordDao extends BaseMapper { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/MarriageBountyOrderRepositoryImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/MarriageBountyOrderRepositoryImpl.java new file mode 100644 index 0000000..70d17c6 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/MarriageBountyOrderRepositoryImpl.java @@ -0,0 +1,102 @@ +package com.qniao.dam.infrastructure.persistent.repository.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qniao.dam.application.service.marriagebounty.repository.MarriageBountyOrderRepository; +import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder; +import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrderReward; +import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderProductRecord; +import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderProductSpecRecord; +import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRel; +import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRewardReceiveRecord; +import com.qniao.dam.infrastructure.persistent.dao.domain.*; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Objects; +import java.util.stream.Collectors; + +@Service +public class MarriageBountyOrderRepositoryImpl implements MarriageBountyOrderRepository { + + @Resource + private MarriageBountyOrderDao marriageBountyOrderDao; + @Resource + private MarriageBountyOrderRelDao marriageBountyOrderRelDao; + @Resource + private MarriageBountyOrderRewardDao marriageBountyOrderRewardDao; + @Resource + private MarriageBountyOrderRewardReceiveRecordDao marriageBountyOrderRewardReceiveRecordDao; + @Resource + private MarriageBountyOrderProductRecordDao marriageBountyOrderProductRecordDao; + @Resource + private MarriageBountyOrderProductSpecRecordDao marriageBountyOrderProductSpecRecordDao; + + @Override + public MarriageBountyOrder load(Long id) { + MarriageBountyOrder marriageBountyOrder = marriageBountyOrderDao.selectById(id); + if (Objects.nonNull(marriageBountyOrder)) { + marriageBountyOrder.setOrderRelList(marriageBountyOrderRelDao.selectList(new LambdaQueryWrapper() + .eq(MarriageBountyOrderRel::getMarriageBountyOrderId, id))); + marriageBountyOrder.setOrderRewardList(marriageBountyOrderRewardDao.selectList(new LambdaQueryWrapper() + .eq(MarriageBountyOrderReward::getMarriageBountyOrderId, id))); + marriageBountyOrder.getOrderRewardList().forEach(orderReward -> { + orderReward.setRewardReceiveRecordList(marriageBountyOrderRewardReceiveRecordDao.selectList(new LambdaQueryWrapper() + .eq(MarriageBountyOrderRewardReceiveRecord::getMarriageBountyOrderRewardId, orderReward.getId()))); + }); + marriageBountyOrder.setProductRecordList(marriageBountyOrderProductRecordDao.selectList(new LambdaQueryWrapper() + .eq(MarriageBountyOrderProductRecord::getMarriageBountyOrderId, id))); + marriageBountyOrder.getProductRecordList().forEach(productRecord -> { + productRecord.setProductSpecRecordList(marriageBountyOrderProductSpecRecordDao.selectList(new LambdaQueryWrapper() + .eq(MarriageBountyOrderProductSpecRecord::getMarriageBountyOrderProductRecordId, productRecord.getId()))); + ; + }); + } + return marriageBountyOrder; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public Long save(MarriageBountyOrder entity) { + if (Objects.isNull(entity.getId()) || Objects.isNull(marriageBountyOrderDao.selectById(entity.getId()))) { + marriageBountyOrderDao.insert(entity); + } else { + marriageBountyOrderDao.updateById(entity); + } + if (CollUtil.isNotEmpty(entity.getOrderRelList())) { + entity.getOrderRelList().forEach(orderRel -> { + orderRel.setMarriageBountyOrderId(entity.getId()); + marriageBountyOrderRelDao.insert(orderRel); + }); + } + if (CollUtil.isNotEmpty(entity.getProductRecordList())) { + entity.getProductRecordList().forEach(productRecord -> { + productRecord.setMarriageBountyOrderId(entity.getId()); + marriageBountyOrderProductRecordDao.insert(productRecord); + if (CollUtil.isNotEmpty(productRecord.getProductSpecRecordList())) { + productRecord.getProductSpecRecordList().forEach(productSpecRecord -> { + productSpecRecord.setMarriageBountyOrderProductRecordId(productRecord.getId()); + marriageBountyOrderProductSpecRecordDao.insert(productSpecRecord); + }); + } + }); + } + if (CollUtil.isNotEmpty(entity.getInsertOrderRewardList())) { + entity.getInsertOrderRewardList().forEach(orderReward -> { + orderReward.setMarriageBountyOrderId(entity.getId()); + marriageBountyOrderRewardDao.insert(orderReward); + }); + } + if (CollUtil.isNotEmpty(entity.getUpdateOrderRewardList())) { + entity.getUpdateOrderRewardList().forEach(orderReward -> { + orderReward.setMarriageBountyOrderId(entity.getId()); + marriageBountyOrderRewardDao.updateById(orderReward); + }); + } + if (CollUtil.isNotEmpty(entity.getDeleteOrderRewardList())) { + marriageBountyOrderRewardDao.deleteBatchIds(entity.getDeleteOrderRewardList().stream().map(MarriageBountyOrderReward::getId).collect(Collectors.toList())); + } + return entity.getId(); + } +}