Commit 03d2bc11f5254d8ac9f648af76ba9b5e26268aa2

Authored by 岑健浩
1 parent 06128cdc

SNManage commit

@@ -52,6 +52,11 @@ @@ -52,6 +52,11 @@
52 <artifactId>hutool-http</artifactId> 52 <artifactId>hutool-http</artifactId>
53 <version>4.1.14</version> 53 <version>4.1.14</version>
54 </dependency> 54 </dependency>
  55 + <!--validation-->
  56 + <dependency>
  57 + <groupId>org.springframework.boot</groupId>
  58 + <artifactId>spring-boot-starter-validation</artifactId>
  59 + </dependency>
55 <dependency> 60 <dependency>
56 <groupId>org.projectlombok</groupId> 61 <groupId>org.projectlombok</groupId>
57 <artifactId>lombok</artifactId> 62 <artifactId>lombok</artifactId>
src/main/java/com/example/demo/controller/SNController.java
1 package com.example.demo.controller; 1 package com.example.demo.controller;
2 2
  3 +import com.example.demo.dto.AddSNsDTO;
  4 +import com.example.demo.dto.DeleteSNsDTO;
3 import com.example.demo.exception.SNRepetitiveException; 5 import com.example.demo.exception.SNRepetitiveException;
4 import com.example.demo.service.SNService; 6 import com.example.demo.service.SNService;
5 import com.example.demo.util.HttpResult; 7 import com.example.demo.util.HttpResult;
@@ -13,32 +15,34 @@ import org.springframework.web.bind.annotation.*; @@ -13,32 +15,34 @@ import org.springframework.web.bind.annotation.*;
13 15
14 import javax.servlet.http.HttpServletRequest; 16 import javax.servlet.http.HttpServletRequest;
15 import javax.servlet.http.HttpServletResponse; 17 import javax.servlet.http.HttpServletResponse;
  18 +import javax.validation.Valid;
16 import java.io.IOException; 19 import java.io.IOException;
17 20
18 @Api(tags = "SN操作") 21 @Api(tags = "SN操作")
19 -@Controller 22 +@RestController
  23 +@RequestMapping("/sn")
