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