Browse Source

基础配置

master
张彭杰 1 year ago
parent
commit
d1f6cc7c5e
25 changed files with 475 additions and 3 deletions
  1. 2
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderTypeEnum.java
  2. 1
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java
  3. 38
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java
  4. 35
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrderReward.java
  5. 22
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderProductRecord.java
  6. 29
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderProductSpecRecord.java
  7. 20
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRel.java
  8. 29
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRewardReceiveRecord.java
  9. 4
      dating-agency-mall-server/pom.xml
  10. 6
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java
  11. 4
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderAggregate.java
  12. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/repository/MarriageBountyOrderRepository.java
  13. 10
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java
  14. 76
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/config/MqBeanFactoryPostProcessor.java
  15. 27
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/config/RabbitmqConfig.java
  16. 6
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java
  17. 9
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java
  18. 9
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqRoutingKey.java
  19. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderDao.java
  20. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderProductRecordDao.java
  21. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderProductSpecRecordDao.java
  22. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderRelDao.java
  23. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderRewardDao.java
  24. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageBountyOrderRewardReceiveRecordDao.java
  25. 102
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/MarriageBountyOrderRepositoryImpl.java

2
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, "悬赏招亲");

1
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, "发布悬赏招亲"),

38
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<MarriageBountyOrder> {
@ApiModelProperty("用户标识")
private Long userId;
@ApiModelProperty("征婚资料标识")
private Long miId;
@ApiModelProperty("状态")
private Integer status;
@ApiModelProperty("悬赏招亲订单标识关系")
private transient List<MarriageBountyOrderRel> orderRelList;
@ApiModelProperty("悬赏招亲订单")
private transient List<MarriageBountyOrderProductRecord> productRecordList;
@ApiModelProperty("悬赏招亲订单奖励")
private transient List<MarriageBountyOrderReward> orderRewardList;
private transient List<MarriageBountyOrderReward> insertOrderRewardList;
private transient List<MarriageBountyOrderReward> updateOrderRewardList;
private transient List<MarriageBountyOrderReward> deleteOrderRewardList;
}

35
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<MarriageBountyOrderReward> {
@ApiModelProperty("悬赏招亲订单标识")
private Long marriageBountyOrderId;
@ApiModelProperty("奖励分类")
private ProductSubCategoryEnum rewardCategory;
@ApiModelProperty("奖励金额")
private BigDecimal rewardAmount;
@ApiModelProperty("是否领取")
private Boolean isReceive;
@ApiModelProperty("悬赏招亲订单奖励领取记录")
private transient List<MarriageBountyOrderRewardReceiveRecord> rewardReceiveRecordList;
}

22
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<MarriageBountyOrderProductRecord> {
@ApiModelProperty("悬赏招亲订单标识")
private Long marriageBountyOrderId;
@ApiModelProperty("悬赏招亲订单产品规格记录")
private transient List<MarriageBountyOrderProductSpecRecord> productSpecRecordList;
}

29
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<MarriageBountyOrderProductSpecRecord> {
@ApiModelProperty("悬赏招亲订单产品记录标识")
private Long MarriageBountyOrderProductRecordId;
@ApiModelProperty("产品次分类")
private ProductSubCategoryEnum subCategory;
@ApiModelProperty("原价")
private BigDecimal unitOriginalPrice;
@ApiModelProperty("售价")
private BigDecimal unitSellingPrice;
}

20
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<MarriageBountyOrderRel> {
@ApiModelProperty("悬赏招亲订单标识")
private Long marriageBountyOrderId;
@ApiModelProperty("订单标识")
private Long orderId;
}

29
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<MarriageBountyOrderRewardReceiveRecord> {
@ApiModelProperty("悬赏招亲订单奖励标识")
private Long marriageBountyOrderRewardId;
@ApiModelProperty("奖励类型")
private RewardTypeEnum rewardType;
@ApiModelProperty("领取人标识")
private Long receiver;
@ApiModelProperty("领取金额")
private BigDecimal receivedAmount;
}

4
dating-agency-mall-server/pom.xml

@ -44,6 +44,10 @@
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
</dependency>
<dependency>
<groupId>com.qniao</groupId>
<artifactId>rabbitmq-starter</artifactId>
</dependency>
<dependency>
<groupId>com.qniao</groupId>
<artifactId>common-utils</artifactId>

6
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<Right> 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("订单已完成事件处理异常");
}

4
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 {
}

7
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<MarriageBountyOrder,Long> {
}

10
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);

76
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<String, Class<? extends AbstractExchange>> exchangeType = new HashMap<String, Class<? extends AbstractExchange>>() {
{
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<? extends AbstractExchange> exchangeClass = exchangeType.get(exchangeTypeName);
if (exchangeClass != null) {
Constructor<? extends AbstractExchange> 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");
}
}
}

27
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));
}
}

6
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 {
}

9
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 {
}

9
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 {
}

7
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<MarriageBountyOrder> {
}

7
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<MarriageBountyOrderProductRecord> {
}

7
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<MarriageBountyOrderProductSpecRecord> {
}

7
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<MarriageBountyOrderRel> {
}

7
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<MarriageBountyOrderReward> {
}

7
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<MarriageBountyOrderRewardReceiveRecord> {
}

102
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<MarriageBountyOrderRel>()
.eq(MarriageBountyOrderRel::getMarriageBountyOrderId, id)));
marriageBountyOrder.setOrderRewardList(marriageBountyOrderRewardDao.selectList(new LambdaQueryWrapper<MarriageBountyOrderReward>()
.eq(MarriageBountyOrderReward::getMarriageBountyOrderId, id)));
marriageBountyOrder.getOrderRewardList().forEach(orderReward -> {
orderReward.setRewardReceiveRecordList(marriageBountyOrderRewardReceiveRecordDao.selectList(new LambdaQueryWrapper<MarriageBountyOrderRewardReceiveRecord>()
.eq(MarriageBountyOrderRewardReceiveRecord::getMarriageBountyOrderRewardId, orderReward.getId())));
});
marriageBountyOrder.setProductRecordList(marriageBountyOrderProductRecordDao.selectList(new LambdaQueryWrapper<MarriageBountyOrderProductRecord>()
.eq(MarriageBountyOrderProductRecord::getMarriageBountyOrderId, id)));
marriageBountyOrder.getProductRecordList().forEach(productRecord -> {
productRecord.setProductSpecRecordList(marriageBountyOrderProductSpecRecordDao.selectList(new LambdaQueryWrapper<MarriageBountyOrderProductSpecRecord>()
.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();
}
}
Loading…
Cancel
Save