From ffa5f49a2bcb6311486d00777b3629538eb3e6f0 Mon Sep 17 00:00:00 2001
From: kongdeqiang <123456>
Date: 星期一, 18 三月 2024 17:28:19 +0800
Subject: [PATCH] 新增心跳缓存

---
 src/main/java/com/boying/service/impl/BarrierServiceImpl.java  |   28 +++++-
 src/main/java/com/boying/service/impl/OutParkServiceImpl.java  |   38 ++++++--
 src/main/java/com/boying/controller/car/PlateServlet3.java     |   62 +++++++++------
 src/main/java/com/boying/service/impl/ParkServiceImpl.java     |   23 +++++
 src/main/java/com/boying/util/RedisJsonUtil.java               |   37 +++++++++
 src/main/java/com/boying/service/ParkService.java              |    2 
 src/main/java/com/boying/controller/BarrierController.java     |   30 +++++++
 src/main/java/com/boying/controller/ParkController.java        |    9 ++
 src/main/java/com/boying/controller/phone/YCPayController.java |   11 ++
 9 files changed, 198 insertions(+), 42 deletions(-)

diff --git a/src/main/java/com/boying/controller/BarrierController.java b/src/main/java/com/boying/controller/BarrierController.java
index 3858b25..478572e 100644
--- a/src/main/java/com/boying/controller/BarrierController.java
+++ b/src/main/java/com/boying/controller/BarrierController.java
@@ -8,11 +8,13 @@
 import com.boying.service.BarrierService;
 import com.boying.service.OutParkService;
 import com.boying.service.ParkService;
+import com.boying.util.RedisJsonUtil;
 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.io.IOException;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
 import java.util.List;
@@ -25,6 +27,7 @@
     private final BarrierService barrierService;
     private final OutParkService outParkService;
     private final ParkService parkService;
+    private final RedisJsonUtil redisJsonUtil;
 
     @PostMapping("findPage")
     public Object findPage(Page page, String parkId) {
@@ -48,12 +51,19 @@
     public Object save(Barrier barrier) {
         barrier.setUpdateTime(LocalDateTime.now());
         barrierService.saveOrUpdate(barrier);
+        try {
+            redisJsonUtil.set("barrier-"+barrier.getCode(),barrier);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
         return R.ok("淇濆瓨鎴愬姛");
     }
 
     @PostMapping("delete")
     public Object delete(Integer id) {
+        Barrier byId = barrierService.getById(id);
         barrierService.removeById(id);
+        redisJsonUtil.del("barrier-"+byId.getCode());
         return R.ok("鍒犻櫎鎴愬姛");
     }
 
@@ -77,6 +87,11 @@
         b.setType2(1);
         b.setUpdateTime(LocalDateTime.now());
         barrierService.saveOrUpdate(b);
+        try {
+            redisJsonUtil.set("barrier-"+b.getCode(),b);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
         return R.ok("璇锋眰鎴愬姛");
     }
 
@@ -104,6 +119,11 @@
                b.setType2(1);
                b.setUpdateTime(LocalDateTime.now());
                barrierService.saveOrUpdate(b);
+               try {
+                   redisJsonUtil.set("barrier-"+b.getCode(),b);
+               } catch (IOException e) {
+                   e.printStackTrace();
+               }
                return R.ok("璇锋眰鎴愬姛");
            }else {
                System.out.println("鎵嬪姩寮�鍑哄彛闂�");
@@ -119,12 +139,22 @@
                    b.setType2(1);
                    b.setUpdateTime(LocalDateTime.now());
                    barrierService.saveOrUpdate(b);
+                   try {
+                       redisJsonUtil.set("barrier-"+b.getCode(),b);
+                   } catch (IOException e) {
+                       e.printStackTrace();
+                   }
                    return R.ok("璇锋眰鎴愬姛");
                }else {
                    //璁¤垂
                    b.setType2(1);
                    b.setUpdateTime(LocalDateTime.now());
                    barrierService.saveOrUpdate(b);
+                   try {
+                       redisJsonUtil.set("barrier-"+b.getCode(),b);
+                   } catch (IOException e) {
+                       e.printStackTrace();
+                   }
                    return R.ok("璇锋眰鎴愬姛");
                }
            }
