欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

開發(fā)分布式醫(yī)療掛號系統(tǒng)MongoDB集成實現(xiàn)上傳醫(yī)院接口

 更新時間:2022年04月25日 10:14:40   作者:Hudie.  
這篇文章主要介紹了開發(fā)分布式醫(yī)療掛號系統(tǒng)MongoDB集成實現(xiàn)上傳醫(yī)院接口,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

需求:在《分布式預約掛號平臺》中完成上傳醫(yī)院接口開發(fā),再通過醫(yī)院接口模擬系統(tǒng)(醫(yī)院管理表)調(diào)用平臺中的接口,從而實現(xiàn)上傳醫(yī)院的功能。另外,所有通過平臺中接口上傳的信息都需要被保存到MongoDB中,通過MongoDB來進行操作。

本篇文章根據(jù)上述需求,對《分布式醫(yī)療掛號系統(tǒng)》中的上傳醫(yī)院接口進行實現(xiàn),項目代碼已同步至github,https://github.com/Guoqianliang/yygh_parent

一、集成MongoDB

上傳醫(yī)院接口的開發(fā)仍然在之前創(chuàng)建好的service-hosp模塊中進行,由于此次額外使用了MongoDB技術,所以首先需要引入MongoDB的依賴:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

除了引入MongoDB的依賴還需要將MongoDB數(shù)據(jù)庫添加到配置中:

spring.data.mongodb.uri=mongodb://[ip地址]:27017/[MongoDB的數(shù)據(jù)庫]

將來通過接口會向MongoDB上傳一張hospital文檔,下標對這些記錄進行說明,這些表在Java中也需要有一個對應的實體類。

hospital文檔中的記錄說明

二、開發(fā)Controller層

上傳醫(yī)院的接口路徑為:/api/hosp/saveHospital,下面分析ApiController中上傳醫(yī)院接口所做的事情:

1.將從醫(yī)院管理表傳遞過來的醫(yī)院信息轉(zhuǎn)換為Object類型

2.獲取醫(yī)院管理表中的密鑰(已經(jīng)使用MD5加密好了)

3.獲取醫(yī)院設置表中的密鑰并進行MD5加密 此處調(diào)用醫(yī)院設置業(yè)務層

4.密鑰不匹配就拋出錯誤

5.傳遞的圖片涉及base64編碼問題,需要將logoData記錄中所有的" "替換為+

6.執(zhí)行上傳操作 此處調(diào)用醫(yī)院管理業(yè)務層

詳細代碼實現(xiàn):

@RestController
@RequestMapping("/api/hosp")
public class ApiController {
    @Autowired
    private HospitalService hospitalService;
    @Autowired
    private HospitalSetService hospitalSetService;
    @ApiOperation(value = "上傳醫(yī)院到數(shù)據(jù)庫")
    @PostMapping("saveHospital")
    public Result saveHosp(HttpServletRequest request) {
        // 1.將從醫(yī)院管理表傳遞過來的醫(yī)院信息轉(zhuǎn)換為Object類型
        Map<String, String[]> requestMap = request.getParameterMap();
        Map<String, Object> paramMap = HttpRequestHelper.switchMap(requestMap);
        // 2.獲取醫(yī)院管理表中的密鑰(已經(jīng)使用MD5加密好了)
        String hospSign = (String) paramMap.get("sign");
        // 3.獲取醫(yī)院設置表中的密鑰并進行MD5加密
        String hoscode = (String) paramMap.get("hoscode");
        String signKey = hospitalSetService.getSignKey(hoscode);
        String signKeyMd5 = MD5.encrypt(signKey);
        // 4.密鑰不匹配就拋出錯誤
        if (!hospSign.equals(signKeyMd5)) {
            throw new YyghException(ResultCodeEnum.SIGN_ERROR);
        }
        // 5.傳遞的圖片涉及base64編碼問題,需要將logoData記錄中所有的" "替換為+
        String logoData = (String) paramMap.get("logoData");
        logoData = logoData.replaceAll(" ", "+");
        paramMap.put("logoData", logoData);
        // 6.執(zhí)行上傳操作
        hospitalService.save(paramMap);
        return Result.ok();
    }
}

三、開發(fā)Service層

醫(yī)院設置的Service層

在醫(yī)院設置的Service層中根據(jù)醫(yī)院編碼獲取SignKey,下面是接口和實現(xiàn)類:

public interface HospitalSetService extends IService<HospitalSet> {
    String getSignKey(String hoscode);
}
@Service
public class HospitalSetServiceImpl extends ServiceImpl<HospitalSetMapper, HospitalSet>
        implements HospitalSetService {
    @Override
    public String getSignKey(String hoscode) {
        QueryWrapper<HospitalSet> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("hoscode", hoscode);
        HospitalSet hospitalSet = baseMapper.selectOne(queryWrapper);
        return hospitalSet.getSignKey();
    }
}

醫(yī)院管理的Service層

分析醫(yī)院管理Service層所做的事情:

1.把參宿map集合轉(zhuǎn)換為Hospital對象(借助JSONObject工具)

2.判斷MongoDB中是否已有這條記錄

3.如果有就執(zhí)行更新,沒有就執(zhí)行保存

詳細代碼實現(xiàn):

