Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

zhengqiang před 4 roky
rodič
revize
868c348358
25 změnil soubory, kde provedl 975 přidání a 80 odebrání
  1. 24 0
      common/src/main/java/com/jpsoft/bus/modules/base/dao/ProblemFeedbackDAO.java
  2. 49 0
      common/src/main/java/com/jpsoft/bus/modules/base/entity/ProblemFeedback.java
  3. 24 0
      common/src/main/java/com/jpsoft/bus/modules/base/service/ProblemFeedbackService.java
  4. 76 0
      common/src/main/java/com/jpsoft/bus/modules/base/service/impl/ProblemFeedbackServiceImpl.java
  5. 53 0
      common/src/main/java/com/jpsoft/bus/modules/bus/callback/GpsDataCallbackImpl.java
  6. 2 0
      common/src/main/java/com/jpsoft/bus/modules/bus/dao/PassengerMessageDAO.java
  7. 5 3
      common/src/main/java/com/jpsoft/bus/modules/bus/dao/UserInfoDAO.java
  8. 26 0
      common/src/main/java/com/jpsoft/bus/modules/bus/dto/PassengerMessageDTO.java
  9. 41 0
      common/src/main/java/com/jpsoft/bus/modules/bus/dto/PassengerRecordDTO.java
  10. 20 16
      common/src/main/java/com/jpsoft/bus/modules/bus/entity/PassengerMessage.java
  11. 1 1
      common/src/main/java/com/jpsoft/bus/modules/bus/entity/UserInfo.java
  12. 2 0
      common/src/main/java/com/jpsoft/bus/modules/bus/service/PassengerMessageService.java
  13. 5 3
      common/src/main/java/com/jpsoft/bus/modules/bus/service/UserInfoService.java
  14. 27 22
      common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/PassengerInfoServiceImpl.java
  15. 11 6
      common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/PassengerMessageServiceImpl.java
  16. 8 3
      common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/UserInfoServiceImpl.java
  17. 9 1
      common/src/main/resources/mapper/base/OrderInfo.xml
  18. 122 0
      common/src/main/resources/mapper/base/ProblemFeedback.xml
  19. 28 3
      common/src/main/resources/mapper/bus/PassengerMessage.xml
  20. 9 5
      common/src/main/resources/mapper/bus/StationInfo.xml
  21. 13 4
      common/src/main/resources/mapper/bus/UserInfo.xml
  22. 22 0
      web/src/main/java/com/jpsoft/bus/modules/bus/controller/PriceInfoController.java
  23. 22 0
      web/src/main/java/com/jpsoft/bus/modules/bus/controller/StationInfoController.java
  24. 4 4
      web/src/main/java/com/jpsoft/bus/modules/bus/controller/UserInfoController.java
  25. 372 9
      web/src/main/java/com/jpsoft/bus/modules/mobile/controller/PassengerApiController.java

+ 24 - 0
common/src/main/java/com/jpsoft/bus/modules/base/dao/ProblemFeedbackDAO.java

@@ -0,0 +1,24 @@
+package com.jpsoft.bus.modules.base.dao;
+
+import com.jpsoft.bus.modules.base.entity.ProblemFeedback;
+import com.jpsoft.bus.modules.common.dto.Sort;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2020-10-12 10:55
+ */
+@Repository
+public interface ProblemFeedbackDAO {
+
+    int insert(ProblemFeedback entity);
+    int update(ProblemFeedback entity);
+    int exist(String id);
+    ProblemFeedback get(String id);
+    int delete(String id);
+    List<ProblemFeedback> list();
+    List<ProblemFeedback> search(Map<String, Object> searchParams, List<Sort> sortList);
+}

+ 49 - 0
common/src/main/java/com/jpsoft/bus/modules/base/entity/ProblemFeedback.java

@@ -0,0 +1,49 @@
+package com.jpsoft.bus.modules.base.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2020-10-12 10:38
+ */
+@Data
+@ApiModel(value = "base_problem_feedback的实体类")
+public class ProblemFeedback {
+
+    @ApiModelProperty(value = "")
+    private String id;
+    @ApiModelProperty(value = "反馈内容")
+    private String problemContent;
+    @ApiModelProperty(value = "反馈图片")
+    private String problemPic;
+    @ApiModelProperty(value = "联系电话")
+    private String contactTelephone;
+    @ApiModelProperty(value = "备注")
+    private String remark;
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    @ApiModelProperty(value = "创建人姓名")
+    private String createByName;
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+    @ApiModelProperty(value = "是否删除")
+    private Boolean delFlag = false;
+
+
+
+
+}

+ 24 - 0
common/src/main/java/com/jpsoft/bus/modules/base/service/ProblemFeedbackService.java

@@ -0,0 +1,24 @@
+package com.jpsoft.bus.modules.base.service;
+
+import com.github.pagehelper.Page;
+import com.jpsoft.bus.modules.base.entity.ProblemFeedback;
+import com.jpsoft.bus.modules.common.dto.Sort;
+
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2020-10-12 10:41
+ */
+public interface ProblemFeedbackService {
+
+    ProblemFeedback get(String id);
+    boolean exist(String id);
+    int insert(ProblemFeedback model);
+    int update(ProblemFeedback model);
+    int delete(String id);
+    List<ProblemFeedback> list();
+    Page<ProblemFeedback> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
+}

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

