尚医通- Nacos服务注册 医院列表接口(二十一)

目录:

(1)后台系统-医院管理-需求和Nacos启动

(2)医院列表-Nacos注册服务 

(3)医院列表接口-初步实现


.(1)后台系统-医院管理-需求和Nacos启动

之前我们完成了数据相关的接口,包括医院,科室,排班目前呢这些数据都已经上传到平台中,那我们现在呢可以用管理平台把这些数据管理起来,在下面可以建立一个新的模块 ,医院管理,里面可以看到医院信息,科室信息,排班信息

 医院的显示  等级的显示,需要添加接口进行查询:

 下面写医院的相关管理写到service_hosp这个模块中,查询数据字典表,相关接口写在service_cmn模块中,要得到数据字典数据需要写service_hosp模块调用service_cmm模块中的方法。要实现不同模块之间的调用,用专业数据叫做远程调用

  • 注册中心与服务调用

目前在医院列表中需要医院的信息和等级信息,而两段信息属于不同的的模块,service-hosp和service-cmn,所以我们需要使用到远程调用。

1、Nacos概述

1.1 什么是Nacos

Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施

1.2 常见的注册中心

1. Eureka(原生,2.0遇到瓶颈,停止维护)

2. Zookeeper(支持,专业的独立产品。例如:dubbo)

3. Consul(原生,GO语言开发)

4. Nacos

相对于 Spring Cloud Eureka 来说,Nacos 更强大。

Nacos = Spring Cloud Eureka + Spring Cloud Config

Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config。

- 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。

- 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。

1.3 Nacos结构图

1.4 Nacos下载和安装

下载地址:https://github.com/alibaba/nacos/releases

下载版本:nacos-server-1.1.4.tar.gz或nacos-server-1.1.4.zip,解压任意目录即可

下载之后:

 解压

 

 

startup.sh是Linux系统的启动 

startup.cmd:这个是Windows系统的启动 

Nacos占用的端口号是8848

Windows

启动命令:cmd startup.cmd 或者双击startup.cmd运行文件。

访问:http://localhost:8848/nacos

用户名密码:nacos/nacos

 输入地址访问:

 输入用户名密码都是nacos:

 就进入到nacos的管理界面:

往里面注册服务可以通过服务列表看到: 

 我们在service_hosp中创建接口,和在service_cmn中创建接口,然后再注册中心进行注册,然后通过远程调用得到医院等级数据最终显示

(2)医院列表-Nacos注册服务 

 实现服务的远程调用,首先需要把服务现在Nacos注册中心进行注册:

在service模块的pom文件中引入Nacos的依赖: 

 

在打开service_hosp模块的application.properties配置文件:

在service-hosp的配置文件添加nacos服务地址

# nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

 service-hosp的启动类添加注解  @EnableDiscoveryClient

package com.atguigu.yygh.hosp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan(basePackages = "com.atguigu")
@EnableDiscoveryClient  //服务在Nacos中注册
public class ServiceHospApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceHospApplication.class, args);
    }
}

 重新启动项目

在Nacos就出现了这个服务

 service-cmn注册过程和service-hosp相同

 然后再service_hosp中创建一个医院列表接口这个接口肯定是条件查询带分页

在service_cmn模块中创建接口根据编号或者值得到数据字典名称具体说是医院名称

(3)医院列表接口-初步实现

 

创建HospitalController:

package com.atguigu.yygh.hosp.controller;

import com.atguigu.yygh.hosp.service.HospitalService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/admin/hosp/hospital")
@CrossOrigin         //跨域访问注解
public class HospitalController {
    @Autowired
    private HospitalService hospitalService;

}

 创建service:前面已经创建过了HospitalService接口

创建HospitalService的实现类HospitalServiceImpl,也创建过了

HospitalController:编写医院列表方法:

package com.atguigu.yygh.hosp.controller;

import com.atguigu.yygh.common.result.Result;
import com.atguigu.yygh.hosp.service.HospitalService;
import com.atguigu.yygh.model.hosp.Hospital;
import com.atguigu.yygh.vo.hosp.HospitalQueryVo;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/admin/hosp/hospital")
@CrossOrigin         //跨域访问注解
public class HospitalController {
    @Autowired
    private HospitalService hospitalService;

    //医院列表(条件查询分页)  条件使用HospitalQueryVo类进行封装
    @ApiOperation(value = "获取分页列表")
    @GetMapping("list/{page}/{limit}")
    public Result index(
            @ApiParam(name = "page", value = "当前页码", required = true)
            @PathVariable Integer page,

            @ApiParam(name = "limit", value = "每页记录数", required = true)
            @PathVariable Integer limit,

            @ApiParam(name = "hospitalQueryVo", value = "查询对象", required = false)
                    HospitalQueryVo hospitalQueryVo) {

        Page<Hospital> pageModel=hospitalService.selectHospPage(page, limit, hospitalQueryVo);
        return Result.ok(pageModel);
    }

}

HospitalService 接口: 

package com.atguigu.yygh.hosp.service;

import com.atguigu.yygh.model.hosp.Hospital;
import com.atguigu.yygh.vo.hosp.HospitalQueryVo;
import org.springframework.data.domain.Page;

import java.util.Map;

public interface HospitalService {
    //上传医院接口的方法
    void save(Map<String, Object> paramMap);

    //根据医院编号进行查询
    Hospital getByHoscode(String hoscode);

    //医院列表(条件查询分页)
    Page<Hospital> selectHospPage(Integer page, Integer limit, HospitalQueryVo hospitalQueryVo);
}

 实现类:HospitalServiceImpl添加方法:

 

 //医院列表(条件查询分页)
    @Override
    public Page<Hospital> selectHospPage(Integer page, Integer limit, HospitalQueryVo hospitalQueryVo) {
        //创建Pageable的对象
        Pageable pageable= PageRequest.of(page-1,limit);
        //创建条件匹配器
        ExampleMatcher matcher=ExampleMatcher.matching()
                .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)  //改变默认字符串匹配方式:模糊查询
                .withIgnoreCase(true); //改变默认大小写忽略方式:忽略大小写

        //将hospitalQueryVo对象转换为Hospital对象
        Hospital hospital =new Hospital();
        BeanUtils.copyProperties(hospitalQueryVo, hospital);//使用工具类把HospitalQueryVo转换成department

        //创建Example对象
        Example<Hospital> example=Example.of(hospital,matcher);
        //调用方法进行实现
        Page<Hospital> all = hospitalRepository.findAll(example, pageable);
        return all;
    }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值