diff --git a/src/main/java/com/boying/controller/ParkController.java b/src/main/java/com/boying/controller/ParkController.java
index dc87fe5..b709e68 100644
--- a/src/main/java/com/boying/controller/ParkController.java
+++ b/src/main/java/com/boying/controller/ParkController.java
@@ -9,6 +9,7 @@
 import com.boying.entity.User;
 import com.boying.service.ParkService;
 import com.boying.service.UserService;
+import com.boying.util.RedisJsonUtil;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -17,6 +18,7 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -32,6 +34,7 @@
     private StringRedisTemplate redisTemplate;
     private final ParkService parkService;
     private final UserService userService;
+    private final RedisJsonUtil redisJsonUtil;
 
     @PostMapping("/findPage")
     public Object findPage(Page page) {
@@ -58,12 +61,18 @@
             redisTemplate.opsForValue().set("car_park_" + park.getId(),"0",30, TimeUnit.DAYS);
             redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
         }
+        try {
+            redisJsonUtil.set("park-"+park.getId(), park);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
         return R.ok("淇濆瓨鎴愬姛");
     }
 
     @PostMapping("/delete")
     public Object delete(Long id) {
         parkService.removeById(id);
+        redisJsonUtil.del("park-"+id);
         return R.ok("鍒犻櫎鎴愬姛");
     }
 
diff --git a/src/main/java/com/boying/controller/car/PlateServlet3.java b/src/main/java/com/boying/controller/car/PlateServlet3.java
index fc8ce0c..c9ec120 100644
--- a/src/main/java/com/boying/controller/car/PlateServlet3.java
+++ b/src/main/java/com/boying/controller/car/PlateServlet3.java
@@ -12,6 +12,7 @@
 import com.boying.service.*;
 import com.boying.util.DateUtilOther;
 import com.boying.util.FileUtil;
+import com.boying.util.RedisJsonUtil;
 import com.boying.util.StringUtil;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
@@ -61,6 +62,7 @@
     private final FileInfoService fileInfoService;
     private final TicketBlackService ticketBlackService;
     private final OutParkLogService outParkLogService;
+    private final RedisJsonUtil redisJsonUtil;
     private final String LEDURL = "http://192.168.31.212:9988/LedShow/IGetResultDataAllLine";
 
     /**
@@ -140,7 +142,7 @@
     @PostMapping("/status")
     public void heart(String serialno,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
         Barrier barrier = barrierService.findByCode(serialno);
-        Park park = parkService.getById(barrier.getParkId());
+        Park park = parkService.getOneById(barrier.getParkId());
         String redis = redisTemplate.opsForValue().get("park_up_" + park.getId());
         String redisnum = redisTemplate.opsForValue().get("car_park_" + park.getId());
         if(barrier!=null){
@@ -171,37 +173,49 @@
                 barrier.setStatus(0);
                 barrier.setUpdateTime(LocalDateTime.now());
                 barrierService.saveOrUpdate(barrier);
+                try {
+                    redisJsonUtil.set("barrier-"+barrier.getCode(),barrier);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
                 easyOpen(request,response);
             }else {
                 //涓嶉渶寮�闂�
                 barrier.setStatus(0);
                 barrier.setUpdateTime(LocalDateTime.now());
                 barrierService.saveOrUpdate(barrier);
-                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";
-                            writeTxt2(s);
-                            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";
-                            writeTxt2(s);
-                            redisTemplate.opsForValue().set("car_park_" + park.getId(),Integer.toString(i),30, TimeUnit.DAYS);
-                            redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
+                try {
+                    redisJsonUtil.set("barrier-"+barrier.getCode(),barrier);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+                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";
+                                writeTxt2(s);
+                                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";
+                                writeTxt2(s);
+                                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());
+                        redisJsonUtil.del("outPark-"+outPark.getBarrierId());
                     }
-                    outPark.setStatus2(1);
-                    outParkService.saveOrUpdate(outPark);
-                    easyOpen(request,response);
-                    easyOpen(request,response);
-                    OutParkLog byOutPark = outParkLogService.getByOutPark(outPark.getCarNo(), outPark.getId());
-                    byOutPark.setOpenTime(LocalDateTime.now());
-                    outParkLogService.saveOrUpdate(byOutPark);
-                    enterParkService.deleteByCarNo(outPark.getCarNo(), barrier.getParkId());
                 }
                 if(barrier.getType() == 1){
                     boolean in = barrierService.getDateDifIn(barrier.getId());
diff --git a/src/main/java/com/boying/controller/phone/YCPayController.java b/src/main/java/com/boying/controller/phone/YCPayController.java
index 368f811..f5ec8c0 100644
--- a/src/main/java/com/boying/controller/phone/YCPayController.java
+++ b/src/main/java/com/boying/controller/phone/YCPayController.java
@@ -14,9 +14,11 @@
 import com.boying.service.*;
 import com.boying.util.DateUtilOther;
 import com.boying.util.HTTPEntityUtil;
+import com.boying.util.RedisJsonUtil;
 import com.google.gson.Gson;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
@@ -36,6 +38,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @author kdq
@@ -60,6 +63,8 @@
     private final EnterParkService enterParkService;
     private final WXService wxService;
     private final OutParkLogService outParkLogService;
+    private final RedisJsonUtil redisJsonUtil;
+
 
     /**
      * 鏌ヨ璁㈠崟鎺ュ彛
@@ -680,6 +685,12 @@
             if(status.equals("03")){
                 outPark.setStatus(1);
                 outParkService.saveOrUpdate(outPark);
+                //缂撳瓨鍦╮edis閲�
+                try {
+                    redisJsonUtil.set("outPark-"+outPark.getBarrierId(), outPark);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
             }
         }
     }
diff --git a/src/main/java/com/boying/service/ParkService.java b/src/main/java/com/boying/service/ParkService.java
index edad453..86d4b18 100644
--- a/src/main/java/com/boying/service/ParkService.java
+++ b/src/main/java/com/boying/service/ParkService.java
@@ -12,4 +12,6 @@
  */
 public interface ParkService extends IService<Park> {
     int count1();
+
+    Park getOneById(Integer parkId);
 }
