diff --git a/pom.xml b/pom.xml
index ab1185e..fb1aa63 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,6 +41,12 @@
org.springframework.boot
spring-boot-starter-test
+
+
+ org.hibernate
+ hibernate-validator
+ 6.1.5.Final
+
\ No newline at end of file
diff --git a/src/main/java/com/mashibing/AirExceptionHandler.java b/src/main/java/com/mashibing/AirExceptionHandler.java
new file mode 100644
index 0000000..8e269e7
--- /dev/null
+++ b/src/main/java/com/mashibing/AirExceptionHandler.java
@@ -0,0 +1,20 @@
+package com.mashibing;
+
+import com.mashibing.util.R;
+import com.mashibing.vo.ResultVO;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+/**
+ * @author zjw
+ * @description
+ */
+@RestControllerAdvice
+public class AirExceptionHandler {
+
+ @ExceptionHandler(Exception.class)
+ public ResultVO ex(Exception ex){
+ return R.error(-1,ex.getMessage());
+ }
+
+}
diff --git a/src/main/java/com/mashibing/controller/AirController.java b/src/main/java/com/mashibing/controller/AirController.java
index 6c2f2fd..0a2a911 100644
--- a/src/main/java/com/mashibing/controller/AirController.java
+++ b/src/main/java/com/mashibing/controller/AirController.java
@@ -2,14 +2,18 @@ package com.mashibing.controller;
import com.github.pagehelper.PageInfo;
import com.mashibing.entity.District;
+import com.mashibing.form.AirAddForm;
import com.mashibing.service.AirService;
import com.mashibing.util.R;
import com.mashibing.vo.ResultVO;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import javax.validation.Valid;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -57,4 +61,37 @@ public class AirController {
return R.ok(pageInfo.getTotal(),pageInfo.getList());
}
+
+ /**
+ * # 添加空气质量信息
+ * # 请求方式&路径
+ * POST http://localhost:8080/air/add
+ *
+ * # 请求参数 正常为了解耦,可以单独声明一个AirAddForm专门去接收。
+ * districtId = Integer (必传项)
+ * monitorTime = yyyy-MM-dd (必传项)
+ * pm10 = Integer (必传项)
+ * pm25 = Integer (必传项)
+ * monitoringStation = String (必传项)
+ *
+ * # 业务流程
+ * 1、接收参数
+ * 2、做参数的非空校验
+ * 3、数据扔到数据库
+ */
+ @PostMapping("/air/add")
+ public ResultVO airAdd(@Valid AirAddForm airAddForm, BindingResult result){
+ // 1、查看参数是否合法
+ if (result.hasErrors()) {
+ // 有参数不满足要求
+ String message = result.getFieldError().getDefaultMessage();
+ // 返回参数不合法信息
+ return R.error(400,message);
+ }
+ //2、调用Service层添加数据
+ airService.add(airAddForm);
+
+ //3、添加成功
+ return R.ok();
+ }
}
diff --git a/src/main/java/com/mashibing/form/AirAddForm.java b/src/main/java/com/mashibing/form/AirAddForm.java
new file mode 100644
index 0000000..45df4d2
--- /dev/null
+++ b/src/main/java/com/mashibing/form/AirAddForm.java
@@ -0,0 +1,70 @@
+package com.mashibing.form;
+
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * @author zjw
+ * @description
+ */
+public class AirAddForm {
+
+ @NotNull(message = "检测区域为必选项,岂能为空!")
+ private Integer districtId;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @NotNull(message = "检测时间为必选项,岂能为空!")
+ private Date monitorTime;
+
+ @NotNull(message = "pm10为必选项,岂能为空!")
+ private Integer pm10;
+
+ @NotNull(message = "pm25为必选项,岂能为空!")
+ private Integer pm25;
+
+ @NotBlank(message = "检测站为必选项,岂能为空!")
+ private String monitoringStation;
+
+ public Integer getDistrictId() {
+ return districtId;
+ }
+
+ public void setDistrictId(Integer districtId) {
+ this.districtId = districtId;
+ }
+
+ public Date getMonitorTime() {
+ return monitorTime;
+ }
+
+ public void setMonitorTime(Date monitorTime) {
+ this.monitorTime = monitorTime;
+ }
+
+ public Integer getPm10() {
+ return pm10;
+ }
+
+ public void setPm10(Integer pm10) {
+ this.pm10 = pm10;
+ }
+
+ public Integer getPm25() {
+ return pm25;
+ }
+
+ public void setPm25(Integer pm25) {
+ this.pm25 = pm25;
+ }
+
+ public String getMonitoringStation() {
+ return monitoringStation;
+ }
+
+ public void setMonitoringStation(String monitoringStation) {
+ this.monitoringStation = monitoringStation;
+ }
+}
diff --git a/src/main/java/com/mashibing/mapper/AirMapper.java b/src/main/java/com/mashibing/mapper/AirMapper.java
index 51f6805..e186b48 100644
--- a/src/main/java/com/mashibing/mapper/AirMapper.java
+++ b/src/main/java/com/mashibing/mapper/AirMapper.java
@@ -1,6 +1,7 @@
package com.mashibing.mapper;
import com.mashibing.entity.Air;
+import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -13,4 +14,8 @@ public interface AirMapper {
// 查询空气质量的SQL扔Mapper里
List findBydDistrictId(@Param("districtId") Integer districtId);
+
+ // 添加数据
+ @Insert("insert into air (district_id,monitor_time,pm10,pm25,monitoring_station) values (#{districtId},#{monitorTime},#{pm10},#{pm25},#{monitoringStation})")
+ int insert(Air air);
}
diff --git a/src/main/java/com/mashibing/service/AirService.java b/src/main/java/com/mashibing/service/AirService.java
index aeab76e..7d22228 100644
--- a/src/main/java/com/mashibing/service/AirService.java
+++ b/src/main/java/com/mashibing/service/AirService.java
@@ -2,6 +2,7 @@ package com.mashibing.service;
import com.github.pagehelper.PageInfo;
import com.mashibing.entity.District;
+import com.mashibing.form.AirAddForm;
import java.util.List;
@@ -24,4 +25,10 @@ public interface AirService {
* @return
*/
PageInfo findAirByDistrictIdAndPage(Integer page, Integer size, Integer districtId);
+
+ /**
+ * 添加空气质量信息
+ * @param airAddForm
+ */
+ void add(AirAddForm airAddForm);
}
diff --git a/src/main/java/com/mashibing/service/impl/AirServiceImpl.java b/src/main/java/com/mashibing/service/impl/AirServiceImpl.java
index 46104f8..8d76840 100644
--- a/src/main/java/com/mashibing/service/impl/AirServiceImpl.java
+++ b/src/main/java/com/mashibing/service/impl/AirServiceImpl.java
@@ -4,11 +4,14 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.mashibing.entity.Air;
import com.mashibing.entity.District;
+import com.mashibing.form.AirAddForm;
import com.mashibing.mapper.AirMapper;
import com.mashibing.mapper.DistrictMapper;
import com.mashibing.service.AirService;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -43,4 +46,21 @@ public class AirServiceImpl implements AirService {
//4、返回
return pageInfo;
}
+
+ @Override
+ @Transactional
+ public void add(AirAddForm airAddForm) {
+ //1、封装数据
+ Air air = new Air();
+ BeanUtils.copyProperties(airAddForm,air);
+
+ //2、添加数据
+ int count = airMapper.insert(air);
+
+ //3、判断count
+ if (count != 1) {
+ System.out.println("【添加空气质量】 添加失败!!");
+ throw new RuntimeException("【添加空气质量】 添加失败!!");
+ }
+ }
}
diff --git a/src/main/java/com/mashibing/util/R.java b/src/main/java/com/mashibing/util/R.java
index 28692c5..ee486ae 100644
--- a/src/main/java/com/mashibing/util/R.java
+++ b/src/main/java/com/mashibing/util/R.java
@@ -27,4 +27,10 @@ public class R {
return vo;
}
+ public static ResultVO error(Integer code, String message) {
+ ResultVO vo = new ResultVO();
+ vo.setCode(code);
+ vo.setMsg(message);
+ return vo;
+ }
}
diff --git a/src/test/java/com/mashibing/mapper/AirMapperTest.java b/src/test/java/com/mashibing/mapper/AirMapperTest.java
index 6ae3caf..84ac94a 100644
--- a/src/test/java/com/mashibing/mapper/AirMapperTest.java
+++ b/src/test/java/com/mashibing/mapper/AirMapperTest.java
@@ -1,12 +1,15 @@
package com.mashibing.mapper;
import com.mashibing.entity.Air;
+import org.junit.Assert;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.Date;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
@@ -26,4 +29,17 @@ class AirMapperTest {
System.out.println(air);
}
}
+
+ @Test
+ @Transactional
+ public void insert(){
+ Air air = new Air();
+ air.setDistrictId(1);
+ air.setMonitorTime(new Date());
+ air.setPm10(10);
+ air.setPm25(25);
+ air.setMonitoringStation("长沙监测站!!!!");
+ int count = airMapper.insert(air);
+ Assert.assertEquals(1,count);
+ }
}
\ No newline at end of file
diff --git a/src/test/java/com/mashibing/service/AirServiceTest.java b/src/test/java/com/mashibing/service/AirServiceTest.java
index def60fa..39ee2c8 100644
--- a/src/test/java/com/mashibing/service/AirServiceTest.java
+++ b/src/test/java/com/mashibing/service/AirServiceTest.java
@@ -3,12 +3,15 @@ package com.mashibing.service;
import com.github.pagehelper.PageInfo;
import com.mashibing.entity.District;
+import com.mashibing.form.AirAddForm;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.Date;
import java.util.List;
@RunWith(SpringRunner.class)
@@ -33,4 +36,15 @@ public class AirServiceTest {
}
System.out.println(pageInfo.getTotal());
}
+
+ @Test
+ public void add(){
+ AirAddForm air = new AirAddForm();
+ air.setDistrictId(1);
+ air.setMonitorTime(new Date());
+ air.setPm10(10);
+ air.setPm25(25);
+ air.setMonitoringStation("长沙监测站!!!!!!!!");
+ airService.add(air);
+ }
}
\ No newline at end of file