ruoyi后台管理系统框架:
接下来我们,边看代码边分析代码:
一、common包
----constant包
constant.java---------通用常量信息
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.ruoyi.common.constant; /** * 通用常量信息 * * @author ruoyi */ public class Constants { /** * UTF-8 字符集 */ public static final String UTF8 = "UTF-8"; /** * 通用成功标识 */ public static final String SUCCESS = "0"; /** * 通用失败标识 */ public static final String FAIL = "1"; /** * 登录成功 */ public static final String LOGIN_SUCCESS = "Success"; /** * 注销 */ public static final String LOGOUT = "Logout"; /** * 登录失败 */ public static final String LOGIN_FAIL = "Error"; /** * 自动去除表前缀 */ public static String AUTO_REOMVE_PRE = "true"; /** * 当前记录起始索引 */ public static String PAGE_NUM = "pageNum"; /** * 每页显示记录数 */ public static String PAGE_SIZE = "pageSize"; /** * 排序列 */ public static String ORDER_BY_COLUMN = "orderByColumn"; /** * 排序的方向 "desc" 或者 "asc". */ public static String IS_ASC = "isAsc"; }
PermissionConstants.java-----------权限通用常量
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 package com.ruoyi.common.constant; 2 3 /** 4 * 权限通用常量 5 * 6 * @author ruoyi 7 */ 8 public class PermissionConstants 9 { 10 /** 新增权限 */ 11 public static final String ADD_PERMISSION = "add"; 12 13 /** 修改权限 */ 14 public static final String EDIT_PERMISSION = "edit"; 15 16 /** 删除权限 */ 17 public static final String REMOVE_PERMISSION = "remove"; 18 19 /** 导出权限 */ 20 public static final String EXPORT_PERMISSION = "export"; 21 22 /** 显示权限 */ 23 public static final String VIEW_PERMISSION = "view"; 24 25 /** 查询权限 */ 26 public static final String LIST_PERMISSION = "list"; 27 }
ScheduleConstants.java------------------任务调度通用常量
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 package com.ruoyi.common.constant; 2 3 /** 4 * 任务调度通用常量 5 * 6 * @author ruoyi 7 */ 8 public interface ScheduleConstants 9 { 10 public static final String TASK_CLASS_NAME = "__TASK_CLASS_NAME__"; 11 12 public static final String TASK_PROPERTIES = "__TASK_PROPERTIES__"; 13 14 /** 默认 */ 15 public static final String MISFIRE_DEFAULT = "0"; 16 17 /** 立即触发执行 */ 18 public static final String MISFIRE_IGNORE_MISFIRES = "1"; 19 20 /** 触发一次执行 */ 21 public static final String MISFIRE_FIRE_AND_PROCEED = "2"; 22 23 /** 不触发立即执行 */ 24 public static final String MISFIRE_DO_NOTHING = "3"; 25 26 public enum Status 27 { 28 /** 29 * 正常 30 */ 31 NORMAL("0"), 32 /** 33 * 暂停 34 */ 35 PAUSE("1"); 36 37 private String value; 38 39 private Status(String value) 40 { 41 this.value = value; 42 } 43 44 public String getValue() 45 { 46 return value; 47 } 48 } 49 }
ShiroConstants.java-----------shiro通用常量
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 package com.ruoyi.common.constant; 2 3 /** 4 * Shiro通用常量 5 * 6 * @author ruoyi 7 */ 8 public interface ShiroConstants 9 { 10 /** 11 * 当前登录的用户 12 */ 13 public static final String CURRENT_USER = "currentUser"; 14 15 /** 16 * 用户名 17 */ 18 public static final String CURRENT_USERNAME = "username"; 19 20 /** 21 * 消息key 22 */ 23 public static String MESSAGE = "message"; 24 25 /** 26 * 错误key 27 */ 28 public static String ERROR = "errorMsg"; 29 30 /** 31 * 编码格式 32 */ 33 public static String ENCODING = "UTF-8"; 34 35 /** 36 * 当前在线会话 37 */ 38 public String ONLINE_SESSION = "online_session"; 39 40 /** 41 * 验证码key 42 */ 43 public static final String CURRENT_CAPTCHA = "captcha"; 44 45 /** 46 * 验证码开关 47 */ 48 public static final String CURRENT_ENABLED = "captchaEnabled"; 49 50 /** 51 * 验证码开关 52 */ 53 public static final String CURRENT_TYPE = "captchaType"; 54 55 /** 56 * 验证码 57 */ 58 public static final String CURRENT_VALIDATECODE = "validateCode"; 59 60 /** 61 * 验证码错误 62 */ 63 public static final String CAPTCHA_ERROR = "captchaError"; 64 }
UserConstants.java--------------用户常量信息
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.ruoyi.common.constant; /** * 用户常量信息 * * @author ruoyi */ public class UserConstants { /** 正常状态 */ public static final String NORMAL = "0"; /** 异常状态 */ public static final String EXCEPTION = "1"; /** 用户封禁状态 */ public static final String USER_BLOCKED = "1"; /** 角色封禁状态 */ public static final String ROLE_BLOCKED = "1"; /** 部门正常状态 */ public static final String DEPT_NORMAL = "0"; /** * 用户名长度限制 */ public static final int USERNAME_MIN_LENGTH = 2; public static final int USERNAME_MAX_LENGTH = 20; /** 登录名称是否唯一的返回结果码 */ public final static String USER_NAME_UNIQUE = "0"; public final static String USER_NAME_NOT_UNIQUE = "1"; /** 手机号码是否唯一的返回结果 */ public final static String USER_PHONE_UNIQUE = "0"; public final static String USER_PHONE_NOT_UNIQUE = "1"; /** e-mail 是否唯一的返回结果 */ public final static String USER_EMAIL_UNIQUE = "0"; public final static String USER_EMAIL_NOT_UNIQUE = "1"; /** 部门名称是否唯一的返回结果码 */ public final static String DEPT_NAME_UNIQUE = "0"; public final static String DEPT_NAME_NOT_UNIQUE = "1"; /** 角色名称是否唯一的返回结果码 */ public final static String ROLE_NAME_UNIQUE = "0"; public final static String ROLE_NAME_NOT_UNIQUE = "1"; /** 岗位名称是否唯一的返回结果码 */ public final static String POST_NAME_UNIQUE = "0"; public final static String POST_NAME_NOT_UNIQUE = "1"; /** 角色权限是否唯一的返回结果码 */ public final static String ROLE_KEY_UNIQUE = "0"; public final static String ROLE_KEY_NOT_UNIQUE = "1"; /** 岗位编码是否唯一的返回结果码 */ public final static String POST_CODE_UNIQUE = "0"; public final static String POST_CODE_NOT_UNIQUE = "1"; /** 菜单名称是否唯一的返回结果码 */ public final static String MENU_NAME_UNIQUE = "0"; public final static String MENU_NAME_NOT_UNIQUE = "1"; /** 字典类型是否唯一的返回结果码 */ public final static String DICT_TYPE_UNIQUE = "0"; public final static String DICT_TYPE_NOT_UNIQUE = "1"; /** 参数键名是否唯一的返回结果码 */ public final static String CONFIG_KEY_UNIQUE = "0"; public final static String CONFIG_KEY_NOT_UNIQUE = "1"; /** * 密码长度限制 */ public static final int PASSWORD_MIN_LENGTH = 5; public static final int PASSWORD_MAX_LENGTH = 20; /** * 手机号码格式限制 */ public static final String MOBILE_PHONE_NUMBER_PATTERN = "^0{0,1}(13[0-9]|15[0-9]|14[0-9]|18[0-9])[0-9]{8}$"; /** * 邮箱格式限制 */ public static final String EMAIL_PATTERN = "^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?"; }
--exception包
-----file包----文件异常处理类
FileNameLengthLimitExceededException.java---------文件长度过长异常
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.ruoyi.common.exception.file; import org.apache.commons.fileupload.FileUploadException; /** * 文件名超长 误异常类 * * @author ruoyi */ public class FileNameLengthLimitExceededException extends FileUploadException { private static final long serialVersionUID = 1L; private int length; private int maxLength; private String filename; public FileNameLengthLimitExceededException(String filename, int length, int maxLength) { super("file name : [" + filename + "], length : [" + length + "], max length : [" + maxLength + "]"); this.length = length; this.maxLength = maxLength; this.filename = filename; } public String getFilename() { return filename; } public int getLength() { return length; } public int getMaxLength() { return maxLength; } }
InvalidExtensionException.java-------------文件上传异常
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.ruoyi.common.exception.file; import java.util.Arrays; import org.apache.commons.fileupload.FileUploadException; /** * 文件上传 误异常类 * * @author ruoyi */ public class InvalidExtensionException extends FileUploadException { private static final long serialVersionUID = 1L; private String[] allowedExtension; private String extension; private String filename; public InvalidExtensionException(String[] allowedExtension, String extension, String filename) { super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" + Arrays.toString(allowedExtension) + "]"); this.allowedExtension = allowedExtension; this.extension = extension; this.filename = filename; } public String[] getAllowedExtension() { return allowedExtension; } public String getExtension() { return extension; } public String getFilename() { return filename; } public static class InvalidImageExtensionException extends InvalidExtensionException { private static final long serialVersionUID = 1L; public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename) { super(allowedExtension, extension, filename); } } public static class InvalidFlashExtensionException extends InvalidExtensionException { private static final long serialVersionUID = 1L; public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename) { super(allowedExtension, extension, filename); } } public static class InvalidMediaExtensionException extends InvalidExtensionException { private static final long serialVersionUID = 1L; public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename) { super(allowedExtension, extension, filename); } } }
------job包
TaskException.java-------计划策略异常类
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 package com.ruoyi.common.exception.job; 2 3 /** 4 * 计划策略异常 5 * 6 * @author ruoyi 7 */ 8 public class TaskException extends Exception 9 { 10 private static final long serialVersionUID = 1L; 11 12 private Code code; 13 14 public TaskException(String msg, Code code) 15 { 16 this(msg, code, null); 17 } 18 19 public TaskException(String msg, Code code, Exception nestedEx) 20 { 21 super(msg, nestedEx); 22 this.code = code; 23 } 24 25 public Code getCode() 26 { 27 return code; 28 } 29 30 public enum Code 31 { 32 TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE 33 } 34 }
-----------------------------
DemoModeException.java-------演示模式异常
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.ruoyi.common.exception; /** * 演示模式异常 * * @author ruoyi */ public class DemoModeException extends RuntimeException { private static final long serialVersionUID = 1L; public DemoModeException() { } }
RRException.java--------自定义异常
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.ruoyi.common.exception; /** * 自定义异常 * */ public class RRException extends RuntimeException { private static final long serialVersionUID = 1L; private String msg; private int code = 500; public RRException(String msg) { super(msg); this.msg = msg; } public RRException(String msg, Throwable e) { super(msg, e); this.msg = msg; } public RRException(String msg, int code) { super(msg); this.msg = msg; this.code = code; } public RRException(String msg, int code, Throwable e) { super(msg, e); this.msg = msg; this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } }
------support包
CharsetKit.java-------字符集工具类
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.ruoyi.common.support; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import com.ruoyi.common.utils.StringUtils; /** * 字符集工具类 * * @author ruoyi */ public class CharsetKit { /** ISO-8859-1 */ public static final