20 public class SNController { 24 public class SNController {
21 static Logger logger = LogManager.getLogger(SNController.class); 25 static Logger logger = LogManager.getLogger(SNController.class);
22 26
23 @Autowired 27 @Autowired
24 SNService snService; 28 SNService snService;
25 29
26 - @ApiOperation("首页")  
27 - @GetMapping("/index.html")  
28 - public String index() {  
29 - return "Index";  
30 - } 30 +// @ApiOperation("首页")
  31 +// @GetMapping("/index.html")
  32 +// public String index() {
  33 +// return "Index";
  34 +// }
31 35
32 @ApiOperation("添加SN") 36 @ApiOperation("添加SN")
33 - @PostMapping("/add_SN") 37 + @PostMapping("/add_sn")
34 @ResponseBody 38 @ResponseBody
35 - public HttpResult addSN(@RequestBody String SNDto) { 39 + public HttpResult addSN(@RequestBody @Valid AddSNsDTO addSNsDTO) {
36 40
37 try { 41 try {
38 - snService.addSN(SNDto); 42 + snService.addSN(addSNsDTO);
39 return HttpResult.success("添加成功"); 43 return HttpResult.success("添加成功");
40 } catch (SNRepetitiveException e) { 44 } catch (SNRepetitiveException e) {
41 - return HttpResult.fail("SN已存在,请勿重复添加!"); 45 + return HttpResult.fail(e.getMessage());
42 } catch (Exception e) { 46 } catch (Exception e) {
43 logger.error(e.getMessage()); 47 logger.error(e.getMessage());
44 return HttpResult.fail(); 48 return HttpResult.fail();
@@ -60,9 +64,9 @@ public class SNController { @@ -60,9 +64,9 @@ public class SNController {
60 // } 64 // }
61 65
62 @ApiOperation("获取全部base64加密后的SN") 66 @ApiOperation("获取全部base64加密后的SN")
63 - @GetMapping("/get_SNs") 67 + @GetMapping("/get_sn")
64 @ResponseBody 68 @ResponseBody
65 - public HttpResult<String> getBase64SNs() throws IOException { 69 + public HttpResult<String> getBase64SNs() {
66 try { 70 try {
67 return HttpResult.success("",snService.getEncryptSNs()); 71 return HttpResult.success("",snService.getEncryptSNs());
68 } catch (Exception e) { 72 } catch (Exception e) {
@@ -73,12 +77,12 @@ public class SNController { @@ -73,12 +77,12 @@ public class SNController {
73 } 77 }
74 78
75 @ApiOperation("删除指定SN") 79 @ApiOperation("删除指定SN")
76 - @PostMapping("/delete_SN") 80 + @PostMapping("/delete_sn")
77 @ResponseBody 81 @ResponseBody
78 - public HttpResult deleteSN(@RequestBody String SN) { 82 + public HttpResult deleteSN(@RequestBody @Valid DeleteSNsDTO deleteSNsDTO) {
79 try { 83 try {
80 - snService.deleteSN(SN);  
81 - return HttpResult.success("SN已删除或不存在!"); 84 + snService.deleteSN(deleteSNsDTO);
  85 + return HttpResult.success("删除成功!");
82 } 86 }
83 catch (Exception e) { 87 catch (Exception e) {
84 logger.error(e.getMessage()); 88 logger.error(e.getMessage());
src/main/java/com/example/demo/dto/AddSNsDTO.java 0 → 100644
  1 +package com.example.demo.dto;
  2 +
  3 +
  4 +import io.swagger.annotations.ApiModel;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.Data;
  7 +
  8 +import javax.validation.constraints.NotBlank;
  9 +import javax.validation.constraints.NotNull;
  10 +import java.util.ArrayList;
  11 +import java.util.List;
  12 +
  13 +@Data
  14 +@ApiModel(description = "删除SNs入参")
  15 +public class AddSNsDTO {
  16 +
  17 + @ApiModelProperty(value = "项目名称")
  18 + @NotBlank(message = "项目名称不能为空!")
  19 + private String projectName;
  20 +
  21 + @ApiModelProperty(value = "设备码")
  22 + @NotNull(message = "设备码不能为空!")
  23 + private ArrayList<String> sns;
  24 +}
src/main/java/com/example/demo/dto/DeleteSNsDTO.java 0 → 100644
  1 +package com.example.demo.dto;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +
  7 +import javax.validation.constraints.NotNull;
  8 +import java.util.ArrayList;
  9 +import java.util.List;
  10 +
  11 +@Data
  12 +@ApiModel(description = "删除SNs入参")
  13 +public class DeleteSNsDTO {
  14 + @ApiModelProperty(value = "设备码")
  15 + @NotNull(message = "设备码不能为空!")
  16 + private ArrayList<String> sns;
  17 +}
src/main/java/com/example/demo/service/SNService.java
1 package com.example.demo.service; 1 package com.example.demo.service;
2 2
  3 +import com.example.demo.dto.AddSNsDTO;
  4 +import com.example.demo.dto.DeleteSNsDTO;
3 import com.example.demo.exception.SNRepetitiveException; 5 import com.example.demo.exception.SNRepetitiveException;
4 6
5 import javax.servlet.http.HttpServletRequest; 7 import javax.servlet.http.HttpServletRequest;
@@ -10,9 +12,9 @@ import java.io.IOException; @@ -10,9 +12,9 @@ import java.io.IOException;
10 public interface SNService { 12 public interface SNService {
11 /** 13 /**
12 * 新增SN号 14 * 新增SN号
13 - * @param SN SN号 15 + * @param addSNsDTO SN号
14 */ 16 */
15 - void addSN(String SN) throws SNRepetitiveException, IOException; 17 + void addSN(AddSNsDTO addSNsDTO) throws SNRepetitiveException, IOException;
16 18
17 /** 19 /**
18 * 下载所有SN号 20 * 下载所有SN号
@@ -27,8 +29,8 @@ public interface SNService { @@ -27,8 +29,8 @@ public interface SNService {
27 29
28 /** 30 /**
29 * 删除指定SN记录 31 * 删除指定SN记录
30 - * @param SN SN号 32 + * @param deleteSNsDTO SN号
31 */ 33 */
32 - void deleteSN(String SN) throws Exception; 34 + void deleteSN(DeleteSNsDTO deleteSNsDTO) throws Exception;
33 35
34 } 36 }
src/main/java/com/example/demo/service/impl/SNServiceImpl.java
1 package com.example.demo.service.impl; 1 package com.example.demo.service.impl;
2 2
3 import cn.hutool.core.codec.Base64; 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;
4 import com.example.demo.exception.SNRepetitiveException; 7 import com.example.demo.exception.SNRepetitiveException;
5 import com.example.demo.service.SNService; 8 import com.example.demo.service.SNService;
  9 +import org.apache.logging.log4j.LogManager;
  10 +import org.apache.logging.log4j.Logger;
6 import org.springframework.beans.factory.annotation.Value; 11 import org.springframework.beans.factory.annotation.Value;
7 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
8 13
9 import javax.servlet.http.HttpServletRequest; 14 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse; 15 import javax.servlet.http.HttpServletResponse;
11 import java.io.*; 16 import java.io.*;
  17 +import java.text.SimpleDateFormat;
  18 +import java.util.Date;
12 import java.util.HashSet; 19 import java.util.HashSet;
13 import java.util.Set; 20 import java.util.Set;
14 import java.util.concurrent.locks.Lock; 21 import java.util.concurrent.locks.Lock;
@@ -21,6 +28,8 @@ public class SNServiceImpl implements SNService { @@ -21,6 +28,8 @@ public class SNServiceImpl implements SNService {
21 */ 28 */
22 private static final Lock lock = new ReentrantLock(); 29 private static final Lock lock = new ReentrantLock();
23 30
  31 + static Logger logger = LogManager.getLogger(SNServiceImpl.class);
  32 +
24 @Value("${SN.file.path}") 33 @Value("${SN.file.path}")
25 String SNFilePath; 34 String SNFilePath;
26 35
@@ -28,12 +37,16 @@ public class SNServiceImpl implements SNService { @@ -28,12 +37,16 @@ public class SNServiceImpl implements SNService {
28 String SNTempFilePath; 37 String SNTempFilePath;
29 38
30 @Override 39 @Override
31 - public void addSN(String SNDto) throws SNRepetitiveException, IOException { 40 + public void addSN(AddSNsDTO addSNsDTO) throws SNRepetitiveException, IOException {
  41 +
32 //加try,catch只为释放锁 42 //加try,catch只为释放锁
33 try { 43 try {
34 //加锁 44 //加锁
35 lock.lock(); 45 lock.lock();
36 - 46 + logger.info("-----------------------------开始添加SNs-----------------------------");
  47 + StringBuilder SNs = new StringBuilder();
  48 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  49 + String currTime = sdf.format(new Date());
37 //读取文件,判断SN是否重复 50 //读取文件,判断SN是否重复
38 Set<String> set = new HashSet<>(); 51 Set<String> set = new HashSet<>();
39 BufferedReader bufferedReader = new BufferedReader(new FileReader(SNFilePath)); 52 BufferedReader bufferedReader = new BufferedReader(new FileReader(SNFilePath));
@@ -44,17 +57,21 @@ public class SNServiceImpl implements SNService { @@ -44,17 +57,21 @@ public class SNServiceImpl implements SNService {
44 String SN = br.substring(0,index == -1? 0 : index); 57 String SN = br.substring(0,index == -1? 0 : index);
45 set.add(SN); 58 set.add(SN);
46 } 59 }
47 -  
48 - String addSn = SNDto.substring(0,SNDto.indexOf('#'));  
49 - if (set.contains(addSn)) {  
50 - throw new SNRepetitiveException("SN:" + addSn + " 已存在,请勿重复添加"); 60 + for (String SN : addSNsDTO.getSns()) {
  61 + if (set.contains(SN)) {
  62 + throw new SNRepetitiveException("SN:" + SN + " 已存在,请勿重复添加");
  63 + }
  64 + SNs.append(SN).append("##").append(addSNsDTO.getProjectName()).append("##").append(currTime);
  65 + SNs.append(System.lineSeparator());
51 } 66 }
52 67
  68 +
53 //写入 69 //写入
54 FileWriter fileWriter = new FileWriter(SNFilePath,true); 70 FileWriter fileWriter = new FileWriter(SNFilePath,true);
55 - fileWriter.write(SNDto+System.lineSeparator()); 71 + fileWriter.write(SNs.toString());
56 fileWriter.flush(); 72 fileWriter.flush();
57 fileWriter.close(); 73 fileWriter.close();
  74 + logger.info("-----------------------------结束添加SNs-----------------------------");
58 } finally { //释放锁 75 } finally { //释放锁
59 lock.unlock(); 76 lock.unlock();
60 } 77 }
@@ -74,23 +91,29 @@ public class SNServiceImpl implements SNService { @@ -74,23 +91,29 @@ public class SNServiceImpl implements SNService {
74 } 91 }
75 92
76 @Override 93 @Override
77 - public void deleteSN(String SN) throws Exception{ 94 + public void deleteSN(DeleteSNsDTO deleteSNsDTO) throws Exception{
78 try { 95 try {
79 lock.lock(); 96 lock.lock();
  97 + logger.info("-----------------------------开始删除SNs-----------------------------");
  98 +
  99 + HashSet<String> deleteSNsSet = new HashSet<>(deleteSNsDTO.getSns());
80 100
81 //读取文件,记录不用删除的数据 101 //读取文件,记录不用删除的数据
82 BufferedReader bufferedReader = new BufferedReader(new FileReader(SNFilePath)); 102 BufferedReader bufferedReader = new BufferedReader(new FileReader(SNFilePath));
83 String br; 103 String br;
84 StringBuilder stringBuilder = new StringBuilder(); 104 StringBuilder stringBuilder = new StringBuilder();
  105 + StringBuilder existSNs = new StringBuilder();
  106 + //所要删除的SN是否存在
85 boolean SNExist = false; 107 boolean SNExist = false;
86 while ((br=bufferedReader.readLine()) != null) { 108 while ((br=bufferedReader.readLine()) != null) {
87 //截取SN 109 //截取SN
88 int index = br.indexOf('#'); 110 int index = br.indexOf('#');
89 String str = br.substring(0,index == -1? 0 : index); 111 String str = br.substring(0,index == -1? 0 : index);
90 - if (!SN.equals(str)) { 112 + if (!deleteSNsSet.contains(str)) {
91 stringBuilder.append(br); 113 stringBuilder.append(br);
92 stringBuilder.append(System.lineSeparator()); 114 stringBuilder.append(System.lineSeparator());
93 } else { 115 } else {
  116 + existSNs.append(str).append("、");
94 SNExist = true; 117 SNExist = true;
95 } 118 }
96 } 119 }
@@ -110,6 +133,8 @@ public class SNServiceImpl implements SNService { @@ -110,6 +133,8 @@ public class SNServiceImpl implements SNService {
110 SNfileWriter.close(); 133 SNfileWriter.close();
111 134
112 } 135 }
  136 + logger.warn("成功删除SNs:{}",existSNs);
  137 + logger.info("-----------------------------结束删除SNs-----------------------------");
113 138
114 139
115 } finally { 140 } finally {
src/main/resources/application.properties
@@ -10,13 +10,13 @@ logging.config=classpath:log4j2.xml @@ -10,13 +10,13 @@ logging.config=classpath:log4j2.xml
10 #swagger.basic.username = test 10 #swagger.basic.username = test
11 #swagger.basic.password = 123 11 #swagger.basic.password = 123
12 12
13 -spring.thymeleaf.cache=false  
14 -spring.thymeleaf.prefix=classpath:/templates/  
15 -spring.thymeleaf.suffix=.html 13 +#spring.thymeleaf.cache=false
  14 +#spring.thymeleaf.prefix=classpath:/templates/
  15 +#spring.thymeleaf.suffix=.html
16 16
17 17
18 -#SN.file.path=src/main/resources/sn/SN.txt  
19 -#SN.file.temp.path=src/main/resources/sn/SNTemp.txt 18 +SN.file.path=src/main/resources/sn/SN.txt
  19 +SN.file.temp.path=src/main/resources/sn/SNTemp.txt
20 20
21 -SN.file.path=  
22 -SN.file.temp.path=  
23 \ No newline at end of file 21 \ No newline at end of file
  22 +#SN.file.path=
  23 +#SN.file.temp.path=
24 \ No newline at end of file 24 \ No newline at end of file