Commit a0129d5b authored by shiyu's avatar shiyu

限购排除已取消订单

parent 055a150d
......@@ -42,6 +42,14 @@ public interface DistributionOrderDao {
List<DistributionOrder> findByBuyerId(long buyerId);
/**
* 根据买家id查询历史有效购买记录,排除已取消的订单
* @param buyerId
* @return
*/
List<DistributionOrder> findValidOrderByBuyerId(long buyerId);
/**
* 根据卖家id查询
* @param sellerId
......
......@@ -51,6 +51,17 @@ public class DistributionOrderDaoImpl implements DistributionOrderDao {
return distributionOrderMapper.selectByExample(example);
}
@Override
public List<DistributionOrder> findValidOrderByBuyerId(long buyerId) {
DistributionOrderExample example = new DistributionOrderExample();
DistributionOrderExample.Criteria criteria = example.createCriteria();
criteria.andBuyerIdEqualTo(buyerId);
//排除已取消的订单
criteria.andStateNotEqualTo(101);
return distributionOrderMapper.selectByExample(example);
}
@Override
public List<DistributionOrder> findBySellerId(long sellerId) {
DistributionOrderExample example = new DistributionOrderExample();
......
......@@ -90,13 +90,13 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
int buyLimitNum = supplierItem.getBuyLimitNum() == null ? 5 : supplierItem.getBuyLimitNum();
//检查该购买者是否超出限购数量
//1.查询购买者对该商品的历史购买记录
List<DistributionOrder> distributionOrders = distributionOrderDao.findByBuyerId(dto.getBuyerId());
List<DistributionOrder> distributionOrders = distributionOrderDao.findValidOrderByBuyerId(dto.getBuyerId());
int buyNum = 0;
if (!CollectionUtils.isEmpty(distributionOrders)) {
buyNum = distributionOrders.stream().mapToInt(DistributionOrder::getItemNum).sum();
}
if (buyNum + dto.getItemNum() > buyLimitNum) {
return Result.failed("超出购买上限,不能下单");
return Result.failed("超出购买上限" + buyLimitNum + "件");
}
String distributionOrderId = IdUtils.getOrderNumber(DISTRIBUTION_ORDER_PREFIX);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment