ソースを参照

综合账单详情

fllmoyu 4 年 前
コミット
1651d47089

+ 2 - 0
common/src/main/java/com/jpsoft/bus/modules/pay/service/impl/AlipayServiceImpl.java

@@ -109,6 +109,7 @@ public class AlipayServiceImpl implements AlipayService {
 
         Integer payStatus = 40;
 
+        MergeOrderInfo mergeOrderInfo = mergeOrderInfoService.get(orderInfo.getMergeOrderId());
 
 
         AlipayClient alipayClient = new DefaultAlipayClient(aliPayConfig.getServiceUrl(), aliPayConfig.getAppId(), aliPayConfig.getPrivateKey(), "json", aliPayConfig.getInputCharset(), aliPayConfig.getZfbPublicKey(), aliPayConfig.getSignType());
@@ -117,6 +118,7 @@ public class AlipayServiceImpl implements AlipayService {
 
         Map<String, Object> maps = new HashMap<>();
         maps.put("trade_no", orderInfo.getTransactionId());
+        maps.put("out_trade_no",mergeOrderInfo.getOutOrderNo());
         maps.put("refund_reason", "正常退款");
         maps.put("refund_amount", orderInfo.getPayFee());
 

+ 15 - 1
common/src/main/java/com/jpsoft/bus/modules/pay/service/impl/WechatServiceImpl.java

@@ -7,6 +7,7 @@ import com.ijpay.wxpay.WxPayApi;
 import com.ijpay.wxpay.model.RefundModel;
 import com.ijpay.wxpay.model.UnifiedOrderModel;
 import com.jpsoft.bus.config.WxJpsoftConfig;
+import com.jpsoft.bus.modules.base.dto.MergeOrderDTO;
 import com.jpsoft.bus.modules.base.entity.MergeOrderInfo;
 import com.jpsoft.bus.modules.base.entity.OrderInfo;
 import com.jpsoft.bus.modules.base.entity.PaymentInfo;
@@ -118,8 +119,20 @@ public class WechatServiceImpl implements WechatService {
 
         Integer payStatus = 40;
 
+        MergeOrderInfo mergeOrderInfo = mergeOrderInfoService.get(orderInfo.getMergeOrderId());
 
-        String totalFee = orderInfo.getTotalFee().multiply(new BigDecimal(100)).setScale(0).toString();
+        List<OrderInfo> orderInfoList = orderInfoService.findByMergeOrderId(mergeOrderInfo.getId());
+        BigDecimal totalDecimal = BigDecimal.ZERO;
+        if (orderInfoList.size()>0){
+            for (OrderInfo orderInfo1 : orderInfoList){
+                if (orderInfo1.getPayStatus() != 10){
+                    totalDecimal = totalDecimal.add(orderInfo1.getPayFee());
+                }
+            }
+        }
+
+
+        String totalFee = totalDecimal.multiply(new BigDecimal(100)).setScale(0).toString();
         String refundFeeStr = orderInfo.getPayFee().multiply(new BigDecimal(100)).setScale(0).toString();
 
 
@@ -129,6 +142,7 @@ public class WechatServiceImpl implements WechatService {
                 .sub_mch_id(wxJpsoftConfig.getSubMchId())
                 .nonce_str(WxPayKit.generateStr())
                 .transaction_id(orderInfo.getTransactionId())
+                .out_trade_no(mergeOrderInfo.getOutOrderNo())
                 .out_refund_no(WxPayKit.generateStr())
                 .total_fee(totalFee)
                 .refund_fee(refundFeeStr)

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

@@ -79,6 +79,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 				.excludePathPatterns("/bus/deviceCmdApi/queryPadLatestVersion")
 				.excludePathPatterns("/mobile/passengerApi/passengerMessageNoReadNum")
 				.excludePathPatterns("/mobile/passengerApi/passengerMessage")
+				.excludePathPatterns("/mobile/passengerApi/mergeInfo")
 
 				;
 	}

+ 51 - 0
web/src/main/java/com/jpsoft/bus/modules/mobile/controller/PassengerApiController.java

@@ -5,6 +5,7 @@ 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.fasterxml.jackson.databind.PropertyMetadata;
 import com.github.pagehelper.Page;
 import com.jpsoft.bus.config.OSSConfig;
 import com.jpsoft.bus.modules.base.dto.MergeOrderDTO;
@@ -1288,4 +1289,54 @@ public class PassengerApiController {
         return messageResult;
     }
 
+    @PostMapping("mergeInfo")
+    @ApiOperation(value = "综合账单详情")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "outOrderNo", value = "商户订单号", paramType = "form")
+    })
+    public MessageResult<List<PassengerRecordDTO>> mergeInfo(String outOrderNo) {
+        MessageResult<List<PassengerRecordDTO>> messageResult = new MessageResult<>();
+
+        try {
+
+            List<PassengerRecordDTO> list = new ArrayList<>();
+            MergeOrderInfo mergeOrderInfo = mergeOrderInfoService.findByOutOrderNo(outOrderNo);
+            if (mergeOrderInfo != null){
+                List<OrderInfo> orderInfoList = orderInfoService.findByMergeOrderId(mergeOrderInfo.getId());
+                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);
+                    }
+                }
+            }
+
+            messageResult.setData(list);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
 }