kongdeqiang
2023-06-08 3fba1d84220268d871c3c28e0e25f6eab3526f46
src/main/java/com/boying/controller/phone/YCPayController.java
@@ -6,18 +6,21 @@
import com.boying.common.SystemConfigProperties;
import com.boying.entity.*;
import com.boying.service.*;
import com.boying.util.DateUtilOther;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.Files;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * @author kdq
@@ -31,11 +34,13 @@
@RequiredArgsConstructor
public class YCPayController {
    private final OutParkService outParkService;
    private final ParkService parkService;
    private final OrderRecordService orderRecordService;
    private final TicketService ticketService;
    private final TicketBlackService ticketBlackService;
    private final SystemConfigProperties systemConfigProperties;
    private final WhiteListService whiteListService;
    private final EnterParkService enterParkService;
    /**
     * 查询订单接口
@@ -44,7 +49,13 @@
     */
    @GetMapping("/getByQueryId")
    public Object getByQueryId(Long queryId){
        if(queryId == null){
            return R.failed("参数为空");
        }
        OutPark byId = outParkService.getById(queryId);
        if(byId.getTime() > 0){
            byId.setTimeStr(DateUtilOther.millisToDayHrMinSec(new Double(byId.getTime()).longValue()));
        }
        return R.ok(byId,"请求成功");
    }
@@ -53,6 +64,7 @@
     */
    @PostMapping("park")
    public Object park(Long id){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
        OutPark outPark =  outParkService.getById(id);
        if(outPark.getPrice()==0){
            updateOutPark(outPark.getId(),"03");
@@ -69,22 +81,36 @@
                updateOutPark(outPark.getId(),"03");
                return R.failed("本次停车无需支付费用!");
            }else{
                if(w.getParkId()!=null){
                    if(w.getEndTime()!=null){
                        if(w.getParkId().equals(outPark.getParkId())&&System.currentTimeMillis()<w.getEndTime().getTime()){
                            updateOutPark(outPark.getId(),"03");
                            return R.failed("本次停车无需支付费用!");
                if(StringUtils.isNotBlank(w.getParkIds())){
                    if(w.getParkIds().contains(outPark.getParkId()+"")){
                        if(w.getEndTime()!=null){
                            if(System.currentTimeMillis()<w.getEndTime().getTime()){
                                updateOutPark(outPark.getId(),"03");
                                return R.failed("本次停车无需支付费用!");
                            }
                        }
                    }
                }
            }
        }
        if(outPark.getStatus() == 0){
            return R.ok("跳转邮储支付", "https://hbfs.govpay.ccb.com/online/fssm?fee=130000000001&PyfScnCgycd=01&pyfTpcd=3&BNo="+outPark.getPayCode());
        }else if(outPark.getStatus() == 1){
        if(StringUtils.isNotBlank(outPark.getPayCode()) && outPark.getStatus() == 0){
            String logs = sdf.format(new Date())+" 车牌号为:"+outPark.getCarNo()+",申请缴费2------》\n";
            writeTxt(logs);
           // "http://wxtest.smeia.cn/h5/static/router.html?rurl=router&router=psbc&appid=CUP16522400671&params={\"payMode\":\"B\",\"payItemNo\":\"41301106100124\",\"userNo\":"+id+"}"
            return R.ok("跳转邮储支付","https://openpayment.psbc.com/h5/static/router.html?rurl=router&router=psbc&appid=CUP14094502391&params={\"payMode\":\"B\",\"payItemNo\":\"41304508000500\",\"userNo\":"+id+"}");
          //  return R.ok("跳转邮储支付","http://wxtest.smeia.cn/h5/static/router.html?rurl=router&router=psbc&appid=CUP16522400671&params={\"payMode\":\"B\",\"payItemNo\":\"41301106100124\",\"userNo\":"+id+"}");
        }else if(StringUtils.isNotBlank(outPark.getPayCode()) && outPark.getStatus() == 1){
            return R.failed("已缴费");
        }
        if(StringUtils.isBlank(outPark.getPayCode())){
            String logs = sdf.format(new Date())+" 车牌号为:"+outPark.getCarNo()+",申请缴费------》\n";
            writeTxt(logs);
            addOrderRecord(outPark);
            return R.ok("跳转邮储支付","https://openpayment.psbc.com/h5/static/router.html?rurl=router&router=psbc&appid=CUP14094502391&params={\"payMode\":\"B\",\"payItemNo\":\"41304508000500\",\"userNo\":"+id+"}");
        }else {
            return R.failed("系统异常");
            return R.failed("出错");
        }
    }
@@ -96,36 +122,41 @@
    @GetMapping("/result")
    public Object result(Long queryId,int success,int msg){
        OutPark byId = outParkService.getById(queryId);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
        if(byId == null){
            return R.failed("未查询到订单");
        }else {
            //修改订单状态 0成功
            if(success==0){
                updateOrderRecord(queryId,"03");
                return R.ok(null,"请求成功");
                String logs = sdf.format(new Date())+" 车牌号为:"+byId.getCarNo()+",缴费成功------》\n";
                writeTxt(logs);
                return R.ok(null,"回调成功");
            }else {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
                String logs = sdf.format(new Date())+" 出场id为:"+queryId+",缴费失败------》\n";
                logs += "回执原因:"+msg+",\n";
                writeTxt(logs);
            }
        }
        return R.ok(byId,"请求成功");
        return R.ok(byId,"回调成功");
    }
    /**
     * 对账接口
     * @param checkDate,tranDate,fileName
     * @param
     * @return
     */
    @GetMapping("/checkbill")
    public Object checkbill(String checkDate,String tranDate,String fileName){
    @PostMapping ("/checkbill")
    public Object checkbill(@RequestBody Map params){
        String checkDate = (String) params.get("checkDate");
        String tranDate = (String) params.get("tranDate");
        String fileName = (String) params.get("fileName");
        checkDate=checkDate.replaceAll("-","");
        String name = "E:\\Bank_PSBC_"+checkDate+".txt";
        String name = "E:\\ycCheckBill\\Bank_PSBC_"+checkDate+".txt";
        File file = new File(name);
        Boolean aBoolean = judeFileExists(file);
        if(aBoolean){
            return R.ok();
            return R.ok(null,"查询文件成功");
        }else {
            return R.failed(null,"文件不存在");
        }
@@ -147,6 +178,8 @@
            }
            if(status.equals("03")){
                orderRecord.setStatus(1);
                //测试环境,暂时把开票设置为2
                orderRecord.setTicketStatus(2);
            }
            if(status.equals("04")||status.equals("05")||status.equals("06")){
                orderRecord.setStatus(2);
@@ -220,6 +253,52 @@
        }
    }
    //插入停车订单记录
    public void addOrderRecord(OutPark outPark){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
        String logs = sdf.format(new Date())+" 车牌号为:"+outPark.getCarNo()+",创建订单------》\n";
        writeTxt(logs);
        outPark.setPayCode(outPark.getId()+"");
        outParkService.updateById(outPark);
        Park park = parkService.getById(outPark.getParkId());
        OrderRecord orderRecord = new OrderRecord();
        orderRecord.setAddress(park.getName());
        orderRecord.setCarNo(outPark.getCarNo());
        orderRecord.setCode(outPark.getCode());
        orderRecord.setCode2(outPark.getCode2());
        orderRecord.setMoney(outPark.getPrice());
        orderRecord.setQueryId(outPark.getId());
        orderRecord.setType(1);
        orderRecord.setTicketStatus(0);
        orderRecord.setPayCode(outPark.getPayCode());
        if(outPark.getImgId() != null){
            orderRecord.setImgOutId(outPark.getImgId());
        }
        List<EnterPark> byCarNo = enterParkService.findByCarNo(outPark.getCarNo(),outPark.getParkId());
        if(byCarNo.size() >0){
            EnterPark enterPark = byCarNo.get(0);
            if(enterPark != null && enterPark.getImgId() != null){
                orderRecord.setImgInId(enterPark.getImgId());
            }
        }
        orderRecordService.saveOrUpdate(orderRecord);
    }
    //插入执法订单记录
    public void addOrderRecord2(Ticket ticket){
        OrderRecord orderRecord = new OrderRecord();
        orderRecord.setAddress(ticket.getAddress());
        orderRecord.setCarNo(ticket.getCarNo());
        orderRecord.setCode(ticket.getCode());
        orderRecord.setMoney(ticket.getMoney());
        orderRecord.setQueryId(ticket.getId());
        orderRecord.setType(0);
        orderRecord.setPayCode(ticket.getPayCode());
        orderRecordService.saveOrUpdate(orderRecord);
    }
    private void writeTxt( String txt)
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
@@ -236,4 +315,20 @@
            System.out.println("打印错误");
        }
    }
    public static void main(String[] args) {
        Path path = Paths.get("E:\\ycCheckBill\\Bank_PSBC_20350421.txt");
        try {
            List<String>  lines = Files.readAllLines(path);
            String s = lines.get(0);
            String[] split = s.split("\\|");
            for (String line : lines) {
                System.out.println(line);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}