From 7156119e51320afd0ffdd0723cd983fd415d61d9 Mon Sep 17 00:00:00 2001
From: kongdeqiang <123456>
Date: 星期四, 26 九月 2024 11:17:34 +0800
Subject: [PATCH] fix : 新增修改车数日志

---
 src/main/java/com/boying/mapper/EditParkNumLogMapper.java            |   17 +++
 src/main/java/com/boying/service/impl/EditParkNumLogServiceImpl.java |   23 ++++
 src/main/java/com/boying/util/IpUtil.java                            |  111 ++++++++++++++++++++++
 src/main/java/com/boying/service/EditParkNumLogService.java          |   16 +++
 src/main/java/com/boying/entity/EditParkNumLog.java                  |   48 +++++++++
 src/main/java/com/boying/controller/BarrierController.java           |   33 ++++++
 src/main/java/com/boying/controller/ParkController.java              |   27 +++++
 7 files changed, 273 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/boying/controller/BarrierController.java b/src/main/java/com/boying/controller/BarrierController.java
index a05bf04..92fc67a 100644
--- a/src/main/java/com/boying/controller/BarrierController.java
+++ b/src/main/java/com/boying/controller/BarrierController.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSON;
 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.Barrier;
@@ -24,7 +25,8 @@
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
 import java.time.temporal.ChronoUnit;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @RestController
 @RequestMapping("ffzf/barrier")
@@ -199,4 +201,33 @@
            }
         }
     }
+
+    @PostMapping("getDisConnect")
+    @Operation(summary = "璁惧鎺夌嚎閫氱煡" , description = "璁惧鎺夌嚎閫氱煡" )
+    public Object getDisConnect() {
+        List<Map<String,Object>> resultlist = new ArrayList<>();
+        String barrierCodeAll = redisTemplate.opsForValue().get("barrierCode_all");
+        if(StringUtils.isBlank(barrierCodeAll)){
+            QueryWrapper<Barrier> wrapper = new QueryWrapper<>();
+            wrapper.select(" code ");
+            List<Barrier> list = barrierService.list(wrapper);
+            String collect = list.stream().map(Barrier::getCode).collect(Collectors.joining(","));
+            redisTemplate.opsForValue().set("barrierCode_all",collect);
+            barrierCodeAll = collect;
+        }
+        for (String s : barrierCodeAll.split(",")) {
+            Barrier barrier = barrierService.findByCode(s);
+            long between = ChronoUnit.SECONDS.between(barrier.getUpdateTime(), LocalDateTime.now());
+            if(between>121){
+                Map<String,Object> map = new HashMap<>();
+                map.put("parkName",parkService.getOneById(barrier.getParkId()).getName());
+                map.put("type",barrier.getType()==0?"鍑哄彛":"鍏ュ彛");
+                map.put("downTime",barrier.getUpdateTime());
+                resultlist.add(map);
+            }
+        }
+        Collections.sort(resultlist, (m1, m2)-> String.valueOf(m2.get("downTime")).compareTo(String.valueOf(m1.get("downTime")))); // lamuda鎺掑簭
+        return R.ok(resultlist);
+    }
+
 }
diff --git a/src/main/java/com/boying/controller/ParkController.java b/src/main/java/com/boying/controller/ParkController.java
index 0a9ec02..655572d 100644
--- a/src/main/java/com/boying/controller/ParkController.java
+++ b/src/main/java/com/boying/controller/ParkController.java
@@ -1,18 +1,24 @@
 package com.boying.controller;
 
 
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSON;
 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.EditParkNumLog;
 import com.boying.entity.EnterPark;
 import com.boying.entity.Park;
 import com.boying.entity.User;
+import com.boying.service.EditParkNumLogService;
 import com.boying.service.EnterParkService;
 import com.boying.service.ParkService;
 import com.boying.service.UserService;
+import com.boying.util.IpUtil;
 import com.boying.util.RedisJsonUtil;
 import lombok.RequiredArgsConstructor;
+import org.apache.catalina.security.SecurityUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -20,7 +26,10 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -38,6 +47,7 @@
     private final UserService userService;
     private final RedisJsonUtil redisJsonUtil;
     private final EnterParkService enterParkService;
+    private final EditParkNumLogService editParkNumLogService;
 
     @PostMapping("/findPage")
     public Object findPage(Page page) {
@@ -145,7 +155,7 @@
         }
     }
     @PostMapping("/editParkCarNum")
