后台系统-医院设置接口-需求和准备

  • 1、需求
  • 2、表结构
  • 3、医院模块开发
    • 3.1、 搭建医院模块service-hosp
    • 3.2、引入依赖
    • 3.3、添加配置文件application.properties
    • 3.4、添加启动类
  • 4、创建基础类
    • 4.1、公共基础类BaseEntity:
    • 4.2、医院设置实体类
    • 4.3、持久层
    • 4.4、持久层xml文件
    • 4.5、业务层接口
    • 4.5、业务层实现类
    • 4.6、控制层
    • 4.7、注意将mapper接口加入到容器中
    • 4.9、编写处理器,自动插入相关数据
    • 4.10、添加分页插件
  • 5、开发医院设置接口
    • 5.1、条件查询并分页显示医院设置信息
      • 方法1:
      • 方法2:json形式传递(使用较多)
    • 5.2、添加医院设置信息
    • 5.3、根据id查询医院信息
    • 5.4、修改医院信息
    • 5.5、批量删除医院设置信息
    • 5.6、医院信息锁定
    • 5.7、 发送签名密钥

1、需求

医院设置主要是用来保存开通医院的一些基本信息,每个医院一条信息,保存了医院编号(平台分配,全局唯一)和接口调用相关的签名key等信息,是整个流程的第一步,只有开通了医院设置信息,才可以上传医院相关信息。
我们所开发的功能就是基于单表的一个CRUD、锁定/解锁和发送签名信息这些基本功能。

2、表结构

CREATE TABLE `hospital_set` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',`hosname` varchar(100) DEFAULT NULL COMMENT '医院名称',`hoscode` varchar(30) DEFAULT NULL COMMENT '医院编号',`api_url` varchar(100) DEFAULT NULL COMMENT 'api基础路径',`sign_key` varchar(50) DEFAULT NULL COMMENT '签名秘钥',`contacts_name` varchar(20) DEFAULT NULL COMMENT '联系人',`contacts_phone` varchar(11) DEFAULT NULL COMMENT '联系人手机',`status` tinyint(3) NOT NULL DEFAULT '0' COMMENT '状态',`create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间',`is_deleted` tinyint(3) NOT NULL DEFAULT '0' COMMENT '逻辑删除(1:已删除,0:未删除)',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

hosname:医院名称
hoscode:医院编号(平台分配,全局唯一,api接口必填信息)
api_url:医院回调的基础url(如:预约下单,我们要调用该地址去医院下单)
sign_key:双方api接口调用的签名key,有平台生成
contacts_name:医院联系人姓名
contacts_phone:医院联系人手机
status:状态(锁定/解锁)

3、医院模块开发

3.1、 搭建医院模块service-hosp

选择next

创建成功:

3.2、引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>service</artifactId><groupId>com.study</groupId><version>0.0.1-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>service_hosp</artifactId><dependencies><dependency><groupId>com.study</groupId><artifactId>model</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.1.1</version></dependency><!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.1</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-core</artifactId><version>3.4.2</version><scope>compile</scope></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-extension</artifactId><version>3.4.2</version><scope>compile</scope></dependency></dependencies></project>

3.3、添加配置文件application.properties

