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