最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

實(shí)戰(zhàn)分布式醫(yī)療掛號(hào)系統(tǒng)之設(shè)置微服務(wù)接口開(kāi)發(fā)模塊

 更新時(shí)間:2022年04月24日 15:49:45   作者:Hudie.  
這篇文章主要為大家介紹了實(shí)戰(zhàn)分布式醫(yī)療掛號(hào)系統(tǒng)之接口開(kāi)發(fā)醫(yī)院設(shè)置微服務(wù)模塊,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

文章導(dǎo)讀

本系列文章介紹從0開(kāi)始搭建一個(gè)基于分布式的醫(yī)療掛號(hào)系統(tǒng)。本次四篇文章完成了醫(yī)院設(shè)置微服務(wù)模塊的后端接口,為了方便開(kāi)發(fā),對(duì)接口的返回結(jié)果、全局異常、全局日志進(jìn)行了統(tǒng)一處理。 同時(shí),為了方便進(jìn)行訪問(wèn)測(cè)試,還整合了Swagger2工具,這些通用的模塊中,除了全局日志被放在醫(yī)院設(shè)置微服務(wù)模塊的配置資源中,其余都統(tǒng)一被抽取在common模塊中。具體實(shí)現(xiàn)可參考下面文章:

醫(yī)院設(shè)置微服務(wù) | 模塊搭建

通用模塊 | 整合Swagger2

通用模塊 | 統(tǒng)一返回結(jié)果、統(tǒng)一異常處理、統(tǒng)一日志處理

項(xiàng)目已開(kāi)源至  https://github.com/Guoqianliang/yygh_parent

一、框架調(diào)用流程

  • 從Controller層到Service層

Controller層需要調(diào)用Service層的方法,我們?cè)谄渲惺褂靡蕾?lài)注入(@Autowired注解)將Service的接口裝進(jìn)Spring容器。

  • 從Service層到Mapper層

Service層需要調(diào)用Mapper層,MyBatis-Plus框架已經(jīng)將Mapper依賴(lài)注入進(jìn)了Service層,我們只需要分別繼承IService接口和ServiceImpl實(shí)現(xiàn)類(lèi)即可。

使用MyBatis-Plus后的三層調(diào)用關(guān)系

二、醫(yī)院設(shè)置表接口開(kāi)發(fā)

1.增

(1)增加記錄

具體代碼說(shuō)明:

  • 參數(shù)中使用@RequestBody注解表示使用JSON格式傳遞參數(shù),默認(rèn)是required=true,表示不能為空。
  • 代碼中首先將記錄的狀態(tài)設(shè)置為1表示該記錄可用,然后使用MD5加密算法設(shè)置簽名密鑰,關(guān)于MD5加密算法會(huì)在接下來(lái)的文章中詳細(xì)介紹。
    /**
     * 1 增加記錄
     */
    @PostMapping("saveHospitalSet")
    public Result saveHospitalSet(@RequestBody HospitalSet hospitalSet) {
        // 設(shè)置狀態(tài)字段 (1:可以使用,0:不能使用)
        hospitalSet.setStatus(1);
        // 設(shè)置簽名密鑰字段(使用MD5加密)
        hospitalSet.setSignKey(MD5.encrypt(System.currentTimeMillis() + "" + new Random().nextInt(1000)));
        // 調(diào)用方法執(zhí)行添加
        boolean flag = hospitalSetService.save(hospitalSet);
        return Result.isOKorFail(flag);
    }

增加記錄測(cè)試

2.刪

(1)邏輯刪除記錄

    /**
     * 2.1 邏輯刪除記錄
     */
    @ApiOperation(value = "removeHospSer", notes = "邏輯刪除醫(yī)院設(shè)置")
    @DeleteMapping(value = "{id}")
    public Result removeHospSer(@PathVariable Long id) {
        boolean flag = hospitalSetService.removeById(id);
        return Result.isOKorFail(flag);
    }

邏輯刪除測(cè)試

(2)批量刪除記錄

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

批量刪除測(cè)試

3.改

(1)修改記錄

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

修改測(cè)試

4.查

