From 199202813dd8ca536ed2334f5eeb6aba3ad25b21 Mon Sep 17 00:00:00 2001
From: kongdeqiang <123456>
Date: 星期一, 22 十二月 2025 08:49:51 +0800
Subject: [PATCH] fix : 新分支

---
 src/main/java/com/boying/entity/WhiteListRule.java                   |   45 
 src/main/java/com/boying/mapper/PaymentLogMapper.java                |   16 
 src/main/java/com/boying/util/LicensePlateValidator.java             |   33 
 src/main/java/com/boying/controller/WhiteListRuleController.java     |  117 ++
 src/main/java/com/boying/service/PaymentLogService.java              |   16 
 src/main/java/com/boying/entity/PayLog.java                          |    4 
 src/main/java/com/boying/controller/EnterParkController.java         |  180 +++
 src/main/java/com/boying/controller/car/PlateServlet3.java           |  133 +
 src/main/java/com/boying/controller/phone/MonthFeePayController.java |  356 +++++++
 src/main/java/com/boying/service/impl/WhiteListRuleServiceImpl.java  |   19 
 src/main/java/com/boying/controller/phone/YCPayController.java       |   41 
 src/main/java/com/boying/controller/PaymentLogController.java        |   47 
 src/main/java/com/boying/controller/TestController.java              |   79 +
 src/main/java/com/boying/controller/car/PlateServlet2.java           | 1586 ++++++++++++++++----------------
 src/main/java/com/boying/entity/WhiteList.java                       |   12 
 src/main/java/com/boying/service/impl/PaymentLogServiceImpl.java     |   21 
 src/main/java/com/boying/entity/vo/MonthFeePayVo.java                |   25 
 src/main/java/com/boying/entity/PaymentLog.java                      |   49 +
 src/main/java/com/boying/mapper/WhiteListRuleMapper.java             |   10 
 src/main/java/com/boying/common/SystemConfigProperties.java          |    3 
 src/main/java/com/boying/controller/car/ServerMQTT.java              |   34 
 src/main/resources/application.yml                                   |    3 
 src/main/java/com/boying/service/WhiteListRuleService.java           |   15 
 23 files changed, 1,974 insertions(+), 870 deletions(-)

diff --git a/src/main/java/com/boying/common/SystemConfigProperties.java b/src/main/java/com/boying/common/SystemConfigProperties.java
index a31d930..223e7bc 100644
--- a/src/main/java/com/boying/common/SystemConfigProperties.java
+++ b/src/main/java/com/boying/common/SystemConfigProperties.java
@@ -83,7 +83,8 @@
 
 	@Value("${ffzf.XTYHRESULT}")
 	private String XTYHRESULT;
-
+	@Value("${ffzf.YPRESULT}")
+	private String YPRESULT;
 	@Value("${ffzf.XTYHMERID}")
 	private String XTYHMERID;
 
diff --git a/src/main/java/com/boying/controller/EnterParkController.java b/src/main/java/com/boying/controller/EnterParkController.java
index 00b0fcc..3ae124b 100644
--- a/src/main/java/com/boying/controller/EnterParkController.java
+++ b/src/main/java/com/boying/controller/EnterParkController.java
@@ -1,29 +1,29 @@
 package com.boying.controller;
 
 import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.boying.common.R;
-import com.boying.entity.Barrier;
-import com.boying.entity.EnterPark;
-import com.boying.entity.OutPark;
-import com.boying.service.BarrierService;
-import com.boying.service.EnterParkService;
-import com.boying.service.ParkService;
+import com.boying.entity.*;
+import com.boying.service.*;
+import com.boying.util.DateUtilOther;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.web.bind.annotation.*;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 鍏ュ満琛�
@@ -35,12 +35,16 @@
 @RequiredArgsConstructor
 @RequestMapping("ffzf/enterpark" )
 @Api(value = "enterpark", tags = "鍏ュ満琛ㄧ鐞�")
