分布式预约挂号平台(五) | 郑医宝の医院设置接口实现 swagger2测试增删改查 ~ 锁定解锁 ~ 发送签名秘钥

使用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();
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值