后台系统-医院设置信息接口开发
后台系统-医院设置接口-需求和准备
- 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();
}
后台系统-医院设置信息接口开发相关推荐
- 【笔记】Vue Element+Node.js开发企业通用管理后台系统——电子书上传功能开发
文章目录 一.创建上传页面组件 二.上传组件开发 三.上传 API 开发 四.上传图书表单 电子书上传 | 「小慕读书」管理后台 一.创建上传页面组件 在前端目录,新建\src\views\book\ ...
- 分布式医疗挂号系统(二) | 开发医院设置微服务模块
本系列文章介绍从0开始搭建一个基于分布式的医疗挂号系统.本次四篇文章完成了医院设置微服务模块的后端接口,为了方便开发,对接口的返回结果.全局异常.全局日志进行了统一处理. 同时,为了方便进行访问测试, ...
- 任务分配问题关于医院接口开发
一 统一返回结果定义 1 枚举类 package com.baiyee.sdgt.common.result;import lombok.Getter;/** * @className: Result ...
- 尚医通-OAuth2-微信登录接口开发(三十一)
目录: (1)微信登录-OAuth2介绍 (2)前台用户系统-微信登录-准备工作 (3)微信登录-生成微信二维码-接口开发 (4)微信登录-生成验证码-前端整合 (5)微信登录-获取扫码人信息-实现分 ...
- Springboot+mybatis构建管理后台系统
Springboot+mybatis构建管理后台系统 新建一个springboot工程 开发后台管理登陆功能 1.在springboot中集成mybatis 2.编写登陆接口 2.编写登陆页面 登陆功 ...
- 分布式医疗挂号系统(七) | 开发医院设置页面
@[toc](分布式医疗挂号系统(七) | 开发医院设置页面) 在分布式医疗挂号系统中,前端主要使用的两个技术是Vue和ElementUI.医院设置微服务模块的后端之前已经完成,现在需要借助Vue+E ...
- SpringBoot+Vue博客系统---后端接口开发
Java后端接口开发 从零开始搭建一个项目骨架,最好选择合适,熟悉的技术,并且在未来易拓展,适合微服务化体系等.所以一般以Springboot作为我们的框架基础,这是离不开的了. 然后数据层,我们常用 ...
- java微信接口开发java SpringMVC mybatis 后台框架
获取[下载地址] QQ: 313596790 [免费支持更新] 支持三大数据库 mysql oracle sqlsever 更专业.更强悍.适合不同用户群体 [ 新录针对本系统的视频教 ...
- java计算机毕业设计医院住院部信息管理系统源程序+mysql+系统+lw文档+远程调试
java计算机毕业设计医院住院部信息管理系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计医院住院部信息管理系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目 ...
最新文章
- Percona-Server-5.5.30安装
- 爬虫之xpath语法-节点修饰语法
- Nginx——upstream参数
- 搭建Android开发环境 以及 ionic 编译安卓app步骤
- python 输出字符串编码_Python print 字符串编码问题
- 不可摸数http://acm.hdu.edu.cn/showproblem.php?pid=1999
- java 考试复习整理——JAVA类和类成员的修饰符
- 【牛客 - 370B】Rinne Loves Graph(分层图最短路 或 最短路dp)
- apache shiro版本查看_深入学习SpringBoot(四):springboot整合shiro
- gperftools
- RTF文件格式【转】
- Java基础——增强for循环(foreach)
- VS-C++ 调试----调试信息输出至调试器(输出界面)
- 斯皮尔曼相关(Spearman correlation)系数概述及其计算例
- python 课程设计扫雷报告_《扫雷课程设计报告.doc
- tp6 验证码不显示问题
- 美联储印钞,中国物价为何上涨?
- 启动计算机键盘没反应,为什么键盘没反应了 键盘没反应原因分析及解决方法...
- dnf连不上服务器删什么文件,DNF:4.9更新“无法上游戏”,删1个文件才可登录,策划不争气!...
- 游园惊梦--记游第九届软博会