fllmoyu 4 роки тому
батько
коміт
b4a89363a9
18 змінених файлів з 402 додано та 105 видалено
  1. 2 0
      common/src/main/java/com/jpsoft/bus/modules/base/dao/MergeOrderInfoDAO.java
  2. 12 0
      common/src/main/java/com/jpsoft/bus/modules/base/dto/PassengerOrderDTO.java
  3. 20 17
      common/src/main/java/com/jpsoft/bus/modules/base/entity/MergeOrderInfo.java
  4. 2 0
      common/src/main/java/com/jpsoft/bus/modules/base/service/MergeOrderInfoService.java
  5. 5 0
      common/src/main/java/com/jpsoft/bus/modules/base/service/impl/MergeOrderInfoServiceImpl.java
  6. 2 0
      common/src/main/java/com/jpsoft/bus/modules/bus/dto/DriverBuyTicketDTO.java
  7. 1 0
      common/src/main/java/com/jpsoft/bus/modules/bus/dto/PassengerDetailDTO.java
  8. 3 0
      common/src/main/java/com/jpsoft/bus/modules/bus/dto/VehicleStationDTO.java
  9. 1 1
      common/src/main/java/com/jpsoft/bus/modules/bus/service/BaiduService.java
  10. 5 0
      common/src/main/java/com/jpsoft/bus/modules/bus/service/StationInfoService.java
  11. 42 17
      common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/BaiduServiceImpl.java
  12. 4 0
      common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/PassengerInfoServiceImpl.java
  13. 60 0
      common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/StationInfoServiceImpl.java
  14. 18 3
      common/src/main/resources/mapper/base/MergeOrderInfo.xml
  15. 3 0
      web/src/main/java/com/jpsoft/bus/config/WebMvcConfig.java
  16. 29 44
      web/src/main/java/com/jpsoft/bus/modules/driver/controller/DriverApiController.java
  17. 192 22
      web/src/main/java/com/jpsoft/bus/modules/mobile/controller/PassengerApiController.java
  18. 1 1
      web/src/main/java/com/jpsoft/bus/modules/pay/wechat/WxPayController.java

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

@@ -17,4 +17,6 @@ public interface MergeOrderInfoDAO {
 	List<MergeOrderInfo> search(Map<String,Object> searchParams,List<Sort> sortList);
 
     MergeOrderInfo findByOutOrderNo(String outOrderNo);
+
+    List<MergeOrderInfo> findByOpenIdShiftIdPayStatus(String openId, String shiftId, int payStatus);
 }

+ 12 - 0
common/src/main/java/com/jpsoft/bus/modules/base/dto/PassengerOrderDTO.java

