|
|
@@ -16,13 +16,24 @@
|
|
|
*/
|
|
|
package com.store.goods.service.impl;
|
|
|
|
|
|
-import com.store.goods.entity.Order;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
+import com.store.goods.entity.*;
|
|
|
+import com.store.goods.mapper.*;
|
|
|
import com.store.goods.vo.OrderVO;
|
|
|
-import com.store.goods.mapper.OrderMapper;
|
|
|
import com.store.goods.service.IOrderService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import org.springblade.core.secure.utils.AuthUtil;
|
|
|
+import org.springblade.core.tool.utils.Func;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Random;
|
|
|
|
|
|
/**
|
|
|
* 订单表 服务实现类
|
|
|
@@ -31,11 +42,124 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
* @since 2021-11-24
|
|
|
*/
|
|
|
@Service
|
|
|
-public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService {
|
|
|
+public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService
|
|
|
+{
|
|
|
+ @Autowired
|
|
|
+ private OrderAddressMapper addressMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OrderStatusChangeMapper orderStatusChangeMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OrderStockChangeMapper orderStockChangeMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OrderItemsMapper orderItemsMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private GoodsItemsMapper goodsItemsMapper;
|
|
|
|
|
|
@Override
|
|
|
public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) {
|
|
|
return page.setRecords(baseMapper.selectOrderPage(page, order));
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void createOrder(Order order)
|
|
|
+ {
|
|
|
+ //获取订单商品信息
|
|
|
+ List<OrderItems> itemList = order.getItemList();
|
|
|
+ if(CollectionUtils.isEmpty(itemList))
|
|
|
+ {
|
|
|
+ throw new SecurityException("订单信息不能为空");
|
|
|
+ }
|
|
|
+ //检查地址是否正确
|
|
|
+ OrderAddress orderAddress = addressMapper.selectById(order.getAddressId());
|
|
|
+ if(orderAddress==null || orderAddress.getUserId()!=order.getUserId())
|
|
|
+ {
|
|
|
+ throw new SecurityException("地址信息不正确");
|
|
|
+ }
|
|
|
+ //新增订单
|
|
|
+ order.setCreateTime(new Date());
|
|
|
+ order.setTenantId(AuthUtil.getTenantId());
|
|
|
+ order.setCreateUser(AuthUtil.getUserId());
|
|
|
+ order.setOrderStatus(order.getOrderStatus());
|
|
|
+ order.setOrderNo(String.valueOf(System.currentTimeMillis()));
|
|
|
+ baseMapper.insert(order);
|
|
|
+ //新增订单下的物品明细
|
|
|
+ itemList.forEach(e->{
|
|
|
+ e.setOrderId(order.getId());
|
|
|
+ e.setItemsId(e.getItemsId());
|
|
|
+ e.setNumber(e.getNumber());
|
|
|
+ e.setPrice(e.getPrice());
|
|
|
+ e.setTotalPrice(e.getTotalPrice());
|
|
|
+ e.setCreateTime(new Date());
|
|
|
+ e.setTenantId(AuthUtil.getTenantId());
|
|
|
+ e.setCreateUser(AuthUtil.getUserId());
|
|
|
+ e.setIsDeleted(0);
|
|
|
+ orderItemsMapper.insert(e);
|
|
|
+
|
|
|
+ //查看库存
|
|
|
+ GoodsItems goodsItems = goodsItemsMapper.selectById(e.getItemsId());
|
|
|
+ if(goodsItems==null || goodsItems.getStock().compareTo(e.getNumber())==-1)
|
|
|
+ {
|
|
|
+ throw new SecurityException("扣除商品库存失败");
|
|
|
+ }
|
|
|
+ //原库存
|
|
|
+ BigDecimal originStock = goodsItems.getStock();
|
|
|
+ //新库存
|
|
|
+ BigDecimal newStock=originStock.subtract(e.getNumber());
|
|
|
+ //增加库存变动记录
|
|
|
+ OrderStockChange stockChange=new OrderStockChange();
|
|
|
+ stockChange.setBeforeStock(originStock);
|
|
|
+ stockChange.setAfterStock(newStock);
|
|
|
+ stockChange.setItemId(e.getItemsId());
|
|
|
+ stockChange.setOrderNo(order.getOrderNo());
|
|
|
+ stockChange.setUserId(AuthUtil.getUserId());
|
|
|
+ stockChange.setOperationType(1);
|
|
|
+ stockChange.setUserRealName(AuthUtil.getUserName());
|
|
|
+ stockChange.setCreateTime(new Date());
|
|
|
+ stockChange.setTenantId(AuthUtil.getTenantId());
|
|
|
+ stockChange.setCreateUser(AuthUtil.getUserId());
|
|
|
+ orderStockChangeMapper.insert(stockChange);
|
|
|
+ //开始扣库存
|
|
|
+ goodsItems.setStock(newStock);
|
|
|
+ goodsItems.setUpdateTime(new Date());
|
|
|
+ goodsItems.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ goodsItemsMapper.updateById(goodsItems);
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void updateOrderStatus(Order order)
|
|
|
+ {
|
|
|
+ Order one = baseMapper.selectById(order.getId());
|
|
|
+ if(!AuthUtil.getTenantId().equals(one.getTenantId()))
|
|
|
+ {
|
|
|
+ throw new SecurityException("非自家租户禁止操作");
|
|
|
+ }
|
|
|
+ //修改订单状态
|
|
|
+ one.setOrderStatus(order.getOrderStatus());
|
|
|
+ baseMapper.updateById(one);
|
|
|
+ //记录变更记录
|
|
|
+ OrderStatusChange orderStatusChange=new OrderStatusChange();
|
|
|
+ orderStatusChange.setBeforeStatus(one.getOrderStatus());
|
|
|
+ orderStatusChange.setAfterStatus(order.getOrderStatus());
|
|
|
+ orderStatusChange.setOrderNo(one.getOrderNo());
|
|
|
+ orderStatusChange.setUserId(AuthUtil.getUserId());
|
|
|
+ orderStatusChange.setUserRealName(AuthUtil.getUserName());
|
|
|
+ orderStatusChange.setCreateTime(new Date());
|
|
|
+ orderStatusChange.setTenantId(AuthUtil.getTenantId());
|
|
|
+ orderStatusChange.setCreateUser(AuthUtil.getUserId());
|
|
|
+ orderStatusChangeMapper.insert(orderStatusChange);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|