文章目录
使用Swagger2来测试增删改查,swagger2有自己特定的访问地址:http://localhost:8201/swagger-ui.html
一、增
1.添加医院设置接口
为了生成sign_key签名秘钥
在common/service_util的java目录下新建一个utils包,在里面配置生成32位MD5加密配置类
package com.zhengyibao.yygh.common.utils;
import java.security.MessageDigest;
/**
* @author wenmiao
* @create 2021-09-28 21:37
* @explain MD5加密工具类
*/
public class MD5 {
public static String encrypt(String str) {
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
char[] charArray = str.toCharArray();
byte[] byteArray = new byte[charArray.length];
for (int i = 0; i < charArray.length; i++) {
byteArray[i] = (byte) charArray[i];
}
byte[] md5Bytes = md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++) {
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16) {
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
}
//1.增,添加医院设置接口
@ApiOperation(value = "添加医院设置信息")
@PostMapping("saveHospitalSet")
public Result saveHospitalSet(@RequestBody(required = false) HospitalSet hospitalSet){ //将数据使用json格式从页面传递到后台,方便前端开发
//数据库中的 sign_key签名秘钥 和 status状态 需要单独进行设置
//status状态, 1表示能使用 , 0表示不能使用
hospitalSet.setStatus(1);
//sign_key签名秘钥,随机生成一个随机数,加上当前的时间,再使用MD5进行加密
Random random=new Random();
hospitalSet.setSignKey(MD5.encrypt(System.currentTimeMillis()+""+random.nextInt(1000)));
//调用hospitalSetService的 save方法 实现 添加操作
boolean save=hosp~~ italSetService.save(hospitalSet);
if(save){
return Result.ok(); //true
}else {
return Result.fail(); //false
}
}
//被添加的数据,与修改不同,修改需要id值,添加不需要,因为添加时id是自增长的
{
"apiUrl": "http://localhost:99/",
"contactsName": "张三",
"contactsPhone": "172636737",
"hoscode": "1000_03",
"hosname": "北京人民医院"
}
二、删
1.根据id逻辑删除医院设置信息
//2.删,根据id逻辑删除医院设置信息
@ApiOperation(value = "根据id逻辑删除医院设置信息")
@DeleteMapping("{id}") //delete方式提交,并通过路径传id值 但由于浏览器无法直接使用delete方式访问,所以要在comment模块整合swagger,在common父模块的pom.xml中引入swagger的依赖,在service_util中
public Result removeHospitalSet(@PathVariable Long id){
boolean flag=hospitalSetService.removeById(id);
if(flag){
return Result.ok(); //成功
}else{
return Result.fail(); //失败
}
}
2.批量删除医院设置
//3.删,批量删除医院设置
@ApiOperation(value = "批量删除医院设置")
@PostMapping("batchRemoveHospitalSetByIds")
public Result batchRemoveHospitalSetByIds(@RequestBody List<Long> idList){
hospitalSetService.removeByIds(idList); //传入一个idList集合,是存储id的集合
return Result.ok();
}
三、改
1.修改医院设置
//4.改,修改医院设置(修改之前要根据id先获取医院设置)
@ApiOperation(value = "修改医院设置")
@PostMapping("updateHospitalSet")
public Result updateHospitalSet(@RequestBody(required = false) HospitalSet hospitalSet){ //与添加一样都需要使用@RequestBody,使用需要使用PostMapping提交
boolean update=hospitalSetService.updateById(hospitalSet);
if(update){
return Result.ok();
}else{
return Result.fail();
}
}
//被修改的数据,与添加不同,修改也需要id值
{
"apiUrl": "http://localhost:993/",
"contactsName": "肖战",
"contactsPhone": "11233930",
"hoscode": "1000_08",
"hosname": "西安人民医院",
"id": 4
}
四、查
1.查询全部医院设置
//5.查,查询医院设置表的所有信息
@ApiOperation(value = "获取所有医院设置信息") //swagger的注解,方法的中文提示信息
@GetMapping("findAll") //get方式提交(查询所有)
public Result findAllHospitalSet(){
List<HospitalSet> list=hospitalSetService.list();
return Result.ok(list);
}
2.根据id获取医院设置
//6.查,根据id获取医院设置
@ApiOperation(value = "获取所有医院设置信息") //swagger的注解,方法的中文提示信息
@GetMapping("findAll") //get方式提交(查询所有)
public Result findAllHospitalSet(){
List<HospitalSet> list=hospitalSetService.list();
return Result.ok(list);
}
3.条件查询带分页接口
在common/service_util中做分页查询的配置类HospConfig,如果不添加会导致查询时limit失效
package com.zhengyibao.yygh.common.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* @author wenmiao
* @create 2021-09-28 21:07
* @explain 分页查询的配置类,如果不添加会导致查询时limit失效
*/
@Configuration
@MapperScan("com.zhengyibao.yygh.hosp.mapper")
public class HospConfig {
//分页插件
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
}
在model的java包下创建vo包,vo包下创建hosp包,包下创建HospitalSetQueryVo类,用于封装分页查询的条件
package com.zhengyibao.yygh.vo.hosp;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author wenmiao
* @create 2021-09-28 19:46
* @explain 条件分页查询的vo类,用来封装条件值
*/
@Data
public class HospitalSetQueryVo {
@ApiModelProperty(value = "医院名称") //swagger提示
private String hosname;
@ApiModelProperty(value = "医院编号")
private String hoscode;
}
package com.zhengyibao.yygh.hosp.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mysql.jdbc.StringUtils;
import com.zhengyibao.yygh.common.result.Result;
import com.zhengyibao.yygh.hosp.service.HospitalSetService;
import com.zhengyibao.yygh.model.hosp.HospitalSet;
import com.zhengyibao.yygh.vo.hosp.HospitalSetQueryVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author wenmiao
* @create 2021-09-27 22:05
* @explain
*/
@Api(tags = "医院设置管理") //swagger的注解,中文提示信息
@RestController //里面有两个主要注解,1.@Controller:让HospitalSetController交给spring管理 2.@ResponseBody:返回数据(以json格式返回)
@RequestMapping("/admin/hosp/hospitalSet") //访问的路径 http://localhost:8201/admin/hosp/hospitalSet/findAll
public class HospitalSetController {
//注入service
@Autowired
private HospitalSetService hospitalSetService;
//7.查,条件查询带分页接口
//需求:根据 医院名称 或者 医院编号 查询出对应 医院设置 记录,可以使用上一页,下一页,首页和尾页
//①.在model中创建vo类,HospitalSetQueryVo,来封装条件值
//②.编写controller,获取条件对象
@ApiOperation(value = "条件查询带分页接口")
@PostMapping("findPageHospitalSet/{current}/{limit}") //post方式提交,并通过路径传递 current 当前页,和 limit 每页记录数 ,通过 对象HospitalSetQueryVo 传递 当前条件值
public Result findPageHospitalSet(@PathVariable long current,
@PathVariable long limit,
@RequestBody(required = false) HospitalSetQueryVo hospitalSetQueryVo){ //@RequestBody(required = false)表示用json方式传递数据,需要使用PostMapping提交才可以得到值
//创建Page分页对象,传递当前页和每页记录数
Page<HospitalSet> page=new Page<>(current,limit);
//构建条件,医院名称使用 like 模糊查询,医院编号使用 eq 等值查询
QueryWrapper<HospitalSet> wrapper=new QueryWrapper<>();
String hosname=hospitalSetQueryVo.getHosname();
String hoscode=hospitalSetQueryVo.getHoscode();
if(!StringUtils.isNullOrEmpty(hosname)){ //当输入医院名称时才设置条件,为空时不设置
wrapper.like("hosname",hosname);
}
if(!StringUtils.isNullOrEmpty(hoscode)){ //输入医院编号时才设置条件,为空时不设置
wrapper.eq("hoscode",hoscode);
}
//调用方法实现分页查询
Page<HospitalSet> pageHospitalSet=hospitalSetService.page(page,wrapper); //第一个参数 分页对象 ,第二个参数 条件对象
System.out.println("这是current:"+current);
//统一接口返回
return Result.ok(pageHospitalSet);
}
}
使用GetMapping方式提交的测试界面
在HospitalSetQueryVo上添加@RequestBody(required = false)使用PostMapping提交的测试界面
五、其他
1.医院设置锁定和解锁
//8.医院设置锁定和解锁
//就是修改status的值,status=1 锁定,status=0 解锁,锁定后就无法使用接口,解锁后的接口才可以使用
@ApiOperation(value = "医院设置锁定和解锁")
@PutMapping("lockHospitalSet/{id}/{status}")
public Result lockHospitalSet(@PathVariable Long id,@PathVariable Integer status){
//根据id查询医院设置信息
HospitalSet hospitalSet=hospitalSetService.getById(id);
//重新设置状态
hospitalSet.setStatus(status);
//调用updateById修改status的值
hospitalSetService.updateById(hospitalSet);
return Result.ok();
}
2.发送签名秘钥
//9.(短信,验证码)
//把秘钥发送给医院的接口,只有秘钥正确才可以进行对接
@ApiOperation(value = "发送签名秘钥")
@PutMapping("sendKeyHospitalSet/{id}")
public Result sendKeyHospitalSet(@PathVariable Long id){
//根据id查询医院设置信息
HospitalSet hospitalSet=hospitalSetService.getById(id);
//重新设置状态
String signKey=hospitalSet.getSignKey();
String hoscode=hospitalSet.getHoscode();
//TODO 发送短信 待完善
return Result.ok();
}