@@ -23,6 +23,18 @@ public class PassengerOrderDTO {
 
     private BigDecimal totalFee;
 
+    private String id;
+
+    private String imageUrl;
+
+    private String ticketUpStationId;
+
+    private String ticketUpStationName;
+
+    private String ticketDownStationId;
+
+    private String ticketDownStationName;
+
     public String getTicketTypeStr(String ticketType){
         String ticketTypeStr = "";
         if ("1".equals(ticketType)){

+ 20 - 17
common/src/main/java/com/jpsoft/bus/modules/base/entity/MergeOrderInfo.java

@@ -4,6 +4,7 @@ import java.io.Serializable;
 import java.util.Date;
 import java.text.SimpleDateFormat;
 import java.math.BigDecimal;
+
 import org.springframework.format.annotation.DateTimeFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
@@ -11,37 +12,39 @@ import io.swagger.annotations.ApiModel;
 import lombok.Data;
 
 /**
-  描述:base_merge_order_info的实体类
+ * 描述:base_merge_order_info的实体类
  */
 @Data
 @ApiModel(value = "base_merge_order_info的实体类")
 public class MergeOrderInfo {
-        @ApiModelProperty(value = "")
+    @ApiModelProperty(value = "")
     private String id;
-        @ApiModelProperty(value = "用户标识")
+    @ApiModelProperty(value = "用户标识")
     private String openId;
-        @ApiModelProperty(value = "支付状态(10:未支付,15:部分支付,20:支付完成,30:关闭,40:全额退款,45:部分退款)")
+    @ApiModelProperty(value = "班次id")
+    private String vehicleShiftId;
+    @ApiModelProperty(value = "支付状态(10:未支付,15:部分支付,20:支付完成,30:关闭,40:全额退款,45:部分退款)")
     private Integer payStatus;
-        @ApiModelProperty(value = "支付方式(wechat:微信,alipay:支付宝,cash:现金,ticket:车票)")
+    @ApiModelProperty(value = "支付方式(wechat:微信,alipay:支付宝,cash:现金,ticket:车票)")
     private String payName;
-        @ApiModelProperty(value = "系统订单号")
+    @ApiModelProperty(value = "系统订单号")
     private String outOrderNo;
-        @ApiModelProperty(value = "微信支付订单号")
+    @ApiModelProperty(value = "微信支付订单号")
     private String transactionId;
-        @ApiModelProperty(value = "收款账户id")
+    @ApiModelProperty(value = "收款账户id")
     private String paymentId;
-        @ApiModelProperty(value = "创建人")
+    @ApiModelProperty(value = "创建人")
     private String createBy;
-        @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
-	    @ApiModelProperty(value = "创建时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @ApiModelProperty(value = "创建时间")
     private Date createTime;
-        @ApiModelProperty(value = "更新人")
+    @ApiModelProperty(value = "更新人")
     private String updateBy;
-        @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
-	    @ApiModelProperty(value = "更新时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @ApiModelProperty(value = "更新时间")
     private Date updateTime;
-        @ApiModelProperty(value = "是否删除")
+    @ApiModelProperty(value = "是否删除")
     private Boolean delFlag = false;
 }

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

@@ -16,4 +16,6 @@ public interface MergeOrderInfoService {
 	Page<MergeOrderInfo> pageSearch(Map<String, Object> searchParams,int pageNum,int pageSize,boolean count,List<Sort> sortList);
 
     MergeOrderInfo findByOutOrderNo(String outOrderNo);
+
+    List<MergeOrderInfo> findByOpenIdShiftIdPayStatus(String openId, String shiftId, int payStatus);
 }

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

@@ -72,4 +72,9 @@ public class MergeOrderInfoServiceImpl implements MergeOrderInfoService {
 	public MergeOrderInfo findByOutOrderNo(String outOrderNo) {
 		return mergeOrderInfoDAO.findByOutOrderNo(outOrderNo);
 	}
+
+	@Override
+	public List<MergeOrderInfo> findByOpenIdShiftIdPayStatus(String openId, String shiftId, int payStatus) {
+		return mergeOrderInfoDAO.findByOpenIdShiftIdPayStatus(openId,shiftId,payStatus);
+	}
 }

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

@@ -11,6 +11,8 @@ import java.math.BigDecimal;
 @Data
 public class DriverBuyTicketDTO {
 
+    private String id;
+
     private String payName;
 
     private String payNameStr;

+ 1 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/dto/PassengerDetailDTO.java

@@ -44,4 +44,5 @@ public class PassengerDetailDTO {
     private List<PassengerOrderDTO> passengerOrderDTOList;
 
     private BigDecimal payFee;
+
 }

+ 3 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/dto/VehicleStationDTO.java

@@ -17,4 +17,7 @@ public class VehicleStationDTO {
 
     private String stationName;
 
+    private String longitude;
+    private String latitude;
+
 }

+ 1 - 1
common/src/main/java/com/jpsoft/bus/modules/bus/service/BaiduService.java

@@ -7,7 +7,7 @@ package com.jpsoft.bus.modules.bus.service;
 public interface BaiduService {
 
 
-    void faceSearch(String faceImageUrl,String faceType,String groupId) throws Exception;
+    Long faceSearch(String faceImageUrl,String faceType,String groupId) throws Exception;
 
     /**
      * 创建人脸用户组

+ 5 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/service/StationInfoService.java

@@ -2,6 +2,9 @@ package com.jpsoft.bus.modules.bus.service;
 
 import java.util.List;
 import java.util.Map;
+
+import com.jpsoft.bus.modules.bus.dto.VehicleStationDTO;
+import com.jpsoft.bus.modules.bus.entity.ShiftInfo;
 import com.jpsoft.bus.modules.bus.entity.StationInfo;
 import com.github.pagehelper.Page;
 import com.jpsoft.bus.modules.common.dto.Sort;
@@ -19,4 +22,6 @@ public interface StationInfoService {
     List<StationInfo> findByRouteIdAndClassify(String routeId, int classify);
 
 	StationInfo findByRouteIdAndName(String routeId, String name);
+
+    List<VehicleStationDTO> getVehicleStationDTO(ShiftInfo shiftInfo, List<StationInfo> stationInfoList);
 }

+ 42 - 17
common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/BaiduServiceImpl.java

@@ -1,14 +1,17 @@
 package com.jpsoft.bus.modules.bus.service.impl;
 
 import cn.hutool.http.HttpRequest;
+import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
+import com.google.gson.JsonObject;
 import com.jpsoft.bus.modules.bus.service.BaiduService;
 import com.jpsoft.bus.modules.common.utils.BaiduAuthUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -17,7 +20,7 @@ import java.util.Map;
  * @date 2021-4-6 11:05
  */
 @Transactional
-@Component(value="baiduService")
+@Component(value = "baiduService")
 public class BaiduServiceImpl implements BaiduService {
 
     @Autowired
@@ -25,24 +28,46 @@ public class BaiduServiceImpl implements BaiduService {
 
 
     @Override
-    public void faceSearch(String faceImageUrl, String faceType, String groupId) throws Exception {
+    public Long faceSearch(String faceImageUrl, String faceType, String groupId) throws Exception {
 
+        Long personId = null;
         // 请求url
         String url = "https://aip.baidubce.com/rest/2.0/face/v3/search";
         Map<String, Object> map = new HashMap<>();
-        map.put("image",faceImageUrl);
+        map.put("image", faceImageUrl);
         map.put("image_type", faceType);
-        map.put("group_id_list",groupId);
-        map.put("max_user_num",3);
+        map.put("group_id_list", groupId);
+        map.put("max_user_num", 1);
 
         // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
         String accessToken = baiduAuthUtil.getAuth();
 
-        String body = HttpRequest.post(url+"?access_token="+accessToken)
+        String body = HttpRequest.post(url + "?access_token=" + accessToken)
                 .form(map)
                 .execute()
                 .body();
 
+        JSONObject jsonObject = JSONUtil.parseObj(body);
+        String errorMsg = jsonObject.getStr("error_msg");
+        Integer errorCode = jsonObject.getInt("error_code");
+        if (!"SUCCESS".equals(errorMsg)) {
+            throw new Exception(errorMsg);
+        } else {
+            JSONObject jsonObject1 = jsonObject.getJSONObject("result");
+
+            JSONArray jsonArray = jsonObject1.getJSONArray("user_list");
+
+            Map map1 = (Map) jsonArray.get(0);
+
+            Double score = ((Double) map1.get("score"));
+
+            if (score.compareTo(new Double(90))>0){
+                Long userId = Long.parseLong((String) map1.get("user_id"));
+                personId = userId;
+            }
+
+        }
+        return personId;
 
 
     }
@@ -58,7 +83,7 @@ public class BaiduServiceImpl implements BaiduService {
         // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
         String accessToken = baiduAuthUtil.getAuth();
 
-        String body = HttpRequest.post(url+"?access_token="+accessToken)
+        String body = HttpRequest.post(url + "?access_token=" + accessToken)
                 .form(map)
                 .execute()
                 .body();
@@ -67,8 +92,8 @@ public class BaiduServiceImpl implements BaiduService {
 
         String errorMsg = jsonObject.getStr("error_msg");
         Integer errorCode = jsonObject.getInt("error_code");
-        if (!"SUCCESS".equals(errorMsg)){
-            if (errorCode != 223101){
+        if (!"SUCCESS".equals(errorMsg)) {
+            if (errorCode != 223101) {
                 throw new Exception(errorMsg);
             }
         }
@@ -77,30 +102,30 @@ public class BaiduServiceImpl implements BaiduService {
     }
 
     @Override
-    public void faceUserAdd(String imageUrl, String groupId, String personId,String userInfo) throws Exception {
+    public void faceUserAdd(String imageUrl, String groupId, String personId, String userInfo) throws Exception {
 
         // 请求url
         String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add";
 
         Map<String, Object> map = new HashMap<>();
-        map.put("image",imageUrl);
+        map.put("image", imageUrl);
         map.put("image_type", "URL");
-        map.put("group_id",groupId);
-        map.put("user_id",personId);
-        map.put("user_info",userInfo);
+        map.put("group_id", groupId);
+        map.put("user_id", personId);
+        map.put("user_info", userInfo);
 
         // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
         String accessToken = baiduAuthUtil.getAuth();
 
-        String body = HttpRequest.post(url+"?access_token="+accessToken)
+        String body = HttpRequest.post(url + "?access_token=" + accessToken)
                 .form(map)
                 .execute()
                 .body();
         JSONObject jsonObject = JSONUtil.parseObj(body);
         String errorMsg = jsonObject.getStr("error_msg");
         Integer errorCode = jsonObject.getInt("error_code");
-        if (!"SUCCESS".equals(errorMsg)){
-            if (errorCode != 223105){
+        if (!"SUCCESS".equals(errorMsg)) {
+            if (errorCode != 223105) {
                 throw new Exception(errorMsg);
             }
         }

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

@@ -180,6 +180,7 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
 			//创建综合账单
 			MergeOrderInfo mergeOrderInfo = new MergeOrderInfo();
 			mergeOrderInfo.setId(UUID.randomUUID().toString());
+			mergeOrderInfo.setVehicleShiftId(passengerInfo.getVehicleShiftId());
 			mergeOrderInfo.setPayStatus(20);
 			mergeOrderInfo.setOutOrderNo(com.jpsoft.bus.modules.common.utils.StringUtils.getOutTradeNo());
 			mergeOrderInfo.setPayName(payName);
@@ -200,6 +201,7 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
 			orderInfo.setTransactionId(orderInfo.getOutOrderNo());
 			orderInfo.setPassengerId(passengerInfo.getId());
 			orderInfo.setTicketType(ticketType);
+			orderInfo.setCreateTime(new Date());
 			orderInfo.setGoodsTicket(new BigDecimal(goodsTicket));
 			orderInfoService.insert(orderInfo);
 
@@ -213,6 +215,7 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
 			//创建综合账单
 			MergeOrderInfo mergeOrderInfo = new MergeOrderInfo();
 			mergeOrderInfo.setId(UUID.randomUUID().toString());
+			mergeOrderInfo.setVehicleShiftId(passengerInfo.getVehicleShiftId());
 			mergeOrderInfo.setPayStatus(10);
 			mergeOrderInfo.setOutOrderNo(com.jpsoft.bus.modules.common.utils.StringUtils.getOutTradeNo());
 			mergeOrderInfo.setPaymentId(paymentId);
@@ -240,6 +243,7 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
 			    codeUrl = alipayService.tradePrecreatePay(mergeOrderInfo.getId());
             }
 
+			driverBuyTicketDTO.setId(orderInfo.getId());
             driverBuyTicketDTO.setPayName(payName);
 			driverBuyTicketDTO.setTotalFee(orderInfo.getTotalFee());
 			driverBuyTicketDTO.setUrl(codeUrl);

+ 60 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/StationInfoServiceImpl.java

@@ -1,9 +1,13 @@
 package com.jpsoft.bus.modules.bus.service.impl;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 import javax.annotation.Resource;
+
+import com.jpsoft.bus.modules.bus.dto.VehicleStationDTO;
+import com.jpsoft.bus.modules.bus.entity.ShiftInfo;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 import com.jpsoft.bus.modules.bus.dao.StationInfoDAO;
@@ -83,4 +87,60 @@ public class StationInfoServiceImpl implements StationInfoService {
 	public StationInfo findByRouteIdAndName(String routeId, String name){
 		return stationInfoDAO.findByRouteIdAndName(routeId,name);
 	}
+
+	@Override
+	public List<VehicleStationDTO> getVehicleStationDTO(ShiftInfo shiftInfo, List<StationInfo> stationInfoList) {
+
+		List<VehicleStationDTO> vehicleStationDTOList = new ArrayList<>();
+
+		StationInfo currentStation = get(shiftInfo.getCurrentStationId());
+
+		int size = stationInfoList.size();
+		Integer index = stationInfoList.indexOf(currentStation);
+		if (shiftInfo.getStartStationId().equals(stationInfoList.get(0).getId())){
+			for (int n = 0;n<size;n++){
+				StationInfo stationInfo = stationInfoList.get(n);
+				VehicleStationDTO vehicleStationDTO = new VehicleStationDTO();
+				vehicleStationDTO.setId(stationInfo.getId());
+				vehicleStationDTO.setStationName(stationInfo.getName());
+				vehicleStationDTO.setLongitude(stationInfo.getLongitude());
+				vehicleStationDTO.setLatitude(stationInfo.getLatitude());
+				if (n < index){
+					vehicleStationDTO.setStatus("1");
+
+				}
+				if (n == index){
+					vehicleStationDTO.setStatus("2");
+				}
+				if (n > index){
+					vehicleStationDTO.setStatus("3");
+				}
+				vehicleStationDTOList.add(vehicleStationDTO);
+
+			}
+		}
+		if (shiftInfo.getEndStationId().equals(stationInfoList.get(0).getId())){
+			for (int n = size-1;n>=0;n--){
+				StationInfo stationInfo = stationInfoList.get(n);
+				VehicleStationDTO vehicleStationDTO = new VehicleStationDTO();
+				vehicleStationDTO.setId(stationInfo.getId());
+				vehicleStationDTO.setStationName(stationInfo.getName());
+				vehicleStationDTO.setLongitude(stationInfo.getLongitude());
+				vehicleStationDTO.setLatitude(stationInfo.getLatitude());
+				if (n < index){
+					vehicleStationDTO.setStatus("3");
+
+				}
+				if (n == index){
+					vehicleStationDTO.setStatus("2");
+				}
+				if (n > index){
+					vehicleStationDTO.setStatus("1");
+				}
+				vehicleStationDTOList.add(vehicleStationDTO);
+
+			}
+		}
+		return vehicleStationDTOList;
+	}
 }

+ 18 - 3
common/src/main/resources/mapper/base/MergeOrderInfo.xml

@@ -6,6 +6,7 @@
 	<resultMap id="MergeOrderInfoMap" type="com.jpsoft.bus.modules.base.entity.MergeOrderInfo">
 		<id property="id" column="id_" />
 			<result property="openId" column="open_id" />
+			<result property="vehicleShiftId" column="vehicle_shift_id"/>
 			<result property="payStatus" column="pay_status" />
 			<result property="payName" column="pay_name" />
 			<result property="outOrderNo" column="out_order_no" />
@@ -25,11 +26,12 @@
 	-->
 	<![CDATA[
 		insert into base_merge_order_info
-	    (id_,open_id,pay_status,pay_name,out_order_no,transaction_id,payment_id,create_by,create_time,update_by,update_time,del_flag)
+	    (id_,open_id,vehicle_shift_id,pay_status,pay_name,out_order_no,transaction_id,payment_id,create_by,create_time,update_by,update_time,del_flag)
 		values
 		(
 #{id,jdbcType=VARCHAR}
 ,#{openId,jdbcType=VARCHAR}
+,#{vehicleShiftId,jdbcType=VARCHAR}
 ,#{payStatus,jdbcType= NUMERIC }
 ,#{payName,jdbcType=VARCHAR}
 ,#{outOrderNo,jdbcType=VARCHAR}
@@ -52,6 +54,9 @@
 				<if test="openId!=null">
 		open_id=#{openId,jdbcType=VARCHAR},
 		</if>
+			<if test="vehicleShiftId!=null">
+				vehicle_shift_id=#{vehicleShiftId,jdbcType=VARCHAR},
+			</if>
 				<if test="payStatus!=null">
 		pay_status=#{payStatus,jdbcType= NUMERIC },
 		</if>
@@ -86,8 +91,7 @@
 	where id_=#{id}
 	</update>
 	<select id="get" parameterType="string" resultMap="MergeOrderInfoMap">
-		select
-id_,open_id,pay_status,pay_name,out_order_no,transaction_id,payment_id,create_by,create_time,update_by,update_time,del_flag		from base_merge_order_info where id_=#{0}
+		select * from base_merge_order_info where id_=#{0}
 	</select>
 	<select id="exist" parameterType="string" resultType="int">
 		select count(*) from base_merge_order_info where id_=#{0}
@@ -116,4 +120,15 @@ id_,open_id,pay_status,pay_name,out_order_no,transaction_id,payment_id,create_by
 		and out_order_no = #{outOrderNo}
 		]]>
 	</select>
+
+	<select id="findByOpenIdShiftIdPayStatus" resultMap="MergeOrderInfoMap">
+		<![CDATA[
+		select * from base_merge_order_info
+		where del_flag = 0
+		and open_id = #{openId}
+		and vehicle_shift_id = #{shiftId}
+		and pay_status = #{payStatus}
+		order by create_time desc
+		]]>
+	</select>
 </mapper>

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

@@ -59,6 +59,9 @@ public class WebMvcConfig implements WebMvcConfigurer {
 				.excludePathPatterns("/mobile/driverApi/findByPhone")
 				.excludePathPatterns("/mobile/passengerApi/getShiftInfo")
 				.excludePathPatterns("/mobile/passengerApi/upload")
+				.excludePathPatterns("/mobile/passengerApi/getVehicleInfo")
+				.excludePathPatterns("/mobile/passengerApi/getPassengerInfo")
+				.excludePathPatterns("/mobile/passengerApi/getVehicleStationInfo")
 				.excludePathPatterns("/wechat/findUserInfo/**")
 				.excludePathPatterns("/wechat/getConfig")
 				.excludePathPatterns("/mobile/passengerApi/upload")

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

@@ -882,55 +882,40 @@ public class DriverApiController {
 
             List<VehicleStationDTO> vehicleStationDTOList = new ArrayList<>();
             if (stationInfoList.size()>0){
-                StationInfo currentStation = stationInfoService.get(shiftInfo.getCurrentStationId());
-
-                int size = stationInfoList.size();
-                Integer index = stationInfoList.indexOf(currentStation);
-                if (shiftInfo.getStartStationId().equals(stationInfoList.get(0).getId())){
-                    for (int n = 0;n<size;n++){
-                        StationInfo stationInfo = stationInfoList.get(n);
-                        VehicleStationDTO vehicleStationDTO = new VehicleStationDTO();
-                        vehicleStationDTO.setId(stationInfo.getId());
-                        vehicleStationDTO.setStationName(stationInfo.getName());
-                        if (n < index){
-                            vehicleStationDTO.setStatus("1");
-
-                        }
-                        if (n == index){
-                            vehicleStationDTO.setStatus("2");
-                        }
-                        if (n > index){
-                            vehicleStationDTO.setStatus("3");
-                        }
-                        vehicleStationDTOList.add(vehicleStationDTO);
+                vehicleStationDTOList = stationInfoService.getVehicleStationDTO(shiftInfo,stationInfoList);
+            }
 
-                    }
-                }
-                if (shiftInfo.getEndStationId().equals(stationInfoList.get(0).getId())){
-                    for (int n = size-1;n>=0;n--){
-                        StationInfo stationInfo = stationInfoList.get(n);
-                        VehicleStationDTO vehicleStationDTO = new VehicleStationDTO();
-                        vehicleStationDTO.setId(stationInfo.getId());
-                        vehicleStationDTO.setStationName(stationInfo.getName());
-                        if (n < index){
-                            vehicleStationDTO.setStatus("3");
-
-                        }
-                        if (n == index){
-                            vehicleStationDTO.setStatus("2");
-                        }
-                        if (n > index){
-                            vehicleStationDTO.setStatus("1");
-                        }
-                        vehicleStationDTOList.add(vehicleStationDTO);
 
-                    }
-                }
+            messageResult.setData(vehicleStationDTOList);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(),ex);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
 
-            }
+        return messageResult;
+    }
+
+    @PostMapping("orderDetailInfo")
+    @ApiOperation(value = "查看订单状态")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "token", value = "令牌", paramType = "form"),
+            @ApiImplicitParam(name = "subject", value = "目标(不传)", paramType = "form"),
+            @ApiImplicitParam(name = "id", value = "订单主id", paramType = "form")
+    })
+    public MessageResult<OrderInfo> orderDetailInfo(String id,String token,@RequestAttribute String subject) {
+        MessageResult<OrderInfo> messageResult = new MessageResult<>();
+
+        try {
+            OrderInfo orderInfo = orderInfoService.get(id);
 
+            if (orderInfo == null){
+                throw new Exception("订单不存在");
+            }
 
-            messageResult.setData(vehicleStationDTOList);
+            messageResult.setData(orderInfo);
             messageResult.setResult(true);
             messageResult.setCode(200);
         } catch (Exception ex) {

+ 192 - 22
web/src/main/java/com/jpsoft/bus/modules/mobile/controller/PassengerApiController.java

@@ -2,15 +2,20 @@ package com.jpsoft.bus.modules.mobile.controller;
 
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.symmetric.DES;
+import cn.hutool.db.sql.Order;
 import com.alibaba.fastjson.JSONObject;
 import com.jpsoft.bus.config.OSSConfig;
+import com.jpsoft.bus.modules.base.dto.PassengerOrderDTO;
+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.PassengerDetailDTO;
+import com.jpsoft.bus.modules.bus.dto.VehicleStationDTO;
 import com.jpsoft.bus.modules.bus.entity.*;
 import com.jpsoft.bus.modules.bus.service.*;
 import com.jpsoft.bus.modules.common.dto.MessageResult;
-import com.jpsoft.bus.modules.common.utils.DES3;
-import com.jpsoft.bus.modules.common.utils.JwtUtil;
-import com.jpsoft.bus.modules.common.utils.OSSUtil;
-import com.jpsoft.bus.modules.common.utils.SMSUtil;
+import com.jpsoft.bus.modules.common.utils.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -28,10 +33,8 @@ import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 import sun.security.krb5.internal.crypto.Des3;
 
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -53,6 +56,15 @@ public class PassengerApiController {
     @Autowired
     private BaiduService baiduService;
 
+    @Autowired
+    private OrderInfoService orderInfoService;
+
+    @Autowired
+    private PassengerInfoService passengerInfoService;
+
+    @Autowired
+    private MergeOrderInfoService mergeOrderInfoService;
+
     @Autowired
     private RedisTemplate redisTemplate;
 
@@ -181,16 +193,8 @@ public class PassengerApiController {
                 userId = userInfo.getId();
             }
 
-
             token = JwtUtil.createToken(jwtSecret, String.valueOf(userId), DateTime.now().plusHours(6).toDate());
 
-
-
-
-
-
-
-
             Map<String, Object> map = new HashMap<>();
             map.put("token", token);
             map.put("userInfo", userInfo);
@@ -238,16 +242,25 @@ public class PassengerApiController {
             //结束站点
             StationInfo endStation = stationInfoService.get(shiftInfo.getEndStationId());
 
+            //线路所有站点
+            List<StationInfo> stationInfoList = stationInfoService.findByRouteId(shiftInfo.getRouteId());
+
+         //   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("longitude",vehicleInfo.getLongitude());
-            map.put("latitude",vehicleInfo.getLatitude());
+        //    map.put("stationList",vehicleStationDTOList);
             messageResult.setData(map);
             messageResult.setResult(true);
             messageResult.setCode(200);
@@ -260,6 +273,160 @@ public class PassengerApiController {
         return messageResult;
     }
 
+    @PostMapping("getVehicleStationInfo")
+    @ApiOperation(value = "获取车辆站点的位置")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "车辆id", required = true, paramType = "form")
+    })
+    public MessageResult<List<VehicleStationDTO>> getVehicleStationInfo(String id) {
+        MessageResult<List<VehicleStationDTO>> messageResult = new MessageResult<>();
+
+        try {
+
+            List<ShiftInfo> shiftInfoList = shiftInfoService.findByVehicleIdAndStatus(id, "1");
+
+            if (shiftInfoList.size() == 0) {
+                throw new Exception("当前车辆没有正运行的班次");
+            }
+
+            //班次信息
+            ShiftInfo shiftInfo = shiftInfoList.get(0);
+
+            //车辆信息
+            VehicleInfo vehicleInfo = vehicleInfoService.get(id);
+
+            //线路所有站点
+            List<StationInfo> stationInfoList = stationInfoService.findByRouteId(shiftInfo.getRouteId());
+            Map<String, Object> map = new HashMap<>();
+            List<VehicleStationDTO> vehicleStationDTOList = stationInfoService.getVehicleStationDTO(shiftInfo,stationInfoList);
+            messageResult.setData(vehicleStationDTOList);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage());
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+    @PostMapping("getVehicleInfo")
+    @ApiOperation(value = "获取车辆的位置")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "车辆id", required = true, paramType = "form")
+    })
+    public MessageResult<Map> getVehicleInfo(String id) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            List<ShiftInfo> shiftInfoList = shiftInfoService.findByVehicleIdAndStatus(id, "1");
+
+            if (shiftInfoList.size() == 0) {
+                throw new Exception("当前车辆没有正运行的班次");
+            }
+
+            //班次信息
+            ShiftInfo shiftInfo = shiftInfoList.get(0);
+
+            //车辆信息
+            VehicleInfo vehicleInfo = vehicleInfoService.get(id);
+            Map<String, Object> map = new HashMap<>();
+            map.put("longitude", vehicleInfo.getLongitude());
+            map.put("latitude", vehicleInfo.getLatitude());
+            map.put("currentStationId",shiftInfo.getCurrentStationId());
+            messageResult.setData(map);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage());
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+    @PostMapping("getPassengerInfo")
+    @ApiOperation(value = "获取微信在当前车辆添加乘客信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "车辆id", required = true, paramType = "form"),
+            @ApiImplicitParam(name = "openId", value = "openId", required = true, paramType = "form")
+    })
+    public MessageResult<Map> getVehicleInfo(String id,String openId) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            List<ShiftInfo> shiftInfoList = shiftInfoService.findByVehicleIdAndStatus(id, "1");
+
+            if (shiftInfoList.size() == 0) {
+                throw new Exception("当前车辆没有正运行的班次");
+            }
+
+            //班次信息
+            ShiftInfo shiftInfo = shiftInfoList.get(0);
+
+            //车辆信息
+            VehicleInfo vehicleInfo = vehicleInfoService.get(id);
+
+            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());
+
+               if (orderInfoList.size()>0){
+                   for (OrderInfo orderInfo : orderInfoList){
+
+
+                       PassengerInfo passengerInfo = passengerInfoService.get(orderInfo.getPassengerId());
+                       //购票始发站
+                       StationInfo start = stationInfoService.get(passengerInfo.getTicketUpStationId());
+                       //购票终点站
+                       StationInfo end = stationInfoService.get(passengerInfo.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);
+            messageResult.setData(map);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage());
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+
     @PostMapping("upload")
     @ApiOperation(value = "人员照片上传")
     @ApiImplicitParams({
@@ -288,8 +455,8 @@ public class PassengerApiController {
     }
 
 
-    @PostMapping("matchFaceImage")
-    @ApiOperation(value = "匹配照片")
+    @PostMapping("getMatchFaceImage")
+    @ApiOperation(value = "获取匹配度高的照片")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "faceImageUrl", value = "人脸照片", required = true, paramType = "form"),
             @ApiImplicitParam(name = "id", value = "车辆id", required = true, paramType = "form")
@@ -301,9 +468,12 @@ public class PassengerApiController {
             //车辆
             VehicleInfo vehicleInfo = vehicleInfoService.get(id);
             //人脸库id
-            String groupId = StrUtil.sub(vehicleInfo.getLicensePlateNumber(),1,-1);
+            String groupId = CommonUtil.getProvinceNum(vehicleInfo.getLicensePlateNumber()) + StrUtil.sub(vehicleInfo.getLicensePlateNumber(), 1, 10);
 
-          //  baiduService.faceSearch();
+           Long personId =  baiduService.faceSearch(faceImageUrl,"URL",groupId);
+           if (personId == null){
+            throw new Exception("无匹配照片");
+           }
 
 
 

+ 1 - 1
web/src/main/java/com/jpsoft/bus/modules/pay/wechat/WxPayController.java

@@ -177,7 +177,7 @@ public class WxPayController {
 
                     mergeOrderInfo.setPayStatus(20);
                     mergeOrderInfo.setPayName("wechat");
-                    mergeOrderInfo.setTransactionId(params.get("trade_no"));
+                    mergeOrderInfo.setTransactionId(params.get("transaction_id"));
                     mergeOrderInfo.setUpdateTime(new Date());
                     mergeOrderInfoService.update(mergeOrderInfo);