Browse Source

乘客端查看线路

fllmoyu 4 years ago
parent
commit
a3f7db1651

+ 2 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/dto/NearbyShiftDTO.java

@@ -18,4 +18,6 @@ public class NearbyShiftDTO {
     private String endStationName;
 
     private String currentStationName;
+
+    private Integer distance;
 }

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

@@ -71,6 +71,8 @@ public class WebMvcConfig implements WebMvcConfigurer {
 				.excludePathPatterns("/mobile/passengerApi/deletePassengerOrder")
 				.excludePathPatterns("/mobile/passengerApi/updatePassengerOrder")
 				.excludePathPatterns("/mobile/passengerApi/passengerNearbyStation")
+				.excludePathPatterns("/mobile/passengerApi/routeList")
+				.excludePathPatterns("/mobile/passengerApi/routeDetail")
 				.excludePathPatterns("/aliPay/**")
 				.excludePathPatterns("/wxPay/**")
 				;

+ 251 - 110
web/src/main/java/com/jpsoft/bus/modules/mobile/controller/PassengerApiController.java

@@ -11,6 +11,8 @@ import com.jpsoft.bus.modules.base.entity.MergeOrderInfo;
 import com.jpsoft.bus.modules.base.entity.OrderInfo;
 import com.jpsoft.bus.modules.base.service.MergeOrderInfoService;
 import com.jpsoft.bus.modules.base.service.OrderInfoService;
+import com.jpsoft.bus.modules.bus.dto.NearbyShiftDTO;
+import com.jpsoft.bus.modules.bus.dto.NearbyStationDTO;
 import com.jpsoft.bus.modules.bus.dto.PassengerDetailDTO;
 import com.jpsoft.bus.modules.bus.dto.VehicleStationDTO;
 import com.jpsoft.bus.modules.bus.entity.*;
@@ -24,6 +26,8 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.gavaghan.geodesy.Ellipsoid;
+import org.gavaghan.geodesy.GlobalCoordinates;
 import org.joda.time.DateTime;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -90,13 +94,13 @@ public class PassengerApiController {
             @ApiImplicitParam(name = "subject", value = "令牌", required = false, paramType = "query"),
             @ApiImplicitParam(name = "carNum", value = "车牌号", required = true, paramType = "form")
     })
