From 0a8d28436b2f7229ecdf40c6b003902002c8947f Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期四, 16 十月 2025 17:37:08 +0800 Subject: [PATCH] 修改bug --- UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/rideCommentController.java | 230 ++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 147 insertions(+), 83 deletions(-) diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/rideCommentController.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/rideCommentController.java index 03cba5a..2a46d13 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/rideCommentController.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/rideCommentController.java @@ -13,9 +13,8 @@ import com.stylefeng.guns.modular.shunfeng.util.OrdersUtil; import com.stylefeng.guns.modular.shunfeng.util.SensitiveWordUtil; import com.stylefeng.guns.modular.system.dao.SensitiveWordsMapper; -import com.stylefeng.guns.modular.system.model.SensitiveWords; -import com.stylefeng.guns.modular.system.model.TCarBrand; -import com.stylefeng.guns.modular.system.model.UserInfo; +import com.stylefeng.guns.modular.system.model.*; +import com.stylefeng.guns.modular.system.service.ICompanyService; import com.stylefeng.guns.modular.system.service.ISystemNoticeService; import com.stylefeng.guns.modular.system.service.ITCarBrandService; import com.stylefeng.guns.modular.system.service.IUserInfoService; @@ -23,7 +22,9 @@ import com.stylefeng.guns.modular.system.util.GDMapElectricFenceUtil; import com.stylefeng.guns.modular.system.util.PushUtil; import com.stylefeng.guns.modular.system.util.ResultUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil; import com.stylefeng.guns.modular.system.util.qianyuntong.UserUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.model.*; import io.swagger.annotations.*; import net.sf.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; @@ -35,6 +36,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.*; /** @@ -88,6 +90,9 @@ @Autowired private IFinancialService financialService; + + @Autowired + private ICompanyService companyService; @@ -647,6 +652,7 @@ driverRide.setBrandId(brandId); driverRide.setUserId(userId); driverRide.setByInviteCode(inviteCodeRide); + driverRide.setCompanyId(1); driverRide.setCarType(carType); driverRide.setCarNum(carNum); driverRide.setLicense(license); @@ -845,12 +851,34 @@ } return ResultUtil.error("异常"); } + + + private Integer getState(Integer state){ + switch (state){ + case 1: + return 7; + case 2: + return 1; + case 3: + return 4; + case 4: + return 5; + case 5: + return 8; + case 6: + return 10; + } + return null; + } + + + //用户取消退款 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需要退款 @@ -861,8 +889,40 @@ }else if(orderRide.getPayType()==2){ //微信 Integer money = new Double(orderRide.getMoney() * 100).intValue(); - Integer tMoney_ = new Double(orderRide.getTuiMoney()* 100).intValue(); - PayUtil.refundForWxpay(1, financial.getLsType(), orderRide.getOrderNum(), finNum, money,tMoney_ , "2"); +// Integer tMoney_ = new Double(orderRide.getTuiMoney()* 100).intValue(); +// PayUtil.refundForWxpay(1, financial.getLsType(), orderRide.getOrderNum(), finNum, money,tMoney_ , "2"); + + //中台订单退款操作 + if(ToolUtil.isNotEmpty(orderRide.getZttravelId())){ + UserInfo userInfo = userInfoService.selectById(orderRide.getUserId()); + TradeOrderRefundRequest request = new TradeOrderRefundRequest(); + request.setPartnerPayId(orderRide.getZttravelId()); + request.setPayId(financial.getLsType()); + request.setRefundTotalFee(money + ""); + request.setRemark("顺风车订单取消退款"); + request.setRefundType("RF"); + + RefundInfoRequest refundInfo = new RefundInfoRequest(); + refundInfo.setPayItemId(orderRide.getZttravelId()); + refundInfo.setPayId(financial.getLsType()); + refundInfo.setTradeFee(money + ""); + request.setRefundInfos(new ArrayList<RefundInfoRequest>(){{ + add(refundInfo); + }}); + TradeOrderRefund tradeOrderRefund = OrderUtil.tradeOrderRefund(request); + //退款通知 + OrderRefundNoticeRequest request2 = new OrderRefundNoticeRequest(); + request2.setOrderId(orderRide.getZttravelId()); + request2.setRefundPayNum(tradeOrderRefund.getRefundId()); + request2.setRefundType("5"); + request2.setApplyRefundCharge(BigDecimal.valueOf(orderRide.getMoney())); + request2.setActualRefundCharge(BigDecimal.valueOf(orderRide.getMoney())); + request2.setRefundAccount(userInfo.getOnconUUID()); + request2.setRemark("顺风车订单取消退款"); + OrderUtil.orderRefundNotice(request2); + } + + }else if(orderRide.getPayType()==3){ } @@ -878,6 +938,11 @@ f.setOrderType(4); f.setLx(1); financialService.insert(f); + }else{ + //未支付的情况取消订单 + if(ToolUtil.isNotEmpty(orderRide.getZttravelId())){ + OrderUtil.tradeOrderCancel(orderRide.getZttravelId()); + } } /*添加系统消息*/ try { @@ -903,57 +968,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(""); @@ -1002,6 +1068,7 @@ if(orderRide!=null && orderRide.getState()==6){ return ResultUtil.error("用户已取消该行程"); } + UserInfo userInfo=userInfoService.selectById(driverRide.getUserId()); if(orderTravel!=null){ if(type==1){//1确认同行 一个行程只能匹配一个订单 if(orderTravel.getState()==3){ @@ -1022,8 +1089,9 @@ driverRide.setTotalOrders(driverRide.getTotalOrders()+1); driverRideService.updateById(driverRide); /*修改用户接单数和司机提成*/ - 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()); @@ -1069,6 +1137,18 @@ throw new RuntimeException(e); } } + + if(null != orderRide.getZttravelId()){ + //中台修改订单状态 + ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest(); + request.setOrderId(orderRide.getZttravelId()); + request.setStatus(getState(orderRide.getState())); + if (null != orderRide.getDriverId()) { + request.setDriverId(driverRide.getEmpId().toString()); + } + OrderUtil.modifyTravelItinerary(request); + } + pushUtil.pushOrderState(1, orderRide.getUserId(), orderRide.getId(), 8, orderRide.getState(), null); return ResultUtil.success(""); } catch (Exception e) { @@ -1139,8 +1219,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); } /*标记订单已评价*/ @@ -1290,23 +1370,15 @@ @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; @@ -1316,8 +1388,8 @@ 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); @@ -1343,11 +1415,9 @@ @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)){ @@ -1355,12 +1425,6 @@ } 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; @@ -1371,8 +1435,8 @@ 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); -- Gitblit v1.7.1