kongdeqiang
2024-03-18 e68a90d29289858e4106a0fb5e615408b41ea102
src/main/java/com/boying/controller/phone/YCPayController.java
@@ -49,6 +49,7 @@
@RequiredArgsConstructor
public class YCPayController {
    private final OutParkService outParkService;
    private final PayLogService payLogService;
    private final ParkService parkService;
    private final OrderRecordService orderRecordService;
    private final TicketService ticketService;
@@ -58,6 +59,7 @@
    private final WhiteListService whiteListService;
    private final EnterParkService enterParkService;
    private final WXService wxService;
    private final OutParkLogService outParkLogService;
    /**
     * 查询订单接口
@@ -186,6 +188,9 @@
        if(StringUtils.isNotBlank(outPark.getPayCode()) && outPark.getStatus() == 0){
            String logs = sdf.format(new Date())+" 车牌号为:"+outPark.getCarNo()+",申请缴费2------》\n";
            writeTxt(logs);
            OutParkLog byOutPark = outParkLogService.getByOutPark(outPark.getCarNo(), outPark.getId());
            byOutPark.setPayStartTime(LocalDateTime.now());
            outParkLogService.saveOrUpdate(byOutPark);
            return R.ok(null,"跳转邢台银行支付");
        }else if(StringUtils.isNotBlank(outPark.getPayCode()) && outPark.getStatus() == 1){
            return R.failed("已缴费");
@@ -203,6 +208,9 @@
                    }else {
                        outPark.setPrice(outPark.getPrice()-enterPark.getPrice());
                        outParkService.updateById(outPark);
                        OutParkLog byOutPark = outParkLogService.getByOutPark(outPark.getCarNo(), outPark.getId());
                        byOutPark.setPayStartTime(LocalDateTime.now());
                        outParkLogService.saveOrUpdate(byOutPark);
                    }
                }
            }
@@ -273,13 +281,15 @@
            String respTxnTime = (String)map1.get("respTxnTime");
            Map map2 = gson.fromJson(respData, Map.class);
            String qrCode = (String)map2.get("qrCode");
            outPark.setCode2(respTxnSsn);
            outPark.setQrCode(qrCode);
            outPark.setPayTime(LocalDateTime.now());
            outPark.setTxnOrderId(outPark.getId()+""+format);
            outPark.setTxnOrderTime(format);
            outPark.setRespTxnTime(respTxnTime);
            outParkService.updateById(outPark);
            PayLog payLog = new PayLog();
            payLog.setOutParkId(outPark.getId());
            payLog.setCode2(respTxnSsn);
            payLog.setQrCode(qrCode);
            payLog.setPayTime(LocalDateTime.now());
            payLog.setTxnOrderId(outPark.getId()+""+format);
            payLog.setTxnOrderTime(format);
            payLog.setRespTxnTime(respTxnTime);
            payLogService.save(payLog);
            return R.ok(null,qrCode);
        }
        String respMsg = (String)map1.get("respMsg");
@@ -372,12 +382,14 @@
            resultMap.put("signType",signType);
            resultMap.put("package",package1);
            resultMap.put("paySign",paySign);
            outPark.setCode2(respTxnSsn);
            outPark.setPayTime(LocalDateTime.now());
            outPark.setTxnOrderId(outPark.getId()+""+format);
            outPark.setTxnOrderTime(format);
            outPark.setRespTxnTime(respTxnTime);
            outParkService.updateById(outPark);
            PayLog payLog = new PayLog();
            payLog.setOutParkId(outPark.getId());
            payLog.setCode2(respTxnSsn);
            payLog.setPayTime(LocalDateTime.now());
            payLog.setTxnOrderId(outPark.getId()+""+format);
            payLog.setTxnOrderTime(format);
            payLog.setRespTxnTime(respTxnTime);
            payLogService.save(payLog);
            return R.ok(resultMap,null);
        }
        String respMsg = (String)map1.get("respMsg");
@@ -435,19 +447,31 @@
        if(respCode != null){
            if(respCode.equals("0000")){
                //交易成功,根据流水号查询出场记录
                OutPark byPayCode = outParkService.findByPayCode(respTxnSsn);
                writeTxt2(byPayCode.getId()+"收到回执\n");
                if(byPayCode == null){
                    return R.failed("未查询到订单");
                PayLog payLog = payLogService.findByPayCode(respTxnSsn);
                if(payLog == null){
                    return R.failed("未查询到流水记录");
                }else {
                    updateOrderRecord((long)byPayCode.getId(),"03");
                    List<EnterPark> byCarNo = enterParkService.findByCarNo(byPayCode.getCarNo(),byPayCode.getParkId());
                    if(byCarNo.size()>0){
                        EnterPark enterPark = byCarNo.get(0);
                        enterPark.setIsPay(1);
                        enterParkService.updateById(enterPark);
                    OutPark byPayCode = outParkService.getById(payLog.getOutParkId());
                    writeTxt2(byPayCode.getId()+"收到回执\n");
                    if(byPayCode == null){
                        return R.failed("未查询到订单");
                    }else {
                        if(byPayCode.getStatus() == 1){
                            return R.ok(null,"订单已支付");
                        }else {
                            OutParkLog byOutPark = outParkLogService.getByOutPark(byPayCode.getCarNo(), byPayCode.getId());
                            byOutPark.setPayEndTime(LocalDateTime.now());
                            outParkLogService.saveOrUpdate(byOutPark);
                            updateOrderRecord((long)byPayCode.getId(),"03");
                            List<EnterPark> byCarNo = enterParkService.findByCarNo(byPayCode.getCarNo(),byPayCode.getParkId());
                            if(byCarNo.size()>0){
                                EnterPark enterPark = byCarNo.get(0);
                                enterPark.setIsPay(1);
                                enterParkService.updateById(enterPark);
                            }
                            return R.ok(null,"回调成功");
                        }
                    }
                    return R.ok(null,"回调成功");
                }
            }else if(respCode.equals("0002") || respCode.equals("0003") || respCode.equals("0003") || respCode.equals("0012")){
                //交易成功,超时,未明,稍后发起查询
@@ -652,7 +676,7 @@
    //更新出场
    public void updateOutPark(Integer outParkId, String status){
        OutPark outPark = outParkService.getById(outParkId);
        if(outPark!=null){
        if(outPark!=null && outPark.getEnterTime() !=null){
            if(status.equals("03")){
                outPark.setStatus(1);
                outParkService.saveOrUpdate(outPark);