# 服务端口
server.port=8201
# 服务名
spring.application.name=service-hosp# 环境设置:dev、test、prod
spring.profiles.active=dev# mysql数据库连接
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/yygh_hosp?characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root#返回json的全局时间格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8#配置mapper xml文件的路径
#mybatis-plus.mapper-locations=classpath:com/study/yygh/mapper/xml/*.xml
mybatis-plus.mapper-locations=classpath:com/study/yygh/mapper/xml/*.xml
# nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848#开启sentinel
feign.sentinel.enabled=true
#设置sentinel地址
spring.cloud.sentinel.transport.dashboard=http://127.0.0.1:8858#mongodb地址
spring.data.mongodb.host=192.168.44.163
spring.data.mongodb.port=27017
spring.data.mongodb.database=yygh_hosp#rabbitmq地址
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

3.4、添加启动类

4、创建基础类

创建医院设置接口的基础类
医院设置接口

4.1、公共基础类BaseEntity:

@Data
public class BaseEntity implements Serializable {@ApiModelProperty(value="id")@TableId(type= IdType.AUTO)private Long id;@ApiModelProperty(value="创建时间")@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")@TableField("create_time")private Date createTime;@ApiModelProperty(value="更新时间")@TableField("update_time")private Date updateTime;@ApiModelProperty(value="逻辑删除(1:已删除,0:未删除)")@TableField("is_Deleted")@TableLogicprivate Integer isDeleted;@ApiModelProperty(value="其他参数")@TableField(exist = false)private Map<String,Object> param = new HashMap<>();
}

4.2、医院设置实体类

@Data
@ApiModel(description = "医院设置")
@TableName("hospital_set")
public class HospitalSet extends BaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "医院名称")@TableField("hosname")private String hosname;@ApiModelProperty(value = "医院编号")@TableField("hoscode")private String hoscode;@ApiModelProperty(value = "api基础路径")@TableField("api_url")private String apiUrl;@ApiModelProperty(value = "签名秘钥")@TableField("sign_key")private String signKey;@ApiModelProperty(value = "联系人姓名")@TableField("contacts_name")private String contactsName;@ApiModelProperty(value = "联系人手机")@TableField("contacts_phone")private String contactsPhone;@ApiModelProperty(value = "状态")@TableField("status")private Integer status;
}

4.3、持久层

public interface HospitalSetMapper extends BaseMapper<HospitalSet> {}

4.4、持久层xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.study.yygh.hosp.mapper.HospitalSetMapper">
</mapper>

4.5、业务层接口

public interface HospitalSetService extends IService<HospitalSet> {}

4.5、业务层实现类

@Service
public class HospitalSetServiceImpl extends ServiceImpl<HospitalSetMapper,HospitalSet>implements HospitalSetService {}

4.6、控制层

@RestController
@RequestMapping("/admin/hosp/hospitalSet")
public class HospitalSetController {@Autowiredprivate HospitalSetService hospitalSetService;}

4.7、注意将mapper接口加入到容器中

方法一:创建配置类

@Configuration
@MapperScan("com.study.yygh.hosp.mapper")
public class HospConfig {}

方法二:在mapper接口添加注解

@Mapper

方法三:在启动类上添加注解

@MapperScan("com.study.yygh.hosp.mapper")

4.9、编写处理器,自动插入相关数据

package com.study.yygh.hosp.handler;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;import java.util.Date;/*** @Description :* @Author :lenovo* @Date :2021/5/27 20:51*/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {//执行插入操作时执行该方法@Overridepublic void insertFill(MetaObject metaObject) {this.setFieldValByName("createTime",new Date(),metaObject);this.setFieldValByName("updateTime",new Date(),metaObject);this.setFieldValByName("isDeleted",0,metaObject);}//执行更新操作时执行该方法@Overridepublic void updateFill(MetaObject metaObject) {this.setFieldValByName("updateTime",new Date(),metaObject);}
}

4.10、添加分页插件

//分页插件@Beanpublic PaginationInterceptor paginationInterceptor() {PaginationInterceptor paginationInterceptor = new PaginationInterceptor();// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false// paginationInterceptor.setOverflow(false);// 设置最大单页限制数量,默认 500 条,-1 不受限制// paginationInterceptor.setLimit(500);// 开启 count 的 join 优化,只针对部分 left joinpaginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));return paginationInterceptor;}

5、开发医院设置接口

5.1、条件查询并分页显示医院设置信息

需求:如下图,在前端可以根据条件分页查询数据。

1、创建vo,用于封装前端条件值

@Data
public class HospitalSetQueryVo {@ApiModelProperty(value = "医院名称")private String hosname;@ApiModelProperty(value = "医院编号")private String hoscode;
}

方法1:

