fllmoyu před 4 roky
rodič
revize
4dd047f3f5

+ 2 - 0
common/src/main/java/com/jpsoft/bus/modules/base/dao/OrderInfoDAO.java

@@ -21,4 +21,6 @@ public interface OrderInfoDAO {
     OrderInfo findByOutOrderNo(String outTradeNo);
 
 	List<OrderInfo> findByMergeOrderId(String mergeOrderId);
+
+    OrderInfo findByPassengerIdMergeOrderId(String passengerId, String mergeOrderId);
 }

+ 2 - 0
common/src/main/java/com/jpsoft/bus/modules/base/service/OrderInfoService.java

@@ -20,4 +20,6 @@ public interface OrderInfoService {
     OrderInfo findByOutOrderNo(String outTradeNo);
 
 	List<OrderInfo> findByMergeOrderId(String mergeOrderId);
+
+    OrderInfo findByPassengerIdMergeOrderId(String id, String mergeOrderId);
 }

+ 5 - 0
common/src/main/java/com/jpsoft/bus/modules/base/service/impl/OrderInfoServiceImpl.java

@@ -82,4 +82,9 @@ public class OrderInfoServiceImpl implements OrderInfoService {
 	public List<OrderInfo> findByMergeOrderId(String mergeOrderId) {
 		return orderInfoDAO.findByMergeOrderId(mergeOrderId);
 	}
+
+	@Override
+	public OrderInfo findByPassengerIdMergeOrderId(String id, String mergeOrderId) {
+		return orderInfoDAO.findByPassengerIdMergeOrderId(id,mergeOrderId);
+	}
 }

+ 27 - 3
common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/GpsServiceImpl.java

