Commit 6228a7a594df992f4562fbc45c646b7c66dbc2ce

Authored by 岑健浩
1 parent 03d2bc11

SNManage commit

... ... @@ -4,8 +4,8 @@
4 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5 5 <modelVersion>4.0.0</modelVersion>
6 6  
7   - <groupId>com.haoge</groupId>
8   - <artifactId>SNManageDemo</artifactId>
  7 + <groupId>com.ectrip</groupId>
  8 + <artifactId>SNManage</artifactId>
9 9 <version>1.0</version>
10 10  
11 11 <properties>
... ... @@ -33,10 +33,6 @@
33 33 <scope>test</scope>
34 34 </dependency>
35 35 <dependency>
36   - <groupId>org.springframework.boot</groupId>
37   - <artifactId>spring-boot-starter-thymeleaf</artifactId>
38   - </dependency>
39   - <dependency>
40 36 <groupId>io.springfox</groupId>
41 37 <artifactId>springfox-swagger2</artifactId>
42 38 <version>2.7.0</version>
... ...
src/main/java/com/example/demo/SNManageApplication.java renamed to src/main/java/com/ectrip/demo/SNManageApplication.java
1   -package com.example.demo;
  1 +package com.ectrip.demo;
2 2  
3   -import org.springframework.boot.CommandLineRunner;
4 3 import org.springframework.boot.SpringApplication;
5 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
6 5 import springfox.documentation.swagger2.annotations.EnableSwagger2;
... ...
src/main/java/com/example/demo/controller/SNController.java renamed to src/main/java/com/ectrip/demo/controller/SNController.java
1   -package com.example.demo.controller;
  1 +package com.ectrip.demo.controller;
2 2  
3   -import com.example.demo.dto.AddSNsDTO;
4   -import com.example.demo.dto.DeleteSNsDTO;
5   -import com.example.demo.exception.SNRepetitiveException;
6   -import com.example.demo.service.SNService;
7   -import com.example.demo.util.HttpResult;
  3 +import com.ectrip.demo.util.HttpResult;
  4 +import com.ectrip.demo.dto.AddSNsDTO;
  5 +import com.ectrip.demo.dto.DeleteSNsDTO;
  6 +import com.ectrip.demo.exception.SNRepetitiveException;
  7 +import com.ectrip.demo.service.SNService;
8 8 import io.swagger.annotations.Api;
9 9 import io.swagger.annotations.ApiOperation;
10 10 import org.apache.logging.log4j.LogManager;
11 11 import org.apache.logging.log4j.Logger;
12 12 import org.springframework.beans.factory.annotation.Autowired;
13   -import org.springframework.stereotype.Controller;
14 13 import org.springframework.web.bind.annotation.*;
15 14  
16   -import javax.servlet.http.HttpServletRequest;
17   -import javax.servlet.http.HttpServletResponse;
18 15 import javax.validation.Valid;
19   -import java.io.IOException;
20 16  
21 17 @Api(tags = "SN操作")
22 18 @RestController
... ...
src/main/java/com/example/demo/dto/AddSNsDTO.java renamed to src/main/java/com/ectrip/demo/dto/AddSNsDTO.java
1   -package com.example.demo.dto;
  1 +package com.ectrip.demo.dto;
2 2  
3 3  
4 4 import io.swagger.annotations.ApiModel;
... ...
src/main/java/com/example/demo/dto/DeleteSNsDTO.java renamed to src/main/java/com/ectrip/demo/dto/DeleteSNsDTO.java
1   -package com.example.demo.dto;
  1 +package com.ectrip.demo.dto;
2 2  
3 3 import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
... ...
src/main/java/com/example/demo/exception/SNRepetitiveException.java renamed to src/main/java/com/ectrip/demo/exception/SNRepetitiveException.java
1   -package com.example.demo.exception;
  1 +package com.ectrip.demo.exception;
