| | |
| | | } |
| | | 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需要退款 |
| | |
| | | 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(""); |
| | |
| | | /*修改用户接单数和司机提成*/ |
| | | 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()); |
| | |
| | | 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); |
| | | } |
| | | /*标记订单已评价*/ |
| | |
| | | @ApiOperation(value = "用户订单匹配列表页面,用户订单去匹配司机的行程", httpMethod = "POST") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "orderId", value = "订单id", dataType = "int"), |
| | | @ApiImplicitParam(name = "type", value = "1默认排序(根据线路、时间,人数综合匹配排序721),2时间最早,3距离最近", dataType = "int"), |
| | | @ApiImplicitParam(name = "lon", value = "经度", dataType = "double"), |
| | | @ApiImplicitParam(name = "lat", value = "纬度", dataType = "double"), |
| | | @ApiImplicitParam(name = "type", value = "1默认排序(根据线路、时间,人数综合匹配排序721),2时间最早,3距离最近", dataType = "int") |
| | | }) |
| | | public Object userMatchingOrderList(Integer orderId,Integer current,Integer size,Integer type,Double lon,Double lat){ |
| | | public Object userMatchingOrderList(Integer orderId,Integer current,Integer size,Integer type){ |
| | | try { |
| | | if(ToolUtil.isEmpty(orderId)){ |
| | | return ResultUtil.paranErr("orderId不能为空"); |
| | | } |
| | | if(ToolUtil.isEmpty(type)){ |
| | | return ResultUtil.paranErr("type不能为空"); |
| | | } |
| | | if(ToolUtil.isEmpty(lon)){ |
| | | return ResultUtil.paranErr("lon不能为空"); |
| | | } |
| | | if(ToolUtil.isEmpty(lat)){ |
| | | return ResultUtil.paranErr("lat不能为空"); |
| | | } |
| | | OrderRide orderRide=orderRideService.selectById(orderId); |
| | | current=current==null?1:current; |
| | |
| | | OrderRideVo orderRideVo=new OrderRideVo(); |
| | | orderRideVo.setCurrent(current); |
| | | orderRideVo.setSize(size); |
| | | orderRideVo.setLon(lon); |
| | | orderRideVo.setLat(lat); |
| | | orderRideVo.setLon(orderRide.getStartLon()); |
| | | orderRideVo.setLat(orderRide.getStartLat()); |
| | | orderRideVo.setNum(orderRide.getNum()); |
| | | orderRideVo.setType(type+1);//搜索条件:1默认排序(根据线路、时间,人数综合匹配排序721),2时间最早,3距离最近 |
| | | List<OrderRideVo> orderRides=orderTravelService.getOrderTravel(orderRideVo); |
| | |
| | | @ApiOperation(value = "司机订单匹配列表页面(司机的订单去匹配乘客订单)", httpMethod = "POST") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "orderId", value = "订单id", dataType = "int"), |
| | | @ApiImplicitParam(name = "type", value = "1默认排序(根据线路、时间,人数综合匹配排序721),2时间最早,3距离最近,4价格最低", dataType = "int"), |
| | | @ApiImplicitParam(name = "lon", value = "经度", dataType = "double"), |
| | | @ApiImplicitParam(name = "lat", value = "纬度", dataType = "double"), |
| | | @ApiImplicitParam(name = "type", value = "1默认排序(根据线路、时间,人数综合匹配排序721),2时间最早,3距离最近,4价格最低", dataType = "int") |
| | | }) |
| | | public Object driverMatchingOrderList(Integer orderId,Integer current,Integer size,Integer type,Double lon,Double lat){ |
| | | public Object driverMatchingOrderList(Integer orderId,Integer current,Integer size,Integer type){ |
| | | try { |
| | | try { |
| | | if(ToolUtil.isEmpty(orderId)){ |
| | |
| | | } |
| | | if(ToolUtil.isEmpty(type)){ |
| | | return ResultUtil.paranErr("type不能为空"); |
| | | } |
| | | if(ToolUtil.isEmpty(lon)){ |
| | | return ResultUtil.paranErr("lon不能为空"); |
| | | } |
| | | if(ToolUtil.isEmpty(lat)){ |
| | | return ResultUtil.paranErr("lat不能为空"); |
| | | } |
| | | OrderTravel orderTravel=orderTravelService.selectById(orderId); |
| | | current=current==null?1:current; |
| | |
| | | orderRideVo.setCurrent(current); |
| | | orderRideVo.setSize(size); |
| | | orderRideVo.setNum(orderTravel.getNum()); |
| | | orderRideVo.setLon(lon); |
| | | orderRideVo.setLat(lat); |
| | | orderRideVo.setLon(orderTravel.getStartLon()); |
| | | orderRideVo.setLat(orderTravel.getStartLat()); |
| | | orderRideVo.setType(type+1);//搜索条件:1默认排序(根据线路、时间,人数综合匹配排序721),2时间最早,3距离最近,4价格最低 |
| | | List<OrderRideVo> orderRides=orderRideService.getOrderRide(orderRideVo); |
| | | return ResultUtil.success(orderRides); |