diff --git a/pom.xml b/pom.xml index 53f02d6..96078f5 100644 --- a/pom.xml +++ b/pom.xml @@ -4,8 +4,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.haoge - SNManageDemo + com.ectrip + SNManage 1.0 @@ -33,10 +33,6 @@ test - org.springframework.boot - spring-boot-starter-thymeleaf - - io.springfox springfox-swagger2 2.7.0 diff --git a/src/main/java/com/example/demo/SNManageApplication.java b/src/main/java/com/ectrip/demo/SNManageApplication.java index 211b750..b479346 100644 --- a/src/main/java/com/example/demo/SNManageApplication.java +++ b/src/main/java/com/ectrip/demo/SNManageApplication.java @@ -1,6 +1,5 @@ -package com.example.demo; +package com.ectrip.demo; -import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import springfox.documentation.swagger2.annotations.EnableSwagger2; diff --git a/src/main/java/com/example/demo/controller/SNController.java b/src/main/java/com/ectrip/demo/controller/SNController.java index 20ada19..30bd00a 100644 --- a/src/main/java/com/example/demo/controller/SNController.java +++ b/src/main/java/com/ectrip/demo/controller/SNController.java @@ -1,22 +1,18 @@ -package com.example.demo.controller; +package com.ectrip.demo.controller; -import com.example.demo.dto.AddSNsDTO; -import com.example.demo.dto.DeleteSNsDTO; -import com.example.demo.exception.SNRepetitiveException; -import com.example.demo.service.SNService; -import com.example.demo.util.HttpResult; +import com.ectrip.demo.util.HttpResult; +import com.ectrip.demo.dto.AddSNsDTO; +import com.ectrip.demo.dto.DeleteSNsDTO; +import com.ectrip.demo.exception.SNRepetitiveException; +import com.ectrip.demo.service.SNService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import java.io.IOException; @Api(tags = "SN操作") @RestController diff --git a/src/main/java/com/example/demo/dto/AddSNsDTO.java b/src/main/java/com/ectrip/demo/dto/AddSNsDTO.java index 7c2c6eb..5b9f242 100644 --- a/src/main/java/com/example/demo/dto/AddSNsDTO.java +++ b/src/main/java/com/ectrip/demo/dto/AddSNsDTO.java @@ -1,4 +1,4 @@ -package com.example.demo.dto; +package com.ectrip.demo.dto; import io.swagger.annotations.ApiModel; diff --git a/src/main/java/com/example/demo/dto/DeleteSNsDTO.java b/src/main/java/com/ectrip/demo/dto/DeleteSNsDTO.java index 20c7657..707ce1f 100644 --- a/src/main/java/com/example/demo/dto/DeleteSNsDTO.java +++ b/src/main/java/com/ectrip/demo/dto/DeleteSNsDTO.java @@ -1,4 +1,4 @@ -package com.example.demo.dto; +package com.ectrip.demo.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/com/example/demo/exception/SNRepetitiveException.java b/src/main/java/com/ectrip/demo/exception/SNRepetitiveException.java index 4299727..0be5e56 100644 --- a/src/main/java/com/example/demo/exception/SNRepetitiveException.java +++ b/src/main/java/com/ectrip/demo/exception/SNRepetitiveException.java @@ -1,4 +1,4 @@ -package com.example.demo.exception; +package com.ectrip.demo.exception; public class SNRepetitiveException extends Exception{ diff --git a/src/main/java/com/example/demo/service/SNService.java b/src/main/java/com/ectrip/demo/service/SNService.java index 570ef6a..d19f438 100644 --- a/src/main/java/com/example/demo/service/SNService.java +++ b/src/main/java/com/ectrip/demo/service/SNService.java @@ -1,12 +1,11 @@ -package com.example.demo.service; +package com.ectrip.demo.service; -import com.example.demo.dto.AddSNsDTO; -import com.example.demo.dto.DeleteSNsDTO; -import com.example.demo.exception.SNRepetitiveException; +import com.ectrip.demo.dto.AddSNsDTO; +import com.ectrip.demo.dto.DeleteSNsDTO; +import com.ectrip.demo.exception.SNRepetitiveException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.FileNotFoundException; import java.io.IOException; public interface SNService { diff --git a/src/main/java/com/example/demo/service/impl/SNServiceImpl.java b/src/main/java/com/ectrip/demo/service/impl/SNServiceImpl.java index 9fcd65e..a76a23f 100644 --- a/src/main/java/com/example/demo/service/impl/SNServiceImpl.java +++ b/src/main/java/com/ectrip/demo/service/impl/SNServiceImpl.java @@ -1,11 +1,10 @@ -package com.example.demo.service.impl; +package com.ectrip.demo.service.impl; import cn.hutool.core.codec.Base64; -import com.example.demo.controller.SNController; -import com.example.demo.dto.AddSNsDTO; -import com.example.demo.dto.DeleteSNsDTO; -import com.example.demo.exception.SNRepetitiveException; -import com.example.demo.service.SNService; +import com.ectrip.demo.dto.DeleteSNsDTO; +import com.ectrip.demo.service.SNService; +import com.ectrip.demo.dto.AddSNsDTO; +import com.ectrip.demo.exception.SNRepetitiveException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Value; @@ -14,6 +13,9 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashSet; @@ -49,11 +51,12 @@ public class SNServiceImpl implements SNService { String currTime = sdf.format(new Date()); //读取文件,判断SN是否重复 Set set = new HashSet<>(); - BufferedReader bufferedReader = new BufferedReader(new FileReader(SNFilePath)); + Reader reader = new InputStreamReader(Files.newInputStream(Paths.get(SNFilePath)),StandardCharsets.UTF_8); + BufferedReader bufferedReader = new BufferedReader(reader); String br; while ((br=bufferedReader.readLine()) != null) { //截取SN - int index = br.indexOf('#'); + int index = br.indexOf("##"); String SN = br.substring(0,index == -1? 0 : index); set.add(SN); } @@ -67,11 +70,11 @@ public class SNServiceImpl implements SNService { //写入 - FileWriter fileWriter = new FileWriter(SNFilePath,true); - fileWriter.write(SNs.toString()); - fileWriter.flush(); - fileWriter.close(); - logger.info("-----------------------------结束添加SNs-----------------------------"); + FileOutputStream fileOutputStream = new FileOutputStream(SNFilePath,true); + fileOutputStream.write(SNs.toString().getBytes(StandardCharsets.UTF_8)); + fileOutputStream.flush(); + fileOutputStream.close(); + logger.info("成功写入SNs:{}",SNs); } finally { //释放锁 lock.unlock(); } @@ -79,15 +82,18 @@ public class SNServiceImpl implements SNService { @Override public String getEncryptSNs() throws IOException { - File file = new File(SNFilePath); //读取文件 - byte[] SNsByteArr = new byte[(int) file.length()]; - FileInputStream fileInputStream = new FileInputStream(file); - fileInputStream.read(SNsByteArr); - //加密 - String encodeSNs = Base64.encode(SNsByteArr); + Reader reader = new InputStreamReader(Files.newInputStream(Paths.get(SNFilePath)),StandardCharsets.UTF_8); + char[] chars = new char[1000]; + StringBuilder builder = new StringBuilder(); + int len = reader.read(chars); + while (len != -1) { + builder.append(chars,0,len); + len = reader.read(chars); + } - return encodeSNs; + //加密 + return Base64.encode(builder.toString()); } @Override @@ -99,7 +105,8 @@ public class SNServiceImpl implements SNService { HashSet deleteSNsSet = new HashSet<>(deleteSNsDTO.getSns()); //读取文件,记录不用删除的数据 - BufferedReader bufferedReader = new BufferedReader(new FileReader(SNFilePath)); + Reader reader = new InputStreamReader(Files.newInputStream(new File(SNFilePath).toPath()), StandardCharsets.UTF_8); + BufferedReader bufferedReader = new BufferedReader(reader); String br; StringBuilder stringBuilder = new StringBuilder(); StringBuilder existSNs = new StringBuilder(); @@ -107,33 +114,33 @@ public class SNServiceImpl implements SNService { boolean SNExist = false; while ((br=bufferedReader.readLine()) != null) { //截取SN - int index = br.indexOf('#'); + int index = br.indexOf("##"); String str = br.substring(0,index == -1? 0 : index); if (!deleteSNsSet.contains(str)) { stringBuilder.append(br); stringBuilder.append(System.lineSeparator()); } else { - existSNs.append(str).append("、"); + existSNs.append(br).append(System.lineSeparator()); SNExist = true; } } bufferedReader.close(); - //如果存在要删除的SN,先将数据备份,再将留存数据覆盖掉原SN文件,避免数据写一半断电丢失。 + //如果存在要删除的SN,先将数据备份,再将留存数据覆盖掉原SN文件。 if (SNExist) { //备份数据 - FileWriter SNTempfileWriter = new FileWriter(SNTempFilePath); - SNTempfileWriter.write(stringBuilder.toString()); - SNTempfileWriter.flush(); - SNTempfileWriter.close(); + FileOutputStream tempFileOutputStream = new FileOutputStream(SNTempFilePath); + tempFileOutputStream.write(stringBuilder.toString().getBytes(StandardCharsets.UTF_8)); + tempFileOutputStream.flush(); + tempFileOutputStream.close(); //覆盖掉原来的数据到SN文件中 - FileWriter SNfileWriter = new FileWriter(SNFilePath); - SNfileWriter.write(stringBuilder.toString()); - SNfileWriter.flush(); - SNfileWriter.close(); - + FileOutputStream fileOutputStream = new FileOutputStream(SNFilePath); + fileOutputStream.write(stringBuilder.toString().getBytes(StandardCharsets.UTF_8)); + fileOutputStream.flush(); + fileOutputStream.close(); + logger.warn("成功删除SNs:{}",existSNs); } - logger.warn("成功删除SNs:{}",existSNs); + logger.info("-----------------------------结束删除SNs-----------------------------"); diff --git a/src/main/java/com/example/demo/util/HttpResult.java b/src/main/java/com/ectrip/demo/util/HttpResult.java index 3ae4f6c..6b61af8 100644 --- a/src/main/java/com/example/demo/util/HttpResult.java +++ b/src/main/java/com/ectrip/demo/util/HttpResult.java @@ -1,4 +1,4 @@ -package com.example.demo.util; +package com.ectrip.demo.util; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index abe7140..0b1296d 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -56,7 +56,7 @@ - + diff --git a/src/main/resources/sn/SN.txt b/src/main/resources/sn/SN.txt index 8b13789..7e6fc04 100644 --- a/src/main/resources/sn/SN.txt +++ b/src/main/resources/sn/SN.txt @@ -1 +1,3 @@ - +sn6##项目2##2024-03-20 19:22:17 +sn7##项目2##2024-03-20 19:22:17 +sn8##项目2##2024-03-20 19:22:17 diff --git a/src/main/resources/sn/SNTemp.txt b/src/main/resources/sn/SNTemp.txt index e69de29..7e6fc04 100644 --- a/src/main/resources/sn/SNTemp.txt +++ b/src/main/resources/sn/SNTemp.txt @@ -0,0 +1,3 @@ +sn6##项目2##2024-03-20 19:22:17 +sn7##项目2##2024-03-20 19:22:17 +sn8##项目2##2024-03-20 19:22:17