@@ -0,0 +1,76 @@
+package com.jpsoft.bus.modules.base.service.impl;
+
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import com.jpsoft.bus.modules.base.dao.ProblemFeedbackDAO;
+import com.jpsoft.bus.modules.base.entity.ProblemFeedback;
+import com.jpsoft.bus.modules.base.service.ProblemFeedbackService;
+import com.jpsoft.bus.modules.common.dto.Sort;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2020-10-12 10:44
+ */
+@Transactional
+@Component(value="problemFeedbackService")
+public class ProblemFeedbackServiceImpl implements ProblemFeedbackService {
+
+
+    @Resource(name="problemFeedbackDAO")
+    private ProblemFeedbackDAO problemFeedbackDAO;
+
+    @Override
+    public ProblemFeedback get(String id) {
+        // TODO Auto-generated method stub
+        return problemFeedbackDAO.get(id);
+    }
+
+    @Override
+    public int insert(ProblemFeedback model) {
+        // TODO Auto-generated method stub
+        //model.setId(UUID.randomUUID().toString());
+
+        return problemFeedbackDAO.insert(model);
+    }
+
+    @Override
+    public int update(ProblemFeedback model) {
+        // TODO Auto-generated method stub
+        return problemFeedbackDAO.update(model);
+    }
+
+    @Override
+    public int delete(String id) {
+        // TODO Auto-generated method stub
+        return problemFeedbackDAO.delete(id);
+    }
+
+    @Override
+    public boolean exist(String id) {
+        // TODO Auto-generated method stub
+        int count = problemFeedbackDAO.exist(id);
+
+        return count > 0 ? true : false;
+    }
+
+    @Override
+    public List<ProblemFeedback> list() {
+        // TODO Auto-generated method stub
+        return problemFeedbackDAO.list();
+    }
+
+    @Override
+    public Page<ProblemFeedback> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize, boolean count, List<Sort> sortList) {
+        Page<ProblemFeedback> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
+            problemFeedbackDAO.search(searchParams,sortList);
+        });
+
+        return page;
+    }
+}

+ 53 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/callback/GpsDataCallbackImpl.java

@@ -1,6 +1,10 @@
 package com.jpsoft.bus.modules.bus.callback;
 
 import cn.hutool.core.lang.UUID;
+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.entity.*;
 import com.jpsoft.bus.modules.bus.service.*;
 import com.jpsoft.bus.modules.common.utils.CommonUtil;
@@ -31,6 +35,18 @@ public class GpsDataCallbackImpl implements GpsDataCallback {
     @Autowired
     private GpsService gpsService;
 
+    @Autowired
+    private UserInfoService userInfoService;
+
+    @Autowired
+    private PassengerMessageService passengerMessageService;
+
+    @Autowired
+    private MergeOrderInfoService mergeOrderInfoService;
+
+    @Autowired
+    private OrderInfoService orderInfoService;
+
     @Autowired
     private StationInfoService stationInfoService;
 
@@ -164,6 +180,43 @@ public class GpsDataCallbackImpl implements GpsDataCallback {
                                         passengerInfo.setPayStatus("2");
                                         passengerInfoService.update(passengerInfo);
                                     }
+
+                                    //过站发消息
+                                    if (passengerInfo.getPayStatus().equals("2")){
+                                        new Thread(()->{
+                                            List<OrderInfo> orderInfoList = orderInfoService.findByPassengerIdAndPayStatus(passengerInfo.getId(),20);
+                                            OrderInfo orderInfo = orderInfoList.get(0);
+                                            //综合账单
+                                            MergeOrderInfo mergeOrderInfo = mergeOrderInfoService.get(orderInfo.getMergeOrderId());
+                                            if (StringUtils.isNotBlank(mergeOrderInfo.getOpenId())){
+
+                                                UserInfo userInfo = userInfoService.findByOpenId(mergeOrderInfo.getOpenId());
+                                                if (userInfo.getAcceptMessage()){
+                                                    PassengerMessage passengerMessage0 = passengerMessageService.findByPassengerId(orderInfo.getPassengerId());
+                                                    if (passengerMessage0 ==null){
+                                                        PassengerMessage passengerMessage = new PassengerMessage();
+                                                        passengerMessage.setId(UUID.randomUUID().toString());
+                                                        passengerMessage.setOpenId(mergeOrderInfo.getOpenId());
+                                                        passengerMessage.setPassengerId(passengerInfo.getId());
+                                                        passengerMessage.setCreateTime(new Date());
+                                                        passengerMessageService.insert(passengerMessage);
+                                                    }
+                                                    else {
+                                                        passengerMessage0.setReadStatus(false);
+                                                        passengerMessageService.update(passengerMessage0);
+                                                    }
+                                                }
+
+
+
+
+                                            }
+
+
+
+                                        }).start();
+                                    }
+
                                 }
                             }
                         }

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

@@ -15,4 +15,6 @@ public interface PassengerMessageDAO {
 	int delete(String id);
 	List<PassengerMessage> list();
 	List<PassengerMessage> search(Map<String,Object> searchParams,List<Sort> sortList);
+
+    PassengerMessage findByPassengerId(String passengerId);
 }

+ 5 - 3
common/src/main/java/com/jpsoft/bus/modules/bus/dao/UserInfoDAO.java

@@ -10,11 +10,13 @@ import com.jpsoft.bus.modules.common.dto.Sort;
 public interface UserInfoDAO {
 	int insert(UserInfo entity);
 	int update(UserInfo entity);
-	int exist(String id);
-	UserInfo get(String id);
-	int delete(String id);
+	int exist(Long id);
+	UserInfo get(Long id);
+	int delete(Long id);
 	List<UserInfo> list();
 	List<UserInfo> search(Map<String,Object> searchParams,List<Sort> sortList);
 
     UserInfo findByPhone(String phone);
+
+    UserInfo findByOpenId(String openId);
 }

+ 26 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/dto/PassengerMessageDTO.java

@@ -0,0 +1,26 @@
+package com.jpsoft.bus.modules.bus.dto;
+
+import lombok.Data;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2021-4-17 9:48
+ */
+@Data
+public class PassengerMessageDTO {
+
+    private String id;
+
+    private String vehicleId;
+
+    private String stationId;
+
+    private String stationName;
+
+    private String sendTime;
+
+    private String routeName;
+
+    private String statusName;
+
+}

+ 41 - 0
common/src/main/java/com/jpsoft/bus/modules/bus/dto/PassengerRecordDTO.java

@@ -0,0 +1,41 @@
+package com.jpsoft.bus.modules.bus.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2021-4-17 11:32
+ */
+@Data
+public class PassengerRecordDTO {
+
+    private String id;
+
+    private String imageUrl;
+
+    private String startStation;
+
+    private String endStation;
+
+    private String ticketType;
+
+    private String ticketTypeName;
+
+    private BigDecimal goodTicket;
+
+    private String payTime;
+
+    private BigDecimal totalFee;
+
+
+    public String getTicketTypeName(String ticketType){
+        String ticketTypeName = "成人票";
+
+        if ("1".equals(ticketType)){
+            ticketTypeName = "儿童票";
+        }
+        return ticketTypeName;
+    }
+}

