|
@@ -1,10 +1,7 @@
|
|
|
package com.jpsoft.bus.modules.bus.service.impl;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.UUID;
|
|
|
+import java.util.*;
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
@@ -12,12 +9,15 @@ import cn.hutool.core.util.StrUtil;
|
|
|
import com.google.common.collect.Ordering;
|
|
|
import com.jpsoft.bus.modules.base.entity.MergeOrderInfo;
|
|
|
import com.jpsoft.bus.modules.base.entity.OrderInfo;
|
|
|
+import com.jpsoft.bus.modules.base.entity.PaymentInfo;
|
|
|
import com.jpsoft.bus.modules.base.service.MergeOrderInfoService;
|
|
|
import com.jpsoft.bus.modules.base.service.OrderInfoService;
|
|
|
+import com.jpsoft.bus.modules.base.service.PaymentInfoService;
|
|
|
import com.jpsoft.bus.modules.bus.dto.DriverBuyTicketDTO;
|
|
|
-import com.jpsoft.bus.modules.bus.entity.ShiftInfo;
|
|
|
-import com.jpsoft.bus.modules.bus.entity.VehicleInfo;
|
|
|
+import com.jpsoft.bus.modules.bus.entity.*;
|
|
|
import com.jpsoft.bus.modules.bus.service.BaiduService;
|
|
|
+import com.jpsoft.bus.modules.bus.service.CompanyInfoService;
|
|
|
+import com.jpsoft.bus.modules.bus.service.PriceInfoService;
|
|
|
import com.jpsoft.bus.modules.common.utils.CommonUtil;
|
|
|
import com.jpsoft.bus.modules.pay.service.AlipayService;
|
|
|
import com.jpsoft.bus.modules.pay.service.WechatService;
|
|
@@ -26,7 +26,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import com.jpsoft.bus.modules.bus.dao.PassengerInfoDAO;
|
|
|
-import com.jpsoft.bus.modules.bus.entity.PassengerInfo;
|
|
|
import com.jpsoft.bus.modules.bus.service.PassengerInfoService;
|
|
|
import com.github.pagehelper.Page;
|
|
|
import com.jpsoft.bus.modules.common.dto.Sort;
|
|
@@ -39,7 +38,16 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
|
|
|
private PassengerInfoDAO passengerInfoDAO;
|
|
|
|
|
|
@Autowired
|
|
|
- private MergeOrderInfoService mergeOrderInfoService;
|
|
|
+ private MergeOrderInfoService mergeOrderInfoService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PriceInfoService priceInfoService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CompanyInfoService companyInfoService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PaymentInfoService paymentInfoService;
|
|
|
|
|
|
@Autowired
|
|
|
private WechatService wechatService;
|
|
@@ -48,7 +56,7 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
|
|
|
private AlipayService alipayService;
|
|
|
|
|
|
@Autowired
|
|
|
- private OrderInfoService orderInfoService;
|
|
|
+ private OrderInfoService orderInfoService;
|
|
|
|
|
|
@Autowired
|
|
|
private BaiduService baiduService;
|
|
@@ -154,107 +162,211 @@ public class PassengerInfoServiceImpl implements PassengerInfoService {
|
|
|
baiduService.faceUserAdd(retFileUrl, groupId, personId, "2");
|
|
|
}
|
|
|
|
|
|
- }else {
|
|
|
- PassengerInfo passengerInfo = passengerInfoList1.get(0);
|
|
|
- passengerInfo.setStatus("1");
|
|
|
- update(passengerInfo);
|
|
|
- }
|
|
|
+ } else {
|
|
|
+ PassengerInfo passengerInfo = passengerInfoList1.get(0);
|
|
|
+ passengerInfo.setStatus("1");
|
|
|
+ update(passengerInfo);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public DriverBuyTicketDTO driverBuyTicket(PassengerInfo passengerInfo, String ticketUpStationId, String ticketDownStationId, String ticketType, String goodsTicket, String totalFee, String payName,String paymentId) throws Exception {
|
|
|
+ @Override
|
|
|
+ public DriverBuyTicketDTO driverBuyTicket(PassengerInfo passengerInfo, String ticketUpStationId, String ticketDownStationId, String ticketType, String goodsTicket, String totalFee, String payName, String paymentId) throws Exception {
|
|
|
|
|
|
DriverBuyTicketDTO driverBuyTicketDTO = new DriverBuyTicketDTO();
|
|
|
|
|
|
|
|
|
- //乘客记录添加购票上车点和下车点
|
|
|
- passengerInfo.setTicketUpStationId(ticketUpStationId);
|
|
|
+ //乘客记录添加购票上车点和下车点
|
|
|
+ /*passengerInfo.setTicketUpStationId(ticketUpStationId);
|
|
|
passengerInfo.setTicketDownStationId(ticketDownStationId);
|
|
|
- update(passengerInfo);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //根据支付方式创建订单
|
|
|
- if ("cash".equals(payName) || "ticket".equals(payName)){
|
|
|
- //创建综合账单
|
|
|
- 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);
|
|
|
- mergeOrderInfo.setPaymentId(paymentId);
|
|
|
- mergeOrderInfo.setCreateTime(new Date());
|
|
|
- mergeOrderInfoService.insert(mergeOrderInfo);
|
|
|
-
|
|
|
- OrderInfo orderInfo = new OrderInfo();
|
|
|
- orderInfo.setId(UUID.randomUUID().toString());
|
|
|
- orderInfo.setBody("买车票");
|
|
|
- orderInfo.setTotalFee(new BigDecimal(totalFee));
|
|
|
- orderInfo.setPayStatus(20);
|
|
|
- orderInfo.setPayName(payName);
|
|
|
- orderInfo.setPayFee(new BigDecimal(totalFee));
|
|
|
- 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(ticketType);
|
|
|
- orderInfo.setCreateTime(new Date());
|
|
|
- orderInfo.setGoodsTicket(new BigDecimal(goodsTicket));
|
|
|
- orderInfoService.insert(orderInfo);
|
|
|
-
|
|
|
- //乘客购票状态修改
|
|
|
+ update(passengerInfo);*/
|
|
|
+
|
|
|
+
|
|
|
+ //根据支付方式创建订单
|
|
|
+ if ("cash".equals(payName) || "ticket".equals(payName)) {
|
|
|
+ //创建综合账单
|
|
|
+ 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);
|
|
|
+ mergeOrderInfo.setPaymentId(paymentId);
|
|
|
+ mergeOrderInfo.setCreateTime(new Date());
|
|
|
+ mergeOrderInfoService.insert(mergeOrderInfo);
|
|
|
+
|
|
|
+ OrderInfo orderInfo = new OrderInfo();
|
|
|
+ orderInfo.setId(UUID.randomUUID().toString());
|
|
|
+ orderInfo.setBody("买车票");
|
|
|
+ orderInfo.setTotalFee(new BigDecimal(totalFee));
|
|
|
+ orderInfo.setPayStatus(20);
|
|
|
+ orderInfo.setPayName(payName);
|
|
|
+ orderInfo.setPayFee(new BigDecimal(totalFee));
|
|
|
+ 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(ticketType);
|
|
|
+ orderInfo.setCreateTime(new Date());
|
|
|
+ orderInfo.setGoodsTicket(new BigDecimal(goodsTicket));
|
|
|
+ orderInfo.setTicketUpStationId(ticketUpStationId);
|
|
|
+ orderInfo.setTicketDownStationId(ticketDownStationId);
|
|
|
+ orderInfoService.insert(orderInfo);
|
|
|
+
|
|
|
+ //乘客记录添加购票上车点和下车点
|
|
|
+ passengerInfo.setTicketUpStationId(ticketUpStationId);
|
|
|
+ passengerInfo.setTicketDownStationId(ticketDownStationId);
|
|
|
+
|
|
|
+
|
|
|
+ //乘客购票状态修改
|
|
|
passengerInfo.setPayStatus("1");
|
|
|
update(passengerInfo);
|
|
|
|
|
|
|
|
|
- }else {
|
|
|
-
|
|
|
- //创建综合账单
|
|
|
- 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);
|
|
|
- mergeOrderInfo.setCreateTime(new Date());
|
|
|
- mergeOrderInfoService.insert(mergeOrderInfo);
|
|
|
-
|
|
|
- OrderInfo orderInfo = new OrderInfo();
|
|
|
- orderInfo.setId(UUID.randomUUID().toString());
|
|
|
- orderInfo.setBody("买车票");
|
|
|
- orderInfo.setTotalFee(new BigDecimal(totalFee));
|
|
|
- orderInfo.setPayStatus(10);
|
|
|
- orderInfo.setOutOrderNo(com.jpsoft.bus.modules.common.utils.StringUtils.getOutTradeNo());
|
|
|
- orderInfo.setMergeOrderId(mergeOrderInfo.getId());
|
|
|
- orderInfo.setPassengerId(passengerInfo.getId());
|
|
|
- orderInfo.setTicketType(ticketType);
|
|
|
- orderInfo.setGoodsTicket(new BigDecimal(goodsTicket));
|
|
|
- orderInfo.setCreateTime(new Date());
|
|
|
- orderInfoService.insert(orderInfo);
|
|
|
-
|
|
|
- String codeUrl = "";
|
|
|
- if ("wechat".equals(payName)){
|
|
|
- codeUrl = wechatService.wxNativePay(mergeOrderInfo.getId());
|
|
|
- }
|
|
|
- if ("alipay".equals(payName)){
|
|
|
- codeUrl = alipayService.tradePrecreatePay(mergeOrderInfo.getId());
|
|
|
+ } else {
|
|
|
+
|
|
|
+ //创建综合账单
|
|
|
+ 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);
|
|
|
+ mergeOrderInfo.setCreateTime(new Date());
|
|
|
+ mergeOrderInfoService.insert(mergeOrderInfo);
|
|
|
+
|
|
|
+ OrderInfo orderInfo = new OrderInfo();
|
|
|
+ orderInfo.setId(UUID.randomUUID().toString());
|
|
|
+ orderInfo.setBody("买车票");
|
|
|
+ orderInfo.setTotalFee(new BigDecimal(totalFee));
|
|
|
+ orderInfo.setPayStatus(10);
|
|
|
+ orderInfo.setOutOrderNo(com.jpsoft.bus.modules.common.utils.StringUtils.getOutTradeNo());
|
|
|
+ orderInfo.setMergeOrderId(mergeOrderInfo.getId());
|
|
|
+ orderInfo.setPassengerId(passengerInfo.getId());
|
|
|
+ orderInfo.setTicketType(ticketType);
|
|
|
+ orderInfo.setGoodsTicket(new BigDecimal(goodsTicket));
|
|
|
+ orderInfo.setCreateTime(new Date());
|
|
|
+ orderInfo.setTicketUpStationId(ticketUpStationId);
|
|
|
+ orderInfo.setTicketDownStationId(ticketDownStationId);
|
|
|
+ orderInfoService.insert(orderInfo);
|
|
|
+
|
|
|
+ String codeUrl = "";
|
|
|
+ if ("wechat".equals(payName)) {
|
|
|
+ codeUrl = wechatService.wxNativePay(mergeOrderInfo.getId());
|
|
|
+ }
|
|
|
+ if ("alipay".equals(payName)) {
|
|
|
+ codeUrl = alipayService.tradePrecreatePay(mergeOrderInfo.getId());
|
|
|
}
|
|
|
|
|
|
- driverBuyTicketDTO.setId(orderInfo.getId());
|
|
|
+ driverBuyTicketDTO.setId(orderInfo.getId());
|
|
|
driverBuyTicketDTO.setPayName(payName);
|
|
|
- driverBuyTicketDTO.setTotalFee(orderInfo.getTotalFee());
|
|
|
- driverBuyTicketDTO.setUrl(codeUrl);
|
|
|
- driverBuyTicketDTO.setPayNameStr(orderInfo.getPayNameStr(payName));
|
|
|
- }
|
|
|
+ driverBuyTicketDTO.setTotalFee(orderInfo.getTotalFee());
|
|
|
+ driverBuyTicketDTO.setUrl(codeUrl);
|
|
|
+ driverBuyTicketDTO.setPayNameStr(orderInfo.getPayNameStr(payName));
|
|
|
+ }
|
|
|
+
|
|
|
+ return driverBuyTicketDTO;
|
|
|
+ }
|
|
|
|
|
|
- return driverBuyTicketDTO;
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ public List<PassengerInfo> findByShiftStatusPayStatusNotTicketDown(String shiftId, String status, String payStatus, String ticketDownStationId) {
|
|
|
+ return passengerInfoDAO.findByShiftStatusPayStatusNotTicketDown(shiftId, status, payStatus, ticketDownStationId);
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
- public List<PassengerInfo> findByShiftStatusPayStatusNotTicketDown(String shiftId, String status, String payStatus,String ticketDownStationId) {
|
|
|
- return passengerInfoDAO.findByShiftStatusPayStatusNotTicketDown(shiftId,status,payStatus,ticketDownStationId);
|
|
|
+ public void createOrder(VehicleInfo vehicleInfo, ShiftInfo shiftInfo, String openId, String mergeOrderId,String passengerIds, String ticketUpStationId, String ticketDownStationId, String ticketType, String goodsTicket, String totalFee) throws Exception {
|
|
|
+
|
|
|
+
|
|
|
+ PriceInfo priceInfo = priceInfoService.findByStartStationAndEndStation(ticketUpStationId, ticketDownStationId);
|
|
|
+ if (priceInfo == null) {
|
|
|
+ PriceInfo priceInfo1 = priceInfoService.findByStartStationAndEndStation(ticketDownStationId, ticketUpStationId);
|
|
|
+ if (priceInfo1 == null) {
|
|
|
+ throw new Exception("站点间无费用设置");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal price = priceInfo.getPrice();
|
|
|
+ if ("1".equals(ticketType)) {
|
|
|
+ price = price.divide(new BigDecimal(2));
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal goodTicketPrice = new BigDecimal(goodsTicket);
|
|
|
+
|
|
|
+ BigDecimal total = price.add(goodTicketPrice);
|
|
|
+ if (total.compareTo(new BigDecimal(totalFee)) != 0) {
|
|
|
+ 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("对应公司收款账户异常,请核验");
|
|
|
+ }
|
|
|
+
|
|
|
+ //乘客id集合
|
|
|
+ List<String> passengerList = Arrays.asList(passengerIds.split(","));
|
|
|
+ if (passengerList.size() == 0) {
|
|
|
+ throw new Exception("乘客不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ String mergeId = mergeOrderId;
|
|
|
+ if (StringUtils.isBlank(mergeOrderId)){
|
|
|
+ MergeOrderInfo mergeOrderInfo = new MergeOrderInfo();
|
|
|
+ mergeOrderInfo.setId(UUID.randomUUID().toString());
|
|
|
+ mergeOrderInfo.setVehicleShiftId(shiftInfo.getId());
|
|
|
+ mergeOrderInfo.setOpenId(openId);
|
|
|
+ mergeOrderInfo.setPayStatus(10);
|
|
|
+ mergeOrderInfo.setOutOrderNo(com.jpsoft.bus.modules.common.utils.StringUtils.getOutTradeNo());
|
|
|
+ mergeOrderInfo.setPaymentId(paymentId);
|
|
|
+ mergeOrderInfo.setCreateTime(new Date());
|
|
|
+ mergeOrderInfoService.insert(mergeOrderInfo);
|
|
|
+ mergeId = mergeOrderInfo.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ for (String passengerId : passengerList) {
|
|
|
+ PassengerInfo passengerInfo = get(passengerId);
|
|
|
+ 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);
|
|
|
+ orderInfo.setGoodsTicket(new BigDecimal(goodsTicket));
|
|
|
+ orderInfo.setMergeOrderId(mergeId);
|
|
|
+ orderInfo.setTicketUpStationId(ticketUpStationId);
|
|
|
+ orderInfo.setTicketDownStationId(ticketDownStationId);
|
|
|
+ orderInfoService.insert(orderInfo);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
}
|