本系列文章介绍从0开始搭建一个基于分布式的医疗挂号系统。本次四篇文章完成了医院设置微服务模块的后端接口,为了方便开发,对接口的返回结果全局异常全局日志进行了统一处理。 同时,为了方便进行访问测试,还整合了Swagger2工具,这些通用的模块中,除了全局日志被放在医院设置微服务模块的配置资源中,其余都统一被抽取在common模块中。具体实现可参考下面文章:

  • 医院设置微服务 | 模块搭建
  • 医院设置微服务 | 接口开发
  • 通用模块 | 整合Swagger2
  • 通用模块 | 统一返回结果、统一异常处理、统一日志处理

作者:Hudie
微信公众号/CSDN博客:编程一只蝶
公众号文章会比博客早1到2天,欢迎关注,每天开心~
项目已开源至gitee:https://gitee.com/guo-qianliang/yygh_parent
项目已开源至github:https://github.com/Guoqianliang/yygh_parent

医院设置微服务接口开发

  • 一、框架调用流程
  • 二、医院设置表接口开发
    • 1.增
      • (1)增加记录
    • 2.删
      • (1)逻辑删除记录
      • (2)批量删除记录
    • 3.改
      • (1)修改记录
    • 4.查
      • (1)查询所有记录
      • (2)条件查询带分页
      • (3)根据id获取记录
    • 5.锁定和解锁表
    • 6.发送签名密钥

一、框架调用流程

  • 从Controller层到Service层
    Controller层需要调用Service层的方法,我们在其中使用依赖注入(@Autowired注解)将Service的接口装进Spring容器。

  • 从Service层到Mapper层
    Service层需要调用Mapper层,MyBatis-Plus框架已经将Mapper依赖注入进了Service层,我们只需要分别继承IService接口和ServiceImpl实现类即可。

二、医院设置表接口开发

1.增

(1)增加记录

