From 4a1bcc3f53e13fdce9606d2b22d50b2298570de4 Mon Sep 17 00:00:00 2001 From: Administrator Date: Fri, 1 Dec 2023 20:47:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=A9=BA=E6=B0=94=E8=B4=A8?= =?UTF-8?q?=E9=87=8F=E4=BF=A1=E6=81=AF~?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 ++ .../com/mashibing/AirExceptionHandler.java | 20 ++++++ .../mashibing/controller/AirController.java | 37 ++++++++++ .../java/com/mashibing/form/AirAddForm.java | 70 +++++++++++++++++++ .../java/com/mashibing/mapper/AirMapper.java | 5 ++ .../com/mashibing/service/AirService.java | 7 ++ .../service/impl/AirServiceImpl.java | 20 ++++++ src/main/java/com/mashibing/util/R.java | 6 ++ .../com/mashibing/mapper/AirMapperTest.java | 16 +++++ .../com/mashibing/service/AirServiceTest.java | 14 ++++ 10 files changed, 201 insertions(+) create mode 100644 src/main/java/com/mashibing/AirExceptionHandler.java create mode 100644 src/main/java/com/mashibing/form/AirAddForm.java 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