+ 20 - 16
common/src/main/java/com/jpsoft/bus/modules/bus/entity/PassengerMessage.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,31 +12,34 @@ import io.swagger.annotations.ApiModel;
 import lombok.Data;
 
 /**
-  描述:bus_passenger_message的实体类
+ * 描述:bus_passenger_message的实体类
  */
 @Data
 @ApiModel(value = "bus_passenger_message的实体类")
 public class PassengerMessage {
-        @ApiModelProperty(value = "")
+    @ApiModelProperty(value = "")
     private String id;
-        @ApiModelProperty(value = "openId")
+    @ApiModelProperty(value = "openId")
     private String openId;
-        @ApiModelProperty(value = "乘客id")
+    @ApiModelProperty(value = "乘客id")
     private String passengerId;
-        @ApiModelProperty(value = "阅读状态")
-    private Boolean readStatus;
-        @ApiModelProperty(value = "创建人")
+    @ApiModelProperty(value = "阅读状态")
+    private Boolean readStatus = false;
+    @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 = "是否删除")
-    private Boolean delFlag;
+    @ApiModelProperty(value = "是否删除")
+    private Boolean delFlag = false;
+
+
+    private String payStatus;
 }

+ 1 - 1
common/src/main/java/com/jpsoft/bus/modules/bus/entity/UserInfo.java

@@ -28,7 +28,7 @@ public class UserInfo {
     @ApiModelProperty(value = "人脸图片")
     private String faceImage;
     @ApiModelProperty(value = "是否接受乘车信息(0:否,1:是)")
-    private Boolean acceptMessage;
+    private Boolean acceptMessage = true;
     @ApiModelProperty(value = "创建人")
     private String createBy;
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")

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

@@ -14,4 +14,6 @@ public interface PassengerMessageService {
 	int delete(String id);
 	List<PassengerMessage> list();
 	Page<PassengerMessage> pageSearch(Map<String, Object> searchParams,int pageNum,int pageSize,boolean count,List<Sort> sortList);
+
+    PassengerMessage findByPassengerId(String passengerId);
 }

+ 5 - 3
common/src/main/java/com/jpsoft/bus/modules/bus/service/UserInfoService.java

@@ -7,13 +7,15 @@ import com.github.pagehelper.Page;
 import com.jpsoft.bus.modules.common.dto.Sort;
 
 public interface UserInfoService {
-	UserInfo get(String id);
-	boolean exist(String id);
+	UserInfo get(Long id);
+	boolean exist(Long id);
 	int insert(UserInfo model);
 	int update(UserInfo model);
-	int delete(String id);
+	int delete(Long id);
 	List<UserInfo> list();
 	Page<UserInfo> pageSearch(Map<String, Object> searchParams,int pageNum,int pageSize,boolean count,List<Sort> sortList);
 
     UserInfo findByPhone(String phone);
+
+    UserInfo findByOpenId(String openId);
 }

+ 27 - 22
common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/PassengerInfoServiceImpl.java

@@ -371,32 +371,37 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
             if (!passengerInfo.getUpStationId().equals(upStationId)){
                 throw new Exception("上车站点不一致不可同时选择");
             }
-            if ("1".equals(passengerInfo.getStatus()) && "0".equals(passengerInfo.getPayStatus())) {
-
-                //创建订单
-                OrderInfo orderInfo = new OrderInfo();
-                orderInfo.setId(UUID.randomUUID().toString());
-                orderInfo.setTotalFee(new BigDecimal(totalFee));
-                orderInfo.setBody("买车票");
-                orderInfo.setPayStatus(10);
-                orderInfo.setOutOrderNo(com.jpsoft.bus.modules.common.utils.StringUtils.getOutTradeNo());
-                orderInfo.setCreateTime(new Date());
-                orderInfo.setPaymentId(paymentId);
-                orderInfo.setPassengerId(passengerId);
-                orderInfo.setTicketType(ticketType);
-
-                if (!goodTicketStatus){
-                    orderInfo.setGoodsTicket(new BigDecimal(goodsTicket));
-                    goodTicketStatus = true;
+            if ("1".equals(passengerInfo.getStatus())) {
+                if (!"1".equals(passengerInfo.getPayStatus())){
+                    //创建订单
+                    OrderInfo orderInfo = new OrderInfo();
+                    orderInfo.setId(UUID.randomUUID().toString());
+                    orderInfo.setTotalFee(new BigDecimal(totalFee));
+                    orderInfo.setBody("买车票");
+                    orderInfo.setPayStatus(10);
+                    orderInfo.setOutOrderNo(com.jpsoft.bus.modules.common.utils.StringUtils.getOutTradeNo());
+                    orderInfo.setCreateTime(new Date());
+                    orderInfo.setPaymentId(paymentId);
+                    orderInfo.setPassengerId(passengerId);
+                    orderInfo.setTicketType(ticketType);
+
+                    if (!goodTicketStatus){
+                        orderInfo.setGoodsTicket(new BigDecimal(goodsTicket));
+                        goodTicketStatus = true;
+                    }
+
+                    orderInfo.setMergeOrderId(mergeId);
+                    orderInfo.setTicketUpStationId(ticketUpStationId);
+                    orderInfo.setTicketDownStationId(ticketDownStationId);
+                    orderInfoService.insert(orderInfo);
+                }else {
+                    throw new Exception("乘客已购票");
                 }
 
-                orderInfo.setMergeOrderId(mergeId);
-                orderInfo.setTicketUpStationId(ticketUpStationId);
-                orderInfo.setTicketDownStationId(ticketDownStationId);
-                orderInfoService.insert(orderInfo);
+
 
             }else {
-                throw new Exception("乘客已下车或已购票");
+                throw new Exception("乘客已下车");
             }
         }
 

+ 11 - 6
common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/PassengerMessageServiceImpl.java

@@ -29,14 +29,14 @@ public class PassengerMessageServiceImpl implements PassengerMessageService {
 	public int insert(PassengerMessage model) {
 		// TODO Auto-generated method stub
 		//model.setId(UUID.randomUUID().toString());
-		
+
 		return passengerMessageDAO.insert(model);
 	}
 
 	@Override
 	public int update(PassengerMessage model) {
 		// TODO Auto-generated method stub
-		return passengerMessageDAO.update(model);		
+		return passengerMessageDAO.update(model);
 	}
 
 	@Override
@@ -49,22 +49,27 @@ public class PassengerMessageServiceImpl implements PassengerMessageService {
 	public boolean exist(String id) {
 		// TODO Auto-generated method stub
 		int count = passengerMessageDAO.exist(id);
-		
+
 		return count > 0 ? true : false;
 	}
-	
+
 	@Override
 	public List<PassengerMessage> list() {
 		// TODO Auto-generated method stub
 		return passengerMessageDAO.list();
 	}
-		
+
 	@Override
 	public Page<PassengerMessage> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize,boolean count,List<Sort> sortList) {
         Page<PassengerMessage> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
             passengerMessageDAO.search(searchParams,sortList);
         });
-        
+
         return page;
 	}
+
+	@Override
+	public PassengerMessage findByPassengerId(String passengerId) {
+		return passengerMessageDAO.findByPassengerId(passengerId);
+	}
 }