(1)查詢(xún)所有記錄

    /**
     * 4.1 查詢(xún)所有記錄
     * @return list
     */
    @ApiOperation(value = "findAllHospitalSet", notes = "獲取所有醫(yī)院設(shè)置信息")
    @GetMapping("findAll")
    public Result findAllHospitalSet() {
        List<HospitalSet> list = hospitalSetService.list();
        return Result.ok(list);
    }

查詢(xún)所有記錄測(cè)試

(2)條件查詢(xún)帶分頁(yè)

查詢(xún)時(shí)需要傳遞參數(shù)作為查詢(xún)條件,可以使用vo對(duì)象將查詢(xún)條件進(jìn)行封裝。然后在Controller中獲取條件對(duì)象,由于帶有條件查詢(xún)帶有分頁(yè),還需獲取分頁(yè)數(shù)據(jù)(當(dāng)前頁(yè)current、每頁(yè)記錄數(shù)limit)

醫(yī)院設(shè)置表的分頁(yè)查詢(xún)vo對(duì)象:

查詢(xún)條件vo對(duì)象

具體代碼說(shuō)明:

  • findPageHospSet方法傳入三個(gè)參數(shù),①當(dāng)前頁(yè)current ②每頁(yè)大小limit ③條件查詢(xún)的vo對(duì)象
  • 分頁(yè)步驟是:①創(chuàng)建page對(duì)象、②創(chuàng)建QueryWrapper對(duì)象、③調(diào)用方法執(zhí)行分頁(yè)
  • 查詢(xún)條件是醫(yī)院名稱(chēng)或醫(yī)院編號(hào),對(duì)醫(yī)院名稱(chēng)進(jìn)行模糊查詢(xún),對(duì)醫(yī)院編號(hào)進(jìn)行等值查詢(xún),需要注意對(duì)這兩個(gè)值進(jìn)行判空處理。
  • @RequestBody(required = false)注解表示使用JSON格式傳遞參數(shù),然后把JSON數(shù)據(jù)的值放到對(duì)象中去,required = false表示這個(gè)值可以為空。使用此參數(shù)要將提交方式改為POST,因?yàn)镚ET方式得不到值。
/**
     * 4.2 條件查詢(xún)帶分頁(yè)
     * 根據(jù)醫(yī)院名稱(chēng)或編號(hào)查詢(xún)
     */
    @PostMapping("findPage/{current}/{limit}")
    public Result findPageHospSet(@PathVariable long current,
                                  @PathVariable long limit,
                                  @RequestBody(required = false) HospitalSetQueryVo hospitalSetQueryVo) {
        // 1. 創(chuàng)建page對(duì)象。傳遞當(dāng)前頁(yè)、每頁(yè)記錄數(shù)
        Page<HospitalSet> page = new Page(current, limit);
        // 2. 創(chuàng)建QueryWrapper對(duì)象.
        QueryWrapper<HospitalSet> queryWrapper = new QueryWrapper<>();
        // 2.1 對(duì)醫(yī)院名稱(chēng)和醫(yī)院編號(hào)進(jìn)行判空
        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. 調(diào)用方法執(zhí)行分頁(yè)。(參數(shù)是上面兩個(gè)對(duì)象)
        Page<HospitalSet> pageHospitalSet = hospitalSetService.page(page, queryWrapper);
        // 返回結(jié)果
        return Result.ok(pageHospitalSet);
    }

條件查詢(xún)帶分頁(yè)測(cè)試

(3)根據(jù)id獲取記錄

    /**
     * 4.3根據(jù)id獲取記錄
     */
    @GetMapping("getHospSet/{id}")
    public Result getHospSet(@PathVariable Long id) {
        HospitalSet hospitalSet = hospitalSetService.getById(id);
        return Result.ok(hospitalSet);
    }

根據(jù)id獲取記錄

5.鎖定和解鎖表

針對(duì)表中的status字段:

  • status=1時(shí)表示解鎖
  • status=0時(shí)表示鎖定