-    public MessageResult<Map> findByCarNum(String token, @RequestAttribute String subject, String carNum){
+    public MessageResult<Map> findByCarNum(String token, @RequestAttribute String subject, String carNum) {
 
         MessageResult<Map> messageResult = new MessageResult<>();
-        try{
+        try {
 
-        }catch (Exception ex){
-            log.error(ex.getMessage(),ex);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
             messageResult.setCode(400);
             messageResult.setResult(false);
             messageResult.setMessage(ex.getMessage());
@@ -135,7 +139,7 @@ public class PassengerApiController {
             messageResult.setResult(true);
             messageResult.setCode(200);
         } catch (Exception ex) {
-            log.error(ex.getMessage(),ex);
+            log.error(ex.getMessage(), ex);
             messageResult.setResult(false);
             messageResult.setCode(400);
             messageResult.setMessage(ex.getMessage());
@@ -159,7 +163,7 @@ public class PassengerApiController {
 
             String beforeVerifyCode = (String) redisTemplate.opsForValue().get(smsKey);
 
-            if (StringUtils.isBlank(openId)){
+            if (StringUtils.isBlank(openId)) {
                 throw new Exception("用户标识为空");
             }
 
@@ -177,11 +181,11 @@ public class PassengerApiController {
             Long userId;
 
             UserInfo userInfo = userInfoService.findByPhone(phone);
-            if (userInfo == null){
+            if (userInfo == null) {
                 UserInfo userInfo1 = new UserInfo();
-                userInfo1.setName("乘客_"+ com.jpsoft.bus.modules.common.utils.StringUtils.random(8, com.jpsoft.bus.modules.common.utils.StringUtils.RandomType.ALL));
+                userInfo1.setName("乘客_" + com.jpsoft.bus.modules.common.utils.StringUtils.random(8, com.jpsoft.bus.modules.common.utils.StringUtils.RandomType.ALL));
                 userInfo1.setPhone(phone);
-                userInfo1.setPassword(des3.encrypt(jwtSecret,phone));
+                userInfo1.setPassword(des3.encrypt(jwtSecret, phone));
                 userInfo1.setAcceptMessage(false);
                 userInfo1.setCreateTime(new Date());
                 userInfo1.setDelFlag(false);
@@ -189,7 +193,7 @@ public class PassengerApiController {
                 userInfoService.insert(userInfo1);
                 userId = userInfo1.getId();
                 userInfo = userInfo1;
-            }else {
+            } else {
                 userInfo.setOpenId(openId);
                 userInfoService.update(userInfo);
                 userId = userInfo.getId();
@@ -225,9 +229,9 @@ public class PassengerApiController {
 
         try {
 
-            List<ShiftInfo> shiftInfoList = shiftInfoService.findByVehicleIdAndStatus(id,"1");
+            List<ShiftInfo> shiftInfoList = shiftInfoService.findByVehicleIdAndStatus(id, "1");
 
-            if (shiftInfoList.size() == 0){
+            if (shiftInfoList.size() == 0) {
                 throw new Exception("当前车辆没有正运行的班次");
             }
 
@@ -248,22 +252,21 @@ public class PassengerApiController {
             //线路所有站点
             List<StationInfo> stationInfoList = stationInfoService.findByRouteId(shiftInfo.getRouteId());
 
-         //   List<VehicleStationDTO> vehicleStationDTOList = stationInfoService.getVehicleStationDTO(shiftInfo,stationInfoList);
-
+            //   List<VehicleStationDTO> vehicleStationDTOList = stationInfoService.getVehicleStationDTO(shiftInfo,stationInfoList);
 
 
             Map<String, Object> map = new HashMap<>();
-            map.put("startStation",startStation.getName());
-            map.put("startStationId",startStation.getId());
-            map.put("startStationCoordinate",startStation.getLongitude() + "|" +startStation.getLatitude());
-            map.put("endStation",endStation.getName());
-            map.put("endStationId",endStation.getId());
-            map.put("endStationCoordinate",endStation.getLongitude() + "|" + endStation.getLatitude());
-            map.put("startTime",routeInfo.getStartTime());
-            map.put("endTime",routeInfo.getEndTime());
-            map.put("routeName",routeInfo.getName());
-            map.put("mapPath",routeInfo.getMapPath());
-        //    map.put("stationList",vehicleStationDTOList);
+            map.put("startStation", startStation.getName());
+            map.put("startStationId", startStation.getId());
+            map.put("startStationCoordinate", startStation.getLongitude() + "|" + startStation.getLatitude());
+            map.put("endStation", endStation.getName());
+            map.put("endStationId", endStation.getId());
+            map.put("endStationCoordinate", endStation.getLongitude() + "|" + endStation.getLatitude());
+            map.put("startTime", routeInfo.getStartTime());
+            map.put("endTime", routeInfo.getEndTime());
+            map.put("routeName", routeInfo.getName());
+            map.put("mapPath", routeInfo.getMapPath());
+            //    map.put("stationList",vehicleStationDTOList);
             messageResult.setData(map);
             messageResult.setResult(true);
             messageResult.setCode(200);
@@ -302,7 +305,7 @@ public class PassengerApiController {
             //线路所有站点
             List<StationInfo> stationInfoList = stationInfoService.findByRouteId(shiftInfo.getRouteId());
             Map<String, Object> map = new HashMap<>();
-            List<VehicleStationDTO> vehicleStationDTOList = stationInfoService.getVehicleStationDTO(shiftInfo,stationInfoList);
+            List<VehicleStationDTO> vehicleStationDTOList = stationInfoService.getVehicleStationDTO(shiftInfo, stationInfoList);
             messageResult.setData(vehicleStationDTOList);
             messageResult.setResult(true);
             messageResult.setCode(200);
@@ -341,7 +344,7 @@ public class PassengerApiController {
             Map<String, Object> map = new HashMap<>();
             map.put("longitude", vehicleInfo.getLongitude());
             map.put("latitude", vehicleInfo.getLatitude());
-            map.put("currentStationId",shiftInfo.getCurrentStationId());
+            map.put("currentStationId", shiftInfo.getCurrentStationId());
             messageResult.setData(map);
             messageResult.setResult(true);
             messageResult.setCode(200);
@@ -361,7 +364,7 @@ public class PassengerApiController {
             @ApiImplicitParam(name = "id", value = "车辆id", required = true, paramType = "form"),
             @ApiImplicitParam(name = "openId", value = "openId", required = true, paramType = "form")
     })
-    public MessageResult<Map> getPassengerInfo(String id,String openId) {
+    public MessageResult<Map> getPassengerInfo(String id, String openId) {
         MessageResult<Map> messageResult = new MessageResult<>();
 
         try {
@@ -379,49 +382,47 @@ public class PassengerApiController {
             VehicleInfo vehicleInfo = vehicleInfoService.get(id);
 
             String mergeOrderId = null;
-            List<MergeOrderInfo> mergeOrderInfoList = mergeOrderInfoService.findByOpenIdShiftIdPayStatus(openId,shiftInfo.getId(),10);
+            List<MergeOrderInfo> mergeOrderInfoList = mergeOrderInfoService.findByOpenIdShiftIdPayStatus(openId, shiftInfo.getId(), 10);
 
             BigDecimal totalAmount = BigDecimal.ZERO;
             List<PassengerOrderDTO> passengerOrderDTOList = new ArrayList<>();
-            if (mergeOrderInfoList.size()>0){
-               MergeOrderInfo mergeOrderInfo = mergeOrderInfoList.get(0);
-               List<OrderInfo> orderInfoList = orderInfoService.findByMergeOrderId(mergeOrderInfo.getId());
-               mergeOrderId = mergeOrderInfo.getId();
-
-               if (orderInfoList.size()>0){
-                   for (OrderInfo orderInfo : orderInfoList){
-
-
-                       PassengerInfo passengerInfo = passengerInfoService.get(orderInfo.getPassengerId());
-                       //购票始发站
-                       StationInfo start = stationInfoService.get(orderInfo.getTicketUpStationId());
-                       //购票终点站
-                       StationInfo end = stationInfoService.get(orderInfo.getTicketDownStationId());
-                       PassengerOrderDTO passengerOrderDTO = new PassengerOrderDTO();
-                       passengerOrderDTO.setId(orderInfo.getPassengerId());
-                       passengerOrderDTO.setImageUrl(passengerInfo.getImageUrl());
-                       passengerOrderDTO.setTicketUpStationName(start.getName());
-                       passengerOrderDTO.setTicketUpStationId(start.getId());
-                       passengerOrderDTO.setTicketDownStationId(end.getId());
-                       passengerOrderDTO.setTicketDownStationName(end.getName());
-                       passengerOrderDTO.setTicketType(orderInfo.getTicketType());
-                       passengerOrderDTO.setTicketTypeStr(passengerOrderDTO.getTicketTypeStr(passengerOrderDTO.getTicketType()));
-                       passengerOrderDTO.setGoodsTicket(orderInfo.getGoodsTicket());
-                       passengerOrderDTO.setTotalFee(orderInfo.getTotalFee());
-                       passengerOrderDTOList.add(passengerOrderDTO);
-
-                       totalAmount = totalAmount.add(orderInfo.getTotalFee());
-                   }
-               }
+            if (mergeOrderInfoList.size() > 0) {
+                MergeOrderInfo mergeOrderInfo = mergeOrderInfoList.get(0);
+                List<OrderInfo> orderInfoList = orderInfoService.findByMergeOrderId(mergeOrderInfo.getId());
+                mergeOrderId = mergeOrderInfo.getId();
+
+                if (orderInfoList.size() > 0) {
+                    for (OrderInfo orderInfo : orderInfoList) {
+
+
+                        PassengerInfo passengerInfo = passengerInfoService.get(orderInfo.getPassengerId());
+                        //购票始发站
+                        StationInfo start = stationInfoService.get(orderInfo.getTicketUpStationId());
+                        //购票终点站
+                        StationInfo end = stationInfoService.get(orderInfo.getTicketDownStationId());
+                        PassengerOrderDTO passengerOrderDTO = new PassengerOrderDTO();
+                        passengerOrderDTO.setId(orderInfo.getPassengerId());
+                        passengerOrderDTO.setImageUrl(passengerInfo.getImageUrl());
+                        passengerOrderDTO.setTicketUpStationName(start.getName());
+                        passengerOrderDTO.setTicketUpStationId(start.getId());
+                        passengerOrderDTO.setTicketDownStationId(end.getId());
+                        passengerOrderDTO.setTicketDownStationName(end.getName());
+                        passengerOrderDTO.setTicketType(orderInfo.getTicketType());
+                        passengerOrderDTO.setTicketTypeStr(passengerOrderDTO.getTicketTypeStr(passengerOrderDTO.getTicketType()));
+                        passengerOrderDTO.setGoodsTicket(orderInfo.getGoodsTicket());
+                        passengerOrderDTO.setTotalFee(orderInfo.getTotalFee());
+                        passengerOrderDTOList.add(passengerOrderDTO);
+
+                        totalAmount = totalAmount.add(orderInfo.getTotalFee());
+                    }
+                }
             }
 
 
-
-
             Map<String, Object> map = new HashMap<>();
             map.put("totalAmount", totalAmount);
             map.put("list", passengerOrderDTOList);
-            map.put("id",mergeOrderId);
+            map.put("id", mergeOrderId);
             messageResult.setData(map);
             messageResult.setResult(true);
             messageResult.setCode(200);
@@ -436,7 +437,6 @@ public class PassengerApiController {
     }
 
 
-
     @PostMapping("upload")
     @ApiOperation(value = "人员照片上传")
     @ApiImplicitParams({
@@ -450,7 +450,7 @@ public class PassengerApiController {
         try {
 
 
-            String retFileUrl = OSSUtil.uploadBase64(photoFile,photoName,ossConfig);
+            String retFileUrl = OSSUtil.uploadBase64(photoFile, photoName, ossConfig);
 
             messageResult.setResult(true);
             messageResult.setData(retFileUrl);
@@ -472,7 +472,7 @@ public class PassengerApiController {
             @ApiImplicitParam(name = "faceImageUrl", value = "人脸照片", required = true, paramType = "form"),
             @ApiImplicitParam(name = "id", value = "车辆id", required = true, paramType = "form")
     })
-    public MessageResult<Map> matchFaceImage(String faceImageUrl,String id) {
+    public MessageResult<Map> matchFaceImage(String faceImageUrl, String id) {
         MessageResult<Map> messageResult = new MessageResult<>();
 
         try {
@@ -481,10 +481,10 @@ public class PassengerApiController {
             //人脸库id
             String groupId = CommonUtil.getProvinceNum(vehicleInfo.getLicensePlateNumber()) + StrUtil.sub(vehicleInfo.getLicensePlateNumber(), 1, 10);
 
-           Long personId =  baiduService.faceSearch(faceImageUrl,"URL",groupId);
-           if (personId == null){
-            throw new Exception("无匹配照片");
-           }
+            Long personId = baiduService.faceSearch(faceImageUrl, "URL", groupId);
+            if (personId == null) {
+                throw new Exception("无匹配照片");
+            }
 
             Map<String, Object> map = new HashMap<>();
             messageResult.setData(map);
@@ -522,13 +522,13 @@ public class PassengerApiController {
             //班次信息
             ShiftInfo shiftInfo = shiftInfoList.get(0);
 
-            Map<String,Object> searchParams = new HashMap<>();
-            searchParams.put("vehicleShiftId",shiftInfo.getId());
-            searchParams.put("status","1");
-            searchParams.put("payStatus","0");
+            Map<String, Object> searchParams = new HashMap<>();
+            searchParams.put("vehicleShiftId", shiftInfo.getId());
+            searchParams.put("status", "1");
+            searchParams.put("payStatus", "0");
             List<Sort> sortList = new ArrayList<>();
-            sortList.add(new Sort("up_time","desc"));
-            Page<PassengerInfo> page = passengerInfoService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+            sortList.add(new Sort("up_time", "desc"));
+            Page<PassengerInfo> page = passengerInfoService.pageSearch(searchParams, pageIndex, pageSize, true, sortList);
 
 
             messageResult.setData(PojoUtils.pageWrapper(page));
@@ -558,7 +558,7 @@ public class PassengerApiController {
             @ApiImplicitParam(name = "goodsTicket", value = "货票金额", required = true, paramType = "form"),
             @ApiImplicitParam(name = "totalFee", value = "总金额", required = true, paramType = "form")
     })
-    public MessageResult<Map> createPassengerOrder(String id,String openId,String mergeOrderId,String passengerIds,String ticketUpStationId,String ticketDownStationId,String ticketType,String goodsTicket,String totalFee) {
+    public MessageResult<Map> createPassengerOrder(String id, String openId, String mergeOrderId, String passengerIds, String ticketUpStationId, String ticketDownStationId, String ticketType, String goodsTicket, String totalFee) {
         MessageResult<Map> messageResult = new MessageResult<>();
 
         try {
@@ -575,7 +575,7 @@ public class PassengerApiController {
             ShiftInfo shiftInfo = shiftInfoList.get(0);
 
 
-             passengerInfoService.createOrder(vehicleInfo,shiftInfo,openId,mergeOrderId,passengerIds,ticketUpStationId,ticketDownStationId,ticketType,goodsTicket,totalFee);
+            passengerInfoService.createOrder(vehicleInfo, shiftInfo, openId, mergeOrderId, passengerIds, ticketUpStationId, ticketDownStationId, ticketType, goodsTicket, totalFee);
 
             messageResult.setResult(true);
             messageResult.setCode(200);
@@ -596,25 +596,25 @@ public class PassengerApiController {
             @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) {
+    public MessageResult<Map> deletePassengerOrder(String id, String mergeOrderId) {
         MessageResult<Map> messageResult = new MessageResult<>();
 
         try {
 
 
             MergeOrderInfo mergeOrderInfo = mergeOrderInfoService.get(mergeOrderId);
-            if (mergeOrderInfo == null){
+            if (mergeOrderInfo == null) {
                 throw new Exception("账单不存在");
             }
 
-            if (mergeOrderInfo.getPayStatus() == 20){
+            if (mergeOrderInfo.getPayStatus() == 20) {
                 throw new Exception("已支付账单不可删除");
             }
 
-            OrderInfo orderInfo = orderInfoService.findByPassengerIdMergeOrderId(id,mergeOrderId);
+            OrderInfo orderInfo = orderInfoService.findByPassengerIdMergeOrderId(id, mergeOrderId);
 
-            if (orderInfo != null){
-                if (orderInfo.getPayStatus() == 20){
+            if (orderInfo != null) {
+                if (orderInfo.getPayStatus() == 20) {
                     throw new Exception("已支付账单不可删除");
                 }
                 orderInfo.setDelFlag(true);
@@ -622,7 +622,6 @@ public class PassengerApiController {
             }
 
 
-
             messageResult.setResult(true);
             messageResult.setCode(200);
         } catch (Exception ex) {
@@ -646,31 +645,30 @@ public class PassengerApiController {
             @ApiImplicitParam(name = "goodsTicket", value = "货票金额", required = true, paramType = "form"),
             @ApiImplicitParam(name = "totalFee", value = "总金额", required = true, paramType = "form")
     })
-    public MessageResult<Map> updatePassengerOrder(String id,String mergeOrderId,String ticketUpStationId,String ticketDownStationId,String ticketType,String goodsTicket,String totalFee) {
+    public MessageResult<Map> updatePassengerOrder(String id, String mergeOrderId, String ticketUpStationId, String ticketDownStationId, String ticketType, String goodsTicket, String totalFee) {
         MessageResult<Map> messageResult = new MessageResult<>();
 
         try {
 
 
             MergeOrderInfo mergeOrderInfo = mergeOrderInfoService.get(mergeOrderId);
-            if (mergeOrderInfo == null){
+            if (mergeOrderInfo == null) {
                 throw new Exception("账单不存在");
             }
 
-            if (mergeOrderInfo.getPayStatus() == 20){
+            if (mergeOrderInfo.getPayStatus() == 20) {
                 throw new Exception("已支付账单不可修改");
             }
 
-            OrderInfo orderInfo = orderInfoService.findByPassengerIdMergeOrderId(id,mergeOrderId);
+            OrderInfo orderInfo = orderInfoService.findByPassengerIdMergeOrderId(id, mergeOrderId);
 
-            if (orderInfo != null){
-                if (orderInfo.getPayStatus() == 20){
+            if (orderInfo != null) {
+                if (orderInfo.getPayStatus() == 20) {
                     throw new Exception("已支付账单不可修改");
                 }
             }
 
-            passengerInfoService.updatePassengerOrder(orderInfo,ticketUpStationId,ticketDownStationId,ticketType,goodsTicket,totalFee);
-
+            passengerInfoService.updatePassengerOrder(orderInfo, ticketUpStationId, ticketDownStationId, ticketType, goodsTicket, totalFee);
 
 
             messageResult.setResult(true);
@@ -692,9 +690,9 @@ public class PassengerApiController {
             @ApiImplicitParam(name = "longitude", value = "经度", required = true, paramType = "form"),
             @ApiImplicitParam(name = "latitude", value = "纬度", required = true, paramType = "form")
     })
-    public MessageResult<Map> passengerNearbyStation(String longitude,String latitude,@RequestParam(value = "pageIndex", defaultValue = "1") int pageIndex,
- @RequestParam(value = "pageSize", defaultValue = "5") int pageSize) {
-        MessageResult<Map> messageResult = new MessageResult<>();
+    public MessageResult<List<NearbyStationDTO>> passengerNearbyStation(String longitude, String latitude, @RequestParam(value = "pageIndex", defaultValue = "1") int pageIndex,
+                                                                        @RequestParam(value = "pageSize", defaultValue = "5") int pageSize) {
+        MessageResult<List<NearbyStationDTO>> messageResult = new MessageResult<>();
 
         try {
 
@@ -707,37 +705,143 @@ public class PassengerApiController {
             Double minLa = la - 0.004D;
 
 
-            Map<String,Object> searchParams = new HashMap<>();
-            searchParams.put("maxLongitude",maxLo);
-            searchParams.put("minLongitude",minLo);
-            searchParams.put("maxLatitude",maxLa);
-            searchParams.put("minLatitude",minLa);
+            Map<String, Object> searchParams = new HashMap<>();
+            searchParams.put("maxLongitude", maxLo);
+            searchParams.put("minLongitude", minLo);
+            searchParams.put("maxLatitude", maxLa);
+            searchParams.put("minLatitude", minLa);
 
             List<Sort> sortList = new ArrayList<>();
-            sortList.add(new Sort("create_time","desc"));
+            sortList.add(new Sort("create_time", "desc"));
 
-            Page<StationInfo> page = stationInfoService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+            Page<StationInfo> page = stationInfoService.pageSearch(searchParams, pageIndex, pageSize, true, sortList);
 
             List<StationInfo> stationInfoList = page.getResult();
-            if (stationInfoList.size()>0){
-                for (StationInfo stationInfo : stationInfoList){
-                    List<ShiftInfo> shiftInfoList = shiftInfoService.findByRouteIdAndStatus(stationInfo.getRouteId(),"1");
-                    if (shiftInfoList.size()>0){
-                        for (ShiftInfo shiftInfo : shiftInfoList){
-
+            List<NearbyStationDTO> nearbyStationDTOList = new ArrayList<>();
+            List<String> shiftIdList = new ArrayList<>();
+            if (stationInfoList.size() > 0) {
+                for (StationInfo stationInfo : stationInfoList) {
+
+                    NearbyStationDTO nearbyStationDTO = new NearbyStationDTO();
+                    List<ShiftInfo> shiftInfoList = shiftInfoService.findByRouteIdAndStatus(stationInfo.getRouteId(), "1");
+                    if (shiftInfoList.size() > 0) {
+                        if (shiftInfoList.size() == 1) {
+                            ShiftInfo shiftInfo = shiftInfoList.get(0);
+
+                            if (!shiftIdList.contains(shiftInfo.getId())) {
+
+
+                                //线路
+                                RouteInfo routeInfo = routeInfoService.get(shiftInfo.getRouteId());
+                                VehicleInfo vehicleInfo = vehicleInfoService.get(shiftInfo.getVehicleId());
+                                //起始站
+                                StationInfo startStation = stationInfoService.get(shiftInfo.getStartStationId());
+                                //终点站
+                                StationInfo endStation = stationInfoService.get(shiftInfo.getEndStationId());
+                                //当前站
+                                StationInfo currentStation = stationInfoService.get(shiftInfo.getCurrentStationId());
+                                nearbyStationDTO.setStationName(stationInfo.getName());
+                                List<NearbyShiftDTO> nearbyShiftDTOList = new ArrayList<>();
+                                NearbyShiftDTO nearbyShiftDTO = new NearbyShiftDTO();
+                                nearbyShiftDTO.setId(shiftInfo.getId());
+                                nearbyShiftDTO.setRouteName(routeInfo.getName());
+                                nearbyShiftDTO.setStartStationName(startStation.getName());
+                                nearbyShiftDTO.setEndStationName(endStation.getName());
+                                nearbyShiftDTO.setCurrentStationName(currentStation.getName());
+
+                                //距离
+                                GlobalCoordinates source = new GlobalCoordinates(Double.valueOf(vehicleInfo.getLatitude()), Double.valueOf(vehicleInfo.getLongitude()));
+                                GlobalCoordinates target = new GlobalCoordinates(Double.valueOf(latitude), Double.valueOf(longitude));
+
+                                double meter1 = CommonUtil.getDistanceMeter(source, target, Ellipsoid.Sphere);
+                                nearbyShiftDTO.setDistance((new Double(meter1)).intValue());
+
+
+                                nearbyShiftDTOList.add(nearbyShiftDTO);
+                                nearbyStationDTO.setNearbyShiftDTOList(nearbyShiftDTOList);
+                                nearbyStationDTOList.add(nearbyStationDTO);
+                                shiftIdList.add(shiftInfo.getId());
+
+                            }
+                        } else {
+                            for (ShiftInfo shiftInfo : shiftInfoList) {
+
+                                if (!shiftIdList.contains(shiftInfo.getId())) {
+
+
+                                    //线路
+                                    RouteInfo routeInfo = routeInfoService.get(shiftInfo.getRouteId());
+                                    VehicleInfo vehicleInfo = vehicleInfoService.get(shiftInfo.getVehicleId());
+                                    //起始站
+                                    StationInfo startStation = stationInfoService.get(shiftInfo.getStartStationId());
+                                    //终点站
+                                    StationInfo endStation = stationInfoService.get(shiftInfo.getEndStationId());
+                                    //当前站
+                                    StationInfo currentStation = stationInfoService.get(shiftInfo.getCurrentStationId());
+                                    nearbyStationDTO.setStationName(stationInfo.getName());
+                                    List<NearbyShiftDTO> nearbyShiftDTOList = new ArrayList<>();
+                                    NearbyShiftDTO nearbyShiftDTO = new NearbyShiftDTO();
+                                    nearbyShiftDTO.setId(shiftInfo.getId());
+                                    nearbyShiftDTO.setRouteName(routeInfo.getName());
+                                    nearbyShiftDTO.setStartStationName(startStation.getName());
+                                    nearbyShiftDTO.setEndStationName(endStation.getName());
+                                    nearbyShiftDTO.setCurrentStationName(currentStation.getName());
+
+                                    //距离
+                                    GlobalCoordinates source = new GlobalCoordinates(Double.valueOf(vehicleInfo.getLatitude()), Double.valueOf(vehicleInfo.getLongitude()));
+                                    GlobalCoordinates target = new GlobalCoordinates(Double.valueOf(latitude), Double.valueOf(longitude));
+
+                                    double meter1 = CommonUtil.getDistanceMeter(source, target, Ellipsoid.Sphere);
+                                    nearbyShiftDTO.setDistance((new Double(meter1)).intValue());
+                                    nearbyShiftDTOList.add(nearbyShiftDTO);
+                                    nearbyStationDTO.setNearbyShiftDTOList(nearbyShiftDTOList);
+                                    nearbyStationDTOList.add(nearbyStationDTO);
+                                    shiftIdList.add(shiftInfo.getId());
+                                }
+                            }
                         }
+
                     }
                 }
             }
 
 
+            messageResult.setData(nearbyStationDTOList);
+            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;
+    }
 
 
+    @PostMapping("routeList")
+    @ApiOperation(value = "乘客查询线路列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "name", value = "线路名称", required = true, paramType = "form")
+    })
+    public MessageResult<Map> routeList(String name, @RequestParam(value = "pageIndex", defaultValue = "1") int pageIndex,@RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+        MessageResult<Map> messageResult = new MessageResult<>();
 
+        try {
 
-            messageResult.setResult(true);
+            Map<String,Object> searchParams = new HashMap<>();
+            searchParams.put("name","%"+name+"%");
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("create_time","desc"));
+            Page<RouteInfo> page = routeInfoService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+
+            messageResult.setData(PojoUtils.pageWrapper(page));
             messageResult.setCode(200);
-        } catch (Exception ex) {
+            messageResult.setResult(true);
+
+
+        }catch (Exception ex){
             log.error(ex.getMessage());
             messageResult.setCode(400);
             messageResult.setResult(false);
@@ -747,5 +851,42 @@ public class PassengerApiController {
         return messageResult;
     }
 
+    @PostMapping("routeDetail")
+    @ApiOperation(value = "乘客查询线路详情")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "线路id", required = true, paramType = "form")
+    })
+    public MessageResult<Map> routeDetail(String id) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            RouteInfo routeInfo = routeInfoService.get(id);
+            if (routeInfo == null){
+                throw new Exception("线路不存在");
+            }
+
+            List<StationInfo> stationInfoList = stationInfoService.findByRouteId(id);
+
+
+            Map<String,Object> map = new HashMap<>();
+            map.put("routeInfo",routeInfo);
+            map.put("stationInfoList",stationInfoList);
+
+
+            messageResult.setData(map);
+            messageResult.setCode(200);
+            messageResult.setResult(true);
+
+
+        }catch (Exception ex){
+            log.error(ex.getMessage());
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
 
 }