+ 8 - 3
common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/UserInfoServiceImpl.java

@@ -20,7 +20,7 @@ public class UserInfoServiceImpl implements UserInfoService {
 	private UserInfoDAO userInfoDAO;
 
 	@Override
-	public UserInfo get(String id) {
+	public UserInfo get(Long id) {
 		// TODO Auto-generated method stub
 		return userInfoDAO.get(id);
 	}
@@ -40,13 +40,13 @@ public class UserInfoServiceImpl implements UserInfoService {
 	}
 
 	@Override
-	public int delete(String id) {
+	public int delete(Long id) {
 		// TODO Auto-generated method stub
 		return userInfoDAO.delete(id);
 	}
 
 	@Override
-	public boolean exist(String id) {
+	public boolean exist(Long id) {
 		// TODO Auto-generated method stub
 		int count = userInfoDAO.exist(id);
 
@@ -72,4 +72,9 @@ public class UserInfoServiceImpl implements UserInfoService {
 	public UserInfo findByPhone(String phone) {
 		return userInfoDAO.findByPhone(phone);
 	}
+
+	@Override
+	public UserInfo findByOpenId(String openId) {
+		return userInfoDAO.findByOpenId(openId);
+	}
 }

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

@@ -158,12 +158,13 @@
 			left join bus_vehicle_info e on c.vehicle_id = e.id_
 			left join bus_route_info f on c.route_id = f.id_
 			left join bus_company_info g on e.company_id = g.id_
+			left join base_merge_order_info h on a.merge_order_id = h.id_
 		]]>
 		<where>
 			a.del_flag = false and b.del_flag = false and
 			c.del_flag = false and d.del_flag = false and
 			e.del_flag = false and f.del_flag = false and
-			g.del_flag = false
+			g.del_flag = false and h.del_flag = false
 			<if test="searchParams.companyId != null">
 				and g.id_ = #{searchParams.companyId}
 			</if>
@@ -176,6 +177,12 @@
 			<if test="searchParams.transactionId != null">
 				and a.transaction_id like #{searchParams.transactionId}
 			</if>
+			<if test="searchParams.openId != null">
+				and h.open_id = #{searchParams.openId}
+			</if>
+			<if test="searchParams.payStatus != null">
+				and a.pay_status = #{searchParams.payStatus}
+			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">
 	        ${sort.name} ${sort.order}
@@ -188,6 +195,7 @@
 		where del_flag = 0
 		and passenger_id = #{passengerId}
 		and pay_status = #{payStatus}
+		order by pay_time desc
 		]]>
 	</select>
 

+ 122 - 0
common/src/main/resources/mapper/base/ProblemFeedback.xml

@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- namespace必须指向DAO接口 -->
+<mapper namespace="com.jpsoft.bus.modules.base.dao.ProblemFeedbackDAO">
+    <resultMap id="ProblemFeedbackMap" type="com.jpsoft.bus.modules.base.entity.ProblemFeedback">
+        <id property="id" column="id_" />
+        <result property="problemContent" column="problem_content" />
+        <result property="problemPic" column="problem_pic" />
+        <result property="contactTelephone" column="contact_telephone" />
+        <result property="remark" column="remark_" />
+        <result property="createBy" column="create_by" />
+        <result property="createTime" column="create_time" />
+        <result property="updateBy" column="update_by" />
+        <result property="updateTime" column="update_time" />
+        <result property="delFlag" column="del_flag" />
+        <result property="createByName" column="create_by_name" />
+    </resultMap>
+    <insert id="insert" parameterType="com.jpsoft.bus.modules.base.entity.ProblemFeedback">
+        <!--
+        <selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
+            select sys_guid() from dual
+        </selectKey>
+        -->
+        <![CDATA[
+		insert into base_problem_feedback
+	    (id_,problem_content,problem_pic,contact_telephone,remark_,create_by,create_time,update_by,update_time,del_flag)
+		values
+		(
+#{id,jdbcType=VARCHAR}
+,#{problemContent,jdbcType=VARCHAR}
+,#{problemPic,jdbcType=VARCHAR}
+,#{contactTelephone,jdbcType= VARCHAR }
+,#{remark,jdbcType=VARCHAR}
+,#{createBy,jdbcType=VARCHAR}
+,#{createTime,jdbcType= TIMESTAMP }
+,#{updateBy,jdbcType=VARCHAR}
+,#{updateTime,jdbcType= TIMESTAMP }
+,#{delFlag,jdbcType= NUMERIC }
+		)
+	]]>
+    </insert>
+    <delete id="delete" parameterType="string">
+        delete from base_problem_feedback where id_=#{id,jdbcType=VARCHAR}
+    </delete>
+    <update id="update" parameterType="com.jpsoft.bus.modules.base.entity.ProblemFeedback">
+        update base_problem_feedback
+        <set>
+            <if test="problemContent!=null">
+                problem_content=#{problemContent,jdbcType=VARCHAR},
+            </if>
+            <if test="problemPic!=null">
+                problem_pic=#{problemPic,jdbcType=VARCHAR},
+            </if>
+            <if test="contactTelephone!=null">
+                contact_telephone=#{contactTelephone,jdbcType= VARCHAR },
+            </if>
+            <if test="remark!=null">
+                remark_=#{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="createBy!=null">
+                create_by=#{createBy,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime!=null">
+                create_time=#{createTime,jdbcType= TIMESTAMP },
+            </if>
+            <if test="updateBy!=null">
+                update_by=#{updateBy,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime!=null">
+                update_time=#{updateTime,jdbcType= TIMESTAMP },
+            </if>
+            <if test="delFlag!=null">
+                del_flag=#{delFlag,jdbcType= NUMERIC },
+            </if>
+        </set>
+        where id_=#{id}
+    </update>
+    <select id="get" parameterType="string" resultMap="ProblemFeedbackMap">
+        select * from base_problem_feedback where id_=#{0} and del_flag = 0
+    </select>
+    <select id="exist" parameterType="string" resultType="int">
+        select count(*) from base_problem_feedback where id_=#{0}
+    </select>
+    <select id="list" resultMap="ProblemFeedbackMap">
+		select * from base_problem_feedback
+	</select>
+    <select id="search" parameterType="hashmap" resultMap="ProblemFeedbackMap">
+        <![CDATA[
+			select
+			a.*,
+			b.name_ as create_by_name
+			from base_problem_feedback a
+			left join base_person_info b on a.create_by = b.id_
+		]]>
+        <where>
+            a.del_flag = 0
+            <if test="searchParams.id != null">
+                and a.ID_ like #{searchParams.id}
+            </if>
+            <if test="searchParams.name != null">
+                and b.name_ like #{searchParams.name}
+            </if>
+            <if test="searchParams.phone != null">
+                and a.contact_telephone like #{searchParams.phone}
+            </if>
+            <if test="searchParams.beginTime != null">
+                <![CDATA[
+                  and a.create_time >= #{searchParams.beginTime}
+            	]]>
+            </if>
+            <if test="searchParams.endTime != null">
+                <![CDATA[
+                  and a.create_time <= #{searchParams.endTime}
+            	]]>
+            </if>
+        </where>
+        <foreach item="sort" collection="sortList"  open="order by" separator=",">
+            ${sort.name} ${sort.order}
+        </foreach>
+    </select>
+</mapper>

+ 28 - 3
common/src/main/resources/mapper/bus/PassengerMessage.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
 <mapper namespace="com.jpsoft.bus.modules.bus.dao.PassengerMessageDAO">
@@ -13,6 +13,7 @@
 			<result property="updateBy" column="update_by" />
 			<result property="updateTime" column="update_time" />
 			<result property="delFlag" column="del_flag" />
+			<result property="payStatus" column="pay_status"/>
 			</resultMap>
 	<insert id="insert" parameterType="com.jpsoft.bus.modules.bus.entity.PassengerMessage">
 	<!--
@@ -71,7 +72,7 @@
 	where id_=#{id}
 	</update>
 	<select id="get" parameterType="string" resultMap="PassengerMessageMap">
-		select 
+		select
 id_,open_id,passenger_id,read_status,create_by,create_time,update_by,update_time,del_flag		from bus_passenger_message where id_=#{0}
 	</select>
 	<select id="exist" parameterType="string" resultType="int">
@@ -82,15 +83,39 @@ id_,open_id,passenger_id,read_status,create_by,create_time,update_by,update_time
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="PassengerMessageMap">
 		<![CDATA[
-			select * from bus_passenger_message
+			select
+			a.*,
+			b.pay_status as pay_status
+			from bus_passenger_message a
+			left join bus_passenger_info b on a.passenger_id = b.id_
 		]]>
 		<where>
+			a.del_flag = 0
+			and b.del_flag = 0
 			<if test="searchParams.id != null">
 				and ID_ like #{searchParams.id}
 			</if>
+			<if test="searchParams.openId != null">
+				and a.open_id = #{searchParams.openId}
+			</if>
+			<if test="searchParams.payStatus != null">
+				and b.pay_status = #{searchParams.payStatus}
+			</if>
+			<if test="searchParams.readStatus != null">
+				and a.read_status = #{searchParams.readStatus}
+			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">
 	        ${sort.name} ${sort.order}
 	 	</foreach>
 	</select>
+
+	<select id="findByPassengerId" resultMap="PassengerMessageMap">
+		<![CDATA[
+		select * from bus_passenger_message
+		where del_flag = 0
+		and passenger_id = #{passengerId}
+		limit 1
+		]]>
+	</select>
 </mapper>

+ 9 - 5
common/src/main/resources/mapper/bus/StationInfo.xml

@@ -100,11 +100,12 @@ id_,sort_no,route_id,name_,longitude_,latitude_,classify_,create_by,create_time,
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="StationInfoMap">
 		<![CDATA[
-			select * from bus_station_info
+			select a.* from bus_station_info a
 		]]>
 		<where>
+			a.del_flag = 0
 			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+				and a.ID_ like #{searchParams.id}
 			</if>
 			<if test="searchParams.maxLongitude != null">
 				<![CDATA[
@@ -113,16 +114,19 @@ id_,sort_no,route_id,name_,longitude_,latitude_,classify_,create_by,create_time,
 			</if>
 			<if test="searchParams.minLongitude != null">
 				<![CDATA[
-				and longitude_ >= #{searchParams.minLongitude}
+				and a.longitude_ >= #{searchParams.minLongitude}
 				]]>
 			</if>
 			<if test="searchParams.maxLatitude != null">
 				<![CDATA[
-				and latitude_ <= #{searchParams.maxLatitude}
+				and a.latitude_ <= #{searchParams.maxLatitude}
 				]]>
 			</if>
 			<if test="searchParams.minLatitude != null">
-				and latitude_ >= #{searchParams.minLatitude}
+				and a.latitude_ >= #{searchParams.minLatitude}
+			</if>
+			<if test="searchParams.routeId != null">
+				and a.route_id like #{searchParams.routeId}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">

+ 13 - 4
common/src/main/resources/mapper/bus/UserInfo.xml

@@ -44,8 +44,8 @@
 		)
 	]]>
 	</insert>