只有醫(yī)院設(shè)置表的狀態(tài)為解鎖狀態(tài)時(shí),才能進(jìn)行和醫(yī)院系統(tǒng)的對(duì)接,從而進(jìn)行數(shù)據(jù)的操作。

 /**
     * 醫(yī)院設(shè)置表鎖定和解鎖
     */
    @ApiOperation(value = "lockHospitalSet 醫(yī)院設(shè)置表鎖定和解鎖")
    @PutMapping("lockHospitalSet/{id}/{status}")
    public Result lockHospitalSet(@PathVariable Long id,
                                  @PathVariable Integer status) {
        // 根據(jù)id查詢(xún)醫(yī)院設(shè)置信息
        HospitalSet hospitalSet = hospitalSetService.getById(id);
        // 設(shè)置狀態(tài)
        hospitalSet.setStatus(status);
        // 調(diào)用更新方法
        hospitalSetService.updateById(hospitalSet);
        return Result.ok();
    }

鎖定和解鎖表醫(yī)院設(shè)置表

6.發(fā)送簽名密鑰

發(fā)送簽名密鑰,即短信接口,由于調(diào)用短信接口較為復(fù)雜,后面會(huì)有專(zhuān)門(mén)的文章進(jìn)行介紹,這里暫時(shí)只寫(xiě)好框架。具體開(kāi)發(fā)流程可參考后續(xù)文章。

 /**
     * 醫(yī)院設(shè)置表鎖定和解鎖
     */
    @ApiOperation(value = "lockHospitalSet 醫(yī)院設(shè)置表鎖定和解鎖")
    @PutMapping("lockHospitalSet/{id}/{status}")
    public Result lockHospitalSet(@PathVariable Long id,
                                  @PathVariable Integer status) {
        // 根據(jù)id查詢(xún)醫(yī)院設(shè)置信息
        HospitalSet hospitalSet = hospitalSetService.getById(id);
        // 設(shè)置狀態(tài)
        hospitalSet.setStatus(status);
        // 調(diào)用更新方法
        hospitalSetService.updateById(hospitalSet);
        return Result.ok();
    }

至此,醫(yī)院設(shè)置微服務(wù)后端接口開(kāi)發(fā)已經(jīng)完成了,通過(guò)swagger可以查看到我們開(kāi)發(fā)的所有方法:

后臺(tái)管理系統(tǒng)-API文檔