具体代码说明:

  • 参数中使用@RequestBody注解表示使用JSON格式传递参数,默认是required=true,表示不能为空。
  • 代码中首先将记录的状态设置为1表示该记录可用,然后使用MD5加密算法设置签名密钥,关于MD5加密算法会在接下来的文章中详细介绍。
    /*** 1 增加记录*/@PostMapping("saveHospitalSet")public Result saveHospitalSet(@RequestBody HospitalSet hospitalSet) {// 设置状态字段 (1:可以使用,0:不能使用)hospitalSet.setStatus(1);// 设置签名密钥字段(使用MD5加密)hospitalSet.setSignKey(MD5.encrypt(System.currentTimeMillis() + "" + new Random().nextInt(1000)));// 调用方法执行添加boolean flag = hospitalSetService.save(hospitalSet);return Result.isOKorFail(flag);}

2.删

(1)逻辑删除记录

    /*** 2.1 逻辑删除记录*/@ApiOperation(value = "removeHospSer", notes = "逻辑删除医院设置")@DeleteMapping(value = "{id}")public Result removeHospSer(@PathVariable Long id) {boolean flag = hospitalSetService.removeById(id);return Result.isOKorFail(flag);}

(2)批量删除记录

    /*** 2.2 批量删除记录*/@DeleteMapping("batchRemove")public Result batchRemoveHospitalSet(@RequestBody List<Long> idList) {hospitalSetService.removeByIds(idList);return Result.ok();}

3.改

(1)修改记录

    /*** 3 修改记录*/@PostMapping("updateHospitalSet")public Result updateHospitalSet(@RequestBody HospitalSet updateHospitalSet) {boolean flag = hospitalSetService.updateById(updateHospitalSet);return Result.isOKorFail(flag);}

4.查

(1)查询所有记录

    /*** 4.1 查询所有记录* @return list*/@ApiOperation(value = "findAllHospitalSet", notes = "获取所有医院设置信息")@GetMapping("findAll")public Result findAllHospitalSet() {List<HospitalSet> list = hospitalSetService.list();return Result.ok(list);}

(2)条件查询带分页

查询时需要传递参数作为查询条件,可以使用vo对象将查询条件进行封装。然后在Controller中获取条件对象,由于带有条件查询带有分页,还需获取分页数据(当前页current、每页记录数limit)

医院设置表的分页查询vo对象:

具体代码说明:

  • findPageHospSet方法传入三个参数,①当前页current ②每页大小limit ③条件查询的vo对象
  • 分页步骤是:①创建page对象、②创建QueryWrapper对象、③调用方法执行分页
  • 查询条件是医院名称或医院编号,对医院名称进行模糊查询,对医院编号进行等值查询,需要注意对这两个值进行判空处理。
  • @RequestBody(required = false)注解表示使用JSON格式传递参数,然后把JSON数据的值放到对象中去,required = false表示这个值可以为空。使用此参数要将提交方式改为POST,因为GET方式得不到值。
/*** 4.2 条件查询带分页* 根据医院名称或编号查询*/@PostMapping("findPage/{current}/{limit}")public Result findPageHospSet(@PathVariable long current,@PathVariable long limit,@RequestBody(required = false) HospitalSetQueryVo hospitalSetQueryVo) {// 1. 创建page对象。传递当前页、每页记录数Page<HospitalSet> page = new Page(current, limit);// 2. 创建QueryWrapper对象.QueryWrapper<HospitalSet> queryWrapper = new QueryWrapper<>();// 2.1 对医院名称和医院编号进行判空String hosname = hospitalSetQueryVo.getHosname();String hoscode = hospitalSetQueryVo.getHoscode();if (!StringUtils.isEmpty(hosname)) {queryWrapper.like("hosname", hospitalSetQueryVo.getHosname());}if (!StringUtils.isEmpty(hoscode)) {queryWrapper.eq("hoscode", hospitalSetQueryVo.getHoscode());}// 3. 调用方法执行分页。(参数是上面两个对象)Page<HospitalSet> pageHospitalSet = hospitalSetService.page(page, queryWrapper);// 返回结果return Result.ok(pageHospitalSet);}

(3)根据id获取记录

    /*** 4.3根据id获取记录*/@GetMapping("getHospSet/{id}")public Result getHospSet(@PathVariable Long id) {HospitalSet hospitalSet = hospitalSetService.getById(id);return Result.ok(hospitalSet);}

5.锁定和解锁表

针对表中的status字段:

  • status=1时表示解锁
  • status=0时表示锁定

只有医院设置表的状态为解锁状态时,才能进行和医院系统的对接,从而进行数据的操作。

 /*** 医院设置表锁定和解锁*/@ApiOperation(value = "lockHospitalSet 医院设置表锁定和解锁")@PutMapping("lockHospitalSet/{id}/{status}")public Result lockHospitalSet(@PathVariable Long id,@PathVariable Integer status) {// 根据id查询医院设置信息HospitalSet hospitalSet = hospitalSetService.getById(id);// 设置状态hospitalSet.setStatus(status);// 调用更新方法hospitalSetService.updateById(hospitalSet);return Result.ok();}

6.发送签名密钥

发送签名密钥,即短信接口,由于调用短信接口较为复杂,后面会有专门的文章进行介绍,这里暂时只写好框架。具体开发流程可参考后续文章。

  /*** 发送签名密钥*/@ApiOperation(value = "sendKeyHospitalSet 发送签名密匙")@PutMapping("sendKey/{id}")public Result sendKeyHospitalSet(@PathVariable Long id) {HospitalSet hospitalSet = hospitalSetService.getById(id);// 签名密钥String signKey = hospitalSet.getSignKey();// 医院编号String hoscode = hospitalSet.getHoscode();// TODO 发送短信return Result.ok();}

至此,医院设置微服务后端接口开发已经完成了,通过swagger可以查看到我们开发的所有方法:

分布式医疗挂号系统(二) | 开发医院设置微服务模块相关推荐

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

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

  2. 分布式医疗挂号系统(十二) | 开发医院、科室、排班接口

    开发医院.科室.排班接口 一.医院接口 查询医院接口 二.科室接口 (1)上传科室功能 (2)查询科室功能 (3)删除科室功能 三.排班接口 (1)上传排班功能 (2)查询排班功能 (3)删除排班功能 ...

  3. 电商系统开发实战-用户微服务基础模块开发

    电商系统开发实战-用户微服务基础模块开发 1.用户微服务项目开发之收货地址查询接口开发 1.1 配置文件配置 application.yml server:port: 9001spring:appli ...

  4. Java开发必读--初识微服务一定要阅读这篇文章

    原文转自一线互联网资深架构师,微服务布道师小马哥的原创文章,始发与小马哥公众号. 微服务是什么? 微服务是一种细粒度(Fine-Grain)的SOA 或许在座的高朋了解过其概念.个人认为,与其说微服务 ...

  5. 迭代开发中的微服务拆分

    微服务拆分是微服务架构绕不过的话题,随着架构演进,在迭代开发中拆分微服务有时非常必要,微服务拆分不仅仅是一项技术层面的重构,首先要选择的合适的时机,另外在拆分前一定要理清业务现状,制定好拆分的基本原则 ...

  6. 基于统一开发平台的微服务架构转型升级之路 | 某国有大型银行案例

    分享某国有大型银行统一开发平台的建设历程,重点介绍其当前正在建设的微服务开发平台中的关键点和实践经验. 转载本文需注明出处:微信公众号EAWorld,违者必究. 引言: 某银行是一家国有大型银行,从2 ...

  7. 适用于Java开发人员的微服务:管理安全性和机密

    关于麦洛 麦洛是 Java 开发者和技术爱好者. 对 Java 相关技术特别感兴趣,包括 javaee. Spring系列. 微服务等 作者:Andrey Redko 原文:Microservices ...

  8. [阶段4 企业开发进阶] 7. 微服务--SpringCloud

    开源代码 文章目录 1 微服务 1.1 微服务概念 1.2 SpringCloud 1.3 工程搭建 1.4 支付模块构建 cloud-provider-payment-8001 1.5 消费者订单模 ...

  9. Re:从0开始的微服务架构--(二)快速快速体验微服务架构?--转

    原文地址:https://mp.weixin.qq.com/s/QO1QDQWnjHZp8EvGDrxZvw 这是专题的第二篇文章,看看如何搭建一个简单模式的微服务架构. 记得好久之前看到一个大牛说过 ...

最新文章

  1. 计算机内存作图多大合适3d,【2人回答】你好,我想问问电脑256G内存对于学生画图设计够吗?-3D溜溜网...
  2. Tomcat(四):tomcat图形管理和身份认证
  3. rj45带滤波器20/05的数字是什么意思_「手机维修自学教程」认识手机射频电路中的滤波器 维修技巧分析...
  4. 微信公众号文章质量评分算法详解
  5. git rollback代码都没了_git回滚线上代码
  6. python 的内存回收,及深浅Copy详解
  7. java bits_一段关于JAVA程序升级的问题(Changing bits)
  8. 奇妙的安全旅行之DSA算法
  9. Spring Boot笔记-使用RedirectAttributes重定向后也可以显示填写的信息
  10. ios wifi 定位_iOS 中的三种定位方式
  11. 首个教育部印发的人工智能行动计划出炉:规划三步走,大学有三任务
  12. windows批处理脚本bat命令解析【10】如何运行cmd命令3bat批处理文件中的注释
  13. Android12前台服务问题
  14. MongoDB学习(三)
  15. kinect for Unity开发
  16. leetcode-841-钥匙和房间 题解
  17. 数学七大基本思想方法
  18. 【计算机毕业设计】java+mysql基于SSM的生鲜超市进销存管理系统
  19. 腾讯云和阿里云对比哪个好?云计算优势测评
  20. 爬取豆瓣电影排行榜,并制作柱状图与3d柱状图

热门文章

  1. 手机计算机的游戏怎么玩,电脑玩手机游戏,详细教您电脑怎么玩手机游戏
  2. 【知识分享】输入法全角半角到底是什么、有啥区别
  3. JAVA面试灵魂108问(二十六)---JVM2
  4. mysql安装与修改初始密码
  5. vue axios跨域问题
  6. IOS几种常见的实现扫描、生成二维码的方式(一、使用ZBar SDK)
  7. 数值分析-埃特金算法
  8. Waymo将传感器成本降低90% Google无人驾驶汽车将更快普及
  9. 微信小程序与Node服务器 Socket通讯
  10. 苹果日历怎么添加附件(苹果手机添加附件方法)