-    public Object editParkCarNum(Park park) {
+    public Object editParkCarNum(HttpServletRequest request, Park park) {
         Park byId = parkService.getById(park.getId());
         if(byId == null){
             return R.failed("鏈煡璇㈠埌璇ュ仠杞﹀満");
@@ -154,11 +164,26 @@
             redisTemplate.opsForValue().set("car_park_" + byId.getId(),park.getCarNum()+"",30, TimeUnit.DAYS);
             redisTemplate.opsForValue().set("park_up_" + byId.getId(),"true",30, TimeUnit.DAYS);
             parkService.updateById(byId);
+            String jsonValue = JSON.toJSONString(park);
+            redisTemplate.opsForValue().set("park-"+park.getId(), jsonValue);
+
+            String ipAddr = IpUtil.getIpAddr(request);
+            int num = byId.getNum();
+            int newNum = park.getNum();
+            EditParkNumLog numLog = new EditParkNumLog();
+            numLog.setIp(ipAddr);
+            numLog.setNum(num);
+            numLog.setNewNum(newNum);
+            numLog.setCreateTime(LocalDateTime.now());
+            editParkNumLogService.save(numLog);
+
             return R.ok(null,"淇敼鎴愬姛");
         }
     }
 
 
+
+
     @PostMapping("/getParkCar")
     public Object getParkCar(Page page, Integer parkId,String carNo) {
         QueryWrapper<EnterPark> enterParkQueryWrapper = new QueryWrapper<>();
diff --git a/src/main/java/com/boying/entity/EditParkNumLog.java b/src/main/java/com/boying/entity/EditParkNumLog.java
new file mode 100644
index 0000000..8fc3a89
--- /dev/null
+++ b/src/main/java/com/boying/entity/EditParkNumLog.java
@@ -0,0 +1,48 @@
+package com.boying.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.boying.common.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName EditParkNumLog.java
+ * @Description TODO
+ * @createTime 2024骞�09鏈�26鏃� 10:25:00
+ */
+@Data
+@TableName("edit_park_num_log")
+@javax.persistence.Table(name = "edit_park_num_log")
+@Entity
+@org.hibernate.annotations.Table(appliesTo = "edit_park_num_log", comment = "淇敼杞︿綅鏁拌褰曡〃")
+@ApiModel(value = "淇敼杞︿綅鏁拌褰曡〃")
+public class EditParkNumLog extends BaseEntity<EditParkNumLog> {
+
+    @ApiModelProperty(value = "ip鍦板潃")
+    @Column(columnDefinition = "varchar(100) comment 'ip鍦板潃'")
+    private String ip;
+
+    @ApiModelProperty(value = "鐢ㄦ埛鍚嶇О")
+    @Column(columnDefinition = "varchar(100) comment '鐢ㄦ埛鍚嶇О'")
+    private String username;
+
+    @ApiModelProperty(value = "鍘熻溅浣嶆暟")
+    @Column(columnDefinition = "int comment '鍘熻溅浣嶆暟'")
+    private int num;
+
+    @ApiModelProperty(value = "鏂拌溅浣嶆暟")
+    @Column(columnDefinition = "int comment '鏂拌溅浣嶆暟'")
+    private int newNum;
+
+    @ApiModelProperty(value = "鍋滆溅鍦哄悕绉�")
+    @Column(columnDefinition = "varchar(100) comment '鍋滆溅鍦哄悕绉�'")
+    private String parkName;
+
+
+}
diff --git a/src/main/java/com/boying/mapper/EditParkNumLogMapper.java b/src/main/java/com/boying/mapper/EditParkNumLogMapper.java
new file mode 100644
index 0000000..56206b5
--- /dev/null
+++ b/src/main/java/com/boying/mapper/EditParkNumLogMapper.java
@@ -0,0 +1,17 @@
+package com.boying.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.boying.entity.EditParkNumLog;
+import com.boying.entity.Park;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName ParkService.java
+ * @Description TODO
+ * @createTime 2022骞�11鏈�20鏃� 10:33:00
+ */
+@Mapper
+public interface EditParkNumLogMapper extends BaseMapper<EditParkNumLog> {
+}
diff --git a/src/main/java/com/boying/service/EditParkNumLogService.java b/src/main/java/com/boying/service/EditParkNumLogService.java
new file mode 100644
index 0000000..ee9f7a1
--- /dev/null
+++ b/src/main/java/com/boying/service/EditParkNumLogService.java
@@ -0,0 +1,16 @@
+package com.boying.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.boying.entity.EditParkNumLog;
+import com.boying.entity.LedShow;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName LedShowService.java
+ * @Description TODO
+ * @createTime 2022骞�11鏈�21鏃� 08:30:00
+ */
+public interface EditParkNumLogService extends IService<EditParkNumLog> {
+
+}
diff --git a/src/main/java/com/boying/service/impl/EditParkNumLogServiceImpl.java b/src/main/java/com/boying/service/impl/EditParkNumLogServiceImpl.java
new file mode 100644
index 0000000..67489f0
--- /dev/null
+++ b/src/main/java/com/boying/service/impl/EditParkNumLogServiceImpl.java
@@ -0,0 +1,23 @@
+package com.boying.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.boying.entity.EditParkNumLog;
+import com.boying.entity.LedShow;
+import com.boying.mapper.EditParkNumLogMapper;
+import com.boying.mapper.LedShowMapper;
+import com.boying.service.EditParkNumLogService;
+import com.boying.service.LedShowService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName LedShowServiceImpl.java
+ * @Description TODO
+ * @createTime 2022骞�11鏈�21鏃� 08:31:00
+ */
+@Service
+@AllArgsConstructor
+public class EditParkNumLogServiceImpl extends ServiceImpl<EditParkNumLogMapper, EditParkNumLog> implements EditParkNumLogService {
+}
diff --git a/src/main/java/com/boying/util/IpUtil.java b/src/main/java/com/boying/util/IpUtil.java
new file mode 100644
index 0000000..64c56c9
--- /dev/null
+++ b/src/main/java/com/boying/util/IpUtil.java
@@ -0,0 +1,111 @@
+package com.boying.util;
+
+import javax.servlet.http.HttpServletRequest;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+public class IpUtil {
+	public static String getIpAddr1(HttpServletRequest request) {
+		String ipAddress = null;
+		try {
+			ipAddress = request.getHeader("x-forwarded-for");
+			if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+				ipAddress = request.getHeader("Proxy-Client-IP");
+			}
+			if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+				ipAddress = request.getHeader("WL-Proxy-Client-IP");
+			}
+			if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+				ipAddress = request.getRemoteAddr();
+				if (ipAddress.equals("127.0.0.1")) {
+					// 鏍规嵁缃戝崱鍙栨湰鏈洪厤缃殑IP
+					InetAddress inet = null;
+					try {
+						inet = InetAddress.getLocalHost();
+					} catch (UnknownHostException e) {
+						e.printStackTrace();
+					}
+					ipAddress = inet.getHostAddress();
+				}
+			}
+			// 瀵逛簬閫氳繃澶氫釜浠g悊鐨勬儏鍐碉紝绗竴涓狪P涓哄鎴风鐪熷疄IP,澶氫釜IP鎸夌収','鍒嗗壊
+			if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()
+				// = 15
+				if (ipAddress.indexOf(",") > 0) {
+					ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
+				}
+			}
+		} catch (Exception e) {
+			ipAddress = "";
+		}
+		// ipAddress = this.getRequest().getRemoteAddr();
+
+		return "0:0:0:0:0:0:0:1".equals(ipAddress) ? "127.0.0.1" : ipAddress;
+	}
+
+	/**
+	 * 鑾峰彇鐪熷疄ip鍦板潃,涓嶈繑鍥炲唴缃戝湴鍧�
+	 *
+	 * @param request
+	 * @return
+	 */
+	public static String getIpAddr2(HttpServletRequest request) {
+		//鐩墠鍒欐槸缃戝叧ip
+		String ip = request.getHeader("X-Real-IP");
+		if (ip != null && !"".equals(ip) && !"unknown".equalsIgnoreCase(ip)) {
+			return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip;
+		}
+		ip = request.getHeader("X-Forwarded-For");
+		if (ip != null && !"".equals(ip) && !"unknown".equalsIgnoreCase(ip)) {
+			int index = ip.indexOf(',');
+			if (index != -1) {
+				//鍙幏鍙栫涓�涓��
+				return ip.substring(0, index);
+			} else {
+				return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip;
+			}
+		} else {
+			//鍙栦笉鍒扮湡瀹瀒p鍒欒繑鍥炵┖锛屼笉鑳借繑鍥炲唴缃戝湴鍧�銆�
+			return "";
+		}
+	}
+
+
+	//鍏朵腑ip鐨勮幏鍙栨柟寮�
+	public static String getIpAddr(HttpServletRequest request) {
+
+		String ip = request.getHeader("x-forwarded-for");
+
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("X-Real-IP");
+			//LOGGER.error("X-Real-IP:"+ip);
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("http_client_ip");
+//            LOGGER.error("http_client_ip:"+ip);
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getRemoteAddr();
+//            LOGGER.error("getRemoteAddr:"+ip);
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("Proxy-Client-IP");
+//            LOGGER.error("Proxy-Client-IP:"+ip);
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("WL-Proxy-Client-IP");
+//            LOGGER.error("WL-Proxy-Client-IP:"+ip);
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("HTTP_X_FORWARDED_FOR");
+//            LOGGER.error("HTTP_X_FORWARDED_FOR:"+ip);
+		}
+// 濡傛灉鏄绾т唬鐞嗭紝閭d箞鍙栫涓�涓猧p涓哄鎴穒p
+		if (ip != null && ip.indexOf(",") != -1) {
+			ip = ip.substring(ip.lastIndexOf(",") + 1, ip.length()).trim();
+//            LOGGER.error("ip:"+ip);
+		}
+		return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip;
+	}
+
+}

--
Gitblit v1.9.1