以上就是實(shí)戰(zhàn)分布式醫(yī)療掛號(hào)系統(tǒng)之接口開(kāi)發(fā)醫(yī)院設(shè)置微服務(wù)模塊的詳細(xì)內(nèi)容,更多關(guān)于分布式醫(yī)療掛號(hào)接口開(kāi)發(fā)設(shè)置微服務(wù)模塊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決springboot 連接 mysql 時(shí)報(bào)錯(cuò) using password: NO的方案

    解決springboot 連接 mysql 時(shí)報(bào)錯(cuò) using password: NO的方案

    在本篇文章里小編給大家整理了關(guān)于解決springboot 連接 mysql 時(shí)報(bào)錯(cuò) using password: NO的方案,有需要的朋友們可以學(xué)習(xí)下。
    2020-01-01
  • Mybatis-Plus 條件構(gòu)造器 QueryWrapper 的基本用法

    Mybatis-Plus 條件構(gòu)造器 QueryWrapper 的基本用法

    這篇文章主要介紹了Mybatis-Plus - 條件構(gòu)造器 QueryWrapper 的使用,通過(guò)實(shí)例代碼給大家介紹了查詢(xún)示例代碼及實(shí)現(xiàn)需求,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • 責(zé)任鏈模式在spring security過(guò)濾器鏈中的應(yīng)用小結(jié)

    責(zé)任鏈模式在spring security過(guò)濾器鏈中的應(yīng)用小結(jié)

    責(zé)任鏈模式在SpringSecurity過(guò)濾器鏈中的應(yīng)用,通過(guò)一系列的過(guò)濾器按順序處理請(qǐng)求,每個(gè)過(guò)濾器負(fù)責(zé)特定的安全功能,實(shí)現(xiàn)靈活且可擴(kuò)展的請(qǐng)求處理機(jī)制,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • SpringBoot打包前重新拉取maven依賴(lài)的方法實(shí)現(xiàn)

    SpringBoot打包前重新拉取maven依賴(lài)的方法實(shí)現(xiàn)

    在使用 Maven 構(gòu)建 Spring Boot 項(xiàng)目時(shí),如果希望在每次打包時(shí)都強(qiáng)制拉取依賴(lài),可以通過(guò)以下方法實(shí)現(xiàn),本文給大家介紹了四種實(shí)現(xiàn)方法,并通過(guò)代碼講解的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • SpringBoot基于RabbitMQ實(shí)現(xiàn)消息可靠性的方法

    SpringBoot基于RabbitMQ實(shí)現(xiàn)消息可靠性的方法

    RabbitMQ 提供了 publisher confirm 機(jī)制來(lái)避免消息發(fā)送到 MQ 過(guò)程中丟失,這種機(jī)制必須給每個(gè)消息指定一個(gè)唯一ID,消息發(fā)送到MQ以后,會(huì)返回一個(gè)結(jié)果給發(fā)送者,表示消息是否處理成功,本文給大家介紹了SpringBoot基于RabbitMQ實(shí)現(xiàn)消息可靠性的方法,需要的朋友可以參考下
    2024-04-04
  • 利用idea生成webservice客戶端超詳解步驟(wsdl文件的使用)

    利用idea生成webservice客戶端超詳解步驟(wsdl文件的使用)

    這篇文章主要給大家介紹了關(guān)于利用idea生成webservice客戶端超詳解步驟,第一次接觸webservice,從采坑到采坑,算是了解了一些,明白了一些,文中通過(guò)代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • 詳解spring與shiro集成

    詳解spring與shiro集成

    這篇文章主要介紹了詳解spring與shiro集成,需要的朋友可以參考下
    2017-09-09
  • Springboot使用Logback實(shí)現(xiàn)日志配置與異常記錄

    Springboot使用Logback實(shí)現(xiàn)日志配置與異常記錄

    默認(rèn)情況下,SpringBoot內(nèi)部使用logback作為系統(tǒng)日志實(shí)現(xiàn)的框架,將日志輸出到控制臺(tái),不會(huì)寫(xiě)到日志文件。本篇文章主要講解下如何自定義logabck.xml以及對(duì)logback文件中配置做一個(gè)詳解,需要的可以參考一下
    2022-11-11
  • 詳述IntelliJ IDEA插件的安裝及使用方法(圖解)

    詳述IntelliJ IDEA插件的安裝及使用方法(圖解)

    本篇文章主要介紹了詳述 IntelliJ IDEA 插件的安裝及使用方法(圖解),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Java創(chuàng)建圖形用戶界面(GUI)入門(mén)詳細(xì)指南(Swing庫(kù)JFrame類(lèi))

    Java創(chuàng)建圖形用戶界面(GUI)入門(mén)詳細(xì)指南(Swing庫(kù)JFrame類(lèi))

    這篇文章主要介紹了使用Java?Swing庫(kù)的JFrame類(lèi)創(chuàng)建基本的圖形用戶界面,包括窗口的創(chuàng)建、組件的添加和事件處理,通過(guò)代碼講解了如何設(shè)置窗口大小、添加按鈕及處理按鈕點(diǎn)擊事件,適合初學(xué)者學(xué)習(xí)和開(kāi)發(fā)GUI應(yīng)用程序,需要的朋友可以參考下
    2024-11-11

最新評(píng)論

乌审旗| 高州市| 阳新县| 西畴县| 黄骅市| 三亚市| 文登市| 尖扎县| 婺源县| 祁东县| 吴堡县| 镇雄县| 改则县| 绵阳市| 汝州市| 仙游县| 南阳市| 西城区| 西城区| 昌黎县| 永仁县| 万全县| 伊通| 石狮市| 缙云县| 阿勒泰市| 灵石县| 洪雅县| 伊金霍洛旗| 古浪县| 绍兴县| 浦县| 通辽市| 新巴尔虎右旗| 白山市| 文登市| 闽侯县| 巧家县| 稻城县| 余姚市| 休宁县|