kongdeqiang
2023-12-13 f519185656a36159dfad0ba27e83528176827105
修改
1个文件已修改
4个文件已添加
202 ■■■■ 已修改文件
src/main/java/com/boying/controller/phone/YCPayController.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/boying/entity/PayLog.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/boying/mapper/PayLogMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/boying/service/PayLogService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/boying/service/impl/PayLogServiceImpl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
@@ -273,13 +274,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 +375,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 +440,28 @@
        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 {
                            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")){
                //交易成功,超时,未明,稍后发起查询
src/main/java/com/boying/entity/PayLog.java
New file
@@ -0,0 +1,67 @@
package com.boying.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.boying.common.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Entity;
import java.time.LocalDateTime;
/**
 * @author kdq
 * @version 1.0.0
 * @ClassName PayLog.java
 * @Description TODO
 * @createTime 2023年12月12日 17:06:00
 */
@Data
@TableName("pay_log")
@javax.persistence.Table(name = "pay_log")
@Entity
@org.hibernate.annotations.Table(appliesTo = "pay_log", comment = "支付日志表")
@ApiModel(value = "支付日志表")
public class PayLog extends BaseEntity<PayLog> {
    /**
     * 出场表id
     */
    private Integer outParkId;
    /**
     * 流水号
     */
    private String code2;
    /**
     * 商户流水号
     */
    private String txnOrderId;
    /**
     * 商户交易时间
     */
    private String txnOrderTime;
    /**
     * 平台交易时间
     */
    private String respTxnTime;
    /**
     * 缴款码
     */
    private String payCode;
    private String qrCode;
    /**
     * 支付时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime payTime;
}
src/main/java/com/boying/mapper/PayLogMapper.java
New file
@@ -0,0 +1,16 @@
package com.boying.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.boying.entity.PayLog;
import org.apache.ibatis.annotations.Mapper;
/**
 * @author kdq
 * @version 1.0.0
 * @ClassName PayLogMapper.java
 * @Description TODO
 * @createTime 2023年12月12日 17:36:00
 */
@Mapper
public interface PayLogMapper extends BaseMapper<PayLog> {
}
src/main/java/com/boying/service/PayLogService.java
New file
@@ -0,0 +1,19 @@
package com.boying.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.boying.entity.PayLog;
import java.util.List;
/**
 * @author kdq
 * @version 1.0.0
 * @ClassName PayLogService.java
 * @Description TODO
 * @createTime 2023年12月12日 17:35:00
 */
public interface PayLogService extends IService<PayLog> {
    PayLog findByPayCode(String payCode);
}
src/main/java/com/boying/service/impl/PayLogServiceImpl.java
New file
@@ -0,0 +1,38 @@
package com.boying.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.boying.entity.OutPark;
import com.boying.entity.PayLog;
import com.boying.mapper.PayLogMapper;
import com.boying.service.PayLogService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * @author kdq
 * @version 1.0.0
 * @ClassName PayLogServiceImpl.java
 * @Description TODO
 * @createTime 2023年12月12日 17:35:00
 */
@Service
@AllArgsConstructor
public class PayLogServiceImpl extends ServiceImpl<PayLogMapper, PayLog> implements PayLogService {
    @Override
    public PayLog findByPayCode(String payCode) {
        QueryWrapper<PayLog> wrapper = new QueryWrapper<>();
        wrapper.lambda()
                .eq(PayLog::getCode2,payCode)
                .orderByDesc(PayLog::getCreateTime);
        List<PayLog> payLogs = list(wrapper);
        if(payLogs.size()>0){
            return payLogs.get(0);
        }else{
            return null;
        }
    }
}