无关风月
2025-01-11 ec73339e08669dc5a0d4ff93e6640f51473c08cd
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.feignClient.BalanceChangeRecordClient;
@@ -135,6 +136,7 @@
            orderGoodsVO.setType(goods.getType());
            orderGoodsVO.setGoodsPic(goods.getHomePagePicture());
            orderGoodsVO.setSellingPrice(goods.getSellingPrice());
            orderGoodsVO.setIntegral(goods.getIntegral());
            orderGoodsVO.setOriginalPrice(goods.getOriginalPrice());
            goodsList.add(orderGoodsVO);
        }
@@ -230,10 +232,9 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void writeOff(String code,Integer shopId) {
    public void writeOff(String id,Integer shopId) {
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
        Order order = orderMapper.selectOne(new LambdaQueryWrapper<Order>()
                .eq(Order::getId, code));
        Order order = orderMapper.selectById(id);
        boolean check = check(order, shopId, loginUserApplet.getUserid());
        if (!check){
            throw new ServiceException("订单不存在");
@@ -302,13 +303,46 @@
        for (OrderPageListVo orderPageListVo : list) {
            Long appUserId = orderPageListVo.getAppUserId();
            AppUser appUser = appUserClient.getAppUserById(appUserId);
            orderPageListVo.setUserName(appUser.getName());
            orderPageListVo.setPhone(appUser.getPhone());
            if(null != appUser){
                orderPageListVo.setUserName(appUser.getName());
                orderPageListVo.setPhone(appUser.getPhone());
            }
            RefundPass one = refundPassService.getOne(new LambdaQueryWrapper<RefundPass>().eq(RefundPass::getOrderId, orderPageListVo.getId()).eq(RefundPass::getDelFlag, 0).last(" order by create_time desc limit 0, 1"));
            orderPageListVo.setRefundPassId(null != one ? one.getId().toString() : null);
        }
        return pageInfo.setRecords(list);
    }
    /**
     * 小程序取消订单
     * @param orderId
     * @return
     */
    @Override
    public R cancel(Long orderId) {
        Order order = this.getById(orderId);
        if(null == order){
            return R.fail("取消失败");
        }
        Long userid = tokenService.getLoginUserApplet().getUserid();
        if(!order.getAppUserId().equals(userid)){
            return R.fail("取消失败");
        }
        if(!Arrays.asList(1, 2, 3).contains(order.getOrderStatus())){
            return R.fail("订单取消失败");
        }
        if(null != order.getAfterSaleTime() && LocalDateTime.now().isAfter(order.getAfterSaleTime())){
            return R.fail("订单取消失败");
        }
        order.setOrderStatus(5);
        R r = refundPayMoney(order);
        if(200 == r.getCode()){
            this.updateById(order);
        }
        return r;
    }
    /**
     * 确认发货操作
     * @param orderId
@@ -345,6 +379,9 @@
        Order order = this.getById(orderId);
        if(Arrays.asList(5, 6, 7).contains(order.getOrderStatus())){
            return R.fail("无效的操作");
        }
        if(LocalDateTime.now().isAfter(order.getAfterSaleTime())){
            return R.fail("订单取消失败");
        }
        order.setOrderStatus(5);
        R r = refundPayMoney(order);
@@ -422,8 +459,10 @@
                    //余额退款
                    OrderBalancePayment orderBalancePayment = orderBalancePaymentService.getOne(new LambdaQueryWrapper<OrderBalancePayment>().eq(OrderBalancePayment::getOrderId, order.getId()));
                    BigDecimal balance = appUser.getBalance();
                    appUser.setTotalRedPacketAmount(appUser.getTotalRedPacketAmount().add(orderBalancePayment.getRedPacketAmount()).setScale(2, RoundingMode.HALF_EVEN));
                    appUser.setTotalDistributionAmount(appUser.getTotalDistributionAmount().add(orderBalancePayment.getDistributionAmount()).setScale(2, RoundingMode.HALF_EVEN));
                    if(null != orderBalancePayment){
                        appUser.setTotalRedPacketAmount(appUser.getTotalRedPacketAmount().add(orderBalancePayment.getRedPacketAmount()).setScale(2, RoundingMode.HALF_EVEN));
                        appUser.setTotalDistributionAmount(appUser.getTotalDistributionAmount().add(orderBalancePayment.getDistributionAmount()).setScale(2, RoundingMode.HALF_EVEN));
                    }
                    appUser.setBalance(balance.add(expressAmount).setScale(2, RoundingMode.HALF_EVEN));
                    //构建账户余额流水明细
                    BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
@@ -667,6 +706,18 @@
            return R.fail("无效的操作");
        }
        order.setOrderStatus(4);
        R<BaseSetting> baseSettingR = baseSettingClient.getBaseSetting(5);
        if (R.isError(baseSettingR)) {
            return R.fail("售后设置获取失败");
        }
        BaseSetting baseSetting = baseSettingR.getData();
        if (baseSetting == null) {
            return R.fail("售后设置获取失败");
        }
        String content = baseSetting.getContent();
        JSONObject jsonObject = JSONObject.parseObject(content);
        Long days = jsonObject.getLong("days");
        order.setAfterSaleTime(LocalDateTime.now().plusDays(days));
        this.updateById(order);
        return R.ok();
    }
@@ -686,9 +737,11 @@
        orderInfo.setOrderStatus(order.getOrderStatus());
        orderInfo.setCreateTime(order.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
        orderInfo.setUserName(appUser.getName());
        orderInfo.setPhone(appUser.getPhone());
        orderInfo.setOrderType(order.getOrderType() == 1 ? "服务" : (StringUtils.isNotEmpty(order.getExpressJson()) ? "单品-快递配送" : "单品-自提"));
        if(null != appUser){
            orderInfo.setUserName(appUser.getName());
            orderInfo.setPhone(appUser.getPhone());
        }
        orderInfo.setOrderType(order.getOrderType() == 1 ? "服务" : (StringUtils.isNotEmpty(order.getAddressJson()) ? "单品-快递配送" : "单品-上门自提"));
        Shop shop = shopClient.getShopById(order.getShopId()).getData();
        if(null != shop){
            orderInfo.setShopName(shop.getName());
@@ -730,4 +783,27 @@
        orderInfo.setGoodsJson(JSON.toJSONString(goodsJson));
        return orderInfo;
    }
    /**
     * 获取商品销售数量
     * @param goodsId
     * @return
     */
    @Override
    public Integer getGoodsSaleNum(Integer goodsId, Integer type) {
        return this.baseMapper.getGoodsSaleNum(goodsId, type);
    }
    /**
     * 获取店铺订单数量
     * @param shopId
     * @param type
     * @return
     */
    @Override
    public Integer getShopSaleNum(Integer shopId, Integer type) {
        return this.baseMapper.getShopSaleNum(shopId, type);
    }
}