//条件查询带分页显示医院设置信息
@ApiOperation(value = "条件查询带分页显示医院设置信息")
@GetMapping("findPage/{current}/{limit}")
public Result findPageHospSet(@PathVariable Long current,@PathVariable Long limit,HospitalSetQueryVo hospitalSetQueryVo){//创建page对象,传递当前页,每页记录数Page<HospitalSet> page = new Page<>(current, limit);String hosname = hospitalSetQueryVo.getHosname();String hoscode = hospitalSetQueryVo.getHoscode();//构建查询条件QueryWrapper<HospitalSet> queryWrapper = new QueryWrapper<>();if(!StringUtils.isEmpty(hosname)){//如果前端传递的数据“医院名称”不为空queryWrapper.like("hosname",hospitalSetQueryVo.getHosname());}if(!StringUtils.isEmpty(hoscode)){//如果前端传递的数据“医院编号”不为空queryWrapper.eq("hoscode",hospitalSetQueryVo.getHashCode());}//调用方法实现分页查询Page<HospitalSet> page1 = hospitalSetService.page(page, queryWrapper);//返回结果return Result.ok(page1);
}

方法2:json形式传递(使用较多)

5.2、添加医院设置信息

创建生成签名的工具类:

package com.study.yygh.common.utils;import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;public final class MD5 {public static String encrypt(String strSrc) {try {char hexChars[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8','9', 'a', 'b', 'c', 'd', 'e', 'f' };byte[] bytes = strSrc.getBytes();MessageDigest md = MessageDigest.getInstance("MD5");md.update(bytes);bytes = md.digest();int j = bytes.length;char[] chars = new char[j * 2];int k = 0;for (int i = 0; i < bytes.length; i++) {byte b = bytes[i];chars[k++] = hexChars[b >>> 4 & 0xf];chars[k++] = hexChars[b & 0xf];}return new String(chars);} catch (NoSuchAlgorithmException e) {e.printStackTrace();throw new RuntimeException("MD5加密出错!!+" + e);}}
}

编写控添加医院信息的接口

  //新增医院设置信息@ApiOperation(value = "新增医院设置信息")@PostMapping("saveHospitalSet")public Result saveHospitalSet(@RequestBody HospitalSet hospitalSet){//设置状态 1使用 0不使用hospitalSet.setStatus(1);//设置签名密钥Random random = new Random();hospitalSet.setSignKey(MD5.encrypt(System.currentTimeMillis()+""+random.nextInt(1000)));//调用service,保存数据boolean flag = hospitalSetService.save(hospitalSet);if(flag){return Result.ok();}else{return Result.fail();}}

5.3、根据id查询医院信息

//根据id查询医院信息
@ApiOperation(value = "根据id查询医院信息")
@GetMapping("getHospSet/{id}")
public Result getHospitalSet(@PathVariable Long id){HospitalSet hospital = hospitalSetService.getById(id);return Result.ok(hospital);

5.4、修改医院信息

//修改医院设置信息@ApiOperation(value = "修改医院设置信息")@PostMapping("updateHospitalSet")public Result updateHospitalSet(@RequestBody HospitalSet hospitalSet){boolean flag = hospitalSetService.updateById(hospitalSet);if(flag){return Result.ok();}else{return Result.fail();}}

5.5、批量删除医院设置信息

//批量删除医院设置信息@ApiOperation(value = "批量删除医院设置信息")@DeleteMapping("deleteBachIds")public Result deleteBachIds(@RequestBody List<Long> ids){hospitalSetService.removeByIds(ids);return Result.ok();}

5.6、医院信息锁定

修改医院状态信息

//医院信息锁定
@ApiOperation(value = "医院信息锁定")
@PostMapping("lockHospitalSet/{id}/{status}")
public Result lockHospitalSet(@PathVariable Long id,@PathVariable Integer status){HospitalSet hospitalSet = hospitalSetService.getById(id);//设置医院状态hospitalSet.setStatus(status);//调用方法修改hospital信息hospitalSetService.updateById(hospitalSet);return Result.ok();
}

5.7、 发送签名密钥

//发送签名密钥
@ApiOperation(value = "发送签名密钥")
@PostMapping("sendKey/{id}")
public Result sendKey(@PathVariable Long id){HospitalSet hospitalSet = hospitalSetService.getById(id);hospitalSet.getSignKey();hospitalSet.getHoscode();//TODO 发送短信return Result.ok();
}

后台系统-医院设置信息接口开发相关推荐

  1. 【笔记】Vue Element+Node.js开发企业通用管理后台系统——电子书上传功能开发

    文章目录 一.创建上传页面组件 二.上传组件开发 三.上传 API 开发 四.上传图书表单 电子书上传 | 「小慕读书」管理后台 一.创建上传页面组件 在前端目录,新建\src\views\book\ ...

  2. 分布式医疗挂号系统(二) | 开发医院设置微服务模块

    本系列文章介绍从0开始搭建一个基于分布式的医疗挂号系统.本次四篇文章完成了医院设置微服务模块的后端接口,为了方便开发,对接口的返回结果.全局异常.全局日志进行了统一处理. 同时,为了方便进行访问测试, ...

  3. 任务分配问题关于医院接口开发

    一 统一返回结果定义 1 枚举类 package com.baiyee.sdgt.common.result;import lombok.Getter;/** * @className: Result ...

  4. 尚医通-OAuth2-微信登录接口开发(三十一)

    目录: (1)微信登录-OAuth2介绍 (2)前台用户系统-微信登录-准备工作 (3)微信登录-生成微信二维码-接口开发 (4)微信登录-生成验证码-前端整合 (5)微信登录-获取扫码人信息-实现分 ...

  5. Springboot+mybatis构建管理后台系统

    Springboot+mybatis构建管理后台系统 新建一个springboot工程 开发后台管理登陆功能 1.在springboot中集成mybatis 2.编写登陆接口 2.编写登陆页面 登陆功 ...

  6. 分布式医疗挂号系统(七) | 开发医院设置页面

    @[toc](分布式医疗挂号系统(七) | 开发医院设置页面) 在分布式医疗挂号系统中,前端主要使用的两个技术是Vue和ElementUI.医院设置微服务模块的后端之前已经完成,现在需要借助Vue+E ...

  7. SpringBoot+Vue博客系统---后端接口开发

    Java后端接口开发 从零开始搭建一个项目骨架,最好选择合适,熟悉的技术,并且在未来易拓展,适合微服务化体系等.所以一般以Springboot作为我们的框架基础,这是离不开的了. 然后数据层,我们常用 ...

  8. java微信接口开发java SpringMVC mybatis 后台框架

    获取[下载地址]   QQ: 313596790   [免费支持更新] 支持三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [ 新录针对本系统的视频教 ...

  9. java计算机毕业设计医院住院部信息管理系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计医院住院部信息管理系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计医院住院部信息管理系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目 ...

最新文章

  1. Percona-Server-5.5.30安装
  2. 爬虫之xpath语法-节点修饰语法
  3. Nginx——upstream参数
  4. 搭建Android开发环境 以及 ionic 编译安卓app步骤
  5. python 输出字符串编码_Python print 字符串编码问题
  6. 不可摸数http://acm.hdu.edu.cn/showproblem.php?pid=1999
  7. java 考试复习整理——JAVA类和类成员的修饰符
  8. 【牛客 - 370B】Rinne Loves Graph(分层图最短路 或 最短路dp)
  9. apache shiro版本查看_深入学习SpringBoot(四):springboot整合shiro
  10. gperftools
  11. RTF文件格式【转】
  12. Java基础——增强for循环(foreach)
  13. VS-C++ 调试----调试信息输出至调试器(输出界面)
  14. 斯皮尔曼相关(Spearman correlation)系数概述及其计算例
  15. python 课程设计扫雷报告_《扫雷课程设计报告.doc
  16. tp6 验证码不显示问题
  17. 美联储印钞,中国物价为何上涨?
  18. 启动计算机键盘没反应,为什么键盘没反应了 键盘没反应原因分析及解决方法...
  19. dnf连不上服务器删什么文件,DNF:4.9更新“无法上游戏”,删1个文件才可登录,策划不争气!...
  20. 游园惊梦--记游第九届软博会

热门文章

  1. SSL证书出现错误之后的解决方法
  2. AutoHome项目的学习
  3. java使用POI实现excel文件的读取,兼容后缀名xls和xlsx
  4. Whitelabel error page问题
  5. 基于人工神经网络的五子棋博弈(Details)
  6. 如何提高淘宝自然搜索流量?
  7. Git的下载和安装【详细】
  8. 3.4softmax回归
  9. Python学习的第一个例子,用print语句打印一个皮卡丘。
  10. 电池健康怎么恢复100