kongdeqiang
2022-09-26 18087f533cd48ddb9f972c0848ffe920ec58ee8e
src/main/java/com/boying/controller/phone/FFPayController.java
@@ -20,8 +20,11 @@
import javax.persistence.criteria.Root;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.UnsupportedEncodingException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -190,16 +193,23 @@
   @PostMapping("result")
   public String result(HttpServletRequest request,String payKey,String payerTypeCode,String payerNum,String payCode,Double amt,String status,String errorInfo,String sign,String signType) throws Exception{
      System.out.println(payCode+"-------"+status);
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss");
      String s = "payCode===="+payCode+",\n";
      try {
         s += sdf.format(new Date())+"开始走回调接口------>\n";
         writeTxt(s);
         updateOrderRecord(payCode,status);
      }catch (Exception e){
         s += "更新订单记录出异常------>";
         writeTxt(s);
      }
      return "success";
   }
   //更新订单记录
   public void updateOrderRecord(String payCode,String status){
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss");
      String s = sdf.format(new Date())+"更新订单记录:payCode===="+payCode+",status==="+status+",\n";
      Specification<OrderRecord> specification = new Specification<OrderRecord>() {
         @Override
         public Predicate toPredicate(Root<OrderRecord> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
@@ -207,12 +217,15 @@
            list.add(cb.equal(root.get("payCode").as(String.class), payCode));
            Predicate[] arr = new Predicate[list.size()];
            cq.where(list.toArray(arr));
            cq.orderBy(cb.desc(root.get("createTime")));
            return null;
         }
      };
      List<OrderRecord> all = orderRecordService.findAll(specification);
      if(all.size()==1){
      s += "查询到订单记录为:"+all.size()+"条,\n";
      if(all.size()>=1){
         OrderRecord orderRecord = all.get(0);
         s += "查询到订单为:"+orderRecord.getId()+",\n";
         if(status.equals("01")){
            orderRecord.setStatus(0);
         }
@@ -226,9 +239,12 @@
         if(orderRecord.getType()==0){
            updateTicket(orderRecord.getQueryId(),status);
         }else{
            s += "修改出场表:"+orderRecord.getQueryId()+",status==="+status+",\n";
            writeTxt(s);
            updateOutPark(orderRecord.getQueryId(),status);
         }
      }
      writeTxt(s);
   }
   //更新罚单的状态
@@ -306,13 +322,24 @@
//   }
   public void updateOutPark(Long outParkId,String status){
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss");
       String s = sdf.format(new Date())+"开始修改出场表-----》\n";
       s+= "outparkId==="+outParkId+",status==="+status+",\n";
      OutPark outPark = (OutPark) outParkService.findById(outParkId);
      if(outPark!=null){
         s += "找到出场数据:"+outPark.getId()+",\n";
         writeTxt(s);
         if(status.equals("03")){
            s += "出场数据修改----》";
            writeTxt(s);
            outPark.setStatus(1);
            outParkService.save(outPark);
         }
      }else {
         s += "未找到出场数据-----》";
         writeTxt(s);
      }
   }
   //删除进停车场的数据
@@ -336,9 +363,14 @@
   //生成电子缴款码
   @PostMapping("park")
   public Object park(Long id){
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
       String logs = sdf.format(new Date())+"开始扫码缴费------》\n";
      logs += "出场表id为:"+id+",\n";
      OutPark outPark = (OutPark) outParkService.findById(id);
      if(outPark.getPrice()==0){
         updateOutPark(outPark.getId(),"03");
         logs += "支付金额为0,\n";
         writeTxt(logs);
         return error("本次停车无需支付费用");
      }
@@ -356,13 +388,17 @@
      List<WhiteList> all = whiteListService.findAll(specification);
      for(WhiteList w : all){
         if(w.getType()==0){
            logs+=outPark.getCarNo()+"在白名单,\n";
            updateOutPark(outPark.getId(),"03");
            writeTxt(logs);
            return error("本次停车无需支付费用!");
         }else{
            if(w.getParkId()!=null){
               if(w.getEndTime()!=null){
                  if(w.getParkId()==outPark.getParkId()&&new Date().getTime()<w.getEndTime().getTime()){
                     logs+=outPark.getCarNo()+"在特殊规则白名单,\n";
                     updateOutPark(outPark.getId(),"03");
                     writeTxt(logs);
                     return error("本次停车无需支付费用!");
                  }
               }
@@ -378,7 +414,8 @@
      s.append("&payKey=df937eda27cb4a59a12347966678e232");//财政给的
      s.append("&payerName="+outPark.getCarNo());
      s.append("&payerNum="+ outPark.getCode());//订单号
      s.append("&payerTypeCode=1304062100000001");////财政给的
      //s.append("&payerTypeCode=1304062100000001");////财政给的
      s.append("&payerTypeCode=072101");////财政给的
      s.append("&reserve1=");
      s.append("&reserve2=");
      s.append("&reserve3=");
@@ -396,6 +433,8 @@
      sbf.append("&signType=MD5");
      String s1 = httpsRequest(ip+"/pay/inpay","POST",sbf.toString());
      if(s1.equals("error")){
         logs += "生成执法电子缴款码失败,请联系管理员,\n";
         writeTxt(logs);
         return error("生成执法电子缴款码失败,请联系管理员");
      }
      JSONObject jsonObject = JSON.parseObject(s1);
@@ -404,15 +443,20 @@
         if(eInfo.equals("此订单已过期")){
            outPark.setCode(System.currentTimeMillis()+"");
            outParkService.save(outPark);
            logs += "此订单已过期,\n";
            writeTxt(logs);
            return park(id);
         }else{
            logs += "此订单有异常错误,\n";
            writeTxt(logs);
            return error(eInfo);
         }
      }else{
         String payCode = jsonObject.get("payCode").toString();
         logs += "payCode: "+payCode+",\n";
         outPark.setPayCode(payCode);
         outParkService.save(outPark);
         writeTxt(logs);
         addOrderRecord(outPark);
         return success("生成停车电子缴款码","https://hbfs.govpay.ccb.com/online/fssm?fee=130000000001&PyfScnCgycd=01&pyfTpcd=3&BNo="+payCode);
      }
@@ -422,6 +466,7 @@
   //插入停车订单记录
   public void addOrderRecord(OutPark outPark){
      Park park = (Park) parkService.findById(outPark.getParkId());
      OrderRecord orderRecord = new OrderRecord();
      orderRecord.setAddress(park.getName());
      orderRecord.setCarNo(outPark.getCarNo());
@@ -446,4 +491,25 @@
      orderRecordService.save(orderRecord);
   }
   private void writeTxt( String txt)
   {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
      try
      {
         FileWriter f = new FileWriter(systemConfigProperties.getLogPath()+"支付日志"+sdf.format(new Date())+".txt",true);
         BufferedWriter bw=new BufferedWriter(f);
         bw.write(txt);
         bw.newLine();
         bw.close();
      }
      catch(Exception e)
      {
         System.out.println("打印错误");
      }
   }
}