From 79eff526c529e9389d518edb516dac37119ce3aa Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期一, 08 九月 2025 16:41:11 +0800 Subject: [PATCH] 新增加跨城支付 --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java | 179 ++++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 116 insertions(+), 63 deletions(-) diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java index e91b015..0a36215 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.core.util.ToolUtil; -import com.stylefeng.guns.modular.account.controller.AppOrderController; import com.stylefeng.guns.modular.account.unionpay.GetOpenBodySig; import com.stylefeng.guns.modular.account.unionpay.QrCodeConfiguration; import com.stylefeng.guns.modular.account.unionpay.Util; @@ -21,37 +20,31 @@ import com.stylefeng.guns.modular.crossCity.warpper.OrderCrossCityWarpper; 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.PhoneMapper; -import com.stylefeng.guns.modular.system.dao.RegionMapper; -import com.stylefeng.guns.modular.system.dao.SysIntegralMapper; -import com.stylefeng.guns.modular.system.dao.UserInfoMapper; +import com.stylefeng.guns.modular.system.dao.*; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; +import com.stylefeng.guns.modular.system.service.impl.CarServiceImpl; +import com.stylefeng.guns.modular.system.service.impl.CompanyServiceImpl; import com.stylefeng.guns.modular.system.util.*; +import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.model.ModifyTravelItineraryRequest; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import com.stylefeng.guns.modular.system.warpper.MerchantCouponListWarpper; import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; -import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; -import io.swagger.models.auth.In; import org.apache.commons.lang.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; import javax.annotation.Resource; -import java.io.File; -import java.io.FileWriter; -import java.io.PrintWriter; import java.math.BigDecimal; -import java.math.MathContext; import java.math.RoundingMode; -import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -83,6 +76,8 @@ @Resource private UserInfoMapper userInfoMapper; + @Autowired + private IOpenCityService openCityService; @Autowired private DateUtil dateUtil; @@ -116,55 +111,61 @@ @Resource private OrderPrivateCarMapper orderPrivateCarMapper; - + @Resource private OrderTaxiMapper orderTaxiMapper; - + @Resource private PhoneMapper phoneMapper; - + @Autowired private IOrderPositionService orderPositionService; - - @Autowired - private PushMinistryOfTransportUtil pushMinistryOfTransportUtil; - + + @Resource + private MongoTemplate mongoTemplate; + @Autowired private IOrderCancelService orderCancelService; - + @Autowired private GeodesyUtil geodesyUtil; - + @Autowired private PayMoneyUtil payMoneyUtil; - + @Autowired private IOrderAdditionalFeeService orderAdditionalFeeService; - - @Autowired - private RedisUtil redisUtil; - + + @Resource + private RedisTemplate<String, Object> redisTemplate; + @Autowired private IMerchantActivityService merchantActivityService; - + @Autowired private IMerchantActivitySlaveService merchantActivitySlaveService; - + @Autowired private IUserMerchantCouponService userMerchantCouponService; - + @Autowired private IMerchantCouponService merchantCouponService; @Autowired private QrCodeConfiguration qrCodeConfiguration; - @Value("${filePath}") - private String filePath; + + @Autowired + private TDriverPromotionActivityService driverPromotionActivityService; @Value("${pushMinistryOfTransport}") private boolean pushMinistryOfTransport; @Value("${callbackPath}") private String callbackPath; + @Autowired + private CarModelMapper carModelMapper; + @Autowired + private CarServiceImpl carServiceImpl; + private CompanyServiceImpl companyServiceImpl; /** @@ -243,7 +244,8 @@ map.put("orderNumber", orderCrossCity.getOrderNum()); map.put("totalMoney", new BigDecimal(totalMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); map.put("serverMoney", new BigDecimal(serverMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); - Phone phone = phoneMapper.queryInfo(orderCrossCity.getCompanyId(), 1); + OpenCity openCity = openCityService.openCity1(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString()); + Phone phone = phoneMapper.queryInfo(openCity.getId(), 1, 1); map.put("emergencyCall", null != phone ? phone.getPhone() : "110"); map.put("orders", JSON.toJSONString(order)); @@ -263,7 +265,12 @@ @Override public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address) throws Exception { OrderCrossCity orderCrossCity = this.selectById(orderId); + if(10 == orderCrossCity.getState()){ + return ResultUtil.error("订单已被取消,不能继续操作"); + } UserInfo userInfo = userInfoMapper.selectById(orderCrossCity.getUserId()); + Driver driver = driverService.selectById(orderCrossCity.getDriverId()); + Company company = companyServiceImpl.selectById(driver.getCompanyId()); switch (state){ case 3://出发前往预约点 orderCrossCity.setState(3); @@ -292,15 +299,32 @@ orderCrossCity.setGetoffTime(new Date()); orderCrossCity.setState(8);//跨城直接到待评价 orderCrossCity.setEndServiceTime(new Date()); - - Driver driver = driverService.selectById(orderCrossCity.getDriverId()); //添加抽成及收入记录 - Map<String, Object> map = incomeService.saveIncome(orderCrossCity.getId(), 3, orderCrossCity.getOrderMoney()); - orderCrossCity.setSplitAllocation(JSON.toJSONString(map)); + + //非追缴单才需要记录收入 + if(0 == orderCrossCity.getRecoveryOrder()){ + //添加收入 + Double orderMoney = (2 == orderCrossCity.getAbnormal() && 2 == orderCrossCity.getAbnormalStatus() ? orderCrossCity.getResponsibilityMoney().doubleValue() : orderCrossCity.getOrderMoney()); + Map<String, Object> map = incomeService.saveIncome(orderCrossCity.getId(), 3, orderMoney); + orderCrossCity.setSplitAllocation(JSON.toJSONString(map)); + } + //待审核的异常单修改状态为已关闭 + if(2 == orderCrossCity.getAbnormal() && 1 == orderCrossCity.getAbnormalStatus()){ + orderCrossCity.setAbnormalStatus(3); + orderCrossCity.setResponsibilityMoney(new BigDecimal(orderCrossCity.getOrderMoney())); + orderCrossCity.setResponsibilityType(3); + orderCrossCity.setAbnormalRemark("乘客已支付订单,申诉已自动关闭"); + } //还原座位数 LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId()); - lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber()); + if(1 == orderCrossCity.getTravelMode()){ + lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber()); + }else{ + Car car = carServiceImpl.selectById(driver.getCarId()); + CarModel carModel = carModelMapper.selectById(car.getCarModelId()); + lineShiftDriver.setLaveSeat(carModel.getSeat() - 1); + } lineShiftDriver.setLaveSeatNumber( (ToolUtil.isNotEmpty(lineShiftDriver.getLaveSeatNumber()) ? lineShiftDriver.getLaveSeatNumber() + "," : "") + orderCrossCity.getSeatNumber() @@ -309,7 +333,7 @@ //修改司机空闲状态 List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryWithin30Minutes(orderCrossCity.getDriverId(), 2, 3, 4, 5, 11); - if(orderCrossCities.size() == 0){ + if(orderCrossCities.size() <= 1){ driver = driverService.selectById(orderCrossCity.getDriverId()); driver.setState(2); driverService.updateById(driver); @@ -368,19 +392,35 @@ } merchantActivityService.updateBatchById(merchantActivities); } - String value = redisUtil.getValue("merchantVoucher"); + String value = (String) redisTemplate.opsForValue().get("merchantVoucher"); JSONObject jsonObject = JSON.parseObject(value); if(null == jsonObject){ jsonObject = new JSONObject(); } jsonObject.put(userInfo.getPhone(), listWarppers); - redisUtil.setStrValue("merchantVoucher", jsonObject.toJSONString()); + redisTemplate.opsForValue().set("merchantVoucher", jsonObject.toJSONString()); pushUtil.removeTask(orderId, 3);//删除定时任务,结束推送数据 systemNoticeService.addSystemNotice(1, "司机已结束本次行程,谢谢使用", orderCrossCity.getUserId(), 1); + promotion(orderId); break; } this.updateById(orderCrossCity); + + //中台修改订单状态 + ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest(); + request1.setOrderId(orderCrossCity.getTravelId()); + request1.setStatus(orderCrossCity.getState()); + if (null != orderCrossCity.getDriverId()) { + request1.setDriverId(driver.getEmpId().toString()); + request1.setSupplierShopId(company.getEnterCode()); + } + if (2 == orderCrossCity.getPromotion()) { + Driver driver2 = driverService.selectById(orderCrossCity.getPromotionDriverId()); + request1.setPromoterId(driver2.getEmpId().toString()); + } + OrderUtil.modifyTravelItinerary(request1); + // TODO: 2020/6/5 推送状态 new Thread(new Runnable() { @@ -393,7 +433,29 @@ return ResultUtil.success(); } + public void promotion(Integer orderId) { + OrderCrossCity orderCrossCity = this.baseMapper.selectById(orderId); + UserInfo userInfo = userInfoMapper.selectById(orderCrossCity.getUserId()); + if(orderCrossCity.getPromotionDriverId()!=null ){ + String registAreaCode = userInfo.getRegistAreaCode(); + TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).le("startTime", new Date()).ge("endTime", new Date()).last("AND FIND_IN_SET(" + 3 + ", bizType) limit 1")); + System.out.println("ddddd"+tDriverPromotionActivity); + if(tDriverPromotionActivity!=null){ + Double payMoney = orderCrossCity.getPayMoney(); + System.out.println(payMoney); + BigDecimal bigDecimal = tDriverPromotionActivity.getCommissionRatio().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_UP); + System.out.println(bigDecimal); + orderCrossCity.setPromotionDriverId(userInfo.getBindDriverId()); + orderCrossCity.setPromotionMoney(bigDecimal); + orderCrossCity.setPromotionActivityId(tDriverPromotionActivity.getId()); + orderCrossCity.setSuccessTime(new Date()); + this.baseMapper.updateById(orderCrossCity); + } + } + + + } /** * 获取订单明细 * @param orderId @@ -552,16 +614,16 @@ orderCrossCity.setIsReassign(1); orderCrossCity.setLineShiftDriverId(orderCrossCityWarpper.getLineShiftDriverId()); //调用高德创建轨迹 - String s = gdFalconUtil.selectTerminal(driver.getPhone()); - String track = gdFalconUtil.createTrack(s); - orderCrossCity.setTrackId(track); +// String s = gdFalconUtil.selectTerminal(driver.getPhone()); +// String track = gdFalconUtil.createTrack(s); +// orderCrossCity.setTrackId(track); //调用移动的小号接口 - Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000)); - if(String.valueOf(map.get("code")).equals("200")){ - orderCrossCity.setTelX(map.get("telX")); - orderCrossCity.setBindId(map.get("bindId")); - } +// Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000)); +// if(String.valueOf(map.get("code")).equals("200")){ +// orderCrossCity.setTelX(map.get("telX")); +// orderCrossCity.setBindId(map.get("bindId")); +// } if(orderCrossCityWarpper.getTravelMode() == 2){//包车 // orderCrossCity.setSeatNumber(lineShiftDriver.getLaveSeatNumber()); // orderCrossCity.setPeopleNumber(lineShiftDriver.getLaveSeat()); @@ -864,7 +926,8 @@ UserInfo userInfo = userInfoMapper.selectById(orderCrossCity.getUserId()); - SysIntegral query1 = sysIntegralMapper.query(orderCrossCity.getCompanyId()); + OpenCity openCity = openCityService.openCity1(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString()); + SysIntegral query1 = sysIntegralMapper.query(openCity.getId()); userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分 userInfoMapper.updateById(userInfo); System.out.println("==============userInfo修改完毕==================="+userInfo); @@ -922,7 +985,7 @@ String lat = orderPosition.getLat(); OrderCrossCity order = this.selectById(orderId); if(null == order){ - System.err.println("订单数据异常:" + orderId); + System.err.println("跨城订单数据异常:" + orderId); return false; } @@ -955,18 +1018,8 @@ orderPosition.setInsertTime(new Date()); //将数据存储到文件中 List<OrderPosition> orderPositions = orderPositionService.queryPosition(orderCrossCity.getId(), 3); - File file = new File(filePath + orderCrossCity.getId() + "_3" + ".txt"); - if(!file.exists()){ - file.getParentFile().mkdirs(); - file.createNewFile(); - } - //写入相应的文件 - PrintWriter out = new PrintWriter(new FileWriter(file)); orderPositions.add(orderPosition); - System.err.println("存储新数据:" + JSON.toJSONString(orderPositions)); - out.write(JSON.toJSONString(orderPositions)); - out.flush(); - out.close(); + mongoTemplate.save(orderPositions); } } return false;//上层不需要处理 -- Gitblit v1.7.1