首页 > 编程语言 >完善接口:输出值班医生的电话,查询小程序的密钥

完善接口:输出值班医生的电话,查询小程序的密钥

时间:2023-05-05 10:47:48浏览次数:37  
标签:接口 String 配置文件 list 医生 private 密钥 值班

接口的开发:

输出值班医生的电话

我发现我之前创建的管理员的表是多余的,我可以直接借用若依自带的表来做。其中还有这角色,正好符合添加值班医生,而且后台管理的前端页面是有着功能的,这样更为方便,也可以添加值班医生的信息,我将自带的实体类导入到项目代码的指定的位置。根据角色和管理员的关联表,从中读取是值班医生的id,根据值班医生的id,去管理员表中找指定值班医生们,将其的个数反馈出来。然后随机一个医生来输出电话。

@Autowired
private IUserRoleService iSysUserRoleService;

@Autowired
private IUserService iSysUserService;
/**
* 查询值班医生的电话
* @return
*/
@Override
public String AdminPhonenumber() {
   //查询正在值班的医生
   LambdaQueryWrapper<UserRole> lambdaQueryWrapper = new LambdaQueryWrapper<>();
   lambdaQueryWrapper.eq(UserRole::getRoleId,3);
   //查询出多个值班医生
   List<UserRole> list = iSysUserRoleService.list(lambdaQueryWrapper);
   //有几个值班医生
   int size = list.size();
   //随机取一个值班医生的
   Random random = new Random();
   int i = random.nextInt(size);

   UserRole sysUserRole = list.get(i);
   Long userId = sysUserRole.getUserId();
   //到系统用户表中找到这个值班医生的电话
   LambdaQueryWrapper<User> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
   lambdaQueryWrapper1.eq(User::getUserId,userId);
   User one = iSysUserService.getOne(lambdaQueryWrapper1);
   String phonenumber = one.getPhonenumber();

   return phonenumber;

}

 

查询小程序的密钥

前端要求那边现在需要一个接口就是,可以返回我的小程序密钥。因为我不能直接在前端代码中写入这个密钥,会存在泄漏的安全风险。所以要你那边写个接口给我返回这个数据。所以我就将其的配置文件的中的数据返回出来

@Value("${appId}")
private String appId;

@Value("${secret}")
private String secret;

/**
* 返回passworedKey
* @return
*/
@Override
public Map<String, Object> getsecret() {
   Map<String, Object> objectObjectHashMap = new HashMap<>();
   objectObjectHashMap.put("secret", this.secret);
   return objectObjectHashMap;
}

 

 

问题及解决

查询值班医生的电话出现的bug

问题的分析:这个值班的医生是若依系统自带的数据库,其中就是登录到后台管理的一些信息,所以这里的两个实体类及业务层之类id没有导入到项目代码中。我生成了其类,复制到IDEA中。一运行就出现了这个报错

报错的信息:是因为实体类名重复,出现重复映射

解决:我直接将实体类改一个名字,在若依中其中会有一个如果去自带的中去带的话更耗费时间,所以就改了实体类的名字就解决了这个问题

 

 

 

学习重点及理解

随机数的学习

就比如上面随机一个医生的电话号码进行输出:

首先将其所以医生都要查询出来:

//查询出多个值班医生
List<UserRole> list = iSysUserRoleService.list(lambdaQueryWrapper);

然后就是找到有多少个医生

//有几个值班医生
int size = list.size();

再创建一个随机数的对象,将其中的几个医生的个数放到其中这里的执行范围是 [0~(个数-1)],就是说他是从0到这个个数减一这个范围中随机

//随机取一个值班医生的
Random random = new Random();
int i = random.nextInt(size);

最后就是在list中找到随机出来的(i)数字找到指定的值班医生,然后读取他的电话就好了

UserRole sysUserRole = list.get(i);
Long userId = sysUserRole.getUserId();

 

扩展学习

Spring 获取配置文件属性的三种方法

  • 方法一:
    • 通过 Environment env获取配置属性:

      • import org.springframework.core.env.Environment;

        @Configuration
        public class MyBatisConfig
        {
           @Autowired
           private Environment env;
           @Bean
           public void sqlSessionFactory(DataSource dataSource) throws Exception
          {
               String typeAliasesPackage = env.getProperty("mybatis-plus.typeAliasesPackage");
               String mapperLocations = env.getProperty("mybatis-plus.mapperLocations");
          }  
        }
    • 此处配置文件(yml 配置,配置文件如下):

      • mybatis-plus:
         # 搜索指定包别名
        typeAliasesPackage: com.ruoyi.project.**.domain
         # 配置mapper的扫描,找到所有的mapper.xml映射文件
        mapperLocations: classpath*:mybatis/**/*Mapper.xml

         

  • 方法二:
    • 绑定实体类,获取一组配置:

      • import org.springframework.boot.context.properties.ConfigurationProperties;
        import org.springframework.stereotype.Component;
        import lombok.Getter;
        import lombok.Setter;
        /**
        * 读取项目相关配置
        */
        @Component
        @Getter
        @Setter
        @ConfigurationProperties(prefix = "peng")
        public class RuoYiConfig
        {
           /** 项目名称 */
           private String name;
           /** 版本 */
           private String version;
           /** 版权年份 */
           private String copyrightYear;
           /** 实例演示开关 */
           private boolean demoEnabled;
           /** 上传路径 */
           private static String profile;
           /** 获取地址开关 */
           private static boolean addressEnabled;  
        }

    • 此处配置文件(yml 配置,配置文件如下):

      • peng:
         # 名称
        name: RuoYi
         # 版本
        version: 2.0.0
         # 版权年份
        copyrightYear: 2019
         # 实例演示开关
        demoEnabled: true
         # 文件路径 示例
        profile: /home/huawei/zdh/
         # 获取ip地址开关
        addressEnabled: true

         

  • 方法三:
    • 通过 @Value标签绑定数据

      • import org.springframework.beans.factory.annotation.Value;
        import org.springframework.context.annotation.Configuration;
        import com.alibaba.druid.pool.DruidDataSource;

        /**
        * druid 配置属性
        */
        @Configuration
        public class DruidProperties
        {
           @Value("${spring.datasource.druid.initialSize}")
           private int initialSize;

           @Value("${spring.datasource.druid.minIdle}")
           private int minIdle;

           @Value("${spring.datasource.druid.maxActive}")
           private int maxActive;

        }
    • 此处配置文件(yml 配置,配置文件如下):

      • spring:
        datasource:
          druid:
             # 初始连接数
            initialSize: 5
             # 最小连接池数量
            minIdle: 10
             # 最大连接池数量
            maxActive: 20

