若依一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间开始自己写了一套后台系统。如此有了若依。她可以用于所有的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 里面
然后在查看源码。。
我一直对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 来设计数据库的。
我打开看了一下。
PowerDesigner 创建两个表。
然后导出sql
导入https://jingyan.baidu.com/article/ce436649c9a0887772afd32e.htm
参考这个,默认情况可以打开其他字段,和修改默认值https://blog.csdn.net/lgw_999/article/details/82822245
然后开始使用 若依app 。
导入sql ,启动 若依项目。。。
开始创建新的项目了。。。
创建maven 项目。。。ruoyi-app
然后从后台里面下载源码,然后放到项目里面
然后在配置好menu 菜单之后,才可以进行重新启动项目。
就是这样的情况了。。。
发送了错误了,就是 主键没有写自增加 修改就好了。。
还是觉得Navicat Premium 15 设计sql 还是较为习惯。。。
然后开始修改逻辑了。
最后修改把这俩个界面合并到一起,然后在进行 进入。记录表里面是app 上传的不同版本的。
写一个更新版本的接口,供app调用和使用。。
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, 热部署 调试
https://blog.csdn.net/qq_31024823/article/details/82020791
html 页面调试挺好的。
成果展示
自己一个版本更新应用模块
大体完成app 管理界面。
代码