一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - 數據庫技術 - 開發分布式醫療掛號系統MongoDB集成實現上傳醫院接口

開發分布式醫療掛號系統MongoDB集成實現上傳醫院接口

2023-05-07 12:10未知服務器之家 數據庫技術

前言 需求:在《分布式預約掛號平臺》中完成上傳醫院接口開發,再通過醫院接口模擬系統(醫院管理表)調用平臺中的接口,從而實現上傳醫院的功能。另外,所有通過平臺中接口上傳的信息都需要被保存到MongoDB中,通過MongoDB來

前言

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

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

一、集成MongoDB

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

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

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

spring.data.mongodb.uri=mongodb://[ip地址]:27017/[MongoDB的數據庫]

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

開發分布式醫療掛號系統MongoDB集成實現上傳醫院接口

二、開發Controller層

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

1.將從醫院管理表傳遞過來的醫院信息轉換為Object類型

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

3.獲取醫院設置表中的密鑰并進行MD5加密 此處調用醫院設置業務層

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

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

6.執行上傳操作 此處調用醫院管理業務層

詳細代碼實現:

@RestController
@RequestMapping("/api/hosp")
public class ApiController {
    @Autowired
    private HospitalService hospitalService;
    @Autowired
    private HospitalSetService hospitalSetService;
    @ApiOperation(value = "上傳醫院到數據庫")
    @PostMapping("saveHospital")
    public Result saveHosp(HttpServletRequest request) {
        // 1.將從醫院管理表傳遞過來的醫院信息轉換為Object類型
        Map<String, String[]> requestMap = request.getParameterMap();
        Map<String, Object> paramMap = HttpRequestHelper.switchMap(requestMap);
        // 2.獲取醫院管理表中的密鑰(已經使用MD5加密好了)
        String hospSign = (String) paramMap.get("sign");
        // 3.獲取醫院設置表中的密鑰并進行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.執行上傳操作
        hospitalService.save(paramMap);
        return Result.ok();
    }
}

三、開發Service層

醫院設置的Service層

在醫院設置的Service層中根據醫院編碼獲取SignKey,下面是接口和實現類:

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();
    }
}

醫院管理的Service層

分析醫院管理Service層所做的事情:

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

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

3.如果有就執行更新,沒有就執行保存

詳細代碼實現:

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集合轉換為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.如果有就執行更新,沒有就執行保存
        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數據層

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

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

五、測試上傳醫院接口

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

開發分布式醫療掛號系統MongoDB集成實現上傳醫院接口

點擊保存后,調用醫院設置中的api接口,最終將數據保存到了MongoDB中:

開發分布式醫療掛號系統MongoDB集成實現上傳醫院接口

至此,開發上傳醫院接口的后端代碼,全部完成,更多關于分布式醫療掛號系統的資料請關注其它相關文章!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费看美女被靠到爽的视频 | 菠萝视频污 | 久久久无码精品亚洲A片猫咪 | 男人操美女逼视频 | 美女污视频在线观看 | 91青青在线视频 | 免费午夜剧场 | www.av在线视频| 东北疯狂xxxxbbbb中国 | 高清在线观看免费入口 | 国产伦精品一区二区三区免费观看 | 欧美久久天天综合香蕉伊 | 黄动漫车车好快的车车a | 无码人妻精品一区二区蜜桃在线看 | 男人的私人影院 | 91热爆在线| 国产精品久久久久毛片真精品 | gay小太正初精 | 超级碰碰免费视频 | 女同性互吃奶乳免费视频 | 私人chinese beauty| 母性本能在线观看 | 特黄特色大片免费视频大全 | 91亚洲一区二区在线观看不卡 | 免费国产之a视频 | 欧美操大逼视频 | 亚洲狼人香蕉香蕉在线28 | 91久久青青草原线免费 | 精品在线99| 日本激情网 | 精品免费视在线视频观看 | 日本人妖网站 | 亚洲第一综合网站 | 亚欧毛片基地国产毛片基地 | 欧美成人momandson | 国产精品久久久久久岛国 | 日本午夜vr影院新入口 | 精品国产品国语在线不卡丶 | 色交视频| 成人高辣h视频一区二区在线观看 | 手机在线伦理片 |