Pu Zhibing
2 天以前 dc3cfaa745eb7303e312ce7ba61a7019e5f12e4b
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/rideCommentController.java
@@ -845,12 +845,15 @@
        }
        return ResultUtil.error("异常");
    }
    //用户取消退款
    public void userCancelTuik(OrderRide orderRide){
        if(orderRide.getState()==2){//用户已经支付了订单但司机没有接单
            orderRide.setTuiMoney(orderRide.getMoney());
        }
        if(orderRide.getTuiMoney()>0){
        if(null != orderRide.getTuiMoney() && orderRide.getTuiMoney()>0){
            Financial financial= financialService.selectOne(new EntityWrapper<Financial>().eq("orderNum",orderRide.getOrderNum()));
            String finNum=OrdersUtil.getOrderNoForPrefix("fin");
            //todo 退款金额大于0需要退款
@@ -903,57 +906,58 @@
                return ResultUtil.paranErr("orderId不能为空");
            }
            OrderTravel orderTravel=orderTravelService.selectById(orderId);
            if(orderTravel!=null){
                if(orderTravel.getState()==6){
                    return ResultUtil.error("该订单已取消");
            if(null == orderTravel){
                return ResultUtil.error("无效的订单ID");
            }
            if(orderTravel.getState()==6){
                return ResultUtil.error("该订单已取消");
            }
            DriverRide driverRide=driverRideService.selectById(orderTravel.getDriverId());
            if(orderTravel.getServiceMoney()!=null && orderTravel.getServiceMoney()>0){
                /*todo 更新司机余额*/
                driverRide.setBalance(driverRide.getBalance()-orderTravel.getServiceMoney());
                driverRideService.updateById(driverRide);
                /* 更新司机用户余额(用户和司机用户一个账号余额)*/
                UserInfo userInfo=userInfoService.selectOne(new EntityWrapper<UserInfo>().eq("driverId",orderTravel.getDriverId()));
                if(userInfo!=null){
                    //用户余额可以为负数
                    userInfo.setBalance(userInfo.getBalance()-orderTravel.getServiceMoney());
                    userInfoService.updateById(userInfo);
                }
                DriverRide driverRide=driverRideService.selectById(orderTravel.getDriverId());
                if(orderTravel.getServiceMoney()!=null && orderTravel.getServiceMoney()>0){
                    /*todo 更新司机余额*/
                    driverRide.setBalance(driverRide.getBalance()-orderTravel.getServiceMoney());
                    driverRideService.updateById(driverRide);
                    /* 更新司机用户余额(用户和司机用户一个账号余额)*/
                    UserInfo userInfo=userInfoService.selectOne(new EntityWrapper<UserInfo>().eq("driverId",orderTravel.getDriverId()));
                    if(userInfo!=null){
                        //用户余额可以为负数
                        userInfo.setBalance(userInfo.getBalance()-orderTravel.getServiceMoney());
                        userInfoService.updateById(userInfo);
                    }
                    /*财务明细*/
                    Financial f=new Financial();
                    f.setAddTime(new Date());
                    f.setType(1);//类型 1=收入 2=支出
                    f.setMoney(orderTravel.getServiceMoney());
                    f.setPwType(9);//9=顺风车取消服务费
                    f.setOrderNum(orderTravel.getOrderNum());
                    String finNum=OrdersUtil.getOrderNoForPrefix("fin");
                    f.setLsType(finNum);
                    f.setUserId(driverRide.getUserId());
                    f.setOrderType(4);
                    f.setLx(1);
                    financialService.insert(f);
                    //司机取消给用户推送
                }
                /*添加系统消息*/
                try {
                    systemNoticeService.addSystemNotice(1, "您从"+orderTravel.getStartName()+"到"+orderTravel.getEndName()+"的顺风车行程已取消", driverRide.getUserId(), 1);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
                orderTravel.setState(6);//取消状态
                orderTravelService.updateById(orderTravel);
                //todo 推送
                /*司机接单给用户发送消息*/
                OrderRide orderRide=orderRideService.selectOne(new EntityWrapper<OrderRide>().eq("travelId",orderId));
                if(orderRide!=null) {
                    pushUtil.pushOrderState(1, orderRide.getUserId(), orderRide.getId(), 8, 6, null);
                }
                //取消乘客订单
                if(orderRide!=null && orderRide.getState()!=6){
                    orderRide.setTuiMoney(orderRide.getMoney());
                    orderRideService.updateById(orderRide);
                    userCancelTuik(orderRide);
                }
                /*财务明细*/
                Financial f=new Financial();
                f.setAddTime(new Date());
                f.setType(1);//类型 1=收入 2=支出
                f.setMoney(orderTravel.getServiceMoney());
                f.setPwType(9);//9=顺风车取消服务费
                f.setOrderNum(orderTravel.getOrderNum());
                String finNum=OrdersUtil.getOrderNoForPrefix("fin");
                f.setLsType(finNum);
                f.setUserId(driverRide.getUserId());
                f.setOrderType(4);
                f.setLx(1);
                financialService.insert(f);
                //司机取消给用户推送
            }
            /*添加系统消息*/
            try {
                systemNoticeService.addSystemNotice(1, "您从"+orderTravel.getStartName()+"到"+orderTravel.getEndName()+"的顺风车行程已取消", driverRide.getUserId(), 1);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
            orderTravel.setState(6);//取消状态
            orderTravelService.updateById(orderTravel);
            //todo 推送
            /*司机接单给用户发送消息*/
            OrderRide orderRide=orderRideService.selectOne(new EntityWrapper<OrderRide>().eq("travelId",orderId));
            if(orderRide!=null) {
                pushUtil.pushOrderState(1, orderRide.getUserId(), orderRide.getId(), 8, 6, null);
            }
            //取消乘客订单
            if(orderRide!=null && orderRide.getState()!=6){
                orderRide.setTuiMoney(orderRide.getMoney());
                orderRideService.updateById(orderRide);
                userCancelTuik(orderRide);
            }
            return ResultUtil.success("");
@@ -1024,6 +1028,7 @@
                    /*修改用户接单数和司机提成*/
                    UserInfo userInfo=userInfoService.selectById(driverRide.getUserId());
                    userInfo.setBalance(userInfo.getBalance()+(orderRide.getMoney()-orderRide.getPlatformMoney()));
                    userInfo.setTotalOrders(userInfo.getTotalOrders() + 1);
                    userInfoService.updateById(userInfo);
                    Financial f=new Financial();
                    f.setAddTime(new Date());
@@ -1139,8 +1144,8 @@
            DriverRide driverRide=driverRideService.selectById(driverId);
            if(driverRide!=null){
                /*计算司机的评分*/
                driverRide.setEvaluateNum(driverRide.getEvaluateNum()+1);
                driverRide.setEvaluateScore(driverRide.getEvaluateScore()+score);
                driverRide.setEvaluateNum((null != driverRide.getEvaluateNum() ? driverRide.getEvaluateNum() : 0 )+1);
                driverRide.setEvaluateScore((null == driverRide.getEvaluateScore() ? 0 : driverRide.getEvaluateScore())+score);
                driverRideService.updateById(driverRide);
            }
            /*标记订单已评价*/