huliguo
2025-04-08 02d5cf98ab127c3464ecc6fb9342b2d700e4a0de
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -107,7 +107,7 @@
    private RedisTemplate redisTemplate;
    @Resource
    private  ShopBalanceStatment shopBalanceStatment;
    private  ShopBalanceStatementClient shopBalanceStatementClient;
    @Resource
    private SystemConfigClient systemConfigClient;
@@ -401,9 +401,9 @@
        }
        if (0 != order.getPoint()) {//使用的积分是否为0
            Integer lavePoint = appUser.getLavePoint();
            Integer lavePoint = appUser.getAvailablePoint();
            //积分退款
            appUser.setLavePoint(appUser.getLavePoint() + order.getPoint());
            appUser.setAvailablePoint(appUser.getAvailablePoint() + order.getPoint());
            appUser.setAvailablePoint(appUser.getAvailablePoint() + order.getPoint());
            UserPoint userPoint1 = new UserPoint();
            userPoint1.setType(11);
@@ -414,7 +414,6 @@
                UserPoint userPoint = data.get(0);
                transferablePoint = Integer.valueOf(userPoint.getExtention());
            }
            appUser.setTransferablePoint(appUser.getTransferablePoint() + transferablePoint);
            //构建积分流水明细
            if (order.getPoint() > 0) {
@@ -422,7 +421,7 @@
                userPoint.setType(11);
                userPoint.setHistoricalPoint(lavePoint);
                userPoint.setVariablePoint(order.getPoint());
                userPoint.setBalance(appUser.getLavePoint());
                userPoint.setBalance(appUser.getAvailablePoint());
                userPoint.setCreateTime(LocalDateTime.now());
                userPoint.setAppUserId(order.getAppUserId());
                userPoint.setObjectId(order.getId());
@@ -665,7 +664,7 @@
    /**
     * 订单支付
     *
     * todo 用户积分流水情况
     */
    @Override
    public R orderPayment(OrderPayment orderPayment) {
@@ -742,6 +741,7 @@
        }else{
            //积分支付
            orderPoint=goods.getIntegral();
            orderMoney = goods.getSellingPrice();
            Integer availablePoint = appUser.getAvailablePoint();//用户可用积分
            if(availablePoint.compareTo(orderPoint) < 0){
                return R.fail("账户可用积分不足");
@@ -793,30 +793,21 @@
        //判断积分是否为零,积分支付
        if (0 != order.getPoint()){
            //积分支付
            Integer lavePoint = appUser.getLavePoint();
            Integer lavePoint = appUser.getAvailablePoint();
            //扣减订单支付积分
            appUser.setLavePoint(appUser.getLavePoint() - orderPoint);
            appUser.setAvailablePoint(appUser.getAvailablePoint() - orderPoint);
            //可转赠积分
            Integer transferablePoint = appUser.getTransferablePoint();
            Integer tra = 0;
            if(transferablePoint > 0){
                tra = transferablePoint - orderPoint;
                appUser.setTransferablePoint(tra >= 0 ? tra : 0);
            }else{
                appUser.setTransferablePoint(appUser.getTransferablePoint() - orderPoint);
            }
            appUser.setAvailablePoint(appUser.getAvailablePoint() - orderPoint);//剩余积分
            appUser.setAvailablePoint(appUser.getAvailablePoint() - orderPoint);//可用积分
            //构建积分流水记录
            if(orderPoint > 0){
                UserPoint userPoint = new UserPoint();
                userPoint.setType(11);
                userPoint.setHistoricalPoint(lavePoint);
                userPoint.setVariablePoint(orderPoint);
                userPoint.setBalance(appUser.getLavePoint());
                userPoint.setBalance(appUser.getAvailablePoint());
                userPoint.setCreateTime(LocalDateTime.now());
                userPoint.setAppUserId(appUser.getId());
                userPoint.setObjectId(order.getId());
                userPoint.setExtention((tra >= 0 ? orderPoint : transferablePoint) + "");
                userPointClient.saveUserPoint(userPoint);
            }
@@ -845,14 +836,34 @@
        }
        //不需要微信支付,直接修改订支付状态
        //积分支付,不需要微信支付,直接修改订支付状态
        order.setPayStatus(2);
        orderMapper.updateById(order);
        //商品销量增加
        goodsClient.editGoodsNum(orderGood.getGoodsId(), 1);
        //todo 门店增加冻结资金
        //门店增加冻结资金 即增加金额, 冻结资金=余额-可用资金
        Shop shop = shopClient.getShopById(order.getShopId()).getData();
        BigDecimal historicalBalance=shop.getBalance();//历史余额
        BigDecimal balance=shop.getBalance().add(goods.getSellingPrice());//变动后余额
        shop.setBalance(balance);
        shop.setOrderNumber(shop.getOrderNumber()+1);
        shopClient.updateShop(shop);
        //门店余额流水记录
        ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
        shopBalanceStatement.setShopId(shop.getId());
        shopBalanceStatement.setShopName(shop.getName());
        shopBalanceStatement.setShopManagerName(shop.getShopManager());
        shopBalanceStatement.setPhone(shop.getPhone());
        shopBalanceStatement.setType(5);//变更类型,订单收入
        shopBalanceStatement.setHistoricalBalance(historicalBalance);
        shopBalanceStatement.setVariableAmount(goods.getSellingPrice());
        shopBalanceStatement.setCreateTime(LocalDateTime.now());
        shopBalanceStatement.setBalance(balance);
        shopBalanceStatement.setCreateUserId(appUser.getId());
        shopBalanceStatement.setObjectId(order.getId());
        shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatement);
        return R.ok(order.getId().toString());
    }
@@ -881,20 +892,39 @@
        order.setSerialNumber(r7TrxNo);
        orderMapper.updateById(order);
        //商店余额改变,增加冻结余额
        Shop shop = shopClient.getShopById(order.getShopId()).getData();
        //商品销量增加
        OrderGood orderGood = orderGoodService.getOne(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, order.getId()));
        //商品销量增加
        goodsClient.editGoodsNum(orderGood.getGoodsId(), 1);
        //门店增加冻结资金 即增加金额, 冻结资金=余额-可用资金
        Shop shop = shopClient.getShopById(order.getShopId()).getData();
        BigDecimal historicalBalance=shop.getBalance();//历史余额
        BigDecimal balance=shop.getBalance().add(order.getTotalAmount());//变动后余额
        shop.setBalance(balance);
        shop.setOrderNumber(shop.getOrderNumber()+1);
        shopClient.updateShop(shop);
        //门店金额变动记录
        ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
        shopBalanceStatement.setShopId(shop.getId());
        shopBalanceStatement.setShopName(shop.getName());
        shopBalanceStatement.setShopManagerName(shop.getShopManager());
        shopBalanceStatement.setPhone(shop.getPhone());
        shopBalanceStatement.setType(5);//变更类型,订单收入
        shopBalanceStatement.setHistoricalBalance(historicalBalance);
        shopBalanceStatement.setVariableAmount(order.getTotalAmount());
        shopBalanceStatement.setCreateTime(LocalDateTime.now());
        shopBalanceStatement.setBalance(balance);
        shopBalanceStatement.setCreateUserId(appUser.getId());
        shopBalanceStatement.setObjectId(order.getId());
        shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatement);
        return R.ok();
    }
    /**
     * 定时任务关闭订单
     * todo 关闭订单前,检查是否先支付过积分抵扣了,是的话要返回订单已抵扣的积分,以及用户积分流水,门店余额流水的删除
     */
    @Override
    public void closeOrder() {