RouYi-Vue前后端分离
1、项目启动
(1)环境准备
JDK >= 1.8 (推荐1.8版本)
Mysql >= 5.7.0 (推荐5.7版本)
Redis >= 3.0
Maven >= 3.0
Node >= 12
(2)后台运行
- 启动本地的Redis服务
1、前往Gitee
下载页面(https://gitee.com/y_project/RuoYi-Vue (opens new window))下载解压到工作目录
2、导入到项目到idea中。
3、创建数据库ry-vue
并导入数据脚本ry_2021xxxx.sql
,quartz.sql
4、修改数据库连接,编辑resources目录下的application-druid.yml
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: 数据库地址
username: 数据库账号
password: 数据库密码
5、打开项目运行com.ruoyi.RuoYiApplication.java
,出现如下图表示启动成功。
(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙
.-------. ____ __
| _ _ \ \ \ / /
| ( ' ) | \ _. / '
|(_ o _) / _( )_ .'
| (_,_).' __ ___(_ o _)'
| |\ \ | || |(_,_)'
| | \ `' /| `-' /
| | \ / \ /
''-' `'-' `-..-'
(3)前端运行
# 进入项目目录
cd ruoyi-ui
# 安装依赖
npm install
# 强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。
npm install --registry=https://registry.npmmirror.com
# 本地开发 启动项目
npm run dev
打开浏览器,输入:(http://localhost:81 (opens new window)) 默认账户/密码 admin/admin123
)
若能正确展示登录页面,并能成功登录,菜单及页面展示正常,则表明环境搭建成功
2、登录实现
(1)生成验证码
1、前端代码实现
- 基本思路
后端生成一个表达式:6+2=8
1+1=?@2
1+1=?转成图片,传到前端展示
8 存入到Redis中
- 代码实现
访问地址:http://localhost:81/dev-api/captchaImage
Vue获取图片请求的是前端,再反向代理映射到后端,解决跨域问题
/dev-api 被替换成 ’ ’ ,再映射到:http://localhost:8080,变成:http://localhost:8080/captchaImage
2、后端代码实现
/**
* 验证码操作处理
*
* @author ruoyi
*/
@RestController
public class CaptchaController
{
@Resource(name = "captchaProducer")
private Producer captchaProducer;
@Resource(name = "captchaProducerMath")
private Producer captchaProducerMath;
@Autowired
private RedisCache redisCache;
@Autowired
private ISysConfigService configService;
/**
* 生成验证码
*/
@GetMapping("/captchaImage")
public AjaxResult getCode(HttpServletResponse response) throws IOException
{
AjaxResult ajax = AjaxResult.success();
boolean captchaEnabled = configService.selectCaptchaEnabled();
ajax.put("captchaEnabled", captchaEnabled);
if (!captchaEnabled)
{
return ajax;
}
// 保存验证码信息
String uuid = IdUtils.simpleUUID();
String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
String capStr = null, code = null;
BufferedImage image = null;
// 生成验证码
String captchaType = RuoYiConfig.getCaptchaType();
if ("math".equals(captchaType))
{
String capText = captchaProducerMath.createText();
capStr = capText.substring(0, capText.lastIndexOf("@"));
code = capText.substring(capText.lastIndexOf("@") + 1);
image = captchaProducerMath.createImage(capStr);
}
else if ("char".equals(captchaType))
{
capStr = code = captchaProducer.createText();
image = captchaProducer.createImage(capStr);
}
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
// 转换流信息写出
FastByteArrayOutputStream os = new FastByteArrayOutputStream();
try
{
ImageIO.write(image, "jpg", os);
}
catch (IOException e)
{
return AjaxResult.error(e.getMessage());
}
ajax.put("uuid", uuid);
ajax.put("img", Base64.encode(os.toByteArray()));
return ajax;
}
}
/**
* 返回成功消息
*
* @return 成功消息
*/
public static AjaxResult success()
{
return AjaxResult.success("操作成功");
}
/**
* 返回成功消息
*
* @param msg 返回内容
* @return 成功消息
*/
public static AjaxResult success(String msg)
{
return AjaxResult.success(msg, null);
}
/**
* 返回成功消息
*
* @param msg 返回内容
* @param data 数据对象
* @return 成功消息
*/
public static AjaxResult success(String msg, Object data)
{
return new AjaxResult(HttpStatus.SUCCESS, msg, data);
}
(2)用户登录
1、前端代码实现
2、后端代码实现
http://localhost:81/dev-api/login
-
校验验证码
-
校验用户名和密码
-
生成Token
(3)获取用户角色和权限
1、前端代码实现
2、后端代码实现
3、创建新模块
1.创建自己的模块
选择maven项目
我创建的是 com.ruoyi公司 出品的ruoyi-his项目
2.更新maven依赖
2.1 因为我的ruoyi-his模块 用到了ruoyi-common 所以:
<dependencies>
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
</dependency>
</dependencies>
2.2 因为ruoyi-admin是启动模块,用到了我自己的ruoyi-his项目,所以:
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-his</artifactId>
</dependency>
2.3 根目录下的pom.xml:
< modules> 自动加入了我的ruoyi-his模块
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-his</artifactId>
<version>${ruoyi.version}</version>
</dependency>
如果有问题 记得刷新一下maven
3.自动生成代码
3.1 数据库建设好
若依自带的sql文件在后端文件夹里面,导入即可
HIS项目涉及的sql文件是他们培训机构设计的,在下面提供了
目前他们只提供了一个科室表,就是一个单表
create table his_dept(
dept_id bigint(20) primary key NOT NULL AUTO_INCREMENT COMMENT '科室ID',
dept_name varchar(50) NOT NULL COMMENT '科室名称',
dept_code varchar(64) NOT NULL COMMENT '科室编码',
dept_num bigint DEFAULT 0 COMMENT '当前挂号量',
dept_leader varchar(64) DEFAULT '' COMMENT '负责人',
dept_phone varchar(11) DEFAULT '' COMMENT '手机号码',
`status` char(1) NOT NULL COMMENT '状态(0正常 1停用)',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注'
) comment '科室表';
insert into his_dept values(1,'内科','HIS-NK',1,'北京尚学堂','18612345678',0,'admin',now(),'admin',now(),'');
insert into his_dept values(2,'外科','HIS-WK',1,'北京尚学堂','18612345678',0,'admin',now(),'admin',now(),'');
insert into his_dept values(3,'骨科','HIS-GK',1,'北京尚学堂','18612345678',0,'admin',now(),'admin',now(),'');
insert into his_dept values(4,'儿科','HIS-EK',1,'北京尚学堂','18612345678',0,'admin',now(),'admin',now(),'');
insert into his_dept values(5,'妇科','HIS-FK',1,'北京尚学堂','18612345678',0,'admin',now(),'admin',now(),'');
insert into his_dept values(6,'泌尿外科','HIS-NK',1,'北京尚学堂','18612345678',0,'admin',now(),'admin',now(),'');
insert into his_dept values(7,'心内科','HIS-XK',1,'北京尚学堂','18612345678',0,'admin',now(),'admin',now(),'');
insert into his_dept values(8,'血液科','HIS-XYK',1,'北京尚学堂','18612345678',0,'admin',now(),'admin',now(),'');
insert into his_dept values(9,'放射科','HIS-FSK',1,'北京尚学堂','18612345678',0,'admin',now(),'admin',now(),'');
insert into his_dept values(10,'化验科','HIS-HSK',1,'北京尚学堂','18612345678',0,'admin',now(),'admin',now(),'');
insert into his_dept values(11,'精神科','HIS-JSK',1,'北京尚学堂','18612345678',0,'admin',now(),'admin',now(),'');
选中的his_dept是自己创建的,其他表是若依框架自带的
3.2 启动项目
记得开redis
3.3 更新左侧栏目
创建目录【医院管理】 路由地址:hospital
创建菜单【科室管理】 路由地址:dept
3.4 生成代码
下载代码并解压,得到:
【生成功能名】如果是‘科室’,他会创建一个menu名字叫’科室’ parent_id看自己指定的上级菜单
所以 会创建出目录结构:
+医院管理
-
科室管理
– 科室
这是不对的 所以不运行sql 具体看sql语句就明白了。
main是生成的后端代码 也是复制到src目录下
vue文件夹是生成的前端代码 复制到ui项目的src目录下
4.重新启动
重启前后端