Procházet zdrojové kódy

司机新增直接现金支付

fllmoyu před 4 roky
rodič
revize
e75f5539f5

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

@@ -39,4 +39,6 @@ public interface PassengerInfoService {
 	List<PassengerInfo> findByOpenIdAndVehicleShiftId(String openId, String vehicleShiftId, String status,String payStatus);
 
     List<PassengerInfo> findByShiftIdAndStatus(String shiftId, String status);
+
+    DriverBuyTicketDTO driverCreateCashOrder(PassengerInfo passengerInfo, String ticketUpStationId, String ticketDownStationId,String paymentId) throws Exception ;
 }

+ 97 - 31
common/src/main/java/com/jpsoft/bus/modules/bus/service/impl/PassengerInfoServiceImpl.java

@@ -131,7 +131,7 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
 
     @Override
     public void passengerFace(VehicleInfo vehicleInfo, ShiftInfo shiftInfo, String retFileUrl, String recordTime,
-                              String stationId,Long libId, Long personId,String localImageUrl) throws Exception {
+                              String stationId, Long libId, Long personId, String localImageUrl) throws Exception {
         Date recordDate = DateUtil.parse(recordTime, "yyyy-MM-dd HH:mm:ss");
 
         //查询是否有已上车的乘客记录
@@ -143,19 +143,18 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
             boolean allow = true;
 
             //如果已过站则不改状态
-            if("2".equals(passengerInfo.getPayStatus())) {
-                log.warn("乘客:{}已过站,不修改状态",passengerInfo.getId());
+            if ("2".equals(passengerInfo.getPayStatus())) {
+                log.warn("乘客:{}已过站,不修改状态", passengerInfo.getId());
                 allow = false;
-            }
-            else if("0".equals(passengerInfo.getPayStatus())){
+            } else if ("0".equals(passengerInfo.getPayStatus())) {
                 //未购票,同时已过站
-                if (!passengerInfo.getUpStationId().equals(shiftInfo.getCurrentStationId())){
+                if (!passengerInfo.getUpStationId().equals(shiftInfo.getCurrentStationId())) {
                     log.warn("乘客:{}未购票且已过站,不修改状态", passengerInfo.getId());
                     allow = false;
                 }
             }
 
-            if(allow){
+            if (allow) {
                 passengerInfo.setLocalImageUrl(localImageUrl);
                 passengerInfo.setDownTime(recordDate);
                 passengerInfo.setDownStationId(stationId);
@@ -334,15 +333,15 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
         if (passengerList.size() == 0) {
             throw new Exception("乘客不存在");
         }
-        if (passengerList.size() != ticketTypeList.size()){
+        if (passengerList.size() != ticketTypeList.size()) {
             throw new Exception("乘客数和购票类型数不一致");
         }
 
 
-        PriceInfo priceInfo = priceInfoService.findByStartStationAndEndStation(ticketUpStationId,ticketDownStationId);
-        if (priceInfo == null || priceInfo.getPrice().compareTo(BigDecimal.ZERO) <=0){
-            PriceInfo priceInfo1 = priceInfoService.findByStartStationAndEndStation(ticketDownStationId,ticketUpStationId);
-            if (priceInfo1 == null || priceInfo1.getPrice().compareTo(BigDecimal.ZERO) <= 0){
+        PriceInfo priceInfo = priceInfoService.findByStartStationAndEndStation(ticketUpStationId, ticketDownStationId);
+        if (priceInfo == null || priceInfo.getPrice().compareTo(BigDecimal.ZERO) <= 0) {
+            PriceInfo priceInfo1 = priceInfoService.findByStartStationAndEndStation(ticketDownStationId, ticketUpStationId);
+            if (priceInfo1 == null || priceInfo1.getPrice().compareTo(BigDecimal.ZERO) <= 0) {
                 throw new Exception("站点间无费用设置");
             }
             priceInfo = priceInfo1;
@@ -390,16 +389,15 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
         }
 
 
-
         String mergeId = mergeOrderId;
-        if (StringUtils.isBlank(mergeOrderId)){
+        if (StringUtils.isBlank(mergeOrderId)) {
             MergeOrderInfo mergeOrderInfo = new MergeOrderInfo();
             mergeOrderInfo.setId(UUID.randomUUID().toString());
             mergeOrderInfo.setVehicleShiftId(shiftInfo.getId());
 
             //当前车辆所属公司
-           // ShiftInfo shiftInfo = shiftInfoService.get(passengerInfo.getVehicleShiftId());
-          //  VehicleInfo vehicleInfo = vehicleInfoService.get(shiftInfo.getVehicleId());
+            // ShiftInfo shiftInfo = shiftInfoService.get(passengerInfo.getVehicleShiftId());
+            //  VehicleInfo vehicleInfo = vehicleInfoService.get(shiftInfo.getVehicleId());
 
             mergeOrderInfo.setCompanyId(vehicleInfo.getCompanyId());
             mergeOrderInfo.setOpenId(openId);
@@ -419,9 +417,9 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
 
         Boolean goodTicketStatus = false;
         List<PassengerRecordDTO> passengerRecordDTOList = new ArrayList<>();
-     //   for (String passengerId : passengerList) {
+        //   for (String passengerId : passengerList) {
 
-        for (int n = 0;n<passengerList.size();n++){
+        for (int n = 0; n < passengerList.size(); n++) {
             BigDecimal price1 = price;
             String passengerId = passengerList.get(n);
             String ticketType = ticketTypeList.get(n);
@@ -433,17 +431,17 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
 
             PassengerRecordDTO passengerRecordDTO = new PassengerRecordDTO();
 
-            OrderInfo orderInfo0 = orderInfoService.findByPassengerIdMergeOrderId(passengerId,mergeId);
-            if (orderInfo0 != null){
+            OrderInfo orderInfo0 = orderInfoService.findByPassengerIdMergeOrderId(passengerId, mergeId);
+            if (orderInfo0 != null) {
                 throw new Exception("有乘客已加入此账单,不可重复添加");
             }
 
             PassengerInfo passengerInfo = get(passengerId);
-            if (!passengerInfo.getUpStationId().equals(upStationId)){
+            if (!passengerInfo.getUpStationId().equals(upStationId)) {
                 throw new Exception("上车站点不一致不可同时选择");
             }
             if ("1".equals(passengerInfo.getStatus())) {
-                if (!"1".equals(passengerInfo.getPayStatus())){
+                if (!"1".equals(passengerInfo.getPayStatus())) {
                     //创建订单
                     OrderInfo orderInfo = new OrderInfo();
                     orderInfo.setId(UUID.randomUUID().toString());
@@ -456,7 +454,7 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
                     orderInfo.setPassengerId(passengerId);
                     orderInfo.setTicketType(ticketType);
 
-                    if (!goodTicketStatus){
+                    if (!goodTicketStatus) {
                         orderInfo.setGoodsTicket(new BigDecimal(goodsTicket));
                         orderInfo.setTotalFee(price1.add(new BigDecimal(goodsTicket)));
                         goodTicketStatus = true;
@@ -479,17 +477,16 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
                     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.setPayTime(DateUtil.format(orderInfo.getPayTime(), "yyyy-MM-dd HH:mm:ss"));
                     passengerRecordDTO.setTotalFee(orderInfo.getTotalFee());
                     passengerRecordDTOList.add(passengerRecordDTO);
 
-                }else {
+                } else {
                     throw new Exception("乘客已购票");
                 }
 
 
-
-            }else {
+            } else {
                 throw new Exception("乘客已下车");
             }
         }
@@ -515,17 +512,86 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
     }
 
     @Override
-    public List<PassengerInfo> findByOpenIdAndStatus(String openId, String status,String payStatus) {
-        return passengerInfoDAO.findByOpenIdAndStatus(openId,status,payStatus);
+    public List<PassengerInfo> findByOpenIdAndStatus(String openId, String status, String payStatus) {
+        return passengerInfoDAO.findByOpenIdAndStatus(openId, status, payStatus);
     }
 
     @Override
     public List<PassengerInfo> findByOpenIdAndVehicleShiftId(String openId, String vehicleShiftId, String status, String payStatus) {
-        return passengerInfoDAO.findByOpenIdAndVehicleShiftId(openId,vehicleShiftId,status,payStatus);
+        return passengerInfoDAO.findByOpenIdAndVehicleShiftId(openId, vehicleShiftId, status, payStatus);
     }
 
     @Override
     public List<PassengerInfo> findByShiftIdAndStatus(String shiftId, String status) {
-        return passengerInfoDAO.findByShiftIdAndStatus(shiftId,status);
+        return passengerInfoDAO.findByShiftIdAndStatus(shiftId, status);
+    }
+
+    @Override
+    public DriverBuyTicketDTO driverCreateCashOrder(PassengerInfo passengerInfo, String ticketUpStationId, String ticketDownStationId,String paymentId) throws Exception{
+        DriverBuyTicketDTO driverBuyTicketDTO = new DriverBuyTicketDTO();
+
+
+        //查询车票价格
+        PriceInfo priceInfo = priceInfoService.findByStartStationAndEndStation(ticketUpStationId,ticketDownStationId);
+        if (priceInfo == null || priceInfo.getPrice().compareTo(BigDecimal.ZERO) <=0){
+            PriceInfo priceInfo1 = priceInfoService.findByStartStationAndEndStation(ticketDownStationId,ticketUpStationId);
+            if (priceInfo1 == null || priceInfo1.getPrice().compareTo(BigDecimal.ZERO) <= 0){
+                throw new Exception("站点间无费用设置");
+            }
+            priceInfo = priceInfo1;
+        }
+
+        BigDecimal price = priceInfo.getPrice();
+
+        //创建综合账单
+        MergeOrderInfo mergeOrderInfo = new MergeOrderInfo();
+        mergeOrderInfo.setId(UUID.randomUUID().toString());
+        mergeOrderInfo.setVehicleShiftId(passengerInfo.getVehicleShiftId());
+        //当前车辆所属公司
+        ShiftInfo shiftInfo = shiftInfoService.get(passengerInfo.getVehicleShiftId());
+        VehicleInfo vehicleInfo = vehicleInfoService.get(shiftInfo.getVehicleId());
+
+        mergeOrderInfo.setPayStatus(20);
+        mergeOrderInfo.setCompanyId(vehicleInfo.getCompanyId());
+        mergeOrderInfo.setOutOrderNo(wxJpsoftConfig.getUrlKey() + com.jpsoft.bus.modules.common.utils.StringUtils.getOutTradeNo());
+        mergeOrderInfo.setPayName("cash");
+        mergeOrderInfo.setPaymentId(paymentId);
+        mergeOrderInfo.setCreateTime(new Date());
+        mergeOrderInfoService.insert(mergeOrderInfo);
+
+        OrderInfo orderInfo = new OrderInfo();
+        orderInfo.setId(UUID.randomUUID().toString());
+        orderInfo.setBody("买车票");
+        orderInfo.setTotalFee(price);
+        orderInfo.setPayStatus(20);
+        orderInfo.setPayName("cash");
+        orderInfo.setPayFee(price);
+        orderInfo.setPayTime(new Date());
+        orderInfo.setOutOrderNo(com.jpsoft.bus.modules.common.utils.StringUtils.getOutTradeNo());
+        orderInfo.setMergeOrderId(mergeOrderInfo.getId());
+        orderInfo.setTransactionId(orderInfo.getOutOrderNo());
+        orderInfo.setPassengerId(passengerInfo.getId());
+        orderInfo.setTicketType("2");
+        orderInfo.setCreateTime(new Date());
+        orderInfo.setGoodsTicket(BigDecimal.ZERO);
+        orderInfo.setTicketUpStationId(ticketUpStationId);
+        orderInfo.setTicketDownStationId(ticketDownStationId);
+        orderInfoService.insert(orderInfo);
+
+        //乘客记录添加购票上车点和下车点
+        passengerInfo.setTicketUpStationId(ticketUpStationId);
+        passengerInfo.setTicketDownStationId(ticketDownStationId);
+        passengerInfo.setTicketType("2");
+
+        //乘客购票状态修改
+        passengerInfo.setPayStatus("1");
+        update(passengerInfo);
+
+        driverBuyTicketDTO.setPayName("cash");
+        driverBuyTicketDTO.setPayNameStr("现金");
+        driverBuyTicketDTO.setTotalFee(price);
+
+
+        return driverBuyTicketDTO;
     }
 }

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

@@ -953,6 +953,74 @@ public class DriverApiController {
         return messageResult;
     }
 
+
+    @PostMapping("driverCreateCashOrder")
+    @ApiOperation(value = "司机为乘客创建现金订单")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "token", value = "令牌", paramType = "form"),
+            @ApiImplicitParam(name = "subject", value = "目标(不传)", paramType = "form"),
+            @ApiImplicitParam(name = "id", value = "乘客主id", required = true, paramType = "form"),
+            @ApiImplicitParam(name = "ticketUpStationId", value = "乘客买票站点id", required = true, paramType = "form"),
+            @ApiImplicitParam(name = "ticketDownStationId", value = "乘客买票下车站点id", required = true, paramType = "form")
+    })
+    public MessageResult<DriverBuyTicketDTO> driverCreateCashOrder(String id,String ticketUpStationId,String ticketDownStationId,String token, @RequestAttribute String subject) {
+        MessageResult<DriverBuyTicketDTO> messageResult = new MessageResult<>();
+
+        try {
+
+            VehicleInfo vehicleInfo = vehicleInfoService.get(subject);
+            if (vehicleInfo == null){
+                throw new Exception("当前车辆不存在");
+            }
+
+            String paymentId = "";
+            CompanyInfo companyInfo = companyInfoService.get(vehicleInfo.getCompanyId());
+
+            PaymentInfo paymentInfo = paymentInfoService.findByCompanyId(vehicleInfo.getCompanyId());
+            if (paymentInfo != null){
+                paymentId = paymentInfo.getId();
+            }
+            else {
+                if ("1".equals(companyInfo.getType())){
+                    throw new Exception("车辆对应公司未配置收款账户");
+                }
+                if (!"1".equals(companyInfo.getType())){
+                    CompanyInfo companyInfo1 = companyInfoService.get(companyInfo.getParentId());
+                    PaymentInfo paymentInfo1 = paymentInfoService.findByCompanyId(companyInfo1.getId());
+                    if (paymentInfo1 != null){
+                        paymentId = paymentInfo1.getId();
+                    }
+
+                }
+            }
+
+            if (StringUtils.isBlank(paymentId)){
+                throw new Exception("对应公司收款账户异常,请核验");
+            }
+
+            List<ShiftInfo> shiftInfoList = shiftInfoService.findByVehicleIdAndStatus(vehicleInfo.getId(),"1");
+            if (shiftInfoList.size() == 0){
+                throw new Exception("车辆没有相关班次信息");
+            }
+
+            PassengerInfo passengerInfo = passengerInfoService.get(id);
+
+
+            DriverBuyTicketDTO driverBuyTicketDTO = passengerInfoService.driverCreateCashOrder(passengerInfo,ticketUpStationId,ticketDownStationId,paymentId);
+
+            messageResult.setData(driverBuyTicketDTO);
+            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("ticketAmount")
     @ApiOperation(value = "站点之间的车票金额")
     @ApiImplicitParams({