-	<delete id="delete" parameterType="string">
-		delete from bus_user_info where id_=#{id,jdbcType=VARCHAR}
+	<delete id="delete" parameterType="Long">
+		delete from bus_user_info where id_=#{id,jdbcType=BIGINT}
 	</delete>
 	<update id="update" parameterType="com.jpsoft.bus.modules.bus.entity.UserInfo">
 		update bus_user_info
@@ -89,10 +89,10 @@
 		</set>
 	where id_=#{id}
 	</update>
-	<select id="get" parameterType="string" resultMap="UserInfoMap">
+	<select id="get" parameterType="Long" resultMap="UserInfoMap">
 		select * from bus_user_info where id_=#{0}
 	</select>
-	<select id="exist" parameterType="string" resultType="int">
+	<select id="exist" parameterType="Long" resultType="int">
 		select count(*) from bus_user_info where id_=#{0}
 	</select>
 	<select id="list" resultMap="UserInfoMap">
@@ -126,4 +126,13 @@
 		and phone_ = #{phone}
 		]]>
 	</select>
+
+	<select id="findByOpenId" resultMap="UserInfoMap">
+		<![CDATA[
+		select  * from bus_user_info
+		where del_flag = 0
+		and open_id = #{openId}
+		limit 1
+		]]>
+	</select>
 </mapper>

