若依 - RuoYi -快速开发 学习
若依一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间开始自己写了一套后台系统。如此有了若依。她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
性别男,若依是给女儿取的名字(寓意:你若不离不弃,我必生死相依)
若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
git 地址 https://gitee.com/y_project/RuoYi/tree/v4.6.1
学习地址:http://doc.ruoyi.vip/ruoyi/ 当然比我写的全
为啥用RuoYi 里面的html 版本,不是vue 版本和cloud 版本,因为对个人开发和网站开发还是比较好用的,
vue 版本会用其它的后台平台,下一个会有的。
Q:文档写的很清楚了,为啥还要自己写没有用的东西呢?
A:因为那毕竟是别人的,在这看了很多,没有记录下来,我永远之是看,可能连Shiro Hibernate Validation 怎么用都是不知道的,对自己有用,对他人希望也是个参考。
接着就学习步骤。
1,先运行。
2,再看源码。
3,创建表。
4,开发功能尝试。
运行步骤
先下载源码,下载他最新的版本,没有下载master 上面的,版本v4.6.1 可以下载
导入到idea 里面
Snipaste_2021-05-26_08-22-59.png
Snipaste_2021-05-26_08-23-12.png
然后在查看源码。。
我一直对sh 和bin 里面内容不解,有代码要这些干嘛。
sh 是linux 服务上运行的。
bin 是bat 是windows 开发用的。
clear 是删除包
package 是编译包
run 是允许 项目
里面内容就是
mvn clean package -Dmaven.test.skip=true cd ../ruoyi-admin/target set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m java -jar %JAVA_OPTS% ruoyi-admin.jar
运行jar 的过程。。
修改配置文件,我只创建了本地数据库,修改了本地数据库地址。
run.bat
浏览器http://localhost/ 这个就可以了。。。
看doc 里面大体 就这些了内容了。他用的Eclipse 我用的idea。
基础部分sql 数据库部分。。
里面有一个pdm 结尾的 文件是通过PowerDesigner 来设计数据库的。
我打开看了一下。
Snipaste_2021-05-26_09-08-29.png
PowerDesigner 创建两个表。
然后导出sql
导入https://jingyan.baidu.com/article/ce436649c9a0887772afd32e.htm
参考这个,默认情况可以打开其他字段,和修改默认值https://blog.csdn.net/lgw_999/article/details/82822245
Snipaste_2021-05-26_09-29-46.png
Snipaste_2021-05-26_11-08-08.png
Snipaste_2021-05-26_10-58-16.png
然后开始使用 若依app 。
导入sql ,启动 若依项目。。。
Snipaste_2021-05-26_11-12-17.png
Snipaste_2021-05-26_11-12-51.png
开始创建新的项目了。。。
创建maven 项目。。。ruoyi-app
Snipaste_2021-05-26_11-47-57.png
然后从后台里面下载源码,然后放到项目里面
然后在配置好menu 菜单之后,才可以进行重新启动项目。
Snipaste_2021-05-26_11-46-28.png
就是这样的情况了。。。
发送了错误了,就是 主键没有写自增加 修改就好了。。
还是觉得Navicat Premium 15 设计sql 还是较为习惯。。。
然后开始修改逻辑了。
最后修改把这俩个界面合并到一起,然后在进行 进入。记录表里面是app 上传的不同版本的。
写一个更新版本的接口,供app调用和使用。。
Snipaste_2021-05-26_11-46-28.png
Snipaste_2021-05-27_09-27-14.png
http://localhost/swagger-ui.html
可以进行接口调试使用。。
步骤结束。。。
开始收集好的使用了。
学习这个太痛苦了,例如shiro 我觉得得写一些代码才可以。。
1,Shiro 部分
/** * 授权 */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) { SysUser user = ShiroUtils.getSysUser(); // 角色列表 Set<String> roles = new HashSet<String>(); // 功能列表 Set<String> menus = new HashSet<String>(); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); // 管理员拥有所有权限 if (user.isAdmin()) { info.addRole("admin"); info.addStringPermission("*:*:*"); } else { roles = roleService.selectRoleKeys(user.getUserId()); menus = menuService.selectPermsByUserId(user.getUserId()); // 角色加入AuthorizationInfo认证对象 info.setRoles(roles); // 权限加入AuthorizationInfo认证对象 info.setStringPermissions(menus); } return info; }
setRoles和setStringPermissions 这个俩个都是非常不好,得看api。光看着,只能记住它。
然后在去获取他,还得在看表结构。。。
在去梳理一下。。。
2,Schedule 这个会自己启动的,
/** * 立即运行任务 * * @param job 调度信息 */ @Override @Transactional public void run(SysJob job) throws SchedulerException { Long jobId = job.getJobId(); SysJob tmpObj = selectJobById(job.getJobId()); // 参数 JobDataMap dataMap = new JobDataMap(); dataMap.put(ScheduleConstants.TASK_PROPERTIES, tmpObj); scheduler.triggerJob(ScheduleUtils.getJobKey(jobId, tmpObj.getJobGroup()), dataMap); }
3, 热部署 调试
Snipaste_2021-05-28_11-15-27.png
Snipaste_2021-05-28_11-15-37.png
https://blog.csdn.net/qq_31024823/article/details/82020791
html 页面调试挺好的。
成果展示
自己一个版本更新应用模块
Snipaste_2021-06-03_15-24-51.png
Snipaste_2021-06-03_15-25-09.png
Snipaste_2021-06-03_15-24-51.png
Snipaste_2021-06-03_16-24-59.png
大体完成app 管理界面。
作者:客观开发者
链接:https://www.jianshu.com/p/e6d4c6c7a9c4