diff --git a/src/main/java/com/boying/service/impl/BarrierServiceImpl.java b/src/main/java/com/boying/service/impl/BarrierServiceImpl.java
index 1d83789..6303eac 100644
--- a/src/main/java/com/boying/service/impl/BarrierServiceImpl.java
+++ b/src/main/java/com/boying/service/impl/BarrierServiceImpl.java
@@ -14,10 +14,12 @@
 import com.boying.mapper.ParkMapper;
 import com.boying.service.BarrierService;
 import com.boying.service.EnterParkService;
+import com.boying.util.RedisJsonUtil;
 import lombok.AllArgsConstructor;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 
+import java.io.IOException;
 import java.time.ZoneId;
 import java.util.Date;
 import java.util.List;
@@ -37,17 +39,29 @@
     private OutParkMapper outParkMapper;
     private StringRedisTemplate redisTemplate;
     private ParkMapper parkMapper;
+    private RedisJsonUtil redisJsonUtil;
     @Override
     public Barrier findByCode(String code) {
-        QueryWrapper<Barrier> wrapper = new QueryWrapper<>();
-        wrapper.lambda()
-                .eq(Barrier::getCode,code);
-        List<Barrier> list = list(wrapper);
-        if(list.size()>0){
-            return list.get(0);
-        }else {
+        Barrier barrier = null;
+        try {
+           barrier =  redisJsonUtil.get("barrier-"+code,Barrier.class);
+           if(barrier != null){
+               return barrier;
+           }else {
+               QueryWrapper<Barrier> wrapper = new QueryWrapper<>();
+               wrapper.lambda()
+                       .eq(Barrier::getCode,code);
+               List<Barrier> list = list(wrapper);
+               if(list.size()>0){
+                   redisJsonUtil.set("barrier-"+code,list.get(0));
+                   return list.get(0);
+               }
+           }
+        } catch (IOException e) {
+            e.printStackTrace();
             return null;
         }
+      return null;
     }
 
     @Override
diff --git a/src/main/java/com/boying/service/impl/OutParkServiceImpl.java b/src/main/java/com/boying/service/impl/OutParkServiceImpl.java
index fdfe4f7..a18bfbc 100644
--- a/src/main/java/com/boying/service/impl/OutParkServiceImpl.java
+++ b/src/main/java/com/boying/service/impl/OutParkServiceImpl.java
@@ -4,14 +4,17 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.boying.entity.OutPark;
+import com.boying.entity.Park;
 import com.boying.entity.Statistic;
 import com.boying.mapper.OutParkMapper;
 import com.boying.mapper.StatisticMapper;
 import com.boying.service.OutParkService;
 import com.boying.service.StatisticService;
+import com.boying.util.RedisJsonUtil;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.io.IOException;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -27,6 +30,7 @@
 @AllArgsConstructor
 public class OutParkServiceImpl extends ServiceImpl<OutParkMapper, OutPark> implements OutParkService {
     private final OutParkMapper outParkMapper;
+    private final RedisJsonUtil redisJsonUtil;
 
     @Override
     public int count1() {
@@ -109,18 +113,30 @@
 
     @Override
     public OutPark count4(Integer bId) {
-        QueryWrapper<OutPark> wrapper = new QueryWrapper<>();
-        wrapper.lambda()
-                .eq(OutPark::getBarrierId,bId)
-                .eq(OutPark::getStatus,1)
-                .eq(OutPark::getStatus2,0)
-                .orderByDesc(OutPark::getCreateTime);
-        List<OutPark> outParks = outParkMapper.selectList(wrapper);
-        if(outParks.size()>0){
-            return outParks.get(0);
-        }else{
-            return null;
+        OutPark outPark = null;
+        try {
+            outPark =  redisJsonUtil.get("outPark-"+bId, OutPark.class);
+            if(outPark != null){
+                return outPark;
+            }else {
+                QueryWrapper<OutPark> wrapper = new QueryWrapper<>();
+                wrapper.lambda()
+                        .eq(OutPark::getBarrierId,bId)
+                        .eq(OutPark::getStatus,1)
+                        .eq(OutPark::getStatus2,0)
+                        .orderByDesc(OutPark::getCreateTime);
+                List<OutPark> outParks = outParkMapper.selectList(wrapper);
+                if(outParks.size()>0){
+                    redisJsonUtil.set("outPark-"+bId, outParks.get(0));
+                    return outParks.get(0);
+                }else{
+                    return null;
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
         }
+        return null;
     }
 
     @Override
diff --git a/src/main/java/com/boying/service/impl/ParkServiceImpl.java b/src/main/java/com/boying/service/impl/ParkServiceImpl.java
index 4e0d8be..320a6a9 100644
--- a/src/main/java/com/boying/service/impl/ParkServiceImpl.java
+++ b/src/main/java/com/boying/service/impl/ParkServiceImpl.java
@@ -2,15 +2,19 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.boying.entity.Barrier;
 import com.boying.entity.Park;
 import com.boying.entity.Ticket;
 import com.boying.mapper.ParkMapper;
 import com.boying.mapper.TicketMapper;
 import com.boying.service.ParkService;
 import com.boying.service.TicketService;
+import com.boying.util.RedisJsonUtil;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.io.IOException;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -24,6 +28,7 @@
 @AllArgsConstructor
 public class ParkServiceImpl extends ServiceImpl<ParkMapper, Park> implements ParkService {
     private final ParkMapper parkMapper;
+    private final RedisJsonUtil redisJsonUtil;
     @Override
     public int count1() {
         QueryWrapper<Park> wrapper = new QueryWrapper<>();
@@ -36,4 +41,22 @@
             return sum.intValue();
         }
     }
+
+    @Override
+    public Park getOneById(Integer parkId) {
+        Park park = null;
+        try {
+            park =  redisJsonUtil.get("park-"+parkId, Park.class);
+            if(park != null){
+                return park;
+            }else {
+               park = getById(parkId);
+               redisJsonUtil.set("park-"+parkId, park);
+               return park;
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
 }
diff --git a/src/main/java/com/boying/util/RedisJsonUtil.java b/src/main/java/com/boying/util/RedisJsonUtil.java
new file mode 100644
index 0000000..9307bf4
--- /dev/null
+++ b/src/main/java/com/boying/util/RedisJsonUtil.java
@@ -0,0 +1,37 @@
+package com.boying.util;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.ibatis.jdbc.Null;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName RedisJsonUtil.java
+ * @Description TODO
+ * @createTime 2024骞�03鏈�18鏃� 15:20:00
+ */
+@Component
+public class RedisJsonUtil {
+    @Resource
+    private StringRedisTemplate stringRedisTemplate;
+
+    private final ObjectMapper objectMapper = new ObjectMapper();
+
+    public <T> void set(String key, T value) throws IOException {
+        String jsonValue = objectMapper.writeValueAsString(value);
+        stringRedisTemplate.opsForValue().set(key, jsonValue);
+    }
+
+    public <T> T get(String key, Class<T> type) throws IOException {
+        String jsonValue = stringRedisTemplate.opsForValue().get(key);
+        return jsonValue == null ? null : objectMapper.readValue(jsonValue, type);
+    }
+    public void del(String key)  {
+        stringRedisTemplate.delete(key);
+    }
+}

--
Gitblit v1.9.1