+ 22 - 0
web/src/main/java/com/jpsoft/bus/modules/bus/controller/PriceInfoController.java

@@ -528,4 +528,26 @@ public class PriceInfoController {
 
         return msgResult;
     }
+
+
+    @ApiOperation(value="根据站点查金额")
+    @RequestMapping(value = "findPriceByStation",method = RequestMethod.POST)
+    public MessageResult<PriceInfo> list(
+            String startStationId,
+            String endStationId,
+            @RequestAttribute String subject){
+
+        MessageResult<PriceInfo> msgResult = new MessageResult<>();
+
+        PriceInfo priceInfo = priceInfoService.findByStartStationAndEndStation(startStationId,endStationId);
+        if(priceInfo == null){
+            priceInfo = new PriceInfo();
+        }
+
+        msgResult.setResult(true);
+        msgResult.setData(priceInfo);
+
+        return msgResult;
+    }
+
 }

+ 22 - 0
web/src/main/java/com/jpsoft/bus/modules/bus/controller/StationInfoController.java

@@ -12,6 +12,7 @@ import com.jpsoft.bus.modules.common.utils.OSSUtil;
 import com.jpsoft.bus.modules.common.utils.POIUtils;
 import com.jpsoft.bus.modules.common.utils.PojoUtils;
 import com.jpsoft.bus.modules.sys.entity.DataDictionary;
+import com.jpsoft.bus.modules.sys.entity.User;
 import com.jpsoft.bus.modules.sys.service.DataDictionaryService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -363,4 +364,25 @@ public class StationInfoController {
 
         return msgResult;
     }
+
+    @ApiOperation(value="站点列表")
+    @RequestMapping(value = "list",method = RequestMethod.POST)
+    public MessageResult<List<StationInfo>> list(String routeId,@RequestAttribute String subject){
+
+        MessageResult<List<StationInfo>> msgResult = new MessageResult<>();
+
+
+        Map<String,Object> searchParams = new HashMap<>();
+        searchParams.put("routeId",routeId);
+
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("a.sort_no","asc"));
+
+        Page<StationInfo> page = stationInfoService.pageSearch(searchParams,0,1000,true,sortList);
+
+        msgResult.setResult(true);
+        msgResult.setData(page.getResult());
+
+        return msgResult;
+    }
 }

+ 4 - 4
web/src/main/java/com/jpsoft/bus/modules/bus/controller/UserInfoController.java

