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