2 2  
3 3 public class SNRepetitiveException extends Exception{
4 4  
... ...
src/main/java/com/example/demo/service/SNService.java renamed to src/main/java/com/ectrip/demo/service/SNService.java
1   -package com.example.demo.service;
  1 +package com.ectrip.demo.service;
2 2  
3   -import com.example.demo.dto.AddSNsDTO;
4   -import com.example.demo.dto.DeleteSNsDTO;
5   -import com.example.demo.exception.SNRepetitiveException;
  3 +import com.ectrip.demo.dto.AddSNsDTO;
  4 +import com.ectrip.demo.dto.DeleteSNsDTO;
  5 +import com.ectrip.demo.exception.SNRepetitiveException;
6 6  
7 7 import javax.servlet.http.HttpServletRequest;
8 8 import javax.servlet.http.HttpServletResponse;
9   -import java.io.FileNotFoundException;
10 9 import java.io.IOException;
11 10  
12 11 public interface SNService {
... ...
src/main/java/com/example/demo/service/impl/SNServiceImpl.java renamed to src/main/java/com/ectrip/demo/service/impl/SNServiceImpl.java
1   -package com.example.demo.service.impl;
  1 +package com.ectrip.demo.service.impl;
2 2  
3 3 import cn.hutool.core.codec.Base64;
4   -import com.example.demo.controller.SNController;
5   -import com.example.demo.dto.AddSNsDTO;
6   -import com.example.demo.dto.DeleteSNsDTO;
7   -import com.example.demo.exception.SNRepetitiveException;
8   -import com.example.demo.service.SNService;
  4 +import com.ectrip.demo.dto.DeleteSNsDTO;
  5 +import com.ectrip.demo.service.SNService;
  6 +import com.ectrip.demo.dto.AddSNsDTO;
  7 +import com.ectrip.demo.exception.SNRepetitiveException;
9 8 import org.apache.logging.log4j.LogManager;
10 9 import org.apache.logging.log4j.Logger;
11 10 import org.springframework.beans.factory.annotation.Value;
... ... @@ -14,6 +13,9 @@ import org.springframework.stereotype.Service;
14 13 import javax.servlet.http.HttpServletRequest;
15 14 import javax.servlet.http.HttpServletResponse;
16 15 import java.io.*;
  16 +import java.nio.charset.StandardCharsets;
  17 +import java.nio.file.Files;
  18 +import java.nio.file.Paths;
17 19 import java.text.SimpleDateFormat;
18 20 import java.util.Date;
19 21 import java.util.HashSet;
... ... @@ -49,11 +51,12 @@ public class SNServiceImpl implements SNService {
49 51 String currTime = sdf.format(new Date());
50 52 //读取文件,判断SN是否重复
51 53 Set<String> set = new HashSet<>();
52   - BufferedReader bufferedReader = new BufferedReader(new FileReader(SNFilePath));
  54 + Reader reader = new InputStreamReader(Files.newInputStream(Paths.get(SNFilePath)),StandardCharsets.UTF_8);
  55 + BufferedReader bufferedReader = new BufferedReader(reader);
53 56 String br;
54 57 while ((br=bufferedReader.readLine()) != null) {
55 58 //截取SN
56   - int index = br.indexOf('#');
  59 + int index = br.indexOf("##");
57 60 String SN = br.substring(0,index == -1? 0 : index);
58 61 set.add(SN);
59 62 }
... ... @@ -67,11 +70,11 @@ public class SNServiceImpl implements SNService {
67 70  
68 71  
69 72 //写入
70   - FileWriter fileWriter = new FileWriter(SNFilePath,true);
71   - fileWriter.write(SNs.toString());
72   - fileWriter.flush();
73   - fileWriter.close();
74   - logger.info("-----------------------------结束添加SNs-----------------------------");
  73 + FileOutputStream fileOutputStream = new FileOutputStream(SNFilePath,true);
  74 + fileOutputStream.write(SNs.toString().getBytes(StandardCharsets.UTF_8));
  75 + fileOutputStream.flush();
  76 + fileOutputStream.close();
  77 + logger.info("成功写入SNs:{}",SNs);
75 78 } finally { //释放锁
76 79 lock.unlock();
77 80 }
... ... @@ -79,15 +82,18 @@ public class SNServiceImpl implements SNService {
79 82  
80 83 @Override
81 84 public String getEncryptSNs() throws IOException {
82   - File file = new File(SNFilePath);
83 85 //读取文件
84   - byte[] SNsByteArr = new byte[(int) file.length()];
85   - FileInputStream fileInputStream = new FileInputStream(file);
86   - fileInputStream.read(SNsByteArr);
87   - //加密
88   - String encodeSNs = Base64.encode(SNsByteArr);
  86 + Reader reader = new InputStreamReader(Files.newInputStream(Paths.get(SNFilePath)),StandardCharsets.UTF_8);
  87 + char[] chars = new char[1000];
  88 + StringBuilder builder = new StringBuilder();
  89 + int len = reader.read(chars);
  90 + while (len != -1) {
  91 + builder.append(chars,0,len);
  92 + len = reader.read(chars);
  93 + }
89 94  
90   - return encodeSNs;
  95 + //加密
  96 + return Base64.encode(builder.toString());
91 97 }
92 98  
93 99 @Override
... ... @@ -99,7 +105,8 @@ public class SNServiceImpl implements SNService {
99 105 HashSet<String> deleteSNsSet = new HashSet<>(deleteSNsDTO.getSns());
100 106  
101 107 //读取文件,记录不用删除的数据
102   - BufferedReader bufferedReader = new BufferedReader(new FileReader(SNFilePath));
  108 + Reader reader = new InputStreamReader(Files.newInputStream(new File(SNFilePath).toPath()), StandardCharsets.UTF_8);
  109 + BufferedReader bufferedReader = new BufferedReader(reader);
103 110 String br;
104 111 StringBuilder stringBuilder = new StringBuilder();
105 112 StringBuilder existSNs = new StringBuilder();
... ... @@ -107,33 +114,33 @@ public class SNServiceImpl implements SNService {
107 114 boolean SNExist = false;
108 115 while ((br=bufferedReader.readLine()) != null) {
109 116 //截取SN
110   - int index = br.indexOf('#');
  117 + int index = br.indexOf("##");
111 118 String str = br.substring(0,index == -1? 0 : index);
112 119 if (!deleteSNsSet.contains(str)) {
113 120 stringBuilder.append(br);
114 121 stringBuilder.append(System.lineSeparator());
115 122 } else {
116   - existSNs.append(str).append("、");
  123 + existSNs.append(br).append(System.lineSeparator());
117 124 SNExist = true;
118 125 }
119 126 }
120 127 bufferedReader.close();
121 128  
122   - //如果存在要删除的SN,先将数据备份,再将留存数据覆盖掉原SN文件,避免数据写一半断电丢失
  129 + //如果存在要删除的SN,先将数据备份,再将留存数据覆盖掉原SN文件
123 130 if (SNExist) {
124 131 //备份数据
125   - FileWriter SNTempfileWriter = new FileWriter(SNTempFilePath);
126   - SNTempfileWriter.write(stringBuilder.toString());
127   - SNTempfileWriter.flush();
128   - SNTempfileWriter.close();
  132 + FileOutputStream tempFileOutputStream = new FileOutputStream(SNTempFilePath);
  133 + tempFileOutputStream.write(stringBuilder.toString().getBytes(StandardCharsets.UTF_8));
  134 + tempFileOutputStream.flush();
  135 + tempFileOutputStream.close();
129 136 //覆盖掉原来的数据到SN文件中
130   - FileWriter SNfileWriter = new FileWriter(SNFilePath);
131   - SNfileWriter.write(stringBuilder.toString());
132   - SNfileWriter.flush();
133   - SNfileWriter.close();
134   -
  137 + FileOutputStream fileOutputStream = new FileOutputStream(SNFilePath);
  138 + fileOutputStream.write(stringBuilder.toString().getBytes(StandardCharsets.UTF_8));
  139 + fileOutputStream.flush();
  140 + fileOutputStream.close();
  141 + logger.warn("成功删除SNs:{}",existSNs);
135 142 }
136   - logger.warn("成功删除SNs:{}",existSNs);
  143 +
137 144 logger.info("-----------------------------结束删除SNs-----------------------------");
138 145  
139 146  
... ...
src/main/java/com/example/demo/util/HttpResult.java renamed to src/main/java/com/ectrip/demo/util/HttpResult.java
1   -package com.example.demo.util;
  1 +package com.ectrip.demo.util;
2 2  
3 3 import lombok.AllArgsConstructor;
4 4 import lombok.Data;
... ...
src/main/resources/log4j2.xml
... ... @@ -56,7 +56,7 @@
56 56 <logger name="org.mybatis" level="INFO"></logger>
57 57 <root level="all">
58 58 <appender-ref ref="Console"/>
59   -<!-- <appender-ref ref="RollingFileInfo"/>-->
  59 + <appender-ref ref="RollingFileInfo"/>
60 60 <appender-ref ref="RollingFileWarn"/>
61 61 <appender-ref ref="RollingFileError"/>
62 62 </root>
... ...
src/main/resources/sn/SN.txt
1   -
  1 +sn6##项目2##2024-03-20 19:22:17
  2 +sn7##项目2##2024-03-20 19:22:17
  3 +sn8##项目2##2024-03-20 19:22:17
... ...
src/main/resources/sn/SNTemp.txt
  1 +sn6##项目2##2024-03-20 19:22:17
  2 +sn7##项目2##2024-03-20 19:22:17
  3 +sn8##项目2##2024-03-20 19:22:17
... ...