下单库存变化,售后库存变化

pull/1/head
sjm 2 years ago
parent b87ecf6fd6
commit 9604babf82

@ -62,6 +62,7 @@ import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@ -159,6 +160,9 @@ public class H5OrderService {
if (Constants.PublishStatus.UNDERCARRIAGE.equals(product.getPublishStatus())){ if (Constants.PublishStatus.UNDERCARRIAGE.equals(product.getPublishStatus())){
throw new RuntimeException("商品" + product.getName() + "已下架"); throw new RuntimeException("商品" + product.getName() + "已下架");
} }
if (sku.getStock() < skuQuantityMap.get(sku.getId())) {
throw new RuntimeException("库存不足");
}
productTotalAmount = productTotalAmount.add(sku.getPrice().multiply(BigDecimal.valueOf(skuQuantityMap.get(sku.getId())))); productTotalAmount = productTotalAmount.add(sku.getPrice().multiply(BigDecimal.valueOf(skuQuantityMap.get(sku.getId()))));
orderTotalAmount = orderTotalAmount.add(sku.getPrice().multiply(BigDecimal.valueOf(skuQuantityMap.get(sku.getId())))); orderTotalAmount = orderTotalAmount.add(sku.getPrice().multiply(BigDecimal.valueOf(skuQuantityMap.get(sku.getId()))));
dto.setSku(sku); dto.setSku(sku);
@ -206,6 +210,10 @@ public class H5OrderService {
} }
// 保存orderItem // 保存orderItem
orderItemService.saveOrderItem(member, optTime, orderId, skuList); orderItemService.saveOrderItem(member, optTime, orderId, skuList);
skuList.forEach(item -> {
//减少sku的库存
skuMapper.updateStockById(item.getSkuId(),LocalDateTime.now(),item.getQuantity());
});
// 保存订单操作记录 // 保存订单操作记录
OrderOperateHistory orderOperateHistory = new OrderOperateHistory(); OrderOperateHistory orderOperateHistory = new OrderOperateHistory();
orderOperateHistory.setOrderId(orderId); orderOperateHistory.setOrderId(orderId);
@ -262,6 +270,9 @@ public class H5OrderService {
if (Constants.PublishStatus.UNDERCARRIAGE.equals(product.getPublishStatus())){ if (Constants.PublishStatus.UNDERCARRIAGE.equals(product.getPublishStatus())){
throw new RuntimeException("商品" + product.getName() + "已下架"); throw new RuntimeException("商品" + product.getName() + "已下架");
} }
if (sku.getStock() < quantityMap.get(sku.getId())) {
throw new RuntimeException("库存不足");
}
BigDecimal addAmount = sku.getPrice().multiply(BigDecimal.valueOf(dto.getQuantity())); BigDecimal addAmount = sku.getPrice().multiply(BigDecimal.valueOf(dto.getQuantity()));
//由于目前没有运费等数据,暂时订单总金额=商品总金额了 //由于目前没有运费等数据,暂时订单总金额=商品总金额了
productTotalAmount = productTotalAmount.add(addAmount); productTotalAmount = productTotalAmount.add(addAmount);
@ -415,6 +426,13 @@ public class H5OrderService {
if (orderList.size() < request.getIdList().size()){ if (orderList.size() < request.getIdList().size()){
throw new RuntimeException("未查询到订单信息"); throw new RuntimeException("未查询到订单信息");
} }
//查orderItem
QueryWrapper<OrderItem> qw = new QueryWrapper<>();
qw.in("order_id", request.getIdList());
List<OrderItem> orderItem = orderItemMapper.selectList(qw);
if (CollectionUtil.isEmpty(orderItem)) {
throw new RuntimeException("未查询到订单信息");
}
long count = orderList.stream().filter(it -> !Constants.H5OrderStatus.UN_PAY.equals(it.getStatus())).count(); long count = orderList.stream().filter(it -> !Constants.H5OrderStatus.UN_PAY.equals(it.getStatus())).count();
if (count > 0){ if (count > 0){
throw new RuntimeException("订单状态已更新,请刷新页面"); throw new RuntimeException("订单状态已更新,请刷新页面");
@ -434,12 +452,19 @@ public class H5OrderService {
history.setUpdateBy(userId); history.setUpdateBy(userId);
history.setUpdateTime(optDate); history.setUpdateTime(optDate);
addHistoryList.add(history); addHistoryList.add(history);
}); });
//取消订单 //取消订单
int rows = orderMapper.cancelBatch(orderList); int rows = orderMapper.cancelBatch(orderList);
if (rows < 1){ if (rows < 1){
throw new RuntimeException("更改订单状态失败"); throw new RuntimeException("更改订单状态失败");
} }
orderItem.stream().collect(Collectors.groupingBy(it->it.getSkuId())).forEach((k,v)->{
AtomicReference<Integer> totalCount = new AtomicReference<>(0);
v.forEach(it-> totalCount.updateAndGet(v1 -> v1 + it.getQuantity()));
skuMapper.updateStockById(k, optDate, -1 * totalCount.get());
});
//创建订单操作记录 //创建订单操作记录
boolean flag = orderOperateHistoryService.saveBatch(addHistoryList); boolean flag = orderOperateHistoryService.saveBatch(addHistoryList);
if (!flag){ if (!flag){

@ -19,6 +19,7 @@ import com.cyl.manager.oms.mapper.OrderOperateHistoryMapper;
import com.cyl.manager.oms.pojo.request.DealWithAftersaleRequest; import com.cyl.manager.oms.pojo.request.DealWithAftersaleRequest;
import com.cyl.manager.oms.pojo.request.ManagerAftersaleOrderRequest; import com.cyl.manager.oms.pojo.request.ManagerAftersaleOrderRequest;
import com.cyl.manager.oms.pojo.vo.*; import com.cyl.manager.oms.pojo.vo.*;
import com.cyl.manager.pms.mapper.SkuMapper;
import com.cyl.manager.ums.domain.Member; import com.cyl.manager.ums.domain.Member;
import com.cyl.manager.ums.mapper.MemberMapper; import com.cyl.manager.ums.mapper.MemberMapper;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
@ -58,6 +59,8 @@ public class AftersaleService {
@Autowired @Autowired
private OrderOperateHistoryConvert historyConvert; private OrderOperateHistoryConvert historyConvert;
@Autowired
private SkuMapper skuMapper;
/** /**
* *
@ -274,8 +277,17 @@ public class AftersaleService {
orderWrapper.set("aftersale_status", OrderRefundStatus.NO_REFUND.getType()); orderWrapper.set("aftersale_status", OrderRefundStatus.NO_REFUND.getType());
optHistory.setOrderStatus(14); optHistory.setOrderStatus(14);
}else if (ifAgree){ }else if (ifAgree){
aftersaleWrapper.set("status", AftersaleStatus.WAIT.getType()); //如果是未发货的情况下,直接增加库存
orderWrapper.set("aftersale_status", OrderRefundStatus.WAIT.getType()); if (order.getStatus() == 1) {
OrderItem orderItem = orderItemMapper.selectOne(new QueryWrapper<OrderItem>().eq("order_id", order.getId()));
skuMapper.updateStockById(orderItem.getSkuId(),LocalDateTime.now(),-1*orderItem.getQuantity());
//todo 微信直接退款
aftersaleWrapper.set("status", AftersaleStatus.SUCCESS.getType());
orderWrapper.set("aftersale_status", OrderRefundStatus.SUCCESS.getType());
} else {
aftersaleWrapper.set("status", AftersaleStatus.WAIT.getType());
orderWrapper.set("aftersale_status", OrderRefundStatus.WAIT.getType());
}
optHistory.setOrderStatus(12); optHistory.setOrderStatus(12);
} }
int rows = aftersaleMapper.update(null, aftersaleWrapper); int rows = aftersaleMapper.update(null, aftersaleWrapper);

@ -1,8 +1,10 @@
package com.cyl.manager.pms.mapper; package com.cyl.manager.pms.mapper;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cyl.manager.pms.domain.Sku; import com.cyl.manager.pms.domain.Sku;
import org.apache.ibatis.annotations.Param;
/** /**
* skuMapper * skuMapper
@ -17,4 +19,6 @@ public interface SkuMapper extends BaseMapper<Sku> {
* @return sku * @return sku
*/ */
List<Sku> selectByEntity(Sku sku); List<Sku> selectByEntity(Sku sku);
int updateStockById(@Param("skuId")Long skuId, @Param("optDate")LocalDateTime optDate, @Param("quantity")Integer quantity);
} }

@ -24,6 +24,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectSkuVo"> <sql id="selectSkuVo">
select id, product_id, out_sku_id, price, pic, sp_data, create_by, create_time, update_by, update_time from pms_sku select id, product_id, out_sku_id, price, pic, sp_data, create_by, create_time, update_by, update_time from pms_sku
</sql> </sql>
<update id="updateStockById">
update
pms_sku
set
stock = stock - #{quantity},
update_time = #{optDate}
where id = #{skuId}
</update>
<select id="selectByEntity" parameterType="Sku" resultMap="SkuResult"> <select id="selectByEntity" parameterType="Sku" resultMap="SkuResult">
<include refid="selectSkuVo"/> <include refid="selectSkuVo"/>

Loading…
Cancel
Save