From 03d2bc11f5254d8ac9f648af76ba9b5e26268aa2 Mon Sep 17 00:00:00 2001 From: jianhao.cen Date: Wed, 20 Mar 2024 19:36:40 +0800 Subject: [PATCH] SNManage commit --- pom.xml | 5 +++++ src/main/java/com/example/demo/controller/SNController.java | 36 ++++++++++++++++++++---------------- src/main/java/com/example/demo/dto/AddSNsDTO.java | 24 ++++++++++++++++++++++++ src/main/java/com/example/demo/dto/DeleteSNsDTO.java | 17 +++++++++++++++++ src/main/java/com/example/demo/service/SNService.java | 10 ++++++---- src/main/java/com/example/demo/service/impl/SNServiceImpl.java | 43 ++++++++++++++++++++++++++++++++++--------- src/main/resources/application.properties | 14 +++++++------- 7 files changed, 113 insertions(+), 36 deletions(-) create mode 100644 src/main/java/com/example/demo/dto/AddSNsDTO.java create mode 100644 src/main/java/com/example/demo/dto/DeleteSNsDTO.java diff --git a/pom.xml b/pom.xml index 3b43196..53f02d6 100644 --- a/pom.xml +++ b/pom.xml @@ -52,6 +52,11 @@ hutool-http 4.1.14 + + + org.springframework.boot + spring-boot-starter-validation + org.projectlombok lombok diff --git a/src/main/java/com/example/demo/controller/SNController.java b/src/main/java/com/example/demo/controller/SNController.java index 3d4a709..20ada19 100644 --- a/src/main/java/com/example/demo/controller/SNController.java +++ b/src/main/java/com/example/demo/controller/SNController.java @@ -1,5 +1,7 @@ package com.example.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; @@ -13,32 +15,34 @@ 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操作") -@Controller +@RestController +@RequestMapping("/sn") public class SNController { static Logger logger = LogManager.getLogger(SNController.class); @Autowired SNService snService; - @ApiOperation("首页") - @GetMapping("/index.html") - public String index() { - return "Index"; - } +// @ApiOperation("首页") +// @GetMapping("/index.html") +// public String index() { +// return "Index"; +// } @ApiOperation("添加SN") - @PostMapping("/add_SN") + @PostMapping("/add_sn") @ResponseBody - public HttpResult addSN(@RequestBody String SNDto) { + public HttpResult addSN(@RequestBody @Valid AddSNsDTO addSNsDTO) { try { - snService.addSN(SNDto); + snService.addSN(addSNsDTO); return HttpResult.success("添加成功"); } catch (SNRepetitiveException e) { - return HttpResult.fail("SN已存在,请勿重复添加!"); + return HttpResult.fail(e.getMessage()); } catch (Exception e) { logger.error(e.getMessage()); return HttpResult.fail(); @@ -60,9 +64,9 @@ public class SNController { // } @ApiOperation("获取全部base64加密后的SN") - @GetMapping("/get_SNs") + @GetMapping("/get_sn") @ResponseBody - public HttpResult getBase64SNs() throws IOException { + public HttpResult getBase64SNs() { try { return HttpResult.success("",snService.getEncryptSNs()); } catch (Exception e) { @@ -73,12 +77,12 @@ public class SNController { } @ApiOperation("删除指定SN") - @PostMapping("/delete_SN") + @PostMapping("/delete_sn") @ResponseBody - public HttpResult deleteSN(@RequestBody String SN) { + public HttpResult deleteSN(@RequestBody @Valid DeleteSNsDTO deleteSNsDTO) { try { - snService.deleteSN(SN); - return HttpResult.success("SN已删除或不存在!"); + snService.deleteSN(deleteSNsDTO); + return HttpResult.success("删除成功!"); } catch (Exception e) { logger.error(e.getMessage()); diff --git a/src/main/java/com/example/demo/dto/AddSNsDTO.java b/src/main/java/com/example/demo/dto/AddSNsDTO.java new file mode 100644 index 0000000..7c2c6eb --- /dev/null +++ b/src/main/java/com/example/demo/dto/AddSNsDTO.java @@ -0,0 +1,24 @@ +package com.example.demo.dto; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.ArrayList; +import java.util.List; + +@Data +@ApiModel(description = "删除SNs入参") +public class AddSNsDTO { + + @ApiModelProperty(value = "项目名称") + @NotBlank(message = "项目名称不能为空!") + private String projectName; + + @ApiModelProperty(value = "设备码") + @NotNull(message = "设备码不能为空!") + private ArrayList sns; +} diff --git a/src/main/java/com/example/demo/dto/DeleteSNsDTO.java b/src/main/java/com/example/demo/dto/DeleteSNsDTO.java new file mode 100644 index 0000000..20c7657 --- /dev/null +++ b/src/main/java/com/example/demo/dto/DeleteSNsDTO.java @@ -0,0 +1,17 @@ +package com.example.demo.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.ArrayList; +import java.util.List; + +@Data +@ApiModel(description = "删除SNs入参") +public class DeleteSNsDTO { + @ApiModelProperty(value = "设备码") + @NotNull(message = "设备码不能为空!") + private ArrayList sns; +} diff --git a/src/main/java/com/example/demo/service/SNService.java b/src/main/java/com/example/demo/service/SNService.java index 998f80c..570ef6a 100644 --- a/src/main/java/com/example/demo/service/SNService.java +++ b/src/main/java/com/example/demo/service/SNService.java @@ -1,5 +1,7 @@ package com.example.demo.service; +import com.example.demo.dto.AddSNsDTO; +import com.example.demo.dto.DeleteSNsDTO; import com.example.demo.exception.SNRepetitiveException; import javax.servlet.http.HttpServletRequest; @@ -10,9 +12,9 @@ import java.io.IOException; public interface SNService { /** * 新增SN号 - * @param SN SN号 + * @param addSNsDTO SN号 */ - void addSN(String SN) throws SNRepetitiveException, IOException; + void addSN(AddSNsDTO addSNsDTO) throws SNRepetitiveException, IOException; /** * 下载所有SN号 @@ -27,8 +29,8 @@ public interface SNService { /** * 删除指定SN记录 - * @param SN SN号 + * @param deleteSNsDTO SN号 */ - void deleteSN(String SN) throws Exception; + void deleteSN(DeleteSNsDTO deleteSNsDTO) throws Exception; } diff --git a/src/main/java/com/example/demo/service/impl/SNServiceImpl.java b/src/main/java/com/example/demo/service/impl/SNServiceImpl.java index b46ea99..9fcd65e 100644 --- a/src/main/java/com/example/demo/service/impl/SNServiceImpl.java +++ b/src/main/java/com/example/demo/service/impl/SNServiceImpl.java @@ -1,14 +1,21 @@ package com.example.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 org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.HashSet; import java.util.Set; import java.util.concurrent.locks.Lock; @@ -21,6 +28,8 @@ public class SNServiceImpl implements SNService { */ private static final Lock lock = new ReentrantLock(); + static Logger logger = LogManager.getLogger(SNServiceImpl.class); + @Value("${SN.file.path}") String SNFilePath; @@ -28,12 +37,16 @@ public class SNServiceImpl implements SNService { String SNTempFilePath; @Override - public void addSN(String SNDto) throws SNRepetitiveException, IOException { + public void addSN(AddSNsDTO addSNsDTO) throws SNRepetitiveException, IOException { + //加try,catch只为释放锁 try { //加锁 lock.lock(); - + logger.info("-----------------------------开始添加SNs-----------------------------"); + StringBuilder SNs = new StringBuilder(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String currTime = sdf.format(new Date()); //读取文件,判断SN是否重复 Set set = new HashSet<>(); BufferedReader bufferedReader = new BufferedReader(new FileReader(SNFilePath)); @@ -44,17 +57,21 @@ public class SNServiceImpl implements SNService { String SN = br.substring(0,index == -1? 0 : index); set.add(SN); } - - String addSn = SNDto.substring(0,SNDto.indexOf('#')); - if (set.contains(addSn)) { - throw new SNRepetitiveException("SN:" + addSn + " 已存在,请勿重复添加"); + for (String SN : addSNsDTO.getSns()) { + if (set.contains(SN)) { + throw new SNRepetitiveException("SN:" + SN + " 已存在,请勿重复添加"); + } + SNs.append(SN).append("##").append(addSNsDTO.getProjectName()).append("##").append(currTime); + SNs.append(System.lineSeparator()); } + //写入 FileWriter fileWriter = new FileWriter(SNFilePath,true); - fileWriter.write(SNDto+System.lineSeparator()); + fileWriter.write(SNs.toString()); fileWriter.flush(); fileWriter.close(); + logger.info("-----------------------------结束添加SNs-----------------------------"); } finally { //释放锁 lock.unlock(); } @@ -74,23 +91,29 @@ public class SNServiceImpl implements SNService { } @Override - public void deleteSN(String SN) throws Exception{ + public void deleteSN(DeleteSNsDTO deleteSNsDTO) throws Exception{ try { lock.lock(); + logger.info("-----------------------------开始删除SNs-----------------------------"); + + HashSet deleteSNsSet = new HashSet<>(deleteSNsDTO.getSns()); //读取文件,记录不用删除的数据 BufferedReader bufferedReader = new BufferedReader(new FileReader(SNFilePath)); String br; StringBuilder stringBuilder = new StringBuilder(); + StringBuilder existSNs = new StringBuilder(); + //所要删除的SN是否存在 boolean SNExist = false; while ((br=bufferedReader.readLine()) != null) { //截取SN int index = br.indexOf('#'); String str = br.substring(0,index == -1? 0 : index); - if (!SN.equals(str)) { + if (!deleteSNsSet.contains(str)) { stringBuilder.append(br); stringBuilder.append(System.lineSeparator()); } else { + existSNs.append(str).append("、"); SNExist = true; } } @@ -110,6 +133,8 @@ public class SNServiceImpl implements SNService { SNfileWriter.close(); } + logger.warn("成功删除SNs:{}",existSNs); + logger.info("-----------------------------结束删除SNs-----------------------------"); } finally { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 4ff96a2..7b465ca 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -10,13 +10,13 @@ logging.config=classpath:log4j2.xml #swagger.basic.username = test #swagger.basic.password = 123 -spring.thymeleaf.cache=false -spring.thymeleaf.prefix=classpath:/templates/ -spring.thymeleaf.suffix=.html +#spring.thymeleaf.cache=false +#spring.thymeleaf.prefix=classpath:/templates/ +#spring.thymeleaf.suffix=.html -#SN.file.path=src/main/resources/sn/SN.txt -#SN.file.temp.path=src/main/resources/sn/SNTemp.txt +SN.file.path=src/main/resources/sn/SN.txt +SN.file.temp.path=src/main/resources/sn/SNTemp.txt -SN.file.path= -SN.file.temp.path= \ No newline at end of file +#SN.file.path= +#SN.file.temp.path= \ No newline at end of file -- libgit2 0.21.4