@@ -305,7 +305,18 @@ public class GpsServiceImpl implements GpsService {
             RouteInfo routeInfo = routeInfoService.get(shiftInfo.getRouteId());
 
             List<StationInfo> stationInfoList = stationInfoService.findByRouteId(routeInfo.getId());
-            currentStationId = shiftInfo.getStartStationId();
+            currentStationId = shiftInfo.getCurrentStationId();
+
+            //当前站点
+            StationInfo currentStation = stationInfoService.get(currentStationId);
+
+            int currentIndex = stationInfoList.indexOf(currentStation);
+            //线路始站
+            StationInfo startStation = stationInfoService.get(shiftInfo.getStartStationId());
+            //线路终点站
+            StationInfo endStation = stationInfoService.get(shiftInfo.getEndStationId());
+
+
             if (stationInfoList.size() > 0) {
                 for (StationInfo stationInfo : stationInfoList) {
                     GlobalCoordinates source = new GlobalCoordinates(Double.valueOf(vehicleInfo.getLatitude()), Double.valueOf(vehicleInfo.getLongitude()));
@@ -313,8 +324,21 @@ public class GpsServiceImpl implements GpsService {
 
                     double meter1 = CommonUtil.getDistanceMeter(source, target, Ellipsoid.Sphere);
                     if (meter1 <= Double.valueOf(50)) {
-                        currentStationId = stationInfo.getId();
-                        break;
+                        int indexStation = stationInfoList.indexOf(stationInfo);
+                        //线路的开始站是站点集合的第一个站点则是顺线路运行
+                        if (shiftInfo.getStartStationId().equals(stationInfoList.get(0).getId())){
+                            if (indexStation > currentIndex){
+                                currentStationId = stationInfo.getId();
+                                break;
+                            }
+                        }
+                        if (shiftInfo.getEndStationId().equals(stationInfoList.get(0).getId())){
+                            if (indexStation < currentIndex){
+                                currentStationId = stationInfo.getId();
+                                break;
+                            }
+                        }
+
                     }
                 }
             }

+ 12 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/PassengerInfoServiceImpl.java

@@ -342,9 +342,21 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
             mergeId = mergeOrderInfo.getId();
         }
 
+        PassengerInfo passengerInfo0 = get(passengerList.get(0));
+
+        String upStationId = passengerInfo0.getUpStationId();
 
         for (String passengerId : passengerList) {
+
+            OrderInfo orderInfo0 = orderInfoService.findByPassengerIdMergeOrderId(passengerId,mergeId);
+            if (orderInfo0 != null){
+                throw new Exception("有乘客已加入此账单,不可重复添加");
+            }
+
             PassengerInfo passengerInfo = get(passengerId);
+            if (!passengerInfo.getUpStationId().equals(upStationId)){
+                throw new Exception("上车站点不一致不可同时选择");
+            }
             if ("1".equals(passengerInfo.getStatus()) && "0".equals(passengerInfo.getPayStatus())) {
 
                 //创建订单

+ 9 - 0
common/src/main/resources/mapper/base/OrderInfo.xml

@@ -206,4 +206,13 @@
 		and merge_order_id = #{mergeOrderId}
 		]]>
 	</select>
+
+	<select id="findByPassengerIdMergeOrderId" resultMap="OrderInfoMap">
+		<![CDATA[
+		select * from base_order_info
+		where del_flag = 0
+		and passenger_id = #{passengerId}
+		and merge_order_id = #{mergeOrderId}
+		]]>
+	</select>
 </mapper>

+ 2 - 0
web/src/main/java/com/jpsoft/bus/config/WebMvcConfig.java

@@ -67,6 +67,8 @@ public class WebMvcConfig implements WebMvcConfigurer {
 				.excludePathPatterns("/wechat/getConfig")
 				.excludePathPatterns("/mobile/passengerApi/upload")
 				.excludePathPatterns("/mobile/passengerApi/upBusNoTicketList")
+				.excludePathPatterns("/mobile/passengerApi/createPassengerOrder")
+				.excludePathPatterns("/mobile/passengerApi/deletePassengerOrder")
 				.excludePathPatterns("/aliPay/**")
 				.excludePathPatterns("/wxPay/**")
 				;

+ 1 - 1
web/src/main/java/com/jpsoft/bus/modules/driver/controller/DriverApiController.java

@@ -782,7 +782,7 @@ public class DriverApiController {
             @ApiImplicitParam(name = "ticketDownStationId", value = "乘客买票下车站点id", required = true, paramType = "form"),
             @ApiImplicitParam(name = "ticketType", value = "购票类型(1:儿童票,2:成人票)", required = true, paramType = "form")
     })
-    public MessageResult<Map> ticketAmount(String ticketUpStationId,String ticketDownStationId,String ticketType,String token, @RequestAttribute String subject) {
+    public MessageResult<Map> ticketAmount(String ticketUpStationId,String ticketDownStationId,String ticketType,String token,String subject) {
         MessageResult<Map> messageResult = new MessageResult<>();
 
         try {

+ 46 - 0
web/src/main/java/com/jpsoft/bus/modules/mobile/controller/PassengerApiController.java

@@ -589,4 +589,50 @@ public class PassengerApiController {
         return messageResult;
     }
 
+
+    @PostMapping("deletePassengerOrder")
+    @ApiOperation(value = "删除乘客订单")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "乘客id", required = true, paramType = "form"),
+            @ApiImplicitParam(name = "mergeOrderId", value = "综合账单id", required = true, paramType = "form")
+    })
+    public MessageResult<Map> deletePassengerOrder(String id,String mergeOrderId) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+
+            MergeOrderInfo mergeOrderInfo = mergeOrderInfoService.get(mergeOrderId);
+            if (mergeOrderInfo == null){
+                throw new Exception("账单不存在");
+            }
+
+            if (mergeOrderInfo.getPayStatus() == 20){
+                throw new Exception("已支付账单不可删除");
+            }
+
+            OrderInfo orderInfo = orderInfoService.findByPassengerIdMergeOrderId(id,mergeOrderId);
+
+            if (orderInfo != null){
+                if (orderInfo.getPayStatus() == 20){
+                    throw new Exception("已支付账单不可删除");
+                }
+                orderInfo.setDelFlag(true);
+                orderInfoService.update(orderInfo);
+            }
+
+
+
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage());
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
 }