KKSU
2025-02-07 d727e9200da3a35b6d4af7bb3f11ba13a99e3c41
refactor(mall): 重构订单相关服务实现

- 使用 ValidateEntityUtils 重构了用户、地址、订单等实体的验证逻辑
- 移除了冗余的注释代码
- 简化了库存更新和订单支付的逻辑
1 files modified
37 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 37 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -93,13 +93,12 @@
    @Transactional(rollbackFor = Exception.class)
    public Long createOrder(AddOrderDto addOrderDto) {
        Long memberId = LoginUserUtil.getLoginUser().getId();
        MallMember member = mallMemberMapper.selectById(memberId);
        MallMember member = ValidateEntityUtils
                .ensureColumnReturnEntity(memberId, MallMember::getId, mallMemberMapper::selectOne, "用户不存在");
        //订单范围内才允许下单
        MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId());
        if(ObjectUtil.isEmpty(address)){
            throw new FebsException("请重新选择收货地址信息");
        }
        MallAddressInfo address = ValidateEntityUtils
                .ensureColumnReturnEntity(addOrderDto.getAddressId(), MallAddressInfo::getId, mallAddressInfoMapper::selectOne, "收货地址信息不存在");
        String orderNo = MallUtils.getOrderNum();
        MallOrderInfo orderInfo = new MallOrderInfo();
@@ -173,18 +172,6 @@
                        throw new FebsException("购买商品或sku不存在");
                    }
//                    if("样品".equals(sku.getSample())){
//                        List<MallOrderItem> items = mallOrderItemMapper.selectItemBySkuIdUnCancel(sku.getId(), member.getId());
//                        if (CollUtil.isNotEmpty(items)) {
//                            throw new FebsException("样品一个用户只能购买一次");
//                        }
//                        Integer cnt = item.getCnt();
//                        if(1 < cnt){
//                            throw new FebsException("样品只能购买一件");
//                        }
//
//                    }
                    if (sku.getStock() < item.getCnt()) {
                        throw new FebsException(sku.getSkuName() + "库存不足");
                    }
@@ -243,9 +230,7 @@
                    total = total.add(amount);
                    //规格的库存销量
                    Integer skuResult = mallGoodsSkuMapper.upDateStockAndVolumeBySkuId(sku.getId(),item.getCnt());
                    if(1 != skuResult){
                        throw new FebsException(sku.getSkuName() + "库存不足");
                    }
                    ValidateEntityUtils.ensureEqual(1,skuResult,sku.getSkuName() + "库存不足");
                    if (addOrderDto.getType() == 1) {
                        mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId());
                    }
@@ -501,14 +486,10 @@
    @Transactional(rollbackFor = Exception.class)
    public Map<String, Object> payOrder(PayOrderDto payOrderDto) {
        MallMember member = LoginUserUtil.getLoginUser();
        MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), payOrderDto.getId());
        if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) {
            throw new FebsException("订单不存在");
        }
        if (OrderStatusEnum.WAIT_PAY.getValue() != orderInfo.getStatus()) {
            throw new FebsException("订单状态不能支付");
        }
        MallOrderInfo orderInfo = ValidateEntityUtils
                .ensureColumnReturnEntity(payOrderDto.getId(), MallOrderInfo::getId, this.baseMapper::selectOne, "订单不存在");
        ValidateEntityUtils.ensureEqual(member.getId(),orderInfo.getMemberId(),"订单不存在");
        ValidateEntityUtils.ensureEqual(OrderStatusEnum.WAIT_PAY.getValue(),orderInfo.getStatus(),"订单状态不能支付");
        String payResultStr = "";
        String wxResultStr = "";