From 1c7d3b4538dcd2ae6c0ec1ffc4a548088bb7b00b Mon Sep 17 00:00:00 2001 From: guyue <1721849008@qq.com> Date: 星期六, 26 七月 2025 09:09:01 +0800 Subject: [PATCH] 未支付订单查询接口 --- UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java | 246 ++++++++++++++++++++++++++----------------------- 1 files changed, 131 insertions(+), 115 deletions(-) diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java index ef5f732..9090f85 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java @@ -11,13 +11,16 @@ import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity; import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; import com.stylefeng.guns.modular.crossCity.server.impl.OrderCrossCityServiceImpl; -import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics; import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService; import com.stylefeng.guns.modular.specialTrain.dao.OrderPrivateCarMapper; import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; -import com.stylefeng.guns.modular.system.dao.*; +import com.stylefeng.guns.modular.system.dao.RegionMapper; +import com.stylefeng.guns.modular.system.dao.SensitiveWordsMapper; +import com.stylefeng.guns.modular.system.dao.SysIntegralMapper; +import com.stylefeng.guns.modular.system.dao.UserActivityDiscount1Mapper; import com.stylefeng.guns.modular.system.model.*; +import com.stylefeng.guns.modular.system.model.vo.UnPayOrderVO; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.*; import com.stylefeng.guns.modular.system.warpper.*; @@ -27,9 +30,10 @@ import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import com.stylefeng.guns.modular.taxi.service.IPaymentRecordService; import com.stylefeng.guns.modular.taxi.service.ITransactionDetailsService; -import org.bouncycastle.crypto.tls.MACAlgorithm; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -106,28 +110,28 @@ @Autowired private IUserRedPacketRecordService userRedPacketRecordService; - + @Autowired private GDMapGeocodingUtil gdMapGeocodingUtil; - + @Autowired private ICompanyCityService companyCityService; - + @Autowired private PushUtil pushUtil; - - @Autowired - private RedisUtil redisUtil; - + + @Resource + private RedisTemplate<String, Object> redisTemplate; + @Autowired private RestTemplate internalRestTemplate; - + @Autowired private IUserActivityRedenvelopeService userActivityRedenvelopeService; - + @Autowired private IDriverOrdersService driverOrdersService; - + @Autowired private IIncomeService incomeService; @@ -202,20 +206,26 @@ public synchronized ResultUtil<BaseWarpper> taxiOrder(OrderTaxi orderTaxi, Integer uid) throws Exception { //定义用户所属公司 UserInfo userInfo1 = userInfoService.selectById(uid); + if (null == userInfo1 || userInfo1.getFlag() == 3) { + return ResultUtil.error("无效的账户"); + } + if (2 == userInfo1.getState()) { + return ResultUtil.error("账号已被冻结,请联系管理员"); + } Company query = companyCityService.query(String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat())); - if(null == query){ + if (null == query) { return ResultUtil.error("出发点暂未开通"); } - if(null != userInfo1.getCompanyId() && 0 != userInfo1.getCompanyId()){ + if (null != userInfo1.getCompanyId() && 0 != userInfo1.getCompanyId()) { userInfo1.setCompanyId(query.getId()); userInfoService.updateById(userInfo1); } - - if(orderTaxi.getTravelTime().getTime() > (System.currentTimeMillis() + 600000)){ + + if (orderTaxi.getTravelTime().getTime() > (System.currentTimeMillis() + 600000)) { orderTaxi.setOrderType(2); } - - + + /** * 1.出租车、专车、跨城有待支付的订单不能叫车 * 2.小件物流有未完成的订单可以下跨城、专车、出租车 @@ -571,7 +581,7 @@ System.out.println("取消订单:"+query); if(null != query){ if(payType == 1){//微信支付 - String value = redisUtil.getValue("appletOpenId"); + String value = (String) redisTemplate.opsForValue().get("appletOpenId"); String appletsOpenId = null; if(ToolUtil.isNotEmpty(value)){ JSONObject jsonObject = JSON.parseObject(value); @@ -607,22 +617,22 @@ // resultUtil = ResultUtil.error(map.get("msg"), ""); // } } - if(payType == 3){//余额支付 - if(userInfo.getBalance() != null && userInfo.getBalance() < query.getMoney()){ + if(payType == 3) {//余额支付 + if (userInfo.getBalance() != null && userInfo.getBalance() < query.getMoney()) { return ResultUtil.error("余额不足,无法完成支付"); } - resultUtil= appOrderController.moneyPay(id,userInfo.getId(),query.getMoney()); - if(resultUtil.getCode()==500){ - return ResultUtil.error("电子余额不足,无法完成支付"); - } - +// resultUtil= appOrderController.moneyPay(id,userInfo.getId(),query.getMoney()); +// if(resultUtil.getCode()==500){ +// return ResultUtil.error("电子余额不足,无法完成支付"); +// } + userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(query.getMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); //添加交易明细 transactionDetailsService.saveData(uid, "出租车取消订单", query.getMoney(), 2, 1, 1, 2, id); userInfoService.updateById(userInfo); - + //解除小号绑定 - if(orderTaxi.getBindId() != null){ + if (orderTaxi.getBindId() != null) { chinaMobileUtil.midAxbUnBindSend(orderTaxi.getBindId(), orderTaxi.getTelX(), (System.currentTimeMillis() + 600000)); } @@ -1306,7 +1316,7 @@ }).start(); //用户付款后,删除限制司机6分钟不能接单的标识 - String vehicle = redisUtil.getValue("VEHICLE"); + String vehicle = (String) redisTemplate.opsForValue().get("VEHICLE"); if(ToolUtil.isNotEmpty(vehicle)){ JSONArray jsonArray = JSON.parseArray(vehicle); for(int i = 0; i < jsonArray.size(); i++){ @@ -1315,7 +1325,7 @@ break; } } - redisUtil.setStrValue("VEHICLE", jsonArray.toJSONString()); + redisTemplate.opsForValue().set("VEHICLE", jsonArray.toJSONString()); } systemNoticeService.addSystemNotice(1, "您已使用余额成功完成出行订单支付,谢谢使用!", uid, 1); } @@ -1564,7 +1574,7 @@ }).start(); //用户付款后,删除限制司机6分钟不能接单的标识 - String vehicle = redisUtil.getValue("VEHICLE"); + String vehicle = (String) redisTemplate.opsForValue().get("VEHICLE"); if(ToolUtil.isNotEmpty(vehicle)){ JSONArray jsonArray = JSON.parseArray(vehicle); for(int i = 0; i < jsonArray.size(); i++){ @@ -1573,7 +1583,7 @@ break; } } - redisUtil.setStrValue("VEHICLE", jsonArray.toJSONString()); + redisTemplate.opsForValue().set("VEHICLE", jsonArray.toJSONString()); } systemNoticeService.addSystemNotice(1, "您已使用余额成功完成出行订单支付,谢谢使用!", uid, 1); @@ -1710,7 +1720,7 @@ if(Integer.valueOf(String.valueOf(map.get("state"))) == 11){ map.put("state", map.get("oldState")); } - String driverId = redisUtil.getValue("DEVICE_" + map.get("driverId")); + String driverId = (String) redisTemplate.opsForValue().get("DEVICE_" + map.get("driverId")); map.put("device", ToolUtil.isNotEmpty(driverId) ? 2 : 1); map.put("orderType", 2); return map; @@ -1761,36 +1771,39 @@ public OrderServerWarpper queryOrderServer(Integer orderId, Integer uid) throws Exception { OrderServerWarpper orderServerWarpper = new OrderServerWarpper(); OrderTaxi orderTaxi = this.selectById(orderId); - if(null == orderTaxi){ + if (null == orderTaxi) { return orderServerWarpper; } //计算预计距离和剩余时间 - String value = redisUtil.getValue("DRIVER" + String.valueOf(orderTaxi.getDriverId())); - if(null == value || "".equals(value)){ - System.err.println("司机没有上传位置信息"); - - //调用获取轨迹中的数据 - List<Map<String, Object>> list = orderPositionService.queryTrack(orderId, 2); - if(list.size() > 0){ - Map<String, Object> map = list.get(list.size() - 1); - value = map.get("lon") + "," + map.get("lat"); + String value = null; + if (null != orderTaxi.getDriverId()) { + value = (String) redisTemplate.opsForValue().get("DRIVER" + orderTaxi.getDriverId()); + if (null == value || "".equals(value)) { + System.err.println("司机没有上传位置信息"); + + //调用获取轨迹中的数据 + List<Map<String, Object>> list = orderPositionService.queryTrack(orderId, 2); + if (list.size() > 0) { + Map<String, Object> map = list.get(list.size() - 1); + value = map.get("lon") + "," + map.get("lat"); + } } } - + orderServerWarpper.setOrderId(orderTaxi.getId()); orderServerWarpper.setOrderType(2); orderServerWarpper.setState(orderTaxi.getState()); orderServerWarpper.setLon(null != value ? value.split(",")[0] : "0.0"); orderServerWarpper.setLat(null != value ? value.split(",")[1] : "0.0"); orderServerWarpper.setReassignNotice(orderTaxi.getReassignNotice()); - if(orderTaxi.getState() == 2 || orderTaxi.getState() == 3){//前往预约地 + if (orderTaxi.getState() == 2 || orderTaxi.getState() == 3) {//前往预约地 // TODO: 2023/11/4 无法修改 Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderTaxi.getStartLon() + "," + orderTaxi.getStartLat(), 1); String d = "0"; String t = "0"; - if(null == distance){ + if (null == distance) { System.err.println("查询距离出错了"); - }else{ + } else { d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).toString(); t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + ""; } @@ -1875,7 +1888,7 @@ userRedPacketRecord.setUserId(orderTaxi.getUserId()); userRedPacketRecordService.insert(userRedPacketRecord); } - appOrderController.moneyPay(orderTaxi.getId(),orderTaxi.getUserId(),money); +// appOrderController.moneyPay(orderTaxi.getId(),orderTaxi.getUserId(),money); return ResultUtil.success(baseWarpper); } @@ -1995,7 +2008,7 @@ }).start(); //用户付款后,删除限制司机6分钟不能接单的标识 - String vehicle = redisUtil.getValue("VEHICLE"); + String vehicle = (String) redisTemplate.opsForValue().get("VEHICLE"); if(ToolUtil.isNotEmpty(vehicle)){ JSONArray jsonArray = JSON.parseArray(vehicle); for(int i = 0; i < jsonArray.size(); i++){ @@ -2004,7 +2017,7 @@ break; } } - redisUtil.setStrValue("VEHICLE", jsonArray.toJSONString()); + redisTemplate.opsForValue().set("VEHICLE", jsonArray.toJSONString()); } @@ -2081,68 +2094,47 @@ public void run() { try { orderIds.add(orderTaxi.getId());//添加记录,防止调用接口重复提醒无人接单 - String vehicle = redisUtil.getValue("VEHICLE"); + String vehicle = (String) redisTemplate.opsForValue().get("VEHICLE"); List<Integer> integers = new ArrayList<>(); - if(ToolUtil.isNotEmpty(vehicle)){ + if (ToolUtil.isNotEmpty(vehicle)) { integers = JSON.parseArray(vehicle).toJavaList(Integer.class); } Company query = companyCityService.query(String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat()));//获取起点所属分公司 List<PushOrder> querys = pushOrderService.querys(null, 2, query.getId());//获取需要推送的次数 - boolean b = false; - for(int i = 1; i <= querys.size(); i++){ - if(b){ + for (int i = 1; i <= querys.size(); i++) { + PushOrder pushOrder = pushOrderService.querys(i, 2, query.getId()).get(0); + System.out.println("pushOrder:" + pushOrder); + //获取空闲司机 + List<Driver> list = driverService.queryIdleDriver(2, orderTaxi.getStartLon(), orderTaxi.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 + if (list.size() > 0) { + double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 + int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) + lastIndex = lastIndex == 0 ? list.size() : lastIndex; + list = list.subList(0, lastIndex);//获取空闲司机中占比数据 + for (Driver driver : list) {//开始进行推送 + //查询是否在限制推单范围内 + boolean bo = false; + for (Integer integer : integers) { + if (integer.compareTo(driver.getId()) == 0) { + bo = true; + break; + } + } + if (bo) { + continue; + } + pushUtil.pushOrderState(2, driver.getId(), orderTaxi.getId(), 2, orderTaxi.getState(), pushOrder.getPushTime()); + } + } + Thread.sleep(pushOrder.getPushTime() * 1000);//设置等待时间 + OrderTaxi orderTaxi1 = OrderTaxiServiceImpl.this.selectById(orderTaxi.getId()); + Integer state = orderTaxi1.getState(); + if (state != 1) { break; } - PushOrder pushOrder = pushOrderService.querys(i, 2, query.getId()).get(0); - System.out.println("pushOrder:"+pushOrder); - int i2 = pushOrder.getPushTime() / 10; - if(i2==0){ - i2=1; - } - System.out.println(i2); - for (int i1 = 0; i1 < i2 ; i1++) { - Integer state = 0; - //批量订单 - if(type == 3){ - OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderTaxi.getId()); - if(null == orderPrivateCar || orderPrivateCar.getState() != 1){ - b = true; - break; - } - }else{ - state = orderTaxiMapper.selectById(orderTaxi.getId()).getState(); - if(state != 1){ - b = true; - break; - } - } - //获取空闲司机 - List<Driver> list = driverService.queryIdleDriver(2, orderTaxi.getStartLon(), orderTaxi.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 - if(list.size() > 0){ - double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 - int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) - lastIndex = lastIndex == 0 ? list.size() : lastIndex; - list = list.subList(0, lastIndex);//获取空闲司机中占比数据 - for(Driver driver : list){//开始进行推送 - //查询是否在限制推单范围内 - boolean bo = false; - for(Integer integer : integers){ - if(integer.compareTo(driver.getId()) == 0){ - bo = true; - break; - } - } - if(bo){ - continue; - } - pushUtil.pushOrderState(2, driver.getId(), orderTaxi.getId(), 2, orderTaxi.getState(), pushOrder.getPushTime()); - } - } - Thread.sleep( 10000);//设置等待时间 - if(i == querys.size() && state == 1){ - pushUtil.pushEndPush(1, orderTaxi.getUserId(), orderTaxi.getId(), 2); - orderIds.remove(orderTaxi.getId()); - } + if (i == querys.size() && state == 1) { + pushUtil.pushEndPush(1, orderTaxi.getUserId(), orderTaxi.getId(), 2); + orderIds.remove(orderTaxi.getId()); } } } catch (Exception e) { @@ -2175,23 +2167,23 @@ resultUtil = payMoneyUtil.alipay("感谢费", "感谢费", "", orderId + "_2_" + UUIDUtil.getRandomCode(5), money.toString(), "/base/aliPayThankYouFee"); paymentRecordService.saveData(1, uid, 1, orderId, 2, 2, money, "", 1);//添加预支付数据 } - if(payType == 3){//余额支付 - if(userInfo.getBalance() == null || userInfo.getBalance() < money){ + if(payType == 3) {//余额支付 + if (userInfo.getBalance() == null || userInfo.getBalance() < money) { return ResultUtil.error("余额不足,无法完成支付"); } - resultUtil= appOrderController.moneyPay(orderId,userInfo.getId(),money); - if(resultUtil.getCode()==500){ - return ResultUtil.error("电子余额不足,无法完成支付"); - } +// resultUtil= appOrderController.moneyPay(orderId,userInfo.getId(),money); +// if(resultUtil.getCode()==500){ +// return ResultUtil.error("电子余额不足,无法完成支付"); +// } userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); - + SysIntegral query1 = sysIntegralMapper.query(orderTaxi.getCompanyId()); userInfo.setIntegral(userInfo.getIntegral() + (money.intValue() * query1.getIntegral()));//积分 - + //添加交易明细 transactionDetailsService.saveData(uid, "出租车-感谢费", money, 2, 1, 1, 2, orderId); userInfoService.updateById(userInfo); - + orderTaxi.setThankYouFee(money); this.updateById(orderTaxi); @@ -2241,4 +2233,28 @@ driverService.updateById(driver); systemNoticeService.addSystemNotice(1, "您已使用" + (payType == 1 ? "微信" : (payType==2?"支付宝":"云闪付")) + "成功完成感谢费支付,谢谢使用!", userInfo.getId(), 1); } + + @Override + public List<UnPayOrderVO> getUnpayTaxiOrders(Integer uid) { + EntityWrapper<OrderTaxi> wrapper = new EntityWrapper<>(); + wrapper.eq("userId", uid); + wrapper.eq("state", 7); + //查出未支付订单 + List<OrderTaxi> orderTaxiList = this.selectList(wrapper); + List<UnPayOrderVO> unPayOrderVOList = new ArrayList<>(); + for (OrderTaxi orderTaxi:orderTaxiList) { + UnPayOrderVO unPayOrderVO = new UnPayOrderVO(); + //添加司机信息 + DriverInfoWarpper driverInfoWarpper = new DriverInfoWarpper(); + Driver driver = driverService.selectById(orderTaxi.getDriverId()); + BeanUtils.copyProperties(driver, driverInfoWarpper); + unPayOrderVO.setDriverInfoWarpper(driverInfoWarpper); + //其余信息 + BeanUtils.copyProperties(orderTaxi, unPayOrderVO); + unPayOrderVOList.add(unPayOrderVO); + + } + + return unPayOrderVOList; + } } -- Gitblit v1.7.1