From 2e875a047868615e7bf3ba2ef236b5704981e717 Mon Sep 17 00:00:00 2001 From: Derran Date: Thu, 14 Mar 2024 19:59:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/aggregate/order/entity/Order.java | 34 ++++++++++++ .../aggregate/order/entity/OrderItem.java | 52 ++++++++++++++++++ .../aggregate/order/OrderAggregate.java | 7 +++ .../order/repository/OrderRepository.java | 7 +++ .../persistent/dao/domain/OrderDao.java | 7 +++ .../persistent/dao/domain/OrderItemDao.java | 7 +++ .../repository/impl/OrderRepositoryImpl.java | 54 +++++++++++++++++++ .../impl/ProductRepositoryImpl.java | 2 +- .../impl/ProductSpecRepositoryImpl.java | 2 +- 9 files changed, 170 insertions(+), 2 deletions(-) create mode 100644 dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java create mode 100644 dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/OrderItem.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/order/OrderAggregate.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/order/repository/OrderRepository.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/OrderDao.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/OrderItemDao.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/OrderRepositoryImpl.java diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java new file mode 100644 index 0000000..9e39423 --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java @@ -0,0 +1,34 @@ +package com.qniao.dam.domain.aggregate.order.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.domain.Entity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_order") +public class Order extends Entity { + + @ApiModelProperty("用户标识") + private Long userId; + + @ApiModelProperty("征婚资料标识") + private Long miId; + + @ApiModelProperty("结算金额") + private BigDecimal settlementAmount; + + @ApiModelProperty("付款时间") + private LocalDateTime paidTime; + + @ApiModelProperty("状态") + private Integer status; + + private transient List orderItemList; +} diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/OrderItem.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/OrderItem.java new file mode 100644 index 0000000..b000652 --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/OrderItem.java @@ -0,0 +1,52 @@ +package com.qniao.dam.domain.aggregate.order.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum; +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; +import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum; +import com.qniao.domain.Entity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_order_item") +public class OrderItem extends Entity { + + @ApiModelProperty("订单标识") + private Long orderId; + + @ApiModelProperty("产品标识") + private Long productId; + + @ApiModelProperty("产品规格标识") + private Long productSpecId; + + @ApiModelProperty("产品类型(实物、虚拟物品)") + private ProductTypeEnum productType; + + @ApiModelProperty("产品主分类") + private ProductMainCategoryEnum mainCategory; + + @ApiModelProperty("产品次分类") + private ProductSubCategoryEnum subCategory; + + @ApiModelProperty("产品标题") + private String productTitle; + + @ApiModelProperty("产品描述") + private String productDesc; + + @ApiModelProperty("结算单价") + private BigDecimal unitSettlementPrice; + + @ApiModelProperty("数量") + private Integer quantity; + + @ApiModelProperty("结算金额") + private BigDecimal settlementAmount; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/order/OrderAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/order/OrderAggregate.java new file mode 100644 index 0000000..d5666f2 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/order/OrderAggregate.java @@ -0,0 +1,7 @@ +package com.qniao.dam.domain.aggregate.order; + +import org.springframework.stereotype.Service; + +@Service +public class OrderAggregate { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/order/repository/OrderRepository.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/order/repository/OrderRepository.java new file mode 100644 index 0000000..990c6c1 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/order/repository/OrderRepository.java @@ -0,0 +1,7 @@ +package com.qniao.dam.domain.aggregate.order.repository; + +import com.qniao.dam.domain.aggregate.order.entity.Order; +import com.qniao.domain.Repository; + +public interface OrderRepository extends Repository { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/OrderDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/OrderDao.java new file mode 100644 index 0000000..c07221f --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/OrderDao.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.order.entity.Order; + +public interface OrderDao extends BaseMapper { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/OrderItemDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/OrderItemDao.java new file mode 100644 index 0000000..868833f --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/OrderItemDao.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.order.entity.OrderItem; + +public interface OrderItemDao extends BaseMapper { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/OrderRepositoryImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/OrderRepositoryImpl.java new file mode 100644 index 0000000..3927a12 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/OrderRepositoryImpl.java @@ -0,0 +1,54 @@ +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.domain.aggregate.order.entity.Order; +import com.qniao.dam.domain.aggregate.order.entity.OrderItem; +import com.qniao.dam.domain.aggregate.order.repository.OrderRepository; +import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao; +import com.qniao.dam.infrastructure.persistent.dao.domain.OrderItemDao; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Objects; + +public class OrderRepositoryImpl implements OrderRepository { + + @Resource + private OrderDao orderDao; + @Resource + private OrderItemDao orderItemDao; + + @Override + public Order load(Long id) { + Order order = orderDao.selectById(id); + if (Objects.nonNull(order)) { + order.setOrderItemList(orderItemDao.selectList(new LambdaQueryWrapper() + .eq(OrderItem::getOrderId, id))); + } + return order; + } + + + @Transactional(rollbackFor = Exception.class) + @Override + public Long save(Order entity) { + if (Objects.isNull(entity.getId()) || Objects.isNull(orderDao.selectById(entity.getId()))) { + orderDao.insert(entity); + if (CollUtil.isNotEmpty(entity.getOrderItemList())) { + entity.getOrderItemList().forEach(item -> { + item.setOrderId(entity.getId()); + orderItemDao.insert(item); + }); + } + } else { + orderDao.updateById(entity); + if (CollUtil.isNotEmpty(entity.getOrderItemList())) { + entity.getOrderItemList().forEach(item -> { + orderItemDao.updateById(item); + }); + } + } + return entity.getId(); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ProductRepositoryImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ProductRepositoryImpl.java index c9c1577..b3f80e8 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ProductRepositoryImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ProductRepositoryImpl.java @@ -21,7 +21,7 @@ public class ProductRepositoryImpl implements ProductRepository { @Override public Long save(Product entity) { - if (Objects.isNull(entity) || Objects.isNull(productDao.selectById(entity.getId()))) { + if (Objects.isNull(entity.getId()) || Objects.isNull(productDao.selectById(entity.getId()))) { productDao.insert(entity); } else { productDao.updateById(entity); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ProductSpecRepositoryImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ProductSpecRepositoryImpl.java index ebb144b..644152f 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ProductSpecRepositoryImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ProductSpecRepositoryImpl.java @@ -35,7 +35,7 @@ public class ProductSpecRepositoryImpl implements ProductSpecRepository { @Transactional(rollbackFor = Exception.class) @Override public Long save(ProductSpec entity) { - if (Objects.isNull(entity) || Objects.isNull(productSpecDao.selectById(entity.getId()))) { + if (Objects.isNull(entity.getId()) || Objects.isNull(productSpecDao.selectById(entity.getId()))) { productSpecDao.insert(entity); } else { productSpecDao.updateById(entity);