总结

今天的学习的状态是不错的完成了,完善接口的不足的地方,将前端缺少的接口开发出来,其中的出现一个bug,也是解决掉了。接下来还去摸索消息订阅和新项目的部署的操作。今天比较难的就是随机数这块的内容,还有的是在获取配置文件中的数据的时候返回不出来就返回一个注释中的内容,后面上网查了一下是少了一个$的符号。

标签:接口,String,配置文件,list,医生,private,密钥,值班
From: https://www.cnblogs.com/ikunba/p/17373420.html

相关文章

  • 【解决办法】三层交换机通过静态路由和接口互联,实现不同VLAN间通信的两种方法
    环境:工具:锐捷EVE模拟器远程工具:SecureCRT系统版本:Windows10问题描述:描述:通过两台三层交换机的互联,完成全网互通。拓扑如下图:解决方法-视频与文字教程:视频教程:文字教程:方法1:通过建立TRUNK链路,通过SVI虚拟接口实现三层交换机的互联,各交换机下的终端的网关指向各自交......
  • 使用apidoc生成接口文档
    一、首先安装node.js1.下载Node.js官方Windows版程序:  https://nodejs.org/download/  从0.6.1开始,Node.js在Windows平台上提供了两种安装方式,一是.MSI安装文件,另外还有一个.EXE可执行文件。  我选择了.EXE文件。因为.MSI安装文件除了将node.exe复制到C:\ProgramFi......
  • C++获取阿里巴巴1688中国站店铺详情 API 接口返回值示例说明
    ​C++(cplusplus)是一种计算机高级程序设计语言,由C语言扩展升级而产生,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。......
  • 25 服务接口的结构
    服务接口的结构:Cosmos的API结构:文件类、进程类、内存类、时间类的API;进入内核:设备向CPU发送一个中断信号,CPU接受到这个电子信号后,在允许响应中断的情况下,就会中断当前正在运行的程序,自动切换到相应的CPUR0特权级,并跳转到中断门描述符中相应的地址上运行中断处理代码。 ......
  • SmartInitializingSingleton 特殊的Spring接口
    SmartInitializingSingleton接口是ApplicationContext对BeanFactory的增强功能。文章目录什么是SmartInitializingSingleton接口在什么时候起作用有什么用途什么是SmartInitializingSingleton接口SmartInitializingSingleton接口是ApplicationContext对BeanFactory的增强功能可......
  • JDK1.8新特性(七):默认方法,真香,开动!接口?我要升级!!
    前期回顾:JDK1.8新特性(一):JDK1.8究竟有哪些新特性呢JDK1.8新特性(二):为什么要关注JDK1.8JDK1.8新特性(三):Lambda表达式,让你爱不释手JDK1.8新特性(四):函数式接口JDK1.8新特性(五):Stream,集合操作利器,让你好用到飞起来JDK1.8新特性(六):Stream的终极操作,轻松解决集合分组、汇总等复杂......
  • 【HMS Core】获取用户信息接口,返回 session timeout
    【问题描述】集成华为账号服务,获取用户信息,调用相关接口一直返回sessiontimeout,参考链接:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-References/get-user-info-0000001060261938​ 【解决方案】1、如果是走的端测的比如OkHttpClient这种方式的是需......
  • Postman实现变量自增循环执行接口
    设置globals全局变量,如下图设置的n,配置初始值为1或者为其它值 在接口中添加变量 在Pre-requestScript中设置自增的脚本vartemp=parseInt(postman.getGlobalVariable("n"));#先获取全局变量n并赋值为temptemp+=1;#temp自增1postman.setGlobalVariable("n",te......
  • 【DRF】4. DRF视图开发RESTful API接口
    四种方式:函数式编程:functionbasedview类视图:classedbasedview通用类视图:genericclassedbasedviewDRF的视图集Viewsets原生DjangoFBV(Funcitonbasedview)编写,应用的views.pyimportjsonfromdjango.httpimportJsonResponsefromdjango.views.decorators.csr......
  • 基于.NetCore开发博客项目 StarBlog - (27) 使用JWT保护接口
    前言这是StarBlog系列在2023年的第二篇更新......