public interface HospitalService {
    void save(Map<String, Object> paramMap);
}
@Service
public class HospitalServiceImpl implements HospitalService {
    @Autowired
    private HospitalRepository hospitalRepository;
    @Override
    public void save(Map<String, Object> paramMap) {
        // 1.把參宿map集合轉(zhuǎn)換為Hospital對象(借助JSONObject工具)
        String mapString = JSONObject.toJSONString(paramMap);
        Hospital hospital = JSONObject.parseObject(mapString, Hospital.class);
        // 2.判斷MongoDB中是否已有這條記錄
        String hoscode = hospital.getHoscode();
        Hospital hospitalExist = hospitalRepository.getHospitalByHoscode(hoscode);
        // 3.如果有就執(zhí)行更新,沒有就執(zhí)行保存
        if (null != hospitalExist) {
            hospital.setStatus(hospitalExist.getStatus());
            hospital.setCreateTime(hospitalExist.getCreateTime());
            hospital.setUpdateTime(new Date());
            hospital.setIsDeleted(0);
            hospitalRepository.save(hospital);
        } else {
            //0:未上線 1:已上線
            hospital.setStatus(0);
            hospital.setCreateTime(new Date());
            hospital.setUpdateTime(new Date());
            hospital.setIsDeleted(0);
            hospitalRepository.save(hospital);
        }
    }
}

四、Respository數(shù)據(jù)層

在Respository層中僅僅進行了根據(jù)HosCode獲得記錄的方法定義,MongoDB會智能的為我們生成相應查詢代碼。(這需要我們對類名進行規(guī)范定義,當然,這并不是本篇文章所討論的內(nèi)容)

@Repository
public interface HospitalRepository extends MongoRepository<Hospital,String> {
    /**
     * 根據(jù)HosCode獲得記錄
     * @param hoscode
     * @return
     */
    Hospital getHospitalByHoscode(String hoscode);
}

五、測試上傳醫(yī)院接口

運行醫(yī)院設置和醫(yī)院管理兩個微服務模塊,打開醫(yī)院管理模塊的模擬添加頁面,加入一條JSON測試記錄。

在醫(yī)院接口模擬系統(tǒng)中添加JSON數(shù)據(jù)

點擊保存后,調(diào)用醫(yī)院設置中的api接口,最終將數(shù)據(jù)保存到了MongoDB中:

MongoDB中接收到了JSON數(shù)據(jù)

至此,開發(fā)上傳醫(yī)院接口的后端代碼,全部完成,更多關于分布式醫(yī)療掛號系統(tǒng)的資料請關注腳本之家其它相關文章!

相關文章

  • MongoDB數(shù)據(jù)庫的日志文件深入分析

    MongoDB數(shù)據(jù)庫的日志文件深入分析

    這篇文章主要給大家介紹了關于MongoDB數(shù)據(jù)庫日志的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MongoDB具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-09-09
  • Windows下MongoDB配置用戶權限實例

    Windows下MongoDB配置用戶權限實例

    這篇文章主要介紹了Windows下MongoDB配置用戶權限實例,本文實現(xiàn)需要輸入用戶名、密碼才可以訪問MongoDB數(shù)據(jù)庫,需要的朋友可以參考下
    2015-01-01
  • MongoDB遠程訪問配置步驟詳解

    MongoDB遠程訪問配置步驟詳解

    MongoDB遠程訪問相信很多人都要到這個需求,所以這篇文章給大家主要介紹了MongoDB遠程訪問配置的步驟,文中給出了詳細的步驟及示例代碼,相信對大家的理解和學習很有幫助,有需要的朋友們下面來一起學習學習吧。
    2016-11-11
  • MongoDB 事務支持詳解

    MongoDB 事務支持詳解

    這篇文章主要介紹了MongoDB 事務支持詳解的相關資料,需要的朋友可以參考下
    2022-12-12
  • Spring Boot中使用MongoDB數(shù)據(jù)庫的方法

    Spring Boot中使用MongoDB數(shù)據(jù)庫的方法

    MongoDB是一個高性能,開源,無模式的,基于分布式文件存儲的文檔型數(shù)據(jù)庫,由C++語言編寫,其名稱來源取自“humongous”,是一種開源的文檔數(shù)據(jù)庫──NoSql數(shù)據(jù)庫的一種。這篇文章主要介紹了Spring Boot中使用MongoDB數(shù)據(jù)庫的方法,需要的朋友可以參考下
    2017-12-12
  • win7平臺快速安裝、啟動mongodb的方法

    win7平臺快速安裝、啟動mongodb的方法

    這篇文章主要介紹了win7平臺快速安裝、啟動mongodb的方法,結(jié)合圖文形式分析了win7平臺下載、安裝、啟動、配置MongoDB數(shù)據(jù)庫的方法與注意事項,需要的朋友可以參考下
    2020-05-05
  • mongodb啟動方法小結(jié)

    mongodb啟動方法小結(jié)

    這篇文章主要介紹了mongodb啟動方法小結(jié),啟動Mongodb服務有兩種方式,前臺啟動或者Daemon方式啟動,每種方式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • MongoDB的主從復制及副本集的replSet配置教程

    MongoDB的主從復制及副本集的replSet配置教程

    MongoDB可以在以一個主節(jié)點處理客戶端請求的情況下以其他節(jié)點服務器負責映射主節(jié)點上的數(shù)據(jù),即為我們通常所說的主從復制功能,這里我們就來共同總結(jié)MongoDB的主從復制及副本集的replSet配置教程:
    2016-07-07
  • MongoDB 語法使用小結(jié)

    MongoDB 語法使用小結(jié)

    MongoDB是一個介于關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫之間的產(chǎn)品,是非關系數(shù)據(jù)庫當中功能最豐富,最像關系數(shù)據(jù)庫的
    2011-10-10
  • MongoDB 用戶相關操作

    MongoDB 用戶相關操作

    這篇文章主要介紹了MongoDB 用戶相關操作,幫助大家更好的理解和學習使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-03-03

最新評論