-@Tag(description = "ffzf/enterpark" , name = "鍏ュ満琛ㄨ褰�" )
 public class EnterParkController {
 
     private final EnterParkService enterParkService;
+    private final OutParkService outParkService;
+    private final OutParkLogService outParkLogService;
     private final BarrierService barrierService;
     private final ParkService parkService;
+    private final CostRuleService costRuleService;
+    private final WhiteListService whiteListService;
+    private final StringRedisTemplate redisTemplate;
 
     /**
      * 鍒嗛〉鏌ヨ
@@ -68,7 +72,6 @@
 //    }
 
     @PostMapping("/findPage")
-    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
     public Object findPage(Page page, String  carNo,Integer parkId,String date) throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         if(StringUtils.isNotBlank(date)){
@@ -89,6 +92,158 @@
         return R.ok(page);
     }
 
+    @PostMapping("/findByCar")
+    public Object findByCar(String carNo,Integer parkId) {
+        if(StringUtils.isBlank(carNo)){
+            return R.failed("璇疯緭鍏ユ纭溅鐗屽彿");
+        }else {
+            QueryWrapper<EnterPark> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda()
+                    .eq(EnterPark::getCarNo,carNo)
+                    .eq(EnterPark::getParkId,parkId);
+            List<EnterPark> list = enterParkService.list(queryWrapper);
+            if(list !=null && list.size()>0){
+                for (EnterPark enterPark : list) {
+                    enterPark.setParkName(parkService.getById(enterPark.getParkId()).getName());
+                }
+                return R.ok(list);
+            }else {
+                return R.failed("璇ヨ溅鐗屾湭鏌ヨ鍒板叆鍦鸿褰�");
+            }
+        }
+    }
+
+    @PostMapping("/findByNoPay")
+    public Object findByNoPay(String carNo,Integer parkId) {
+        LocalDateTime now = LocalDateTime.now();
+        LocalDateTime twoHoursAgo = now.minusHours(3);
+        QueryWrapper<EnterPark> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda()
+                .eq(EnterPark::getCarNo,carNo)
+                .eq(EnterPark::getParkId,parkId)
+                .eq(EnterPark::getIsPay,0)
+                .lt(EnterPark::getCreateTime,twoHoursAgo);
+        List<EnterPark> list = enterParkService.list(queryWrapper);
+        if(list !=null && list.size()>0){
+            return R.ok(list.get(0));
+        }else {
+            return R.failed();
+        }
+    }
+
+    @PostMapping("/getByBarrierId")
+    public Object getByBarrierId(Integer barrierId) throws ParseException {
+        Barrier byId1 = barrierService.getById(barrierId);
+        OutPark byId = outParkService.findByCarNoAndBarrierId(byId1.getCarNo(), barrierId);
+        if(byId==null){
+            return R.failed("鏈煡璇㈠埌鍑哄満璁板綍");
+        }else {
+            return R.ok(byId);
+        }
+
+    }
+
+    @PostMapping("/editOutByEnter")
+    public Object editOutByEnter(Integer outParkId,String carNo,Integer enterId) throws ParseException {
+        double money = 0.0;
+        OutPark outPark = outParkService.getById(outParkId);
+        EnterPark enterPark = enterParkService.getById(enterId);
+        outPark.setCarNo(enterPark.getCarNo());
+        outPark.setEnterTime(enterPark.getCreateTime());
+        try {
+            long l = outPark.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli() - enterPark.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli();
+            outPark.setTime(l/(1000*60));
+            money = costRuleService.getMoney(enterPark.getParkId(), outPark.getEnterTime(), outPark.getCreateTime(), 1);
+            //鍏ュ満璁板綍淇濆瓨涓�涓�
+            if(enterPark.getIsPay() != null && enterPark.getIsPay()==1){
+                money = money - enterPark.getPrice();
+            }else {
+                enterPark.setPrice(money);
+                enterPark.setIsPay(0);
+                enterParkService.updateById(enterPark);
+            }
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        outPark.setPrice(money);
+        outPark.setStatus3(0);
+        outParkService.saveOrUpdate(outPark);
+        Barrier barrier =barrierService.getById(outPark.getBarrierId());
+        barrier.setCarNo(carNo);
+        //鍒ゆ柇鏄惁鍦ㄧ櫧鍚嶅崟
+        QueryWrapper<WhiteList> wrapper = new QueryWrapper<>();
+        wrapper.lambda()
+                .eq(WhiteList::getCarNo,carNo);
+        List<WhiteList> all = whiteListService.list(wrapper);
+        if(all.size() >0){
+            for(WhiteList w : all){
+                if(w.getType()==0){
+                    outPark.setStatus(2);
+                    outPark.setStatus2(1);
+                    outParkService.saveOrUpdate(outPark);
+                    barrierService.saveOrUpdate(barrier);
+                    String jsonValue2 = JSON.toJSONString(barrier);
+                    redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue2);
+                    String jsonValue = JSON.toJSONString(outPark);
+                    redisTemplate.opsForValue().set("outPark_dif_"+ outPark.getBarrierId(), jsonValue);
+                    //缂撳瓨鍦╮edis閲�,蹇冭烦鎺ュ彛鍘绘姮鏉�
+                    String jsonValue1 = JSON.toJSONString(outPark);
+                    redisTemplate.opsForValue().set("outPark-"+outPark.getBarrierId(), jsonValue1);
+                    redisTemplate.opsForValue().set("park_change_in_"+outPark.getParkId(),"true",1, TimeUnit.DAYS);
+                    return R.ok(null,"鎿嶄綔鎴愬姛");
+                }else{
+                    if(StringUtils.isNotBlank(w.getParkIds())){
+                        if(w.getEndTime()!=null){
+                            String parkIds = w.getParkIds();
+                            String[] split = parkIds.split(",");
+                            for (String s : split) {
+                                int pid = Integer.parseInt(s);
+                                if(pid == outPark.getParkId() && System.currentTimeMillis()<w.getEndTime().getTime()){
+                                    outPark.setStatus(2);
+                                    outPark.setStatus2(1);
+                                    outParkService.saveOrUpdate(outPark);
+                                    barrierService.saveOrUpdate(barrier);
+                                    String jsonValue2 = JSON.toJSONString(barrier);
+                                    redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue2);
+                                    String jsonValue = JSON.toJSONString(outPark);
+                                    redisTemplate.opsForValue().set("outPark_dif_"+ outPark.getBarrierId(), jsonValue);
+                                    //缂撳瓨鍦╮edis閲�,蹇冭烦鎺ュ彛鍘绘姮鏉�
+                                    String jsonValue1 = JSON.toJSONString(outPark);
+                                    redisTemplate.opsForValue().set("outPark-"+outPark.getBarrierId(), jsonValue1);
+                                    redisTemplate.opsForValue().set("park_change_in_"+outPark.getParkId(),"true",1, TimeUnit.DAYS);
+                                    return R.ok(null,"鎿嶄綔鎴愬姛");
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }else {
+            barrierService.saveOrUpdate(barrier);
+            String jsonValue2 = JSON.toJSONString(barrier);
+            redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue2);
+            if(outPark.getPrice()==0&&outPark.getStatus3()==0){
+                String jsonValue = JSON.toJSONString(outPark);
+                redisTemplate.opsForValue().set("outPark_dif_"+ barrier.getId(), jsonValue);
+                String jsonValue1 = JSON.toJSONString(outPark);
+                redisTemplate.opsForValue().set("outPark-"+outPark.getBarrierId(), jsonValue1);
+                redisTemplate.opsForValue().set("park_change_in_"+outPark.getParkId(),"true",1, TimeUnit.DAYS);
+                return R.ok(null,"鎿嶄綔鎴愬姛");
+            }else {
+                //闇�瑕佺即璐规垨鑰呮湁杩濈珷
+                OutParkLog byOutPark = outParkLogService.getByOutPark(outPark.getCarNo(), outPark.getId());
+                byOutPark.setOutTime(outPark.getCreateTime());
+                byOutPark.setParkId(outPark.getParkId());
+                byOutPark.setCarNo(carNo);
+                outParkLogService.saveOrUpdate(byOutPark);
+                String jsonValue = JSON.toJSONString(outPark);
+                redisTemplate.opsForValue().set("outPark_dif_"+ barrier.getId(), jsonValue);
+                return R.ok(null,"鎿嶄綔鎴愬姛,璇锋壂鐮佺即璐�");
+            }
+        }
+       return R.failed("鎿嶄綔澶辫触");
+    }
+
     /**
      * 閫氳繃id鏌ヨ鍏ュ満琛�
      * @param id id
@@ -96,7 +251,6 @@
      */
     @ApiOperation(value = "閫氳繃id鏌ヨ", notes = "閫氳繃id鏌ヨ")
     @GetMapping("/{id}" )
-    @Operation(summary = "鏍规嵁id鏌ヨ" , description = "鏍规嵁id鏌ヨ" )
     public R getById(@PathVariable("id" ) Integer id) {
         return R.ok(enterParkService.getById(id));
     }
@@ -108,7 +262,6 @@
      */
     @ApiOperation(value = "鏂板鍏ュ満琛�", notes = "鏂板鍏ュ満琛�")
     @PostMapping
-    @Operation(summary = "鏂板鍏ュ満" , description = "鏂板鍏ュ満" )
     public R save(@RequestBody EnterPark enterPark) {
         return R.ok(enterParkService.save(enterPark));
     }
@@ -120,7 +273,6 @@
      */
     @ApiOperation(value = "淇敼鍏ュ満琛�", notes = "淇敼鍏ュ満琛�")
     @PutMapping
-    @Operation(summary = "淇敼鍏ュ満" , description = "淇敼鍏ュ満" )
     public R updateById(@RequestBody EnterPark enterPark) {
         return R.ok(enterParkService.updateById(enterPark));
     }
@@ -132,7 +284,6 @@
      */
     @ApiOperation(value = "閫氳繃id鍒犻櫎鍏ュ満琛�", notes = "閫氳繃id鍒犻櫎鍏ュ満琛�")
     @DeleteMapping("/{id}" )
-    @Operation(summary = "鍒犻櫎鍏ュ満" , description = "鍒犻櫎鍏ュ満" )
     public R removeById(@PathVariable Integer id) {
         return R.ok(enterParkService.removeById(id));
     }
@@ -144,7 +295,6 @@
      * @return excel 鏂囦欢娴�
      */
     @GetMapping("/export")
-    @Operation(summary = "瀵煎嚭鍏ュ満" , description = "瀵煎嚭鍏ュ満" )
     public List<EnterPark> export(EnterPark enterPark) {
         return enterParkService.list(Wrappers.query(enterPark));
     }
diff --git a/src/main/java/com/boying/controller/PaymentLogController.java b/src/main/java/com/boying/controller/PaymentLogController.java
new file mode 100644
index 0000000..019e1c6
--- /dev/null
+++ b/src/main/java/com/boying/controller/PaymentLogController.java
@@ -0,0 +1,47 @@
+package com.boying.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.boying.common.R;
+import com.boying.entity.PaymentLog;
+import com.boying.entity.WhiteListRule;
+import com.boying.service.ParkService;
+import com.boying.service.PaymentLogService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName PaymentLogController.java
+ * @Description TODO
+ * @createTime 2024骞�12鏈�19鏃� 16:25:00
+ */
+@RestController
+@RequestMapping("ffzf/paymentLog")
+@RequiredArgsConstructor
+public class PaymentLogController {
+
+    private final PaymentLogService paymentLogService;
+    private final ParkService parkService;
+
+    @PostMapping("/findPage")
+    public Object findPage(Page page, Integer parkId,String name,String phone) {
+        QueryWrapper<PaymentLog> wrapper = new QueryWrapper<>();
+        wrapper.lambda()
+                .eq(parkId !=null,PaymentLog::getParkId,parkId)
+                .like(StringUtils.isNotBlank(name),PaymentLog::getName,name)
+                .like(StringUtils.isNotBlank(phone),PaymentLog::getPhone,phone)
+                .orderByDesc(PaymentLog::getId);
+        Page<PaymentLog> page1 = paymentLogService.page(page, wrapper);
+        for (PaymentLog record : page1.getRecords()) {
+            if(record.getParkId() != null){
+                record.setParkName(parkService.getById(record.getParkId()).getName());
+            }
+        }
+        return R.ok(page1);
+    }
+}
diff --git a/src/main/java/com/boying/controller/TestController.java b/src/main/java/com/boying/controller/TestController.java
new file mode 100644
index 0000000..46045ba
--- /dev/null
+++ b/src/main/java/com/boying/controller/TestController.java
@@ -0,0 +1,79 @@
+package com.boying.controller;
+
+import com.boying.controller.car.ServerMQTT;
+import com.google.gson.Gson;
+import io.lettuce.core.dynamic.annotation.Param;
+import lombok.RequiredArgsConstructor;
+import org.eclipse.paho.client.mqttv3.MqttClient;
+import org.eclipse.paho.client.mqttv3.MqttException;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
+import org.eclipse.paho.client.mqttv3.MqttTopic;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName TestController.java
+ * @Description TODO
+ * @createTime 2025骞�03鏈�15鏃� 18:10:00
+ */
+@RestController
+@RequestMapping("/mqtt")
+@RequiredArgsConstructor
+public class TestController {
+    //MQTT瀹夎鐨勬湇鍔″櫒鍦板潃鍜岀鍙e彿
+    public  final String HOST = "tcp://47.92.115.108:1883";
+    //瀹氫箟涓�涓富棰�
+    public final String TOPIC = "/MXXT";
+    //瀹氫箟MQTT鐨処D锛屽彲浠ュ湪MQTT鏈嶅姟閰嶇疆涓寚瀹�
+    private final String clientid = "jzadmin"+System.currentTimeMillis();
+
+    private MqttClient client;
+    private MqttTopic topic;
+    private String userName = "jzadmin";
+    private String passWord = "Sys123456";
+    private MqttMessage message;
+    @GetMapping("/test")
+    public void test() throws MqttException, InterruptedException {
+        ServerMQTT server = new ServerMQTT();
+        String str1 = "{\n" +
+                "  \"compId\":133,\n" +
+                "  \"firWeight\": 18,\n" +
+                "  \"secWeight\": 48,\n" +
+                "  \"ponderationType\": \"澶栭攢\",\n" +
+                "  \"printTime\": \"2022-07-21 18:29:32\",\n" +
+                "  \"createTime\": \"2022-07-21 18:29:32\",\n" +
+                "  \"outTime\": \"2022-07-21 18:29:32\",\n" +
+                "  \"vehicleNo\": \"鍐�E12345\",\n" +
+                "  \"executive\": 30 ,\n" +
+                "  \"orderId\": 88\n" +
+                "}";
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("t",System.currentTimeMillis());
+        map.put("f","control");
+        map.put("d","JYGL-MTXX");
+        map.put("s","0001");
+        map.put("p",str1);
+        Gson gson =new Gson();
+        String str = gson.toJson(map);
+        for (int i = 0; i < 1000; i++) {
+            message = new MqttMessage();
+            message.setQos(2);
+            message.setRetained(true);
+            message.setPayload(str.getBytes());
+            server.publish(topic , message);
+            System.out.println("message鐨勪繚鐣欑姸鎬佷负锛�"+message.isRetained() + "------ratained鐘舵��");
+            Thread.sleep(1000);
+        }
+
+    }
+
+}
diff --git a/src/main/java/com/boying/controller/WhiteListRuleController.java b/src/main/java/com/boying/controller/WhiteListRuleController.java
new file mode 100644
index 0000000..92783dd
--- /dev/null
+++ b/src/main/java/com/boying/controller/WhiteListRuleController.java
@@ -0,0 +1,117 @@
+package com.boying.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.boying.common.R;
+import com.boying.entity.WhiteList;
+import com.boying.entity.WhiteListRule;
+import com.boying.service.ParkService;
+import com.boying.service.WhiteListRuleService;
+import com.boying.service.WhiteListService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+
+@RestController
+@RequestMapping("ffzf/whiteListRule")
+@RequiredArgsConstructor
+public class WhiteListRuleController {
+
+    private final WhiteListRuleService whiteListService;
+    private final ParkService parkService;
+
+    @PostMapping("/findPage")
+    public Object findPage(Page page, Integer parkId,Integer type) {
+        QueryWrapper<WhiteListRule> wrapper = new QueryWrapper<>();
+        wrapper.lambda()
+                .eq(parkId !=null,WhiteListRule::getParkId,parkId)
+                .eq(type !=null,WhiteListRule::getType,type)
+                .orderByDesc(WhiteListRule::getId);
+        Page<WhiteListRule> page1 = whiteListService.page(page, wrapper);
+        for (WhiteListRule record : page1.getRecords()) {
+            if(record.getParkId() != null){
+                record.setName(parkService.getById(record.getParkId()).getName());
+            }
+        }
+        return R.ok(page1);
+    }
+    @PostMapping("/getByParkId")
+    public Object getByParkId(Integer parkId) {
+        QueryWrapper<WhiteListRule> wrapper = new QueryWrapper<>();
+        wrapper.lambda()
+                .eq(parkId !=null,WhiteListRule::getParkId,parkId);
+        List<WhiteListRule> list = whiteListService.list(wrapper);
+        if(list !=null && list.size()>0){
+            return R.ok(list.get(0));
+        }else {
+            return R.failed(null,"鏈煡璇㈠埌鏁版嵁");
+        }
+    }
+    @PostMapping("/save")
+    public Object save(WhiteListRule whiteList) {
+        if(whiteList.getType() == 1){
+            QueryWrapper<WhiteListRule> wrapper = new QueryWrapper<>();
+            wrapper.lambda()
+                    .eq(WhiteListRule::getType,1);
+            List<WhiteListRule> list = whiteListService.list(wrapper);
+            if(list !=null && list.size()>0){
+                return R.failed(null,"宸插瓨鍦ㄥ叏鍋滆溅鍦鸿鍒�");
+            }else {
+                whiteListService.saveOrUpdate(whiteList);
+            }
+        }else {
+            QueryWrapper<WhiteListRule> wrapper = new QueryWrapper<>();
+            wrapper.lambda()
+                    .eq(WhiteListRule::getParkId,whiteList.getParkId());
+            List<WhiteListRule> list = whiteListService.list(wrapper);
+            if(list !=null && list.size()>0){
+                return R.failed(null,"宸插瓨鍦ㄦ瑙勫垯");
+            }else {
+                whiteListService.saveOrUpdate(whiteList);
+            }
+        }
+        return R.ok("淇濆瓨鎴愬姛");
+    }
+
+    @PostMapping("/getByPark")
+    public Object getByPark(Integer parkId,Integer type) {
+        if(type == 0){
+            //鍗曚釜
+            QueryWrapper<WhiteListRule> wrapper = new QueryWrapper<>();
+            wrapper.lambda()
+                    .eq(WhiteListRule::getParkId,parkId)
+                    .eq(WhiteListRule::getType,0);
+            List<WhiteListRule> list = whiteListService.list(wrapper);
+            if(list !=null && list.size()>0){
+                return R.ok(list.get(0));
+            }else {
+                return R.failed("姝ゅ仠杞﹀満鏆傛湭寮�閫氭湀绁ㄥ姛鑳�");
+            }
+        }else {
+            //鍏ㄩ儴
+            QueryWrapper<WhiteListRule> wrapper = new QueryWrapper<>();
+            wrapper.lambda()
+                    .eq(WhiteListRule::getType,1);
+            List<WhiteListRule> list = whiteListService.list(wrapper);
+            if(list !=null && list.size()>0){
+                return R.ok(list.get(0));
+            }else {
+                return R.failed("鏆傛湭寮�閫氭湀绁ㄥ姛鑳�");
+            }
+        }
+    }
+
+    @PostMapping("/delete")
+    public Object delete(Long id) {
+        whiteListService.removeById(id);
+        return R.ok("鍒犻櫎鎴愬姛");
+    }
+}
diff --git a/src/main/java/com/boying/controller/car/PlateServlet2.java b/src/main/java/com/boying/controller/car/PlateServlet2.java
index f9f294e..27738a8 100644
--- a/src/main/java/com/boying/controller/car/PlateServlet2.java
+++ b/src/main/java/com/boying/controller/car/PlateServlet2.java
@@ -1,802 +1,798 @@
-package com.boying.controller.car;
-
-import cn.hutool.http.HttpRequest;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.boying.common.SystemConfigProperties;
-import com.boying.entity.*;
-import com.boying.entity.led.LedBean;
-import com.boying.entity.led.ResultData;
-import com.boying.service.*;
-import com.boying.util.DateUtilOther;
-import com.boying.util.StringUtil;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-
-import com.sun.media.jfxmedia.track.Track;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.redis.core.StringRedisTemplate;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.sound.sampled.AudioFormat;
-import java.io.*;
-import java.nio.charset.StandardCharsets;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.Duration;
-import java.time.LocalDateTime;
-import java.time.ZoneOffset;
-import java.util.Base64;
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Servlet implementation class PlateServlet
- */
-@Controller
-@RequestMapping("/ffzf/car2")
-@RequiredArgsConstructor
-@Tag(description = "ffzf/car3" , name = "娉婅溅娴佺▼鎺ュ彛" )
-public class PlateServlet2 extends HttpServlet {
-    private static final long serialVersionUID = 1L;
-    @Value("${ffpark.logPath}")
-    private String logPath;
-//    @Autowired
-//    private final SystemConfigProperties systemConfigProperties;
-    private final StringRedisTemplate redisTemplate;
-    private final ParkService parkService;
-    private final OutParkService outParkService;
-    private final EnterParkService enterParkService;
-    private final BarrierService barrierService;
-    private final TicketService ticketService;
-    private final CostRuleService costRuleService;
-    private final WhiteListService whiteListService;
-    private final OutParkLogService outParkLogService;
-    private final String LEDURL = "http://192.168.31.212:9988/LedShow/IGetResultDataAllLine";
-
-    /**
-     * 鍥炲寮�闂�
-     */
-    protected void open(HttpServletRequest request, HttpServletResponse response,String data) throws ServletException, IOException {
-        response.setContentType("text/json");
-        PrintWriter out = response.getWriter();
-        String aa = "{" +
-                "\"Response_AlarmInfoPlate\": {" +
-                "\"info\":\"ok\"," +
-                "\"is_pay\":\"true\"," +
-                "\"serialData\" :[" +
-                "{" +
-                "\"serialChannel\":0," +
-                "\"data\" : \"" + data + "\"," +
-                "\"dataLen\" :" + data.length() +
-                "}" +
-                "]" +
-                "}" +
-                "}";
-        out.println(aa);
-        out.flush();
-        out.close();
-    }
-
-
-    //杞爜
-    public static String deCode(String str) {
-        try {
-            byte[] b = str.getBytes("UTF-8");//锟斤拷锟斤拷
-            String sa = new String(b);//锟斤拷锟斤拷:锟斤拷什么锟街凤拷锟斤拷锟斤拷锟斤拷锟斤拷锟绞裁达拷址锟斤拷锟斤拷锟斤拷锟�
-            //String sa = new String(str.getBytes());
-
-            return sa;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return "";
-        }
-    }
-
-    protected void noOpen(HttpServletRequest request, HttpServletResponse response,String data) throws IOException {
-        response.setContentType("text/json");
-        PrintWriter out = response.getWriter();
-        String aa = "{" +
-                "\"Response_AlarmInfoPlate\": {" +
-                "\"serialData\" :[" +
-                "{" +
-                "\"serialChannel\":0," +
-                "\"data\" : \"" + data + "\"," +
-                "\"dataLen\" :" + data.length() +
-                "}" +
-                "]" +
-                "}" +
-                "}";
-        out.println(aa);
-        out.flush();
-        out.close();
-    }
-
-//    protected void easyOpen(HttpServletRequest request, HttpServletResponse response) throws IOException {
+//package com.boying.controller.car;
+//
+//import cn.hutool.http.HttpRequest;
+//import com.alibaba.fastjson.JSON;
+//import com.alibaba.fastjson.JSONObject;
+//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+//import com.boying.common.SystemConfigProperties;
+//import com.boying.entity.*;
+//import com.boying.entity.led.LedBean;
+//import com.boying.entity.led.ResultData;
+//import com.boying.service.*;
+//import com.boying.util.DateUtilOther;
+//import com.boying.util.StringUtil;
+//import com.google.gson.JsonObject;
+//import com.google.gson.JsonParser;
+//
+//import lombok.RequiredArgsConstructor;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.data.redis.core.StringRedisTemplate;
+//import org.springframework.stereotype.Controller;
+//import org.springframework.web.bind.annotation.PostMapping;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//
+//import javax.servlet.ServletException;
+//import javax.servlet.http.HttpServlet;
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//import javax.sound.sampled.AudioFormat;
+//import java.io.*;
+//import java.nio.charset.StandardCharsets;
+//import java.text.ParseException;
+//import java.text.SimpleDateFormat;
+//import java.time.Duration;
+//import java.time.LocalDateTime;
+//import java.time.ZoneOffset;
+//import java.util.Base64;
+//import java.util.Date;
+//import java.util.List;
+//import java.util.concurrent.TimeUnit;
+//
+///**
+// * Servlet implementation class PlateServlet
+// */
+//@Controller
+//@RequestMapping("/ffzf/car2")
+//@RequiredArgsConstructor
+//public class PlateServlet2 extends HttpServlet {
+//    private static final long serialVersionUID = 1L;
+//    @Value("${ffpark.logPath}")
+//    private String logPath;
+////    @Autowired
+////    private final SystemConfigProperties systemConfigProperties;
+//    private final StringRedisTemplate redisTemplate;
+//    private final ParkService parkService;
+//    private final OutParkService outParkService;
+//    private final EnterParkService enterParkService;
+//    private final BarrierService barrierService;
+//    private final TicketService ticketService;
+//    private final CostRuleService costRuleService;
+//    private final WhiteListService whiteListService;
+//    private final OutParkLogService outParkLogService;
+//    private final String LEDURL = "http://192.168.31.212:9988/LedShow/IGetResultDataAllLine";
+//
+//    /**
+//     * 鍥炲寮�闂�
+//     */
+//    protected void open(HttpServletRequest request, HttpServletResponse response,String data) throws ServletException, IOException {
 //        response.setContentType("text/json");
 //        PrintWriter out = response.getWriter();
-//        out.println("{\"Response_AlarmInfoPlate\":{\"info\":\"ok\",\"content\":\"...\",\"is_pay\":\"true\",\"ivs_ioctrl\":{\"delay\":800,\"io\":0,\"value\":2}}}");
+//        String aa = "{" +
+//                "\"Response_AlarmInfoPlate\": {" +
+//                "\"info\":\"ok\"," +
+//                "\"is_pay\":\"true\"," +
+//                "\"serialData\" :[" +
+//                "{" +
+//                "\"serialChannel\":0," +
+//                "\"data\" : \"" + data + "\"," +
+//                "\"dataLen\" :" + data.length() +
+//                "}" +
+//                "]" +
+//                "}" +
+//                "}";
+//        out.println(aa);
 //        out.flush();
 //        out.close();
 //    }
-
-    protected void easyOpen(HttpServletRequest request, HttpServletResponse response) throws IOException {
-        response.setContentType("text/json");
-        PrintWriter out = response.getWriter();
-        out.println("{\"Response_AlarmInfoPlate\":{\"ivs_ioctrl\":{\"delay\":1000,\"io\":0,\"value\":2}}}");
-        out.flush();
-        out.close();
-    }
-
-    protected void easyNoOpen(HttpServletRequest request, HttpServletResponse response) throws IOException {
-        response.setContentType("text/json");
-        PrintWriter out = response.getWriter();
-        out.println("{\"Response_AlarmInfoPlate\":{\"info\":\"error\",\"content\":\"...\",\"is_pay\":\"false\"}}");
-        out.flush();
-        out.close();
-    }
-
-    @PostMapping("/status")
-    @Operation(summary = "鐩告満蹇冭烦鎺ュ彛" , description = "鐩告満蹇冭烦鎺ュ彛" )
-    public void heart(String serialno,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
-        Barrier barrier = barrierService.findByCode(serialno);
-        Park park = parkService.getOneById(barrier.getParkId());
-        //Park park = parkService.getById(barrier.getParkId());
-        //String redis = redisTemplate.opsForValue().get("park_up_" + park.getId());
-        String redisnum = redisTemplate.opsForValue().get("car_park_" + park.getId());
-        if(StringUtils.isBlank(redisnum)){
-            redisnum = "0";
-        }
-        if(barrier!=null){
-            if(barrier.getType2()==1){
-                //寰呭紑闂�
-                if(barrier.getType() == 1){
-                    int i = Integer.parseInt(redisnum);
-                    i++;
-                    redisTemplate.opsForValue().set("car_park_" + park.getId(),Integer.toString(i),30, TimeUnit.DAYS);
-                }else if(barrier.getType() == 0){
-                    int i = Integer.parseInt(redisnum);
-                    i--;
-                    if(i<0){
-                        String s= "2."+barrier.getCarNo()+"闂告満鎵嬪姩鍚姩锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
-                        redisTemplate.opsForValue().set("car_park_" + park.getId(),"0",30, TimeUnit.DAYS);
-                        redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
-                    }else {
-                        String s= "2."+barrier.getCarNo()+"闂告満鎵嬪姩鍚姩锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
-                        redisTemplate.opsForValue().set("car_park_" + park.getId(),Integer.toString(i),30, TimeUnit.DAYS);
-                        redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
-                    }
-
-                }
-                barrier.setType2(0);
-                barrier.setUpdateTime(LocalDateTime.now());
-                barrier.setStatus(0);
-                barrier.setUpdateTime(LocalDateTime.now());
-                barrierService.saveOrUpdate(barrier);
-
-                String jsonValue = JSON.toJSONString(barrier);
-                redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue);
-                easyOpen(request,response);
-            }else {
-                //涓嶉渶寮�闂�
-                LocalDateTime now = LocalDateTime.now();
-                LocalDateTime updateTime = barrier.getUpdateTime();
-                Duration duration = Duration.between(updateTime,now);
-                long minutes = duration.toMinutes();
-                if(minutes>=2){
-                    barrier.setStatus(0);
-                    barrier.setUpdateTime(LocalDateTime.now());
-                    barrierService.saveOrUpdate(barrier);
-                }
-
-                String jsonValue = JSON.toJSONString(barrier);
-                redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue);
-                if(barrier.getType() == 0){
-                    OutPark outPark = outParkService.count4(barrier.getId());
-                    if(outPark!=null){
-                        if(barrier.getType() == 0){
-                            int i = Integer.parseInt(redisnum);
-                            i--;
-                            if(i<0){
-                                String s= "2."+outPark.getCarNo()+"缂磋垂瀹屾垚锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
-                                redisTemplate.opsForValue().set("car_park_" + park.getId(),"0",30, TimeUnit.DAYS);
-                                redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
-                            }else {
-                                String s= "2."+outPark.getCarNo()+"缂磋垂瀹屾垚锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
-                                redisTemplate.opsForValue().set("car_park_" + park.getId(),Integer.toString(i),30, TimeUnit.DAYS);
-                                redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
-                            }
-                        }
-                        outPark.setStatus2(1);
-                        outParkService.saveOrUpdate(outPark);
-                        easyOpen(request,response);
-                        OutParkLog byOutPark = outParkLogService.getByOutPark(outPark.getCarNo(), outPark.getId());
-                        byOutPark.setOpenTime(LocalDateTime.now());
-                        outParkLogService.saveOrUpdate(byOutPark);
-                        enterParkService.deleteByCarNo(outPark.getCarNo(), barrier.getParkId());
-                        redisTemplate.delete("outPark-"+outPark.getBarrierId());
-                    }
-                }
-                if(barrier.getType() == 1){
-                    boolean in = barrierService.getDateDifIn(park.getId());
-                    if(in){
-                        inLedShowDefault(park.getId(),request,response);
-                    }
-                }else if(barrier.getType() == 0){
-                    boolean out = barrierService.getDateDifOut(barrier.getId());
-                    if(out){
-                        outLedShowDefault(request,response);
-                    }
-                }
-            }
-
-        }else {
-            easyNoOpen(request,response);
-        }
-    }
-    /**
-     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
-     */
-    @PostMapping("/PlateServlet")
-    @Operation(summary = "杞﹁締璇嗗埆鎺ュ彛" , description = "杞﹁締璇嗗埆鎺ュ彛" )
-    protected void info(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-        String s= "";
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
-        BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8"));
-        String str = "";
-        String lineStr = "";
-        while((str = reader.readLine()) != null){
-            lineStr += str;
-        }
-        System.out.println("鑾峰彇鍒扮殑閬撻椄鎺ㄩ�佹暟鎹负锛�"+lineStr);
-
-        JSONObject jsonObject1 = JSON.parseObject(lineStr);
-        JSONObject alarmInfoPlate = jsonObject1.getJSONObject("AlarmInfoPlate");
-        JSONObject result = alarmInfoPlate.getJSONObject("result");
-        JSONObject plateResult = result.getJSONObject("PlateResult");
-        String carNo = plateResult.get("license").toString();
-        String code = alarmInfoPlate.get("serialno").toString();
-
-        try {
-            JsonParser parser=new JsonParser();
-            do {
-                JsonObject jsonObject=(JsonObject) parser.parse(lineStr);
-                if( jsonObject == null || jsonObject.isJsonNull() ) {
-                    break;
-                }
-
-                JsonObject jsonInfoPlate = jsonObject.get("AlarmInfoPlate").getAsJsonObject();
-                if( jsonInfoPlate == null || jsonInfoPlate.isJsonNull() ) {
-                    break;
-                }
-
-                JsonObject jsonResult = jsonInfoPlate.get("result").getAsJsonObject();
-                if( jsonResult == null || jsonResult.isJsonNull() ) {
-                    break;
-                }
-
-                JsonObject jsonPlateResult = jsonResult.get("PlateResult").getAsJsonObject();
-                if( jsonPlateResult == null || jsonPlateResult.isJsonNull() ) {
-                    break;
-                }
-
-                String license = jsonPlateResult.get("license").getAsString();//杞︾墝鍙�
-                if( license == null || license == "") {
-                    break;
-                }
-
-                String serialno = jsonInfoPlate.get("serialno").getAsString();//鎽勫儚鏈哄簭鍒楀彿
-                if( serialno == null || serialno == "" ) {
-                    break;
-                }
-
-                System.out.println("缂栧彿锛�"+serialno+"璁惧璇嗗埆鍒颁簡锛�"+license);
-                String format = sdf.format(new Date());
-                s+= format+",杞︾墝鍙蜂负锛�"+license+",serialno涓猴細"+code+"  ";
-
-                Barrier barrier = barrierService.findByCode(code);
-                System.out.println("鏌ヨ鍒伴亾闂镐负锛�"+barrier);
-                if(barrier==null){
-                    s+="鏌ヨ閬撻椄涓虹┖\n";
-                }else{
-                    if(barrier.getType()==0){
-                        easyOpen(request,response);
-                        //noOpen(request,response);
+//
+//
+//    //杞爜
+//    public static String deCode(String str) {
+//        try {
+//            byte[] b = str.getBytes("UTF-8");//锟斤拷锟斤拷
+//            String sa = new String(b);//锟斤拷锟斤拷:锟斤拷什么锟街凤拷锟斤拷锟斤拷锟斤拷锟斤拷锟绞裁达拷址锟斤拷锟斤拷锟斤拷锟�
+//            //String sa = new String(str.getBytes());
+//
+//            return sa;
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            return "";
+//        }
+//    }
+//
+//    protected void noOpen(HttpServletRequest request, HttpServletResponse response,String data) throws IOException {
+//        response.setContentType("text/json");
+//        PrintWriter out = response.getWriter();
+//        String aa = "{" +
+//                "\"Response_AlarmInfoPlate\": {" +
+//                "\"serialData\" :[" +
+//                "{" +
+//                "\"serialChannel\":0," +
+//                "\"data\" : \"" + data + "\"," +
+//                "\"dataLen\" :" + data.length() +
+//                "}" +
+//                "]" +
+//                "}" +
+//                "}";
+//        out.println(aa);
+//        out.flush();
+//        out.close();
+//    }
+//
+////    protected void easyOpen(HttpServletRequest request, HttpServletResponse response) throws IOException {
+////        response.setContentType("text/json");
+////        PrintWriter out = response.getWriter();
+////        out.println("{\"Response_AlarmInfoPlate\":{\"info\":\"ok\",\"content\":\"...\",\"is_pay\":\"true\",\"ivs_ioctrl\":{\"delay\":800,\"io\":0,\"value\":2}}}");
+////        out.flush();
+////        out.close();
+////    }
+//
+//    protected void easyOpen(HttpServletRequest request, HttpServletResponse response) throws IOException {
+//        response.setContentType("text/json");
+//        PrintWriter out = response.getWriter();
+//        out.println("{\"Response_AlarmInfoPlate\":{\"ivs_ioctrl\":{\"delay\":1000,\"io\":0,\"value\":2}}}");
+//        out.flush();
+//        out.close();
+//    }
+//
+//    protected void easyNoOpen(HttpServletRequest request, HttpServletResponse response) throws IOException {
+//        response.setContentType("text/json");
+//        PrintWriter out = response.getWriter();
+//        out.println("{\"Response_AlarmInfoPlate\":{\"info\":\"error\",\"content\":\"...\",\"is_pay\":\"false\"}}");
+//        out.flush();
+//        out.close();
+//    }
+//
+//    @PostMapping("/status")
+//    public void heart(String serialno,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
+//        Barrier barrier = barrierService.findByCode(serialno);
+//        Park park = parkService.getOneById(barrier.getParkId());
+//        //Park park = parkService.getById(barrier.getParkId());
+//        //String redis = redisTemplate.opsForValue().get("park_up_" + park.getId());
+//        String redisnum = redisTemplate.opsForValue().get("car_park_" + park.getId());
+//        if(StringUtils.isBlank(redisnum)){
+//            redisnum = "0";
+//        }
+//        if(barrier!=null){
+//            if(barrier.getType2()==1){
+//                //寰呭紑闂�
+//                if(barrier.getType() == 1){
+//                    int i = Integer.parseInt(redisnum);
+//                    i++;
+//                    redisTemplate.opsForValue().set("car_park_" + park.getId(),Integer.toString(i),30, TimeUnit.DAYS);
+//                }else if(barrier.getType() == 0){
+//                    int i = Integer.parseInt(redisnum);
+//                    i--;
+//                    if(i<0){
+//                        String s= "2."+barrier.getCarNo()+"闂告満鎵嬪姩鍚姩锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
+//                        redisTemplate.opsForValue().set("car_park_" + park.getId(),"0",30, TimeUnit.DAYS);
+//                        redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
+//                    }else {
+//                        String s= "2."+barrier.getCarNo()+"闂告満鎵嬪姩鍚姩锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
+//                        redisTemplate.opsForValue().set("car_park_" + park.getId(),Integer.toString(i),30, TimeUnit.DAYS);
+//                        redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
+//                    }
+//
+//                }
+//                barrier.setType2(0);
+//                barrier.setUpdateTime(LocalDateTime.now());
+//                barrier.setStatus(0);
+//                barrier.setUpdateTime(LocalDateTime.now());
+//                barrierService.saveOrUpdate(barrier);
+//
+//                String jsonValue = JSON.toJSONString(barrier);
+//                redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue);
+//                easyOpen(request,response);
+//            }else {
+//                //涓嶉渶寮�闂�
+//                LocalDateTime now = LocalDateTime.now();
+//                LocalDateTime updateTime = barrier.getUpdateTime();
+//                Duration duration = Duration.between(updateTime,now);
+//                long minutes = duration.toMinutes();
+//                if(minutes>=2){
+//                    barrier.setStatus(0);
+//                    barrier.setUpdateTime(LocalDateTime.now());
+//                    barrierService.saveOrUpdate(barrier);
+//                }
+//
+//                String jsonValue = JSON.toJSONString(barrier);
+//                redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue);
+//                if(barrier.getType() == 0){
+//                    OutPark outPark = outParkService.count4(barrier.getId());
+//                    if(outPark!=null){
+//                        if(barrier.getType() == 0){
+//                            int i = Integer.parseInt(redisnum);
+//                            i--;
+//                            if(i<0){
+//                                String s= "2."+outPark.getCarNo()+"缂磋垂瀹屾垚锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
+//                                redisTemplate.opsForValue().set("car_park_" + park.getId(),"0",30, TimeUnit.DAYS);
+//                                redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
+//                            }else {
+//                                String s= "2."+outPark.getCarNo()+"缂磋垂瀹屾垚锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
+//                                redisTemplate.opsForValue().set("car_park_" + park.getId(),Integer.toString(i),30, TimeUnit.DAYS);
+//                                redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
+//                            }
+//                        }
+//                        outPark.setStatus2(1);
+//                        outParkService.saveOrUpdate(outPark);
+//                        easyOpen(request,response);
+//                        OutParkLog byOutPark = outParkLogService.getByOutPark(outPark.getCarNo(), outPark.getId());
+//                        byOutPark.setOpenTime(LocalDateTime.now());
+//                        outParkLogService.saveOrUpdate(byOutPark);
+//                        enterParkService.deleteByCarNo(outPark.getCarNo(), barrier.getParkId());
+//                        redisTemplate.delete("outPark-"+outPark.getBarrierId());
+//                    }
+//                }
+//                if(barrier.getType() == 1){
+//                    boolean in = barrierService.getDateDifIn(park.getId());
+//                    if(in){
+//                        inLedShowDefault(park.getId(),request,response);
+//                    }
+//                }else if(barrier.getType() == 0){
+//                    boolean out = barrierService.getDateDifOut(barrier.getId());
+//                    if(out){
+//                        outLedShowDefault(request,response);
+//                    }
+//                }
+//            }
+//
+//        }else {
+//            easyNoOpen(request,response);
+//        }
+//    }
+//    /**
+//     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
+//     */
+//    @PostMapping("/PlateServlet")
+//    protected void info(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+//        String s= "";
+//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
+//        BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8"));
+//        String str = "";
+//        String lineStr = "";
+//        while((str = reader.readLine()) != null){
+//            lineStr += str;
+//        }
+//        //System.out.println("鑾峰彇鍒扮殑閬撻椄鎺ㄩ�佹暟鎹负锛�"+lineStr);
+//
+//        JSONObject jsonObject1 = JSON.parseObject(lineStr);
+//        JSONObject alarmInfoPlate = jsonObject1.getJSONObject("AlarmInfoPlate");
+//        JSONObject result = alarmInfoPlate.getJSONObject("result");
+//        JSONObject plateResult = result.getJSONObject("PlateResult");
+//        String carNo = plateResult.get("license").toString();
+//        String code = alarmInfoPlate.get("serialno").toString();
+//
+//        try {
+//            JsonParser parser=new JsonParser();
+//            do {
+//                JsonObject jsonObject=(JsonObject) parser.parse(lineStr);
+//                if( jsonObject == null || jsonObject.isJsonNull() ) {
+//                    break;
+//                }
+//
+//                JsonObject jsonInfoPlate = jsonObject.get("AlarmInfoPlate").getAsJsonObject();
+//                if( jsonInfoPlate == null || jsonInfoPlate.isJsonNull() ) {
+//                    break;
+//                }
+//
+//                JsonObject jsonResult = jsonInfoPlate.get("result").getAsJsonObject();
+//                if( jsonResult == null || jsonResult.isJsonNull() ) {
+//                    break;
+//                }
+//
+//                JsonObject jsonPlateResult = jsonResult.get("PlateResult").getAsJsonObject();
+//                if( jsonPlateResult == null || jsonPlateResult.isJsonNull() ) {
+//                    break;
+//                }
+//
+//                String license = jsonPlateResult.get("license").getAsString();//杞︾墝鍙�
+//                if( license == null || license == "") {
+//                    break;
+//                }
+//
+//                String serialno = jsonInfoPlate.get("serialno").getAsString();//鎽勫儚鏈哄簭鍒楀彿
+//                if( serialno == null || serialno == "" ) {
+//                    break;
+//                }
+//
+//                System.out.println("缂栧彿锛�"+serialno+"璁惧璇嗗埆鍒颁簡锛�"+license);
+//                String format = sdf.format(new Date());
+//                s+= format+",杞︾墝鍙蜂负锛�"+license+",serialno涓猴細"+code+"  ";
+//
+//                Barrier barrier = barrierService.findByCode(code);
+//                System.out.println("鏌ヨ鍒伴亾闂镐负锛�"+barrier);
+//                if(barrier==null){
+//                    s+="鏌ヨ閬撻椄涓虹┖\n";
+//                }else{
+//                    if(barrier.getType()==0){
+//                        //easyOpen(request,response);
+//                        //noOpen(request,response);
 //                        outPark(license, barrier.getId(), barrier.getParkId(),request,response);
-//                        s+=license+"-淇濆瓨鍑哄満璁板綍\n";
-                    }else{
-                        easyOpen(request,response);
-//                        String num = redisTemplate.opsForValue().get("car_park_" +  barrier.getParkId());
-//                        if(StringUtils.isBlank(num)){
-//                            num = "0";
-//                            redisTemplate.opsForValue().set("car_park_" + barrier.getParkId(),num,30, TimeUnit.DAYS);
-//                            redisTemplate.opsForValue().set("park_up_" + barrier.getParkId(),"true",30, TimeUnit.DAYS);
+//                    }else{
+//                        easyOpen(request,response);
+////                        String num = redisTemplate.opsForValue().get("car_park_" +  barrier.getParkId());
+////                        if(StringUtils.isBlank(num)){
+////                            num = "0";
+////                            redisTemplate.opsForValue().set("car_park_" + barrier.getParkId(),num,30, TimeUnit.DAYS);
+////                            redisTemplate.opsForValue().set("park_up_" + barrier.getParkId(),"true",30, TimeUnit.DAYS);
+////                        }
+////                        Park byId = parkService.getById(barrier.getParkId());
+////                        if(Integer.parseInt(num) >= byId.getNum() ){
+////                            //led鏄剧ず
+////                            inLedFullShow(code, license,barrier.getParkId(),request,response);
+////                        }else {
+////                            //led鏄剧ず
+////                            inLedShow(code, license,barrier.getParkId(),request,response);
+////                            enterPark(license,barrier.getId(),barrier.getParkId());
+////                            s+=license+"-淇濆瓨鍏ュ満璁板綍\n";
+////                        }
+//                    }
+//                }
+//               // writeTxt(s);
+//            }while(false);
+//        }
+//        catch (Exception e) {
+//            System.out.println("鏃犲叆鍦鸿褰�");
+//            s+=" ,鏌ヨ鍦哄唴璁板綍寮傚父";
+//            writeTxt(s);
+//        }
+//    }
+//
+//
+//    private void writeTxt( String txt)
+//    {
+//        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+//        try
+//        {
+//            FileWriter f = new FileWriter(logPath+sdf.format(new Date())+".txt",true);
+//            BufferedWriter bw=new BufferedWriter(f);
+//            bw.write(txt);
+//            bw.newLine();
+//            bw.close();
+//        }
+//        catch(Exception e)
+//        {
+//            System.out.println("鎵撳嵃閿欒");
+//        }
+//    }
+//
+//
+//
+//
+//    public void enterPark(String carNo,Integer barrierId,Integer parkId) {
+//        Park park = parkService.getById(parkId);
+//        int num = 0;
+//        String s = redisTemplate.opsForValue().get("car_park_" + parkId);
+//        if(park != null){
+//            num = park.getNum();
+//            if(s !=null){
+//                if(Integer.parseInt(s) >= num){
+//                    redisTemplate.opsForValue().set("park_up_" + parkId,"false",30, TimeUnit.DAYS);
+//                    return;
+//                }
+//            }else {
+//                s= "0";
+//                redisTemplate.opsForValue().set("car_park_" + parkId,s,30, TimeUnit.DAYS);
+//                redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
+//            }
+//        }
+//        enterParkService.deleteByCarNo(carNo,parkId);
+//        EnterPark enterPark = new EnterPark();
+//        enterPark.setCarNo(carNo);
+//        enterPark.setBarrierId(barrierId);
+//        enterPark.setParkId(parkId);
+//
+//        QueryWrapper<Ticket> wrapper = new QueryWrapper<>();
+//        wrapper.lambda()
+//                .eq(Ticket::getCarNo,enterPark.getCarNo())
+//                .eq(Ticket::getPayStatus,1);
+//        List<Ticket> tickets = ticketService.list(wrapper);
+//        if(tickets.size()>0){
+//            enterPark.setStatus(1);//鍙戠幇鏈夎繚绔�
+//        }
+//        enterParkService.saveOrUpdate(enterPark);
+//        String jsonValue = JSON.toJSONString(enterPark);
+//        redisTemplate.opsForValue().set("enterPark_dif_"+ parkId, jsonValue);
+//
+//        Barrier barrier = barrierService.getById(barrierId);
+//        barrier.setType2(1);
+//        barrierService.saveOrUpdate(barrier);
+//    }
+//
+//    public double outPark(String carNo,Integer barrierId,Integer parkId,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+//        double money = 0.0;
+//        EnterPark enterPark = null;
+//        String toDayHrMinSec = null;
+//        OutPark outPark = new OutPark();
+//        outPark.setCarNo(carNo);
+//        outPark.setParkId(parkId);
+//        outPark.setBarrierId(barrierId);
+//        outPark.setCreateTime(LocalDateTime.now());
+//        outPark.setCode(System.currentTimeMillis()+"");
+//        List<EnterPark> byCarNo = enterParkService.findByCarNo(carNo,parkId);
+//
+//        if(byCarNo.size() == 0){
+//            System.out.println(carNo+"鏈彂鐜板満鍐呰溅杈�");
+//        }else{
+//            enterPark = byCarNo.get(0);
+//            System.out.println("鍏ュ満璁板綍锛�"+enterPark);
+//            outPark.setEnterTime(enterPark.getCreateTime());
+//            try {
+//                long l = outPark.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli() - enterPark.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli();
+//                outPark.setTime(l/(1000*60));
+//                toDayHrMinSec = DateUtilOther.millisToDayHrMinSec(l/(1000*60));
+//                money = costRuleService.getMoney(parkId, outPark.getEnterTime(), outPark.getCreateTime(), 1);
+//            } catch (ParseException e) {
+//                e.printStackTrace();
+//            }
+//
+//        }
+//        //outPark.setPrice(Double.valueOf(String.format("%.1f", money)));
+//        outPark.setPrice(money);
+//        outPark.setStatus3(findTicket(carNo));
+//        outParkService.saveOrUpdate(outPark);
+//        Barrier barrier =barrierService.getById(barrierId);
+//        barrier.setCarNo(carNo);
+//        //led灞曠ず
+//        if(toDayHrMinSec == null){
+//            toDayHrMinSec = "涓嶈冻涓ゅ皬鏃�";
+//        }
+//        //鍒ゆ柇鏄惁鍦ㄧ櫧鍚嶅崟
+//        QueryWrapper<WhiteList> wrapper = new QueryWrapper<>();
+//        wrapper.lambda()
+//                .eq(WhiteList::getCarNo,carNo);
+//        List<WhiteList> all = whiteListService.list(wrapper);
+//        if(all.size() >0){
+//            for(WhiteList w : all){
+//                if(w.getType()==0){
+//                    outLedShowYueZu(barrier.getCarNo(),"鏈堢杞�",parkId,request,response,0);
+//                    OutPark byCarNoAndBarrierId = outParkService.findByCarNoAndBarrierId(carNo, barrierId);
+//                    byCarNoAndBarrierId.setStatus(1);
+//                    byCarNoAndBarrierId.setStatus2(1);
+//                    outParkService.saveOrUpdate(byCarNoAndBarrierId);
+//                    String jsonValue = JSON.toJSONString(byCarNoAndBarrierId);
+//                    redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
+//                    return 0.0;
+//                }else{
+//                    if(w.getParkIds()!=null){
+//                        if(w.getEndTime()!=null){
+//                            String parkIds = w.getParkIds();
+//                            String[] split = parkIds.split(",");
+//                            for (String s : split) {
+//                                int pid = Integer.parseInt(s);
+//                                if(pid == outPark.getParkId() && System.currentTimeMillis()<w.getEndTime().getTime()){
+//                                    outLedShowYueZu(barrier.getCarNo(),"鏈堢杞�",parkId,request,response,0);
+//                                    OutPark byCarNoAndBarrierId = outParkService.findByCarNoAndBarrierId(carNo, barrierId);
+//                                    byCarNoAndBarrierId.setStatus(1);
+//                                    byCarNoAndBarrierId.setStatus2(1);
+//                                    outParkService.saveOrUpdate(byCarNoAndBarrierId);
+//                                    String jsonValue = JSON.toJSONString(byCarNoAndBarrierId);
+//                                    redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
+//                                    return 0.0;
+//                                }
+//                            }
 //                        }
-//                        Park byId = parkService.getById(barrier.getParkId());
-//                        if(Integer.parseInt(num) >= byId.getNum() ){
-//                            //led鏄剧ず
-//                            inLedFullShow(code, license,barrier.getParkId(),request,response);
-//                        }else {
-//                            //led鏄剧ず
-//                            inLedShow(code, license,barrier.getParkId(),request,response);
-//                            enterPark(license,barrier.getId(),barrier.getParkId());
-//                            s+=license+"-淇濆瓨鍏ュ満璁板綍\n";
-//                        }
-                    }
-                }
-               // writeTxt(s);
-            }while(false);
-        }
-        catch (Exception e) {
-            System.out.println("鏃犲叆鍦鸿褰�");
-            s+=" ,鏌ヨ鍦哄唴璁板綍寮傚父";
-            writeTxt(s);
-        }
-    }
-
-
-    private void writeTxt( String txt)
-    {
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
-        try
-        {
-            FileWriter f = new FileWriter(logPath+sdf.format(new Date())+".txt",true);
-            BufferedWriter bw=new BufferedWriter(f);
-            bw.write(txt);
-            bw.newLine();
-            bw.close();
-        }
-        catch(Exception e)
-        {
-            System.out.println("鎵撳嵃閿欒");
-        }
-    }
-
-
-
-
-    public void enterPark(String carNo,Integer barrierId,Integer parkId) {
-        Park park = parkService.getById(parkId);
-        int num = 0;
-        String s = redisTemplate.opsForValue().get("car_park_" + parkId);
-        if(park != null){
-            num = park.getNum();
-            if(s !=null){
-                if(Integer.parseInt(s) >= num){
-                    redisTemplate.opsForValue().set("park_up_" + parkId,"false",30, TimeUnit.DAYS);
-                    return;
-                }
-            }else {
-                s= "0";
-                redisTemplate.opsForValue().set("car_park_" + parkId,s,30, TimeUnit.DAYS);
-                redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
-            }
-        }
-        enterParkService.deleteByCarNo(carNo,parkId);
-        EnterPark enterPark = new EnterPark();
-        enterPark.setCarNo(carNo);
-        enterPark.setBarrierId(barrierId);
-        enterPark.setParkId(parkId);
-
-        QueryWrapper<Ticket> wrapper = new QueryWrapper<>();
-        wrapper.lambda()
-                .eq(Ticket::getCarNo,enterPark.getCarNo())
-                .eq(Ticket::getPayStatus,1);
-        List<Ticket> tickets = ticketService.list(wrapper);
-        if(tickets.size()>0){
-            enterPark.setStatus(1);//鍙戠幇鏈夎繚绔�
-        }
-        enterParkService.saveOrUpdate(enterPark);
-        String jsonValue = JSON.toJSONString(enterPark);
-        redisTemplate.opsForValue().set("enterPark_dif_"+ parkId, jsonValue);
-
-        Barrier barrier = barrierService.getById(barrierId);
-        barrier.setType2(1);
-        barrierService.saveOrUpdate(barrier);
-    }
-
-    public double outPark(String carNo,Integer barrierId,Integer parkId,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-        double money = 0.0;
-        EnterPark enterPark = null;
-        String toDayHrMinSec = null;
-        OutPark outPark = new OutPark();
-        outPark.setCarNo(carNo);
-        outPark.setParkId(parkId);
-        outPark.setBarrierId(barrierId);
-        outPark.setCreateTime(LocalDateTime.now());
-        outPark.setCode(System.currentTimeMillis()+"");
-        List<EnterPark> byCarNo = enterParkService.findByCarNo(carNo,parkId);
-
-        if(byCarNo.size() == 0){
-            System.out.println(carNo+"鏈彂鐜板満鍐呰溅杈�");
-        }else{
-            enterPark = byCarNo.get(0);
-            System.out.println("鍏ュ満璁板綍锛�"+enterPark);
-            outPark.setEnterTime(enterPark.getCreateTime());
-            try {
-                long l = outPark.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli() - enterPark.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli();
-                outPark.setTime(l/(1000*60));
-                toDayHrMinSec = DateUtilOther.millisToDayHrMinSec(l/(1000*60));
-                money = costRuleService.getMoney(parkId, outPark.getEnterTime(), outPark.getCreateTime(), 1);
-            } catch (ParseException e) {
-                e.printStackTrace();
-            }
-
-        }
-        //outPark.setPrice(Double.valueOf(String.format("%.1f", money)));
-        outPark.setPrice(money);
-        outPark.setStatus3(findTicket(carNo));
-        outParkService.saveOrUpdate(outPark);
-        Barrier barrier =barrierService.getById(barrierId);
-        barrier.setCarNo(carNo);
-        //led灞曠ず
-        if(toDayHrMinSec == null){
-            toDayHrMinSec = "涓嶈冻涓ゅ皬鏃�";
-        }
-        //鍒ゆ柇鏄惁鍦ㄧ櫧鍚嶅崟
-        QueryWrapper<WhiteList> wrapper = new QueryWrapper<>();
-        wrapper.lambda()
-                .eq(WhiteList::getCarNo,carNo);
-        List<WhiteList> all = whiteListService.list(wrapper);
-        if(all.size() >0){
-            for(WhiteList w : all){
-                if(w.getType()==0){
-                    outLedShowYueZu(barrier.getCarNo(),"鏈堢杞�",parkId,request,response,0);
-                    OutPark byCarNoAndBarrierId = outParkService.findByCarNoAndBarrierId(carNo, barrierId);
-                    byCarNoAndBarrierId.setStatus(1);
-                    byCarNoAndBarrierId.setStatus2(1);
-                    outParkService.saveOrUpdate(byCarNoAndBarrierId);
-                    String jsonValue = JSON.toJSONString(byCarNoAndBarrierId);
-                    redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
-                    return 0.0;
-                }else{
-                    if(w.getParkIds()!=null){
-                        if(w.getEndTime()!=null){
-                            String parkIds = w.getParkIds();
-                            String[] split = parkIds.split(",");
-                            for (String s : split) {
-                                int pid = Integer.parseInt(s);
-                                if(pid == outPark.getParkId() && System.currentTimeMillis()<w.getEndTime().getTime()){
-                                    outLedShowYueZu(barrier.getCarNo(),"鏈堢杞�",parkId,request,response,0);
-                                    OutPark byCarNoAndBarrierId = outParkService.findByCarNoAndBarrierId(carNo, barrierId);
-                                    byCarNoAndBarrierId.setStatus(1);
-                                    byCarNoAndBarrierId.setStatus2(1);
-                                    outParkService.saveOrUpdate(byCarNoAndBarrierId);
-                                    String jsonValue = JSON.toJSONString(byCarNoAndBarrierId);
-                                    redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
-                                    return 0.0;
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        if(outPark.getPrice()==0&&outPark.getStatus3()==0){
-            System.out.println(outPark.getCarNo()+"璇ヨ溅涓嶉渶瑕佺即璐�");
-            String jsonValue = JSON.toJSONString(outPark);
-            redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
-            outLedShow(barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,0);
-        }else {
-            //闇�瑕佺即璐规垨鑰呮湁杩濈珷
-            System.out.println(outPark.getCarNo()+"璇ヨ溅闇�瑕佺即璐�"+outPark.getPrice());
-            String jsonValue = JSON.toJSONString(outPark);
-            redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
-            outLedShow(barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,1);
-        }
-        barrierService.saveOrUpdate(barrier);
-        return money;
-    }
-
-    public int findTicket(String carNo){
-        QueryWrapper<Ticket> wrapper = new QueryWrapper<>();
-        wrapper.lambda()
-                .eq(Ticket::getCarNo,carNo)
-                .eq(Ticket::getPayStatus,1);
-        List<Ticket> tickets = ticketService.list(wrapper);
-        if(tickets.size()>0){
-            return 1;
-        }else{
-            return 0;
-        }
-    }
-
-
-    public void inLedShow(String ledId,String carNo,Integer parkId,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-        String num = redisTemplate.opsForValue().get("car_park_" +  parkId);
-        if(num == null){
-            num = "0";
-        }
-        Park byId = parkService.getById(parkId);
-        int n = Integer.parseInt(num)+1;
-        redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(n),30, TimeUnit.DAYS);
-        int i = byId.getNum() - Integer.parseInt(num);
-        if(i<0){
-            i = 0;
-        }
-        String carType = "";
-        String carDay = "";
-        Barrier barrier = barrierService.findByCode(ledId);
-        WhiteList byCarNo = whiteListService.getByCarNo(carNo);
-        if(byCarNo == null){
-            carType = "涓存椂杞�";
-        }else {
-            if (byCarNo.getType() == 0){
-                //鐧藉悕鍗曟案涔呰溅杈�
-                carType = "鏈堢杞�";
-            }else {
-                //鐧藉悕鍗曞浐瀹氬仠杞﹀満杞﹁締
-                if(byCarNo.getParkId().equals(barrier.getParkId())){
-                    carType = "鏈堢杞�";
-                    long l = (byCarNo.getEndTime().getTime() - byCarNo.getStartTime().getTime()) / (24 * 3600 * 1000);
-                    carDay = "鏈夋晥鏈熻繕鏈�"+l+"澶�";
-                }
-            }
-        }
-        if(StringUtils.isBlank(carDay)){
-            carDay = "娆㈣繋鍏変复";
-        }
-
-        LedBean ledBean = new LedBean();
-        ledBean.setColor1(0);
-        ledBean.setColor2(0);
-        ledBean.setColor3(0);
-        ledBean.setColor4(0);
-        ledBean.setContent1(carNo);
-        ledBean.setContent2(carType);
-        ledBean.setContent3(carDay);
-        ledBean.setContent4("浣欎綅:"+i);
-        ledBean.setDisMode1(1);
-        ledBean.setDisMode2(1);
-        ledBean.setDisMode3(1);
-        ledBean.setDisMode4(1);
-        ledBean.setVoiceContent(carType+","+carNo+","+carDay);
-        String s = JSON.toJSONString(ledBean);
-        String s1= HttpRequest.post(LEDURL)
-                .timeout(5000)
-                .body(s)
-                .execute()
-                .body();
-        ResultData resultData = JSON.parseObject(s1,ResultData.class);
-        System.out.println(resultData);
-        String[] split = resultData.getDatas().split("-");
-        String[] dataX = new String[resultData.getLenth()];
-        System.arraycopy(split,0,dataX,0,resultData.getLenth());
-        String s2 = StringUtil.toStr(dataX);
-        //byte[] bytes = StringUtil.HexString2Bytes(s2);
-        byte[] bytes1 = StringUtil.hex2Byte(resultData.getDatas());
-        byte[] bytes = StringUtil.byte2hex(bytes1);
-        for (byte aByte : bytes) {
-            System.out.print(aByte+" ");
-        }
-        System.out.println();
-        System.out.println("bytes.length: "+bytes.length);
-        //String data1 = new String("gb2312");
-        String data1 = Base64.getMimeEncoder().encodeToString(bytes);
-       // String data2 = data1.replace("\n", "");
-        String data3  = data1.replaceAll("\r\n", "") + "=";
-        System.out.println();
-        System.out.println(data3);
-        open(request,response,data3);//鍏ュ満寮�闂�
-    }
-
-    public void inLedFullShow(String ledId, String carNo, Integer parkId,HttpServletRequest request, HttpServletResponse response) throws IOException {
-        String carType = "";
-        String carDay = "";
-        Barrier barrier = barrierService.findByCode(ledId);
-        WhiteList byCarNo = whiteListService.getByCarNo(carNo);
-        if(byCarNo == null){
-            carType = "涓存椂杞�";
-        }else {
-            if (byCarNo.getType() == 0){
-                //鐧藉悕鍗曟案涔呰溅杈�
-                carType = "鏈堢杞�";
-            }else {
-                //鐧藉悕鍗曞浐瀹氬仠杞﹀満杞﹁締
-                if(byCarNo.getParkId().equals(barrier.getParkId())){
-                    carType = "鏈堢杞�";
-                    long l = (byCarNo.getEndTime().getTime() - byCarNo.getStartTime().getTime()) / (24 * 3600 * 1000);
-                    carDay = "鏈夋晥鏈熻繕鏈�"+l+"澶�";
-                }
-            }
-        }
-
-        LedBean ledBean = new LedBean();
-        ledBean.setColor1(0);
-        ledBean.setColor2(0);
-        ledBean.setColor3(0);
-        ledBean.setColor4(0);
-        ledBean.setContent1(carNo);
-        ledBean.setContent2(carType);
-        ledBean.setContent3("杞︿綅宸叉弧");
-        ledBean.setContent4("璇烽┒绂�");
-        ledBean.setDisMode1(1);
-        ledBean.setDisMode2(1);
-        ledBean.setDisMode3(1);
-        ledBean.setDisMode4(1);
-        ledBean.setVoiceContent("杞︿綅宸叉弧,璇烽┒绂�");
-        String s = JSON.toJSONString(ledBean);
-        String s1= HttpRequest.post(LEDURL)
-                .timeout(5000)
-                .body(s)
-                .execute()
-                .body();
-        ResultData resultData = JSON.parseObject(s1,ResultData.class);
-        byte[] dataX = new byte[resultData.getLenth()];
-        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
-        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
-        data1 = data1.replaceAll("\r\n", "");
-
-        noOpen(request,response,data1);//鍏ュ満寮�闂�
-    }
-
-    public void outLedShow(String ledId,String carNo,Double price,String timeStamp,Integer parkId,HttpServletRequest request, HttpServletResponse response,int type) throws ServletException, IOException {
-        String redisnum = redisTemplate.opsForValue().get("car_park_" + parkId);
-        LedBean ledBean = new LedBean();
-        ledBean.setColor1(0);
-        ledBean.setColor2(0);
-        ledBean.setColor3(0);
-        ledBean.setColor4(0);
-        ledBean.setContent1(carNo);
-        ledBean.setContent2("鍋滆溅"+timeStamp);
-        ledBean.setContent3("浜よ垂"+price+"鍏�");
-        ledBean.setContent4("绂佹闂潌");
-        ledBean.setDisMode1(1);
-        ledBean.setDisMode2(1);
-        ledBean.setDisMode3(1);
-        ledBean.setDisMode4(1);
-        ledBean.setVoiceContent(carNo+"鍋滆溅"+timeStamp+"浜よ垂"+price+"鍏�");
-        String s = JSON.toJSONString(ledBean);
-        String s1= HttpRequest.post(LEDURL)
-                .timeout(5000)
-                .body(s)
-                .execute()
-                .body();
-        ResultData resultData = JSON.parseObject(s1,ResultData.class);
-        byte[] dataX = new byte[resultData.getLenth()];
-        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
-        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
-        data1 = data1.replaceAll("\r\n", "");
-        if(type == 0){
-            //寮�闂�
-            open(request,response,data1);
-            int i = Integer.parseInt(redisnum);
-            i--;
-            if(i<0){
-                redisTemplate.opsForValue().set("car_park_" + parkId,"0",30, TimeUnit.DAYS);
-                redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
-            }else {
-                redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(i),30, TimeUnit.DAYS);
-                redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
-            }
-        }else {
-            noOpen(request,response,data1);
-        }
-
-    }
-
-    public void outLedShowYueZu(String carNo,String text,Integer parkId,HttpServletRequest request, HttpServletResponse response,int type) throws ServletException, IOException{
-        String redisnum = redisTemplate.opsForValue().get("car_park_" + parkId);
-        LedBean ledBean = new LedBean();
-        ledBean.setColor1(0);
-        ledBean.setColor2(0);
-        ledBean.setColor3(0);
-        ledBean.setColor4(0);
-        ledBean.setContent1(carNo);
-        ledBean.setContent2(text);
-        ledBean.setContent3("鍑忛�熸參琛�");
-        ledBean.setContent4("娆㈣繋涓嬫鍏変复");
-        ledBean.setDisMode1(1);
-        ledBean.setDisMode2(1);
-        ledBean.setDisMode3(1);
-        ledBean.setDisMode4(1);
-        ledBean.setVoiceContent(text+carNo+"娆㈣繋涓嬫鍏変复");
-        String s = JSON.toJSONString(ledBean);
-        String s1= HttpRequest.post(LEDURL)
-                .timeout(5000)
-                .body(s)
-                .execute()
-                .body();
-        ResultData resultData = JSON.parseObject(s1,ResultData.class);
-        byte[] dataX = new byte[resultData.getLenth()];
-        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
-        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
-        data1 = data1.replaceAll("\r\n", "");
-        if(type == 0){
-            //寮�闂�
-            open(request,response,data1);
-            int i = Integer.parseInt(redisnum);
-            i--;
-            if(i<0){
-                redisTemplate.opsForValue().set("car_park_" + parkId,"0",30, TimeUnit.DAYS);
-                redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
-            }else {
-                redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(i),30, TimeUnit.DAYS);
-                redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
-            }
-        }else {
-            noOpen(request,response,data1);
-        }
-    }
-
-    public void outLedShowDefault(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
-        LedBean ledBean = new LedBean();
-        ledBean.setColor1(0);
-        ledBean.setColor2(0);
-        ledBean.setColor3(0);
-        ledBean.setColor4(0);
-        ledBean.setContent1("涓�杞︿竴鏉�");
-        ledBean.setContent2("鍑忛�熸參琛�");
-        ledBean.setContent3("鏃犻渶鍙栧崱");
-        ledBean.setContent4("鎵爜缂磋垂");
-        ledBean.setDisMode1(1);
-        ledBean.setDisMode2(1);
-        ledBean.setDisMode3(1);
-        ledBean.setDisMode4(1);
-        ledBean.setVoiceContent("");
-        String s = JSON.toJSONString(ledBean);
-        String s1= HttpRequest.post(LEDURL)
-                .timeout(5000)
-                .body(s)
-                .execute()
-                .body();
-        ResultData resultData = JSON.parseObject(s1,ResultData.class);
-        byte[] dataX = new byte[resultData.getLenth()];
-        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
-        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
-        data1 = data1.replaceAll("\r\n", "");
-        noOpen(request,response,data1);
-    }
-
-    public void inLedShowDefault(Integer parkId,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
-        String num = redisTemplate.opsForValue().get("car_park_" +  parkId);
-        if(num == null){
-            num = "0";
-        }
-        Park byId = parkService.getById(parkId);
-        int i = byId.getNum() - Integer.parseInt(num);
-        if(i<0){
-            i = 0;
-        }
-        LedBean ledBean = new LedBean();
-        ledBean.setColor1(0);
-        ledBean.setColor2(0);
-        ledBean.setColor3(0);
-        ledBean.setColor4(0);
-        ledBean.setContent1("涓�杞︿竴鏉�");
-        ledBean.setContent2("鍑忛�熸參琛�");
-        ledBean.setContent3("鎺掗槦绛夊��");
-        ledBean.setContent4("浣欎綅:"+i);
-        ledBean.setDisMode1(1);
-        ledBean.setDisMode2(1);
-        ledBean.setDisMode3(1);
-        ledBean.setDisMode4(1);
-        ledBean.setVoiceContent("");
-        String s = JSON.toJSONString(ledBean);
-        String s1= HttpRequest.post(LEDURL)
-                .timeout(5000)
-                .body(s)
-                .execute()
-                .body();
-        ResultData resultData = JSON.parseObject(s1,ResultData.class);
-        byte[] dataX = new byte[resultData.getLenth()];
-        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
-        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
-        data1 = data1.replaceAll("\r\n", "");
-        noOpen(request,response,data1);
-    }
-
-}
+//                    }
+//                }
+//            }
+//        }
+//        if(outPark.getPrice()==0&&outPark.getStatus3()==0){
+//            System.out.println(outPark.getCarNo()+"璇ヨ溅涓嶉渶瑕佺即璐�");
+//            String jsonValue = JSON.toJSONString(outPark);
+//            redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
+//            outLedShow(barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,0);
+//        }else {
+//            //闇�瑕佺即璐规垨鑰呮湁杩濈珷
+//            System.out.println(outPark.getCarNo()+"璇ヨ溅闇�瑕佺即璐�"+outPark.getPrice());
+//            String jsonValue = JSON.toJSONString(outPark);
+//            redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
+//            outLedShow(barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,1);
+//        }
+//        barrierService.saveOrUpdate(barrier);
+//        return money;
+//    }
+//
+//    public int findTicket(String carNo){
+//        QueryWrapper<Ticket> wrapper = new QueryWrapper<>();
+//        wrapper.lambda()
+//                .eq(Ticket::getCarNo,carNo)
+//                .eq(Ticket::getPayStatus,1);
+//        List<Ticket> tickets = ticketService.list(wrapper);
+//        if(tickets.size()>0){
+//            return 1;
+//        }else{
+//            return 0;
+//        }
+//    }
+//
+//
+//    public void inLedShow(String ledId,String carNo,Integer parkId,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+//        String num = redisTemplate.opsForValue().get("car_park_" +  parkId);
+//        if(num == null){
+//            num = "0";
+//        }
+//        Park byId = parkService.getById(parkId);
+//        int n = Integer.parseInt(num)+1;
+//        redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(n),30, TimeUnit.DAYS);
+//        int i = byId.getNum() - Integer.parseInt(num);
+//        if(i<0){
+//            i = 0;
+//        }
+//        String carType = "";
+//        String carDay = "";
+//        Barrier barrier = barrierService.findByCode(ledId);
+//        WhiteList byCarNo = whiteListService.getByCarNo(carNo);
+//        if(byCarNo == null){
+//            carType = "涓存椂杞�";
+//        }else {
+//            if (byCarNo.getType() == 0){
+//                //鐧藉悕鍗曟案涔呰溅杈�
+//                carType = "鏈堢杞�";
+//            }else {
+//                //鐧藉悕鍗曞浐瀹氬仠杞﹀満杞﹁締
+//                if(byCarNo.getParkId().equals(barrier.getParkId())){
+//                    carType = "鏈堢杞�";
+//                    long l = (byCarNo.getEndTime().getTime() - byCarNo.getStartTime().getTime()) / (24 * 3600 * 1000);
+//                    carDay = "鏈夋晥鏈熻繕鏈�"+l+"澶�";
+//                }
+//            }
+//        }
+//        if(StringUtils.isBlank(carDay)){
+//            carDay = "娆㈣繋鍏変复";
+//        }
+//
+//        LedBean ledBean = new LedBean();
+//        ledBean.setColor1(0);
+//        ledBean.setColor2(0);
+//        ledBean.setColor3(0);
+//        ledBean.setColor4(0);
+//        ledBean.setContent1(carNo);
+//        ledBean.setContent2(carType);
+//        ledBean.setContent3(carDay);
+//        ledBean.setContent4("浣欎綅:"+i);
+//        ledBean.setDisMode1(1);
+//        ledBean.setDisMode2(1);
+//        ledBean.setDisMode3(1);
+//        ledBean.setDisMode4(1);
+//        ledBean.setVoiceContent(carType+","+carNo+","+carDay);
+//        String s = JSON.toJSONString(ledBean);
+//        String s1= HttpRequest.post(LEDURL)
+//                .timeout(5000)
+//                .body(s)
+//                .execute()
+//                .body();
+//        ResultData resultData = JSON.parseObject(s1,ResultData.class);
+//        System.out.println(resultData);
+//        String[] split = resultData.getDatas().split("-");
+//        String[] dataX = new String[resultData.getLenth()];
+//        System.arraycopy(split,0,dataX,0,resultData.getLenth());
+//        String s2 = StringUtil.toStr(dataX);
+//        //byte[] bytes = StringUtil.HexString2Bytes(s2);
+//        byte[] bytes1 = StringUtil.hex2Byte(resultData.getDatas());
+//        byte[] bytes = StringUtil.byte2hex(bytes1);
+//        for (byte aByte : bytes) {
+//            System.out.print(aByte+" ");
+//        }
+//        System.out.println();
+//        System.out.println("bytes.length: "+bytes.length);
+//        //String data1 = new String("gb2312");
+//        String data1 = Base64.getMimeEncoder().encodeToString(bytes);
+//       // String data2 = data1.replace("\n", "");
+//        String data3  = data1.replaceAll("\r\n", "") + "=";
+//        System.out.println();
+//        System.out.println(data3);
+//        open(request,response,data3);//鍏ュ満寮�闂�
+//    }
+//
+//    public void inLedFullShow(String ledId, String carNo, Integer parkId,HttpServletRequest request, HttpServletResponse response) throws IOException {
+//        String carType = "";
+//        String carDay = "";
+//        Barrier barrier = barrierService.findByCode(ledId);
+//        WhiteList byCarNo = whiteListService.getByCarNo(carNo);
+//        if(byCarNo == null){
+//            carType = "涓存椂杞�";
+//        }else {
+//            if (byCarNo.getType() == 0){
+//                //鐧藉悕鍗曟案涔呰溅杈�
+//                carType = "鏈堢杞�";
+//            }else {
+//                //鐧藉悕鍗曞浐瀹氬仠杞﹀満杞﹁締
+//                if(byCarNo.getParkId().equals(barrier.getParkId())){
+//                    carType = "鏈堢杞�";
+//                    long l = (byCarNo.getEndTime().getTime() - byCarNo.getStartTime().getTime()) / (24 * 3600 * 1000);
+//                    carDay = "鏈夋晥鏈熻繕鏈�"+l+"澶�";
+//                }
+//            }
+//        }
+//
+//        LedBean ledBean = new LedBean();
+//        ledBean.setColor1(0);
+//        ledBean.setColor2(0);
+//        ledBean.setColor3(0);
+//        ledBean.setColor4(0);
+//        ledBean.setContent1(carNo);
+//        ledBean.setContent2(carType);
+//        ledBean.setContent3("杞︿綅宸叉弧");
+//        ledBean.setContent4("璇烽┒绂�");
+//        ledBean.setDisMode1(1);
+//        ledBean.setDisMode2(1);
+//        ledBean.setDisMode3(1);
+//        ledBean.setDisMode4(1);
+//        ledBean.setVoiceContent("杞︿綅宸叉弧,璇烽┒绂�");
+//        String s = JSON.toJSONString(ledBean);
+//        String s1= HttpRequest.post(LEDURL)
+//                .timeout(5000)
+//                .body(s)
+//                .execute()
+//                .body();
+//        ResultData resultData = JSON.parseObject(s1,ResultData.class);
+//        byte[] dataX = new byte[resultData.getLenth()];
+//        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
+//        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
+//        data1 = data1.replaceAll("\r\n", "");
+//
+//        noOpen(request,response,data1);//鍏ュ満寮�闂�
+//    }
+//
+//    public void outLedShow(String ledId,String carNo,Double price,String timeStamp,Integer parkId,HttpServletRequest request, HttpServletResponse response,int type) throws ServletException, IOException {
+//        String redisnum = redisTemplate.opsForValue().get("car_park_" + parkId);
+////        LedBean ledBean = new LedBean();
+////        ledBean.setColor1(0);
+////        ledBean.setColor2(0);
+////        ledBean.setColor3(0);
+////        ledBean.setColor4(0);
+////        ledBean.setContent1(carNo);
+////        ledBean.setContent2("鍋滆溅"+timeStamp);
+////        ledBean.setContent3("浜よ垂"+price+"鍏�");
+////        ledBean.setContent4("绂佹闂潌");
+////        ledBean.setDisMode1(1);
+////        ledBean.setDisMode2(1);
+////        ledBean.setDisMode3(1);
+////        ledBean.setDisMode4(1);
+////        ledBean.setVoiceContent(carNo+"鍋滆溅"+timeStamp+"浜よ垂"+price+"鍏�");
+////        String s = JSON.toJSONString(ledBean);
+////        String s1= HttpRequest.post(LEDURL)
+////                .timeout(5000)
+////                .body(s)
+////                .execute()
+////                .body();
+////        ResultData resultData = JSON.parseObject(s1,ResultData.class);
+////        byte[] dataX = new byte[resultData.getLenth()];
+////        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
+////        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
+////        data1 = data1.replaceAll("\r\n", "");
+//        if(type == 0){
+//            //寮�闂�
+//            open(request,response,data1);
+//            int i = Integer.parseInt(redisnum);
+//            i--;
+//            if(i<0){
+//                redisTemplate.opsForValue().set("car_park_" + parkId,"0",30, TimeUnit.DAYS);
+//                redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
+//            }else {
+//                redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(i),30, TimeUnit.DAYS);
+//                redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
+//            }
+//        }else {
+//            //noOpen(request,response,data1);
+//            easyNoOpen(request,response);
+//        }
+//
+//    }
+//
+//    public void outLedShowYueZu(String carNo,String text,Integer parkId,HttpServletRequest request, HttpServletResponse response,int type) throws ServletException, IOException{
+//        String redisnum = redisTemplate.opsForValue().get("car_park_" + parkId);
+//        LedBean ledBean = new LedBean();
+//        ledBean.setColor1(0);
+//        ledBean.setColor2(0);
+//        ledBean.setColor3(0);
+//        ledBean.setColor4(0);
+//        ledBean.setContent1(carNo);
+//        ledBean.setContent2(text);
+//        ledBean.setContent3("鍑忛�熸參琛�");
+//        ledBean.setContent4("娆㈣繋涓嬫鍏変复");
+//        ledBean.setDisMode1(1);
+//        ledBean.setDisMode2(1);
+//        ledBean.setDisMode3(1);
+//        ledBean.setDisMode4(1);
+//        ledBean.setVoiceContent(text+carNo+"娆㈣繋涓嬫鍏変复");
+//        String s = JSON.toJSONString(ledBean);
+//        String s1= HttpRequest.post(LEDURL)
+//                .timeout(5000)
+//                .body(s)
+//                .execute()
+//                .body();
+//        ResultData resultData = JSON.parseObject(s1,ResultData.class);
+//        byte[] dataX = new byte[resultData.getLenth()];
+//        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
+//        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
+//        data1 = data1.replaceAll("\r\n", "");
+//        if(type == 0){
+//            //寮�闂�
+//           // open(request,response,data1);
+//            easyOpen(request,response);
+//            int i = Integer.parseInt(redisnum);
+//            i--;
+//            if(i<0){
+//                redisTemplate.opsForValue().set("car_park_" + parkId,"0",30, TimeUnit.DAYS);
+//                redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
+//            }else {
+//                redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(i),30, TimeUnit.DAYS);
+//                redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
+//            }
+//        }else {
+//            noOpen(request,response,data1);
+//        }
+//    }
+//
+//    public void outLedShowDefault(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
+////        LedBean ledBean = new LedBean();
+////        ledBean.setColor1(0);
+////        ledBean.setColor2(0);
+////        ledBean.setColor3(0);
+////        ledBean.setColor4(0);
+////        ledBean.setContent1("涓�杞︿竴鏉�");
+////        ledBean.setContent2("鍑忛�熸參琛�");
+////        ledBean.setContent3("鏃犻渶鍙栧崱");
+////        ledBean.setContent4("鎵爜缂磋垂");
+////        ledBean.setDisMode1(1);
+////        ledBean.setDisMode2(1);
+////        ledBean.setDisMode3(1);
+////        ledBean.setDisMode4(1);
+////        ledBean.setVoiceContent("");
+////        String s = JSON.toJSONString(ledBean);
+////        String s1= HttpRequest.post(LEDURL)
+////                .timeout(5000)
+////                .body(s)
+////                .execute()
+////                .body();
+////        ResultData resultData = JSON.parseObject(s1,ResultData.class);
+////        byte[] dataX = new byte[resultData.getLenth()];
+////        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
+////        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
+////        data1 = data1.replaceAll("\r\n", "");
+//        //noOpen(request,response,data1);
+//        easyNoOpen(request,response);
+//    }
+//
+//    public void inLedShowDefault(Integer parkId,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
+//        String num = redisTemplate.opsForValue().get("car_park_" +  parkId);
+//        if(num == null){
+//            num = "0";
+//        }
+//        Park byId = parkService.getById(parkId);
+//        int i = byId.getNum() - Integer.parseInt(num);
+//        if(i<0){
+//            i = 0;
+//        }
+//        LedBean ledBean = new LedBean();
+//        ledBean.setColor1(0);
+//        ledBean.setColor2(0);
+//        ledBean.setColor3(0);
+//        ledBean.setColor4(0);
+//        ledBean.setContent1("涓�杞︿竴鏉�");
+//        ledBean.setContent2("鍑忛�熸參琛�");
+//        ledBean.setContent3("鎺掗槦绛夊��");
+//        ledBean.setContent4("浣欎綅:"+i);
+//        ledBean.setDisMode1(1);
+//        ledBean.setDisMode2(1);
+//        ledBean.setDisMode3(1);
+//        ledBean.setDisMode4(1);
+//        ledBean.setVoiceContent("");
+//        String s = JSON.toJSONString(ledBean);
+//        String s1= HttpRequest.post(LEDURL)
+//                .timeout(5000)
+//                .body(s)
+//                .execute()
+//                .body();
+//        ResultData resultData = JSON.parseObject(s1,ResultData.class);
+//        byte[] dataX = new byte[resultData.getLenth()];
+//        System.arraycopy(resultData.getDatas(),0,dataX,0,resultData.getLenth());
+//        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
+//        data1 = data1.replaceAll("\r\n", "");
+//        noOpen(request,response,data1);
+//    }
+//
+//}
diff --git a/src/main/java/com/boying/controller/car/PlateServlet3.java b/src/main/java/com/boying/controller/car/PlateServlet3.java
index 7c4822d..0592be6 100644
--- a/src/main/java/com/boying/controller/car/PlateServlet3.java
+++ b/src/main/java/com/boying/controller/car/PlateServlet3.java
@@ -41,6 +41,8 @@
 //import java.util.Date;
 //import java.util.List;
 //import java.util.concurrent.TimeUnit;
+//import java.util.regex.Matcher;
+//import java.util.regex.Pattern;
 //
 //
 ///**
@@ -128,6 +130,14 @@
 //        response.setContentType("text/json");
 //        PrintWriter out = response.getWriter();
 //        out.println("{\"Response_AlarmInfoPlate\":{\"info\":\"ok\",\"content\":\"...\",\"is_pay\":\"true\"}}");
+//        out.flush();
+//        out.close();
+//    }
+//
+//    protected void easyOpen2(HttpServletRequest request, HttpServletResponse response) throws IOException {
+//        response.setContentType("text/json");
+//        PrintWriter out = response.getWriter();
+//        out.println("{\"Response_AlarmInfoPlate\":{\"ivs_ioctrl\":{\"delay\":1000,\"io\":0,\"value\":2}}}");
 //        out.flush();
 //        out.close();
 //    }
@@ -224,19 +234,19 @@
 //                        redisTemplate.delete("outPark-"+outPark.getBarrierId());
 //                    }
 //                }
-//                if(barrier.getType() == 1){
-//                    boolean in = barrierService.getDateDifIn(park.getId());
-//                    if(in){
-//                        inLedShowDefault(park.getId(),request,response);
-//                    }
-//                }else if(barrier.getType() == 0){
-//                    boolean out = barrierService.getDateDifOut(barrier.getId());
-//                    if(out){
-//                        outLedShowDefault(request,response);
-//                    }
+//
+//            }
+//            if(barrier.getType() == 1){
+//                boolean in = barrierService.getDateDifIn(park.getId());
+//                if(in){
+//                    inLedShowDefault(park.getId(),request,response);
+//                }
+//            }else if(barrier.getType() == 0){
+//                boolean out = barrierService.getDateDifOut(barrier.getId());
+//                if(out){
+//                    outLedShowDefault(request,response);
 //                }
 //            }
-//
 //        }else {
 //            easyNoOpen(request,response);
 //        }
@@ -356,6 +366,15 @@
 //    @PostMapping("/inParkByPhone" )
 //    @ResponseBody
 //    public Object inParkByPhone( EnterPark enterPark){
+//        if(redisTemplate.hasKey("PHONE_"+enterPark.getParkId() + "_" + enterPark.getCarNo())){
+//            return R.failed(null,"璇锋眰棰戠箒");
+//        }
+//        Pattern pattern = Pattern.compile("^1[3-9]\\d{9}$");
+//        Matcher matcher = pattern.matcher(enterPark.getCarNo());
+//        System.out.println();
+//        if(matcher.matches()==false){
+//            return R.failed(null,"杈撳叆闈炴硶鏁版嵁");
+//        }
 //        Barrier barrier = barrierService.getById(enterPark.getBarrierId());
 //        if(barrier!=null){
 //            String num = redisTemplate.opsForValue().get("car_park_" +  barrier.getParkId());
@@ -377,22 +396,25 @@
 //                if(one == null){
 //                    return R.failed("鏈煡璇㈠埌杞﹁締瀛樺湪");
 //                }else {
-//                    if(one.getCarNo().equals("鏃犵墝杞�")){
+//                    if(one.getCarNo().equals("_鏃燺") || one.getCarNo().equals("鏃犵墝杞�")){
+//                        redisTemplate.opsForValue().set("PHONE_"+enterPark.getParkId() + "_" + enterPark.getCarNo(),"true",2,TimeUnit.SECONDS);
 //                        enterPark.setCreateTime(LocalDateTime.now());
-//                        QueryWrapper<Ticket> wrapper = new QueryWrapper<>();
-//                        wrapper.lambda()
-//                                .eq(Ticket::getCarNo,enterPark.getCarNo())
-//                                .eq(Ticket::getPayStatus,1);
-//                        List<Ticket> tickets = ticketService.list(wrapper);
-//                        if(tickets.size()>0){
-//                            enterPark.setStatus(1);//鍙戠幇鏈夎繚绔�
-//                        }
+////                        QueryWrapper<Ticket> wrapper = new QueryWrapper<>();
+////                        wrapper.lambda()
+////                                .eq(Ticket::getCarNo,enterPark.getCarNo())
+////                                .eq(Ticket::getPayStatus,1);
+////                        List<Ticket> tickets = ticketService.list(wrapper);
+////                        if(tickets.size()>0){
+////                            enterPark.setStatus(1);//鍙戠幇鏈夎繚绔�
+////                        }
+//                        enterPark.setStatus(0);
 //                        enterPark.setIsPay(0);
 //                        enterPark.setPrice(0);
 //                        enterParkService.deleteByCarNo(enterPark.getCarNo(),enterPark.getParkId());
 //                        enterParkService.save(enterPark);
 //                        barrier.setType2(1);
-//                        barrierService.updateById(barrier);
+//                        String jsonValue = JSON.toJSONString(barrier);
+//                        redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue);
 //                        return R.ok();
 //                    }else {
 //                        return R.failed("闈炴硶鎿嶄綔");
@@ -411,12 +433,23 @@
 //    @PostMapping("/outParkByPhone" )
 //    @ResponseBody
 //    public Object outParkByPhone(String code2,String carNo){
+//        Pattern pattern = Pattern.compile("^1[3-9]\\d{9}$");
+//        Matcher matcher = pattern.matcher(carNo);
+//        System.out.println();
+//        if(matcher.matches()==false){
+//            return R.failed(null,"杈撳叆闈炴硶鏁版嵁");
+//        }
 //        Barrier byCode2 = barrierService.findByCode2(code2);
 //        QueryWrapper<EnterPark> wrapper =new QueryWrapper<>();
 //        wrapper.lambda()
 //                .eq(EnterPark::getParkId,byCode2.getParkId())
-//                .eq(EnterPark::getCarNo,carNo);
-//        EnterPark one = enterParkService.getOne(wrapper);
+//                .eq(EnterPark::getCarNo,carNo)
+//                .orderByDesc(EnterPark::getId);
+//        List<EnterPark> list = enterParkService.list(wrapper);
+//        EnterPark one = null;
+//        if(list !=null && list.size()>0){
+//            one = list.get(0);
+//        }
 //        if(one != null){
 //            double money = 0.0;
 //            String toDayHrMinSec = null;
@@ -437,7 +470,7 @@
 //            try {
 //                long l = outPark.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli() - one.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli();
 //                outPark.setTime(l/(1000*60));
-//                toDayHrMinSec = DateUtilOther.millisToDayHrMinSec(l/(1000*60));
+//                toDayHrMinSec = DateUtilOther.millisToDayHrMinySec(l/(1000*60));
 //                money = costRuleService.getMoney(one.getParkId(), outPark.getEnterTime(), outPark.getCreateTime(), 1);
 //
 //                //鍏ュ満璁板綍淇濆瓨涓�涓�
@@ -464,7 +497,8 @@
 //                String s= "1."+byCode2.getCarNo()+"璇ヨ溅涓嶉渶瑕佺即璐筡n";
 //                writeTxt2(s);
 //                byCode2.setType2(1);
-//                barrierService.updateById(byCode2);
+//                String jsonValue = JSON.toJSONString(byCode2);
+//                redisTemplate.opsForValue().set("barrier-"+byCode2.getCode(), jsonValue);
 //                return R.ok(outPark);
 //            }else {
 //                //闇�瑕佺即璐规垨鑰呮湁杩濈珷
@@ -472,6 +506,8 @@
 //                String s= "1."+byCode2.getCarNo()+"璇ヨ溅闇�瑕佺即璐筡n";
 //                writeTxt2(s);
 //                barrierService.updateById(byCode2);
+//                String jsonValue = JSON.toJSONString(byCode2);
+//                redisTemplate.opsForValue().set("barrier-"+byCode2.getCode(), jsonValue);
 //                return R.ok(outPark);
 //            }
 //
@@ -653,7 +689,7 @@
 //            writeTxt2(s);
 //            String jsonValue = JSON.toJSONString(outPark);
 //            redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
-//            outLedShow(barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,0);
+//            outLedShow(outPark,barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,0);
 //        }else {
 //            //闇�瑕佺即璐规垨鑰呮湁杩濈珷
 //            System.out.println(outPark.getCarNo()+"璇ヨ溅闇�瑕佺即璐�"+outPark.getPrice());
@@ -665,7 +701,7 @@
 //            outParkLogService.saveOrUpdate(byOutPark);
 //            String jsonValue = JSON.toJSONString(outPark);
 //            redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
-//            outLedShow(barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,1);
+//            outLedShow(outPark,barrier.getCode(),barrier.getCarNo(),outPark.getPrice(),toDayHrMinSec,barrier.getParkId(),request,response,1);
 //        }
 //        return money;
 //    }
@@ -740,9 +776,9 @@
 //                    }
 //                }
 //            }
-//            if(StringUtils.isBlank(carDay) && !carNo.equals("鏃犵墝杞�")){
+//            if(StringUtils.isBlank(carDay) && !carNo.equals("_鏃燺") && !carNo.equals("鏃犵墝杞�")){
 //                carDay = "娆㈣繋鍏変复";
-//            }else if(StringUtils.isBlank(carDay) && carNo.equals("鏃犵墝杞�")){
+//            }else if(StringUtils.isBlank(carDay) || carNo.equals("_鏃燺") || carNo.equals("鏃犵墝杞�")){
 //                carDay = "鎷掔粷椹跺叆";
 //            }
 //
@@ -766,7 +802,7 @@
 //            String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
 //            data1 = data1.replaceAll("\r\n", "");
 //
-//            if(!carNo.equals("鏃犵墝杞�")){
+//            if(!carNo.equals("_鏃燺") && !carNo.equals("鏃犵墝杞�")){
 //                open(request,response,data1);//鍏ュ満寮�闂�
 //            }else {
 //                noOpen(request,response,data1);
@@ -818,7 +854,7 @@
 //        noOpen(request,response,data1);//鍏ュ満寮�闂�
 //    }
 //
-//    public void outLedShow(String ledId,String carNo,Double price,String timeStamp,Integer parkId,HttpServletRequest request, HttpServletResponse response,int type) throws ServletException, IOException {
+//    public void outLedShow(OutPark outPark,String ledId,String carNo,Double price,String timeStamp,Integer parkId,HttpServletRequest request, HttpServletResponse response,int type) throws ServletException, IOException {
 //        String redisnum = redisTemplate.opsForValue().get("car_park_" + parkId);
 //        Park park = parkService.getById(parkId);
 //        LedBean ledBean = new LedBean();
@@ -841,7 +877,7 @@
 //        String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "=";
 //        data1 = data1.replaceAll("\r\n", "");
 //        if(type == 0){
-//            if(carNo.equals("鏃犵墝杞�")){
+//            if(carNo.equals("_鏃燺") || carNo.equals("鏃犵墝杞�")){
 //                noOpen(request,response,data1);
 //            }else {
 //                if(timeStamp.contains("璁板綍寮傚父")){
@@ -870,21 +906,26 @@
 //                }else {
 //                    //寮�闂�
 //                    open(request,response,data1);
-//                    enterParkService.deleteByCarNo(carNo, parkId);
+//
+//                    //缂撳瓨鍦╮edis閲�,蹇冭烦鎺ュ彛鍘绘姮鏉�
+//                    String jsonValue = JSON.toJSONString(outPark);
+//                    redisTemplate.opsForValue().set("outPark-"+outPark.getBarrierId(), jsonValue);
+//
+//                    //enterParkService.deleteByCarNo(carNo, parkId);
 //                    redisTemplate.opsForValue().set("park_change_in_"+parkId,"true",1, TimeUnit.DAYS);
-//                    int i = Integer.parseInt(redisnum);
-//                    i--;
-//                    if(i<0){
-//                        String s= "2."+carNo+"锛屽満鍐呭仠杞︽暟涓�0\n";
-//                        writeTxt2(s);
-//                        redisTemplate.opsForValue().set("car_park_" + parkId,"0",30, TimeUnit.DAYS);
-//                        redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
-//                    }else {
-//                        String s= "2."+carNo+"锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
-//                        writeTxt2(s);
-//                        redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(i),30, TimeUnit.DAYS);
-//                        redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
-//                    }
+////                    int i = Integer.parseInt(redisnum);
+////                    i--;
+////                    if(i<0){
+////                        String s= "2."+carNo+"锛屽満鍐呭仠杞︽暟涓�0\n";
+////                        writeTxt2(s);
+////                        redisTemplate.opsForValue().set("car_park_" + parkId,"0",30, TimeUnit.DAYS);
+////                        redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
+////                    }else {
+////                        String s= "2."+carNo+"锛屽満鍐呭仠杞︽暟涓�"+i+"\n";
+////                        writeTxt2(s);
+////                        redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(i),30, TimeUnit.DAYS);
+////                        redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS);
+////                    }
 //                }
 //
 //            }
diff --git a/src/main/java/com/boying/controller/car/ServerMQTT.java b/src/main/java/com/boying/controller/car/ServerMQTT.java
index e2254a9..1c14370 100644
--- a/src/main/java/com/boying/controller/car/ServerMQTT.java
+++ b/src/main/java/com/boying/controller/car/ServerMQTT.java
@@ -1,7 +1,12 @@
 package com.boying.controller.car;
 
+import com.google.gson.Gson;
 import org.eclipse.paho.client.mqttv3.*;
 import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * @author kdq
@@ -15,25 +20,35 @@
     public static void main(String[] args) throws MqttException {
         ServerMQTT server = new ServerMQTT();
 
+        Map<String, Object> map2 = new HashMap<>();
+
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("t",System.currentTimeMillis());
+        map.put("f","control");
+        map.put("d","JYGL-MTXX");
+        map.put("s","0001");
+        Gson gson =new Gson();
+        String str = gson.toJson(map);
         server.message = new MqttMessage();
         server.message.setQos(2);
         server.message.setRetained(true);
-        server.message.setPayload("ServerMQTT".getBytes());
+        server.message.setPayload(str.getBytes());
         server.publish(server.topic , server.message);
-        System.out.println(server.message.isRetained() + "------ratained鐘舵��");
+        System.out.println("message鐨勪繚鐣欑姸鎬佷负锛�"+server.message.isRetained() + "------ratained鐘舵��");
     }
 
     //MQTT瀹夎鐨勬湇鍔″櫒鍦板潃鍜岀鍙e彿
-    public static final String HOST = "tcp://39.96.92.240:9092";
+    public static final String HOST = "tcp://47.92.115.108:1883";
     //瀹氫箟涓�涓富棰�
-    public static final String TOPIC = "/device/message/up/ivs_result";
+    public static final String TOPIC = "/MXXT";
     //瀹氫箟MQTT鐨処D锛屽彲浠ュ湪MQTT鏈嶅姟閰嶇疆涓寚瀹�
-    private static final String clientid = "client-1";
+    private static final String clientid = "jzadmin"+System.currentTimeMillis();
 
     private MqttClient client;
     private MqttTopic topic;
-    private String userName = "mqtt";
-    private String passWord = "mqtt";
+    private String userName = "jzadmin";
+    private String passWord = "Sys123456";
     private MqttMessage message;
 
     /**
@@ -66,7 +81,7 @@
                 }
                 @Override
                 public void deliveryComplete(IMqttDeliveryToken token) {
-                    System.out.println("deliveryComplete---------" + token.isComplete());
+                    System.out.println("mqtt鐨刣eliveryComplete鍥炶皟鐘舵�佷负---------" + token.isComplete());
                 }
                 @Override
                 public void messageArrived(String topic, MqttMessage message) throws Exception {
@@ -86,8 +101,9 @@
      * t鎺ㄩ�佹秷鎭�
      */
     public void publish(MqttTopic topic , MqttMessage message) throws MqttPersistenceException, MqttException {
+        topic = client.getTopic(TOPIC);
         MqttDeliveryToken token = topic.publish(message);
         token.waitForCompletion();
-        System.out.println("message is published completely! " + token.isComplete());
+        System.out.println("message 鎴愬姛鍙戦��! token.isComplete鐘舵�佷负锛�" + token.isComplete());
     }
 }
diff --git a/src/main/java/com/boying/controller/phone/MonthFeePayController.java b/src/main/java/com/boying/controller/phone/MonthFeePayController.java
new file mode 100644
index 0000000..5037bce
--- /dev/null
+++ b/src/main/java/com/boying/controller/phone/MonthFeePayController.java
@@ -0,0 +1,356 @@
+package com.boying.controller.phone;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.http.Header;
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.boying.common.R;
+import com.boying.common.SystemConfigProperties;
+import com.boying.entity.*;
+import com.boying.entity.vo.MonthFeePayVo;
+import com.boying.service.*;
+import com.boying.util.LicensePlateValidator;
+import com.google.gson.Gson;
+import lombok.Data;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.time.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName MonthFeePayController.java
+ * @Description TODO
+ * @createTime 2024骞�12鏈�20鏃� 16:14:00
+ */
+@RestController
+@RequestMapping("ffzf/monthFeePay")
+@RequiredArgsConstructor
+public class MonthFeePayController {
+
+    private final PaymentLogService paymentLogService;
+    private final EnterParkService enterParkService;
+    private final PayLogService payLogService;
+    private final WhiteListService whiteListService;
+    private final SystemConfigProperties systemConfigProperties;
+    private final WXService wxService;
+    private final ParkService parkService;
+
+    @PostMapping("/pay")
+    public Object pay(MonthFeePayVo vo) {
+        if(!LicensePlateValidator.isValidLicensePlate(vo.getCarNo())){
+            return R.failed("杞︾墝鍙峰~鍐欓敊璇�");
+        }
+        if(vo.getPhone() == null){
+            return R.failed("鏈~鍐欐墜鏈哄彿");
+        }
+        boolean validChineseMobileNumber = isValidChineseMobileNumber(vo.getPhone());
+        if(!validChineseMobileNumber){
+            return R.failed("鎵嬫満鍙锋湁璇�");
+        }
+        QueryWrapper<WhiteList> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda()
+                .eq(WhiteList::getCarNo,vo.getCarNo())
+                .eq(WhiteList::getPayFlag,1);
+        List<WhiteList> list = whiteListService.list(queryWrapper);
+        if(list !=null && list.size()>0){
+            return R.ok(list.get(0));
+        }
+        return R.ok(null,"鏈煡璇㈠埌鏈堢エ");
+    }
+    @PostMapping("/findWhiteList")
+    public Object findWhiteList(MonthFeePayVo vo) {
+        QueryWrapper<WhiteList> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda()
+                .eq(WhiteList::getCarNo,vo.getCarNo())
+                .eq(WhiteList::getPhone,vo.getPhone());
+        List<WhiteList> list = whiteListService.list(queryWrapper);
+        if(list !=null && list.size()>0){
+            return R.ok(list.get(0));
+        }else {
+            return R.failed("鏈煡璇㈠埌姝ゆ湀绁�");
+        }
+    }
+
+    /**
+     * 鑾峰彇寰俊openid
+     */
+    @PostMapping("getOpenId")
+    public Object park(MonthFeePayVo vo){
+        String openIdByCode = wxService.getOpenIdByCode(vo.getCode());
+        PaymentLog paymentLog = new PaymentLog();
+        paymentLog.setType(vo.getType());
+        paymentLog.setParkId(vo.getParkId());
+        paymentLog.setCarNo(vo.getCarNo());
+        paymentLog.setPhone(vo.getPhone());
+        paymentLog.setName(vo.getName());
+        paymentLog.setMoney(vo.getMoney());
+        paymentLog.setStartTime(vo.getStartTime());
+        paymentLog.setEndTime(vo.getEndTime());
+        paymentLogService.save(paymentLog);
+        return payByWX(paymentLog,openIdByCode);
+    }
+
+    /**
+     * 鑾峰彇闃块噷鏀粯
+     */
+    @PostMapping("getAiLi")
+    public Object getAiLi(MonthFeePayVo vo){
+        PaymentLog paymentLog = new PaymentLog();
+        paymentLog.setType(vo.getType());
+        paymentLog.setParkId(vo.getParkId());
+        paymentLog.setCarNo(vo.getCarNo());
+        paymentLog.setPhone(vo.getPhone());
+        paymentLog.setName(vo.getName());
+        paymentLog.setMoney(vo.getMoney());
+        paymentLog.setStartTime(vo.getStartTime());
+        paymentLog.setEndTime(vo.getEndTime());
+        paymentLogService.save(paymentLog);
+        return payByAli(paymentLog);
+    }
+
+    @PostMapping("/paySuccess")
+    public Object paySuccess(PaymentLog vo,Integer flag) {
+        if(flag == null || flag == 0){
+            return  R.failed("缂磋垂澶辫触");
+        }else {
+            //缂磋垂鎴愬姛锛屾柊澧炵櫧鍚嶅崟
+            WhiteList whiteList = new WhiteList();
+            whiteList.setPayFlag(1);
+            whiteList.setCarNo(vo.getCarNo());
+            whiteList.setStartTime(vo.getStartTime());
+            whiteList.setEndTime(vo.getEndTime());
+            whiteList.setPhone(vo.getPhone());
+            if(vo.getType()==1){
+                QueryWrapper<Park> wrapper = new QueryWrapper<>();
+                wrapper.lambda()
+                        .select(Park::getId);
+                List<Park> list = parkService.list(wrapper);
+                String collect = list.stream().map(Park::getId).map(String::valueOf).collect(Collectors.joining(","));
+                whiteList.setParkIds(collect);
+                whiteList.setType(1);
+            }else {
+                whiteList.setParkIds(vo.getParkId()+"");
+                whiteList.setParkId(vo.getParkId());
+                whiteList.setType(1);
+            }
+            whiteListService.save(whiteList);
+            return R.ok();
+        }
+
+
+    }
+
+    /**
+     * 寰俊缂磋垂
+     */
+    @PostMapping("payByWX")
+    public Object payByWX(PaymentLog paymentLog,String openId){
+        System.out.println("寮�濮嬫敮浠�");
+        String xtyhpay = systemConfigProperties.getXTYHPAY();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+        String format = sdf.format(new Date());
+        LocalDateTime date3 = LocalDateTime.now();
+        Map<String,Object> map = new HashMap<>();
+        map.put("encoding","UTF-8");
+        map.put("signMethod","01");
+        map.put("sdkAppId",systemConfigProperties.getXTYHMERID());
+        map.put("txnType","1006");
+        map.put("txnSubType","100603");
+        map.put("txnAccType","02");
+        map.put("secMerAppId",systemConfigProperties.getXTYHAPPID());
+        map.put("txnSubOpenid",openId);
+        map.put("txnProductId",paymentLog.getId()+"");
+        map.put("aesWay","01");
+        map.put("merId",systemConfigProperties.getXTYHMERID());
+        map.put("merName",systemConfigProperties.getXTYHMERNAME());
+        map.put("backEndUrl",systemConfigProperties.getYPRESULT());
+        map.put("txnOrderId",paymentLog.getId()+""+format);
+        map.put("txnOrderTime",format);
+        map.put("txnOrderBody",paymentLog.getCarNo()+"鏈堢エ缂磋垂");
+        map.put("txnAmt",Math.round(paymentLog.getMoney() * 100)+"");
+        map.put("txnCcyType","156");
+
+        Map<String, String> stringStringMap = wxService.addSign(map);
+        map.put("certId",stringStringMap.get("certId"));
+        map.put("signAture",stringStringMap.get("signAture"));
+        Gson gson =new Gson();
+        String str = gson.toJson(map);
+        System.out.println("璇锋眰鎶ユ枃锛�"+str);
+
+        String body = HttpRequest.post(xtyhpay)
+                .header(Header.CONTENT_TYPE, "application/json")
+                .body(str)
+                .timeout(15000)
+                .execute()
+                .body();
+        System.out.println(paymentLog.getId()+"鍝嶅簲鎶ユ枃锛�"+body);
+
+        JSONObject map1 = JSON.parseObject(body);
+        String respCode = (String)map1.get("respCode");
+        if(respCode.equals("0000")){
+            String respTxnSsn = (String)map1.get("respTxnSsn");
+            String respTxnTime = (String)map1.get("respTxnTime");
+            String respData = (String)map1.get("respData");
+            Map map2 = gson.fromJson(respData, Map.class);
+            String appId = (String)map2.get("appId");
+            String timeStamp = (String)map2.get("timeStamp");
+            String nonceStr = (String)map2.get("nonceStr");
+            String signType = (String)map2.get("signType");
+            String package1 = (String)map2.get("package");
+            String paySign = (String)map2.get("paySign");
+            Map<String,String> resultMap = new HashMap<>();
+            resultMap.put("appId",appId);
+            resultMap.put("timeStamp",timeStamp);
+            resultMap.put("nonceStr",nonceStr);
+            resultMap.put("signType",signType);
+            resultMap.put("package",package1);
+            resultMap.put("paySign",paySign);
+            PayLog payLog = new PayLog();
+            payLog.setOutParkId(paymentLog.getId());
+            payLog.setCode2(respTxnSsn);
+            payLog.setPayTime(LocalDateTime.now());
+            payLog.setTxnOrderId(paymentLog.getId()+""+format);
+            payLog.setTxnOrderTime(format);
+            payLog.setRespTxnTime(respTxnTime);
+            payLog.setType(1);
+            payLogService.save(payLog);
+            return R.ok(resultMap,null);
+        }
+        String respMsg = (String)map1.get("respMsg");
+        return R.failed(respCode+":"+respMsg);
+    }
+
+    /**
+     * 闃块噷缂磋垂
+     */
+    @PostMapping("payByAli")
+    public Object payByAli(PaymentLog paymentLog){
+        String xtyhpay = systemConfigProperties.getXTYHPAY();
+        LocalDateTime date3 = LocalDateTime.now();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+        String format = sdf.format(new Date());
+        Map<String,Object> map = new HashMap<>();
+        map.put("encoding","UTF-8");
+        map.put("signMethod","01");
+        map.put("sdkAppId",systemConfigProperties.getXTYHMERID());
+        map.put("txnType","1007");
+        map.put("txnSubType","100702");
+        map.put("txnAccType","03");
+        map.put("aesWay","01");
+        map.put("merId",systemConfigProperties.getXTYHMERID());
+        map.put("merName",systemConfigProperties.getXTYHMERNAME());
+        map.put("backEndUrl",systemConfigProperties.getXTYHRESULT());
+        map.put("txnOrderId",paymentLog.getId()+""+format);
+        map.put("txnOrderTime",format);
+        map.put("txnOrderBody",paymentLog.getCarNo()+"鏈堢エ缂磋垂");
+        map.put("txnAmt",Math.round(paymentLog.getMoney() * 100)+"");
+        map.put("txnCcyType","156");
+
+        Map<String, String> stringStringMap = wxService.addSign(map);
+        map.put("certId",stringStringMap.get("certId"));
+        map.put("signAture",stringStringMap.get("signAture"));
+        Gson gson =new Gson();
+        String str = gson.toJson(map);
+        System.out.println("璇锋眰鎶ユ枃锛�"+str);
+        String body = HttpRequest.post(xtyhpay)
+                .header(Header.CONTENT_TYPE, "application/json")
+                .body(str)
+                .timeout(15000)
+                .execute()
+                .body();
+        System.out.println(paymentLog.getId()+"鍝嶅簲鎶ユ枃锛�"+body);
+
+        JSONObject map1 = JSON.parseObject(body);
+        String respCode = (String)map1.get("respCode");
+        if(respCode.equals("0000")){
+            String respTxnSsn = (String)map1.get("respTxnSsn");
+            String respData = (String)map1.get("respData");
+            String respTxnTime = (String)map1.get("respTxnTime");
+            Map map2 = gson.fromJson(respData, Map.class);
+            String qrCode = (String)map2.get("qrCode");
+            PayLog payLog = new PayLog();
+            payLog.setOutParkId(paymentLog.getId());
+            payLog.setCode2(respTxnSsn);
+            payLog.setQrCode(qrCode);
+            payLog.setPayTime(LocalDateTime.now());
+            payLog.setTxnOrderId(paymentLog.getId()+""+format);
+            payLog.setTxnOrderTime(format);
+            payLog.setRespTxnTime(respTxnTime);
+            payLog.setType(1);
+            payLogService.save(payLog);
+            return R.ok(null,qrCode);
+        }
+        String respMsg = (String)map1.get("respMsg");
+        return R.failed(respCode+":"+respMsg);
+    }
+
+    /**
+     * 閭㈠彴閾惰鏀粯鍥炶皟鎺ュ彛
+     * @param
+     * @return
+     */
+    @PostMapping("/getResult")
+    public Object getResult(HttpServletRequest request){
+        System.out.println("getResult鏀跺埌璁块棶");
+        String respCode = request.getParameter("respCode");
+        String respTxnSsn = request.getParameter("respTxnSsn");
+        System.out.println(respCode+":"+respTxnSsn);
+        if(respCode != null){
+            if(respCode.equals("0000")){
+                //浜ゆ槗鎴愬姛,鏍规嵁娴佹按鍙锋煡璇㈠嚭鍦鸿褰�
+                PayLog payLog = payLogService.findByPayCode(respTxnSsn);
+                if(payLog == null){
+                    return R.failed("鏈煡璇㈠埌娴佹按璁板綍");
+                }else {
+                    PaymentLog byPayCode = paymentLogService.getById(payLog.getOutParkId());
+                    if(byPayCode == null){
+                        return R.failed("鏈煡璇㈠埌娴佹按");
+                    }else {
+                        if(byPayCode.getStatus() == 1){
+                            return R.ok(null,"鏈堢エ宸叉敮浠�");
+                        }else {
+                           byPayCode.setStatus(1);
+                            paySuccess(byPayCode,1);
+                            return R.ok(null,"鍥炶皟鎴愬姛");
+                        }
+                    }
+                }
+            }else if(respCode.equals("0002") || respCode.equals("0003") || respCode.equals("0003") || respCode.equals("0012")){
+                //浜ゆ槗鎴愬姛锛岃秴鏃讹紝鏈槑锛岀◢鍚庡彂璧锋煡璇�
+            }else if(respCode.equals("0011")){
+                //浜ゆ槗
+            }
+        }else {
+            return R.failed("鏈帴鏀跺埌鍏ュ弬");
+        }
+        return R.failed(null,"璇锋眰澶辫触");
+    }
+
+    //鍒ゆ柇鎵嬫満鍙�
+    public static boolean isValidChineseMobileNumber(String number) {
+        // 姝e垯琛ㄨ揪寮�
+        String regex = "^(13[0-9]|14[57]|15[0-35-9]|17[0-9]|18[0-9])\\d{8}$";
+        // 缂栬瘧姝e垯琛ㄨ揪寮�
+        Pattern pattern = Pattern.compile(regex);
+        // 鍖归厤
+        Matcher matcher = pattern.matcher(number);
+        // 杩斿洖鏄惁鍖归厤缁撴灉
+        return matcher.matches();
+    }
+}
diff --git a/src/main/java/com/boying/controller/phone/YCPayController.java b/src/main/java/com/boying/controller/phone/YCPayController.java
index 9f54dde..eb20fea 100644
--- a/src/main/java/com/boying/controller/phone/YCPayController.java
+++ b/src/main/java/com/boying/controller/phone/YCPayController.java
@@ -64,6 +64,8 @@
     private final OutParkLogService outParkLogService;
     private  final StringRedisTemplate redisTemplate;
 
+    private final PaymentLogService paymentLogService;
+
 
     /**
      * 鏌ヨ璁㈠崟鎺ュ彛
@@ -77,10 +79,43 @@
             return R.failed("鍙傛暟涓虹┖");
         }
         OutPark byId = outParkService.getById(queryId);
-        if(byId.getTime() > 0){
-            byId.setTimeStr(DateUtilOther.millisToDayHrMinSec(new Double(byId.getTime()).longValue()));
+        PaymentLog byId1 = paymentLogService.getById(queryId);
+        if(byId1 !=null && byId !=null){
+            if(byId.getCreateTime().isAfter(byId1.getCreateTime())){
+                //鍑哄満琛ㄦ椂闂村湪鏈堢エ鍚�
+                if(byId.getTime() > 0){
+                    byId.setTimeStr(DateUtilOther.millisToDayHrMinSec(new Double(byId.getTime()).longValue()));
+                }
+                return R.ok(byId,"璇锋眰鎴愬姛");
+            }else {
+                //鍑哄満琛ㄦ椂闂村湪鏈堢エ鍚�
+                OutPark outPark = new OutPark();
+                outPark.setId(byId1.getId());
+                outPark.setCreateTime(LocalDateTime.now());
+                outPark.setEnterTime(LocalDateTime.now());
+                outPark.setTime(0.0);
+                outPark.setTimeStr(DateUtilOther.millisToDayHrMinSec(new Double(outPark.getTime()).longValue()));
+                outPark.setPrice(byId1.getMoney());
+                return R.ok(outPark,"璇锋眰鎴愬姛");
+            }
         }
-        return R.ok(byId,"璇锋眰鎴愬姛");
+        if(byId == null){
+            OutPark outPark = new OutPark();
+            outPark.setId(byId1.getId());
+            outPark.setCreateTime(LocalDateTime.now());
+            outPark.setEnterTime(LocalDateTime.now());
+            outPark.setTime(0.0);
+            outPark.setTimeStr(DateUtilOther.millisToDayHrMinSec(new Double(outPark.getTime()).longValue()));
+            outPark.setPrice(byId1.getMoney());
+            return R.ok(outPark,"璇锋眰鎴愬姛");
+        }
+        if(byId1 == null){
+            if(byId.getTime() > 0){
+                byId.setTimeStr(DateUtilOther.millisToDayHrMinSec(new Double(byId.getTime()).longValue()));
+            }
+            return R.ok(byId,"璇锋眰鎴愬姛");
+        }
+        return R.failed("鏈煡璇㈠埌鏁版嵁");
     }
 
     /**
diff --git a/src/main/java/com/boying/entity/PayLog.java b/src/main/java/com/boying/entity/PayLog.java
index bb44a0c..a2634aa 100644
--- a/src/main/java/com/boying/entity/PayLog.java
+++ b/src/main/java/com/boying/entity/PayLog.java
@@ -30,6 +30,10 @@
      */
     private Integer outParkId;
     /**
+     * 1:鏈堢エ杞�
+     */
+    private Integer type;
+    /**
      * 娴佹按鍙�
      */
     private String code2;
diff --git a/src/main/java/com/boying/entity/PaymentLog.java b/src/main/java/com/boying/entity/PaymentLog.java
new file mode 100644
index 0000000..c1321ad
--- /dev/null
+++ b/src/main/java/com/boying/entity/PaymentLog.java
@@ -0,0 +1,49 @@
+package com.boying.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+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 javax.persistence.Transient;
+import java.util.Date;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName PaymentLog.java
+ * @Description TODO
+ * @createTime 2024骞�12鏈�19鏃� 15:36:00
+ */
+@Data
+@TableName("payment_log")
+@javax.persistence.Table(name = "payment_log")
+@Entity
+@org.hibernate.annotations.Table(appliesTo = "payment_log", comment = "鏈堢エ缂磋垂璁板綍琛�")
+@ApiModel(value = "鏈堢エ缂磋垂璁板綍琛�")
+public class PaymentLog extends BaseEntity<PaymentLog> {
+
+    private String carNo;
+    private String phone;
+    private String name;
+    private Double money;
+    private Integer parkId;
+    private Integer type;
+    private Integer status;
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date startTime;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date endTime;
+
+    @Transient
+    @TableField(exist = false)
+    private String parkName;
+
+}
diff --git a/src/main/java/com/boying/entity/WhiteList.java b/src/main/java/com/boying/entity/WhiteList.java
index 1870508..31db2ad 100644
--- a/src/main/java/com/boying/entity/WhiteList.java
+++ b/src/main/java/com/boying/entity/WhiteList.java
@@ -37,6 +37,18 @@
      */
     private int type;
 
+    private String phone;
+    /**
+     * 0:鏈即璐� 1:缂磋垂
+     */
+    private int payFlag;
+    /**
+     * 0:鍗曚釜 1:鍏ㄩ儴
+     */
+    private int isAll;
+
+
+
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date startTime;
diff --git a/src/main/java/com/boying/entity/WhiteListRule.java b/src/main/java/com/boying/entity/WhiteListRule.java
new file mode 100644
index 0000000..52116c2
--- /dev/null
+++ b/src/main/java/com/boying/entity/WhiteListRule.java
@@ -0,0 +1,45 @@
+package com.boying.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.boying.common.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import javax.persistence.Entity;
+import javax.persistence.Transient;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName WhiteListRule.java
+ * @Description TODO
+ * @createTime 2024骞�12鏈�13鏃� 14:23:00
+ */
+@Data
+@TableName("white_list_rule")
+@javax.persistence.Table(name = "white_list_rule")
+@Entity
+@org.hibernate.annotations.Table(appliesTo = "white_list_rule", comment = "鏈堢杞﹁鍒�")
+@ApiModel(value = "鏈堢杞﹁鍒�")
+public class WhiteListRule extends BaseEntity<WhiteListRule> {
+
+    /**
+     * 0 鍗曚釜锛�1 鍏ㄩ儴
+     */
+    private Integer type;
+
+    private Integer parkId;
+
+    private Double monthMoney;
+
+    private Double threeMonthMoney;
+
+    private Double sixMonthMoney;
+
+    private Double yearMoney;
+
+    @Transient
+    @TableField(exist = false)
+    private String name;
+}
diff --git a/src/main/java/com/boying/entity/vo/MonthFeePayVo.java b/src/main/java/com/boying/entity/vo/MonthFeePayVo.java
new file mode 100644
index 0000000..9d87d1c
--- /dev/null
+++ b/src/main/java/com/boying/entity/vo/MonthFeePayVo.java
@@ -0,0 +1,25 @@
+package com.boying.entity.vo;
+
+import com.boying.entity.PaymentLog;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName MonthFeePayVo.java
+ * @Description TODO
+ * @createTime 2024骞�12鏈�20鏃� 16:36:00
+ */
+@Data
+public class MonthFeePayVo extends PaymentLog {
+
+       private Integer enterParkId;
+       private Integer outParkId;
+       private String code;
+
+
+}
diff --git a/src/main/java/com/boying/mapper/PaymentLogMapper.java b/src/main/java/com/boying/mapper/PaymentLogMapper.java
new file mode 100644
index 0000000..37a810c
--- /dev/null
+++ b/src/main/java/com/boying/mapper/PaymentLogMapper.java
@@ -0,0 +1,16 @@
+package com.boying.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.boying.entity.PaymentLog;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName PaymentLogMapper.java
+ * @Description TODO
+ * @createTime 2023骞�12鏈�12鏃� 17:36:00
+ */
+@Mapper
+public interface PaymentLogMapper extends BaseMapper<PaymentLog> {
+}
diff --git a/src/main/java/com/boying/mapper/WhiteListRuleMapper.java b/src/main/java/com/boying/mapper/WhiteListRuleMapper.java
new file mode 100644
index 0000000..b417b03
--- /dev/null
+++ b/src/main/java/com/boying/mapper/WhiteListRuleMapper.java
@@ -0,0 +1,10 @@
+package com.boying.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.boying.entity.WhiteListRule;
+import org.apache.ibatis.annotations.Mapper;
+
+
+@Mapper
+public interface WhiteListRuleMapper extends BaseMapper<WhiteListRule> {
+}
diff --git a/src/main/java/com/boying/service/PaymentLogService.java b/src/main/java/com/boying/service/PaymentLogService.java
new file mode 100644
index 0000000..cbab354
--- /dev/null
+++ b/src/main/java/com/boying/service/PaymentLogService.java
@@ -0,0 +1,16 @@
+package com.boying.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.boying.entity.PayLog;
+import com.boying.entity.PaymentLog;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName PaymentLogService.java
+ * @Description TODO
+ * @createTime 2023骞�12鏈�12鏃� 17:35:00
+ */
+public interface PaymentLogService extends IService<PaymentLog> {
+
+}
diff --git a/src/main/java/com/boying/service/WhiteListRuleService.java b/src/main/java/com/boying/service/WhiteListRuleService.java
new file mode 100644
index 0000000..61bea8e
--- /dev/null
+++ b/src/main/java/com/boying/service/WhiteListRuleService.java
@@ -0,0 +1,15 @@
+package com.boying.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.boying.entity.WhiteListRule;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName WhiteListRuleService.java
+ * @Description TODO
+ * @createTime 2022骞�11鏈�21鏃� 11:23:00
+ */
+public interface WhiteListRuleService extends IService<WhiteListRule> {
+
+}
diff --git a/src/main/java/com/boying/service/impl/PaymentLogServiceImpl.java b/src/main/java/com/boying/service/impl/PaymentLogServiceImpl.java
new file mode 100644
index 0000000..730796b
--- /dev/null
+++ b/src/main/java/com/boying/service/impl/PaymentLogServiceImpl.java
@@ -0,0 +1,21 @@
+package com.boying.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.boying.entity.PaymentLog;
+import com.boying.mapper.PaymentLogMapper;
+import com.boying.service.PaymentLogService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName PayLogServiceImpl.java
+ * @Description TODO
+ * @createTime 2023骞�12鏈�12鏃� 17:35:00
+ */
+@Service
+@AllArgsConstructor
+public class PaymentLogServiceImpl extends ServiceImpl<PaymentLogMapper, PaymentLog> implements PaymentLogService {
+}
diff --git a/src/main/java/com/boying/service/impl/WhiteListRuleServiceImpl.java b/src/main/java/com/boying/service/impl/WhiteListRuleServiceImpl.java
new file mode 100644
index 0000000..9a70ca0
--- /dev/null
+++ b/src/main/java/com/boying/service/impl/WhiteListRuleServiceImpl.java
@@ -0,0 +1,19 @@
+package com.boying.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.boying.entity.WhiteListRule;
+import com.boying.mapper.WhiteListRuleMapper;
+import com.boying.service.WhiteListRuleService;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName WhiteListRuleServiceImpl.java
+ * @Description TODO
+ * @createTime 2022骞�11鏈�21鏃� 11:23:00
+ */
+@Service
+public class WhiteListRuleServiceImpl extends ServiceImpl<WhiteListRuleMapper, WhiteListRule> implements WhiteListRuleService {
+}
diff --git a/src/main/java/com/boying/util/LicensePlateValidator.java b/src/main/java/com/boying/util/LicensePlateValidator.java
new file mode 100644
index 0000000..66dd4ab
--- /dev/null
+++ b/src/main/java/com/boying/util/LicensePlateValidator.java
@@ -0,0 +1,33 @@
+package com.boying.util;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName LicensePlateValidator.java
+ * @Description TODO
+ * @createTime 2025骞�01鏈�07鏃� 10:57:00
+ */
+public class LicensePlateValidator {
+    private static final String LICENSE_PLATE_REGEX = "^([浜触娌笣鍐�璞簯杈介粦婀樼殩椴佹柊鑻忔禉璧i剛妗傜敇鏅嬭挋闄曞悏闂借吹闈掕棌宸濆畞鐞间娇棰咥-Z]{1}[a-zA-Z](([ABCDF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[ABCDF]))|[浜触娌笣鍐�璞簯杈介粦婀樼殩椴佹柊鑻忔禉璧i剛妗傜敇鏅嬭挋闄曞悏闂借吹绮ら潚钘忓窛瀹佺惣浣块A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9鎸傚璀︽腐婢砞{1})$";
+    private static final Pattern pattern = Pattern.compile(LICENSE_PLATE_REGEX);
+
+    public static boolean isValidLicensePlate(String licensePlate) {
+        if (licensePlate == null) {
+            return false;
+        }
+        Matcher matcher = pattern.matcher(licensePlate);
+        return matcher.matches();
+    }
+
+    public static void main(String[] args) {
+        String[] testPlates = {"浜珹12345","鍐�DF123456", "娌狟67890", "宸滳00001", "XYZ12345", "浜珹1234"};
+
+        for (String plate : testPlates) {
+            System.out.println("杞︾墝鍙� " + plate + " 鏄惁鏈夋晥: " + isValidLicensePlate(plate));
+        }
+    }
+
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 7c84428..169a884 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -50,7 +50,7 @@
 #椤圭洰閰嶇疆
 ffpark:
   #鍥剧墖涓婁紶鍦板潃
-  uploadPath: D:/FFproject/img/
+  uploadPath: /Users/kongdeqiang/Desktop/
   showImg: ticket/showImg?result=
   #鏈嶅姟绔痠p鍦板潃
   ip: http://183.196.93.178:8088/
@@ -94,6 +94,7 @@
   XTYHPAY: https://xiangniupay.xtbank.com/ifsp-payweb/SOA/txnAccept
   #XTYHRESULT: http://39.96.92.240:8089/ffzf/api/getResult
   XTYHRESULT: http://183.196.93.178:8089/ffzf/api/getResult
+  YPRESULT: http://183.196.93.178:8089/ffzf/monthFeePay/getResult
   #XTYHMERID: 8202309110000001
   XTYHMERID: 8202308300000015
   XTYHMERNAME: 閭兏甯傚嘲宄扮熆鍖烘粡婧愬缓璁惧彂灞曟湁闄愬叕鍙�

--
Gitblit v1.9.1