@@ -85,7 +85,7 @@ public class UserInfoController {
         MessageResult<UserInfo> msgResult = new MessageResult<>();
 
         try {
-            UserInfo userInfo = userInfoService.get(id);
+            UserInfo userInfo = userInfoService.get(Long.parseLong(id));
 
             if (userInfo != null) {
                 msgResult.setResult(true);
@@ -140,7 +140,7 @@ public class UserInfoController {
         MessageResult<Integer> msgResult = new MessageResult<>();
 
         try {
-            UserInfo userInfo = userInfoService.get(id);
+            UserInfo userInfo = userInfoService.get(Long.parseLong(id));
             userInfo.setDelFlag(true);
             userInfo.setUpdateBy(subject);
             userInfo.setUpdateTime(new Date());
@@ -175,7 +175,7 @@ public class UserInfoController {
             int affectCount = 0;
 
             for (String id : idList) {
-                UserInfo userInfo = userInfoService.get(id);
+                UserInfo userInfo = userInfoService.get(Long.parseLong(id));
                 userInfo.setDelFlag(true);
                 userInfo.setUpdateBy(subject);
                 userInfo.setUpdateTime(new Date());
@@ -249,7 +249,7 @@ public class UserInfoController {
 
         try {
 
-            UserInfo userInfo = userInfoService.get(userId);
+            UserInfo userInfo = userInfoService.get(Long.parseLong(userId));
 
             DES3 des3 = new DES3();
 

+ 372 - 9
web/src/main/java/com/jpsoft/bus/modules/mobile/controller/PassengerApiController.java

@@ -1,5 +1,6 @@
 package com.jpsoft.bus.modules.mobile.controller;
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.symmetric.DES;
 import cn.hutool.db.sql.Order;
@@ -9,21 +10,17 @@ 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.entity.ProblemFeedback;
 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.base.service.ProblemFeedbackService;
+import com.jpsoft.bus.modules.bus.dto.*;
 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.dto.Sort;
 import com.jpsoft.bus.modules.common.utils.*;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.gavaghan.geodesy.Ellipsoid;
@@ -56,6 +53,12 @@ public class PassengerApiController {
     @Autowired
     private OSSConfig ossConfig;
 
+    @Autowired
+    private ProblemFeedbackService problemFeedbackService;
+
+    @Autowired
+    private PassengerMessageService passengerMessageService;
+
     @Autowired
     private BaiduService baiduService;
 
@@ -199,7 +202,7 @@ public class PassengerApiController {
                 userId = userInfo.getId();
             }
 
-            token = JwtUtil.createToken(jwtSecret, String.valueOf(userId), DateTime.now().plusHours(6).toDate());
+            token = JwtUtil.createToken(jwtSecret, String.valueOf(userId), DateTime.now().plusDays(30).toDate());
 
             Map<String, Object> map = new HashMap<>();
             map.put("token", token);
@@ -907,4 +910,364 @@ public class PassengerApiController {
         return messageResult;
     }
 
+    @PostMapping("passengerMessage")
+    @ApiOperation(value = "乘客过站消息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "token", value = "令牌", paramType = "form"),
+            @ApiImplicitParam(name = "subject", value = "目标(不传)", paramType = "form")
+    })
+    public MessageResult<Map> passengerMessage(String token, @RequestAttribute String subject,@RequestParam(value = "pageIndex", defaultValue = "1") int pageIndex, @RequestParam(value = "pageSize", defaultValue = "5") int pageSize) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            UserInfo userInfo = userInfoService.get(Long.parseLong(subject));
+            if (userInfo == null){
+                throw new Exception("请先注册信息");
+            }
+
+            Map<String,Object> searchParams = new HashMap<>();
+            searchParams.put("openId",userInfo.getOpenId());
+            searchParams.put("payStatus","2");
+
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("create_time","desc"));
+
+            Page<PassengerMessage> page = passengerMessageService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+
+            List<PassengerMessage> passengerMessageList = page.getResult();
+            List<PassengerMessageDTO> list = new ArrayList<>();
+            if (passengerMessageList.size()>0){
+                for (PassengerMessage passengerMessage : passengerMessageList){
+                    PassengerMessageDTO passengerMessageDTO = new PassengerMessageDTO();
+                    PassengerInfo passengerInfo = passengerInfoService.get(passengerMessage.getPassengerId());
+
+                    //过站点
+                    StationInfo stationInfo = stationInfoService.get(passengerInfo.getTicketDownStationId());
+                    ShiftInfo shiftInfo = shiftInfoService.get(passengerInfo.getVehicleShiftId());
+                    //线路
+                    RouteInfo routeInfo = routeInfoService.get(shiftInfo.getRouteId());
+
+                    passengerMessageDTO.setId(passengerInfo.getId());
+                    passengerMessageDTO.setVehicleId(shiftInfo.getVehicleId());
+                    passengerMessageDTO.setStationId(stationInfo.getId());
+                    passengerMessageDTO.setStationName(stationInfo.getName());
+                    passengerMessageDTO.setRouteName(routeInfo.getName());
+                    passengerMessageDTO.setSendTime(DateUtil.format(passengerMessage.getCreateTime(),"yyyy-MM-dd HH:mm:ss"));
+                    passengerMessageDTO.setStatusName("已过站");
+                    list.add(passengerMessageDTO);
+
+                    passengerMessage.setReadStatus(true);
+                    passengerMessageService.update(passengerMessage);
+
+                 }
+            }
+
+            Map<String,Object> pageMap = new HashMap<>();
+
+            pageMap.put("recordsTotal",page.getTotal());
+            pageMap.put("recordsFiltered",page.getTotal());
+            pageMap.put("totalPage",page.getPages());
+            pageMap.put("pageNumber",page.getPageNum());
+            pageMap.put("pageSize",page.getPageSize());
+            pageMap.put("data", list);
+
+            messageResult.setData(pageMap);
+            messageResult.setCode(200);
+            messageResult.setResult(true);
+
+
+        }catch (Exception ex){
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+    @PostMapping("passengerMessageNoReadNum")
+    @ApiOperation(value = "乘客未读过站消息数量")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "token", value = "令牌", paramType = "form"),
+            @ApiImplicitParam(name = "subject", value = "目标(不传)", paramType = "form")
+    })
+    public MessageResult<Map> passengerMessageNoReadNum(String token, @RequestAttribute String subject) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            UserInfo userInfo = userInfoService.get(Long.parseLong(subject));
+            if (userInfo == null){
+                throw new Exception("请先注册信息");
+            }
+
+            Map<String,Object> searchParams = new HashMap<>();
+            searchParams.put("openId",userInfo.getOpenId());
+            searchParams.put("readStatus",false);
+
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("create_time","desc"));
+
+            Page<PassengerMessage> page = passengerMessageService.pageSearch(searchParams,1,100,true,sortList);
+            List<PassengerMessage> passengerMessageList = page.getResult();
+
+
+            Map<String,Object> map = new HashMap<>();
+            map.put("num",passengerMessageList.size());
+
+            messageResult.setData(map);
+            messageResult.setCode(200);
+            messageResult.setResult(true);
+
+
+        }catch (Exception ex){
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+    @PostMapping("passengerRecordList")
+    @ApiOperation(value = "乘车记录")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "token", value = "令牌", paramType = "form"),
+            @ApiImplicitParam(name = "subject", value = "目标(不传)", paramType = "form")
+    })
+    public MessageResult<Map> passengerRecordList(String token, @RequestAttribute String subject,@RequestParam(value = "pageIndex", defaultValue = "1") int pageIndex, @RequestParam(value = "pageSize", defaultValue = "5") int pageSize) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            UserInfo userInfo = userInfoService.get(Long.parseLong(subject));
+            if (userInfo == null){
+                throw new Exception("请先注册信息");
+            }
+
+            Map<String,Object> searchParams = new HashMap<>();
+            searchParams.put("openId",userInfo.getOpenId());
+            searchParams.put("payStatus",20);
+
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("a.create_time","desc"));
+
+            Page<OrderInfo> page = orderInfoService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+
+            List<OrderInfo> orderInfoList = page.getResult();
+
+            List<PassengerRecordDTO> list =new ArrayList<>();
+            if (orderInfoList.size()>0){
+                for (OrderInfo orderInfo : orderInfoList){
+                    PassengerRecordDTO passengerRecordDTO = new PassengerRecordDTO();
+
+                    //乘客记录
+                    PassengerInfo passengerInfo = passengerInfoService.get(orderInfo.getPassengerId());
+                    passengerRecordDTO.setId(orderInfo.getId());
+                    passengerRecordDTO.setImageUrl(passengerInfo.getImageUrl());
+                    //开始站点
+                    StationInfo startStation = stationInfoService.get(orderInfo.getTicketUpStationId());
+                    //终点站
+                    StationInfo endStation = stationInfoService.get(orderInfo.getTicketDownStationId());
+                    passengerRecordDTO.setStartStation(startStation.getName());
+                    passengerRecordDTO.setEndStation(endStation.getName());
+                    passengerRecordDTO.setTicketType(orderInfo.getTicketType());
+                    passengerRecordDTO.setTicketTypeName(passengerRecordDTO.getTicketTypeName(passengerRecordDTO.getTicketType()));
+                    passengerRecordDTO.setGoodTicket(orderInfo.getGoodsTicket());
+                    passengerRecordDTO.setPayTime(DateUtil.format(orderInfo.getPayTime(),"yyyy-MM-dd HH:mm:ss"));
+                    passengerRecordDTO.setTotalFee(orderInfo.getTotalFee());
+                    list.add(passengerRecordDTO);
+
+                }
+            }
+
+            Map<String,Object> pageMap = new HashMap<>();
+
+            pageMap.put("recordsTotal",page.getTotal());
+            pageMap.put("recordsFiltered",page.getTotal());
+            pageMap.put("totalPage",page.getPages());
+            pageMap.put("pageNumber",page.getPageNum());
+            pageMap.put("pageSize",page.getPageSize());
+            pageMap.put("data", list);
+
+            messageResult.setData(pageMap);
+            messageResult.setCode(200);
+            messageResult.setResult(true);
+
+
+        }catch (Exception ex){
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+    @PostMapping("problemFeedback")
+    @ApiOperation(value = "问题反馈")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "content", value = "问题内容", required = false, paramType = "form"),
+            @ApiImplicitParam(name = "picUrl", value = "图片地址", required = false, paramType = "form"),
+            @ApiImplicitParam(name = "telephone", value = "联系电话", required = false, paramType = "form"),
+            @ApiImplicitParam(name = "subject", value = "目标(不传)", paramType = "form")
+    })
+    public MessageResult<Map> problemFeedback(String token, @RequestAttribute String subject, String content, String picUrl, String telephone) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+            UserInfo userInfo = userInfoService.get(Long.parseLong(subject));
+            if (userInfo == null){
+                throw new Exception("请先注册信息");
+            }
+
+            if (StringUtils.isBlank(content)) {
+                throw new Exception("请输入反馈内容");
+            }
+
+            Map<String, Object> dataMap = new HashMap<String, Object>();
+            ProblemFeedback problemFeedback = new ProblemFeedback();
+            problemFeedback.setId(UUID.randomUUID().toString());
+            problemFeedback.setProblemContent(content);
+            problemFeedback.setProblemPic(picUrl);
+            problemFeedback.setContactTelephone(telephone);
+            problemFeedback.setCreateBy(userInfo.getId().toString());
+            problemFeedback.setCreateTime(new Date());
+            problemFeedbackService.insert(problemFeedback);
+
+
+            messageResult.setData(dataMap);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+    @PostMapping("userInfo")
+    @ApiOperation(value = "用户信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "subject", value = "目标(不传)", paramType = "form")
+    })
+    public MessageResult<Map> userPhone(String token, @RequestAttribute String subject) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+            UserInfo userInfo = userInfoService.get(Long.parseLong(subject));
+            if (userInfo == null){
+                throw new Exception("请先注册信息");
+            }
+
+            Map<String,Object> map = new HashMap<>();
+            map.put("userInfo",userInfo);
+
+            messageResult.setData(map);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+    @PostMapping("userUpdatePhone")
+    @ApiOperation(value = "用户更新绑定手机号码")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "phone", value = "手机号码", paramType = "form"),
+            @ApiImplicitParam(name = "code", value = "验证码", paramType = "form"),
+            @ApiImplicitParam(name = "subject", value = "目标(不传)", paramType = "form")
+    })
+    public MessageResult<Map> userUpdatePhone(String token, @RequestAttribute String subject,String code,String phone) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+            UserInfo userInfo = userInfoService.get(Long.parseLong(subject));
+            if (userInfo == null){
+                throw new Exception("请先注册信息");
+            }
+
+            if (phone.equals(userInfo.getPhone())){
+                throw new Exception("请更换手机号码");
+            }
+
+            String smsKey = "SMS_" + phone;
+
+            String beforeVerifyCode = (String) redisTemplate.opsForValue().get(smsKey);
+
+            if (StringUtils.isEmpty(beforeVerifyCode)) {
+                throw new Exception("验证码已过期!");
+            }
+
+            if (!beforeVerifyCode.equals(code)) {
+                throw new Exception("验证码错误!");
+            }
+
+            userInfo.setPhone(phone);
+            userInfoService.update(userInfo);
+
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+    @PostMapping("updateUserInfo")
+    @ApiOperation(value = "更新用户的基本信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "name", value = "用户姓名", paramType = "form"),
+            @ApiImplicitParam(name = "faceImage", value = "人脸照片", paramType = "form"),
+            @ApiImplicitParam(name = "acceptMessage", value = "是否接受乘车信息(0:不接受,1:接受)", paramType = "form"),
+            @ApiImplicitParam(name = "code", value = "验证码", paramType = "form"),
+            @ApiImplicitParam(name = "subject", value = "目标(不传)", paramType = "form")
+    })
+    public MessageResult<Map> updateUserInfo(String token, @RequestAttribute String subject,String name,String faceImage,String acceptMessage) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+            UserInfo userInfo = userInfoService.get(Long.parseLong(subject));
+            if (userInfo == null){
+                throw new Exception("请先注册信息");
+            }
+
+            Boolean accept = false;
+            if ("1".equals(acceptMessage)){
+                accept = true;
+            }
+
+            userInfo.setName(name);
+            userInfo.setFaceImage(faceImage);
+            userInfo.setAcceptMessage(accept);
+            userInfoService.update(userInfo);
+
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
 }