|
|
|
@ -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<OrderItem>() |
|
|
|
.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(); |
|
|
|
} |
|
|
|
} |