From 8a945261107326595a065f2915b06345b4cc763c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?=
<15040126243@163.com>
Date: Fri, 21 May 2021 18:00:40 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E7=89=88=202.1.2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ruoyi-ui/package.json | 2 +-
ruoyi-ui/src/components/FileUpload/index.vue | 4 +-
ruoyi-ui/src/components/ImageUpload/index.vue | 4 +-
ruoyi-ui/src/store/modules/user.js | 12 +-
ruoyi-ui/src/views/index.vue | 9 +
ruoyi-ui/src/views/login.vue | 4 +-
ruoyi-ui/src/views/system/role/index.vue | 10 +-
ruoyi-ui/src/views/system/user/index.vue | 14 +-
.../src/views/system/user/profile/index.vue | 6 +-
.../views/system/user/profile/userAvatar.vue | 2 +-
ruoyi/pom.xml | 8 +-
.../ruoyi/common/core/domain/AjaxResult.java | 249 ++++++++----------
.../com/ruoyi/common/core/page/PagePlus.java | 28 +-
.../ruoyi/common/core/page/TableDataInfo.java | 61 +++--
.../captcha/UnsignedMathGenerator.java | 85 ++++++
.../ruoyi/framework/config/SwaggerConfig.java | 3 +-
.../config/properties/SwaggerProperties.java | 4 +
.../controller/common/CaptchaController.java | 10 +-
.../controller/common/CommonController.java | 10 +-
.../controller/system/SysDeptController.java | 8 +-
.../controller/system/SysLoginController.java | 18 +-
.../controller/system/SysMenuController.java | 10 +-
.../system/SysProfileController.java | 13 +-
.../controller/system/SysUserController.java | 10 +-
ruoyi/src/main/resources/application.yml | 2 +
25 files changed, 350 insertions(+), 236 deletions(-)
create mode 100644 ruoyi/src/main/java/com/ruoyi/framework/captcha/UnsignedMathGenerator.java
diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json
index 458a87529..fb9064f99 100644
--- a/ruoyi-ui/package.json
+++ b/ruoyi-ui/package.json
@@ -1,6 +1,6 @@
{
"name": "ruoyi-vue-plus",
- "version": "2.1.1",
+ "version": "2.1.2",
"description": "RuoYi-Vue-Plus后台管理系统",
"author": "LionLi",
"license": "MIT",
diff --git a/ruoyi-ui/src/components/FileUpload/index.vue b/ruoyi-ui/src/components/FileUpload/index.vue
index d19a01225..3c3d17bf0 100644
--- a/ruoyi-ui/src/components/FileUpload/index.vue
+++ b/ruoyi-ui/src/components/FileUpload/index.vue
@@ -135,7 +135,7 @@ export default {
// 上传成功回调
handleUploadSuccess(res, file) {
this.$message.success("上传成功");
- this.$emit("input", res.url);
+ this.$emit("input", res.data.url);
},
// 删除文件
handleDelete(index) {
@@ -176,4 +176,4 @@ export default {
.ele-upload-list__item-content-action .el-link {
margin-right: 10px;
}
-
\ No newline at end of file
+
diff --git a/ruoyi-ui/src/components/ImageUpload/index.vue b/ruoyi-ui/src/components/ImageUpload/index.vue
index ce540eb8d..995b27794 100644
--- a/ruoyi-ui/src/components/ImageUpload/index.vue
+++ b/ruoyi-ui/src/components/ImageUpload/index.vue
@@ -60,7 +60,7 @@ export default {
this.$emit("input", "");
},
handleUploadSuccess(res) {
- this.$emit("input", res.url);
+ this.$emit("input", res.data.url);
this.loading.close();
},
handleBeforeUpload() {
@@ -97,4 +97,4 @@ export default {
opacity: 1;
}
}
-
\ No newline at end of file
+
diff --git a/ruoyi-ui/src/store/modules/user.js b/ruoyi-ui/src/store/modules/user.js
index 0e4515721..c6624e3af 100644
--- a/ruoyi-ui/src/store/modules/user.js
+++ b/ruoyi-ui/src/store/modules/user.js
@@ -37,8 +37,8 @@ const user = {
const uuid = userInfo.uuid
return new Promise((resolve, reject) => {
login(username, password, code, uuid).then(res => {
- setToken(res.token)
- commit('SET_TOKEN', res.token)
+ setToken(res.data.token)
+ commit('SET_TOKEN', res.data.token)
resolve()
}).catch(error => {
reject(error)
@@ -50,11 +50,11 @@ const user = {
GetInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getInfo().then(res => {
- const user = res.user
+ const user = res.data.user
const avatar = user.avatar == "" ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
- if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
- commit('SET_ROLES', res.roles)
- commit('SET_PERMISSIONS', res.permissions)
+ if (res.data.roles && res.data.roles.length > 0) { // 验证返回的roles是否是一个非空数组
+ commit('SET_ROLES', res.data.roles)
+ commit('SET_PERMISSIONS', res.data.permissions)
} else {
commit('SET_ROLES', ['ROLE_DEFAULT'])
}
diff --git a/ruoyi-ui/src/views/index.vue b/ruoyi-ui/src/views/index.vue
index 25cfa6641..4ced4c26b 100644
--- a/ruoyi-ui/src/views/index.vue
+++ b/ruoyi-ui/src/views/index.vue
@@ -80,6 +80,15 @@
更新日志
+
+
+ - update springboot 升级 2.3.11
+ - update mybatis-plus 升级 3.4.3 分页Plus对象适配更新
+ - update 验证码生成更新为无符号整数计算
+ - update 请求响应对象 与 分页对象 结构修改 适配接口文档配置
+ - update swagger增加请求前缀
+
+
- update 配置统一提取为 properties 配置类
diff --git a/ruoyi-ui/src/views/login.vue b/ruoyi-ui/src/views/login.vue
index 147117f99..d68f614d9 100644
--- a/ruoyi-ui/src/views/login.vue
+++ b/ruoyi-ui/src/views/login.vue
@@ -99,8 +99,8 @@ export default {
methods: {
getCode() {
getCodeImg().then(res => {
- this.codeUrl = "data:image/gif;base64," + res.img;
- this.loginForm.uuid = res.uuid;
+ this.codeUrl = "data:image/gif;base64," + res.data.img;
+ this.loginForm.uuid = res.data.uuid;
});
},
getCookie() {
diff --git a/ruoyi-ui/src/views/system/role/index.vue b/ruoyi-ui/src/views/system/role/index.vue
index 3cb6df90f..84ba9812f 100644
--- a/ruoyi-ui/src/views/system/role/index.vue
+++ b/ruoyi-ui/src/views/system/role/index.vue
@@ -390,14 +390,14 @@ export default {
/** 根据角色ID查询菜单树结构 */
getRoleMenuTreeselect(roleId) {
return roleMenuTreeselect(roleId).then(response => {
- this.menuOptions = response.menus;
+ this.menuOptions = response.data.menus;
return response;
});
},
/** 根据角色ID查询部门树结构 */
getRoleDeptTreeselect(roleId) {
return roleDeptTreeselect(roleId).then(response => {
- this.deptOptions = response.depts;
+ this.deptOptions = response.data.depts;
return response;
});
},
@@ -513,7 +513,7 @@ export default {
this.open = true;
this.$nextTick(() => {
roleMenu.then(res => {
- let checkedKeys = res.checkedKeys
+ let checkedKeys = res.data.checkedKeys
checkedKeys.forEach((v) => {
this.$nextTick(()=>{
this.$refs.menu.setChecked(v, true ,false);
@@ -539,7 +539,7 @@ export default {
this.openDataScope = true;
this.$nextTick(() => {
roleDeptTreeselect.then(res => {
- this.$refs.dept.setCheckedKeys(res.checkedKeys);
+ this.$refs.dept.setCheckedKeys(res.data.checkedKeys);
});
});
this.title = "分配数据权限";
@@ -607,4 +607,4 @@ export default {
}
}
};
-
\ No newline at end of file
+
diff --git a/ruoyi-ui/src/views/system/user/index.vue b/ruoyi-ui/src/views/system/user/index.vue
index 1a06eb303..ce1d62121 100644
--- a/ruoyi-ui/src/views/system/user/index.vue
+++ b/ruoyi-ui/src/views/system/user/index.vue
@@ -562,8 +562,8 @@ export default {
this.reset();
this.getTreeselect();
getUser().then(response => {
- this.postOptions = response.posts;
- this.roleOptions = response.roles;
+ this.postOptions = response.data.posts;
+ this.roleOptions = response.data.roles;
this.open = true;
this.title = "添加用户";
this.form.password = this.initPassword;
@@ -575,11 +575,11 @@ export default {
this.getTreeselect();
const userId = row.userId || this.ids;
getUser(userId).then(response => {
- this.form = response.data;
- this.postOptions = response.posts;
- this.roleOptions = response.roles;
- this.form.postIds = response.postIds;
- this.form.roleIds = response.roleIds;
+ this.form = response.data.user;
+ this.postOptions = response.data.posts;
+ this.roleOptions = response.data.roles;
+ this.form.postIds = response.data.postIds;
+ this.form.roleIds = response.data.roleIds;
this.open = true;
this.title = "修改用户";
this.form.password = "";
diff --git a/ruoyi-ui/src/views/system/user/profile/index.vue b/ruoyi-ui/src/views/system/user/profile/index.vue
index 8993cab7c..7a3e295bf 100644
--- a/ruoyi-ui/src/views/system/user/profile/index.vue
+++ b/ruoyi-ui/src/views/system/user/profile/index.vue
@@ -81,9 +81,9 @@ export default {
methods: {
getUser() {
getUserProfile().then(response => {
- this.user = response.data;
- this.roleGroup = response.roleGroup;
- this.postGroup = response.postGroup;
+ this.user = response.data.user;
+ this.roleGroup = response.data.roleGroup;
+ this.postGroup = response.data.postGroup;
});
}
}
diff --git a/ruoyi-ui/src/views/system/user/profile/userAvatar.vue b/ruoyi-ui/src/views/system/user/profile/userAvatar.vue
index 266183e6f..6ed6314b5 100644
--- a/ruoyi-ui/src/views/system/user/profile/userAvatar.vue
+++ b/ruoyi-ui/src/views/system/user/profile/userAvatar.vue
@@ -126,7 +126,7 @@ export default {
formData.append("avatarfile", data);
uploadAvatar(formData).then(response => {
this.open = false;
- this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl;
+ this.options.img = process.env.VUE_APP_BASE_API + response.data.imgUrl;
store.commit('SET_AVATAR', this.options.img);
this.msgSuccess("修改成功");
this.visible = false;
diff --git a/ruoyi/pom.xml b/ruoyi/pom.xml
index 454d80195..68e83c9e2 100644
--- a/ruoyi/pom.xml
+++ b/ruoyi/pom.xml
@@ -13,8 +13,8 @@
RuoYi-Vue-Plus后台管理系统
- 2.1.1
- 2.3.10.RELEASE
+ 2.1.2
+ 2.3.11.RELEASE
UTF-8
UTF-8
1.8
@@ -26,7 +26,7 @@
4.1.2
1.7
0.9.1
- 3.4.2
+ 3.4.3
5.5.8
2.2.6.RELEASE
11.0
@@ -376,4 +376,4 @@
-
\ No newline at end of file
+
diff --git a/ruoyi/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java b/ruoyi/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java
index a7d2297b2..7c388c5ef 100644
--- a/ruoyi/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java
+++ b/ruoyi/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java
@@ -1,161 +1,134 @@
package com.ruoyi.common.core.domain;
-import cn.hutool.core.lang.Validator;
import cn.hutool.http.HttpStatus;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
import lombok.Data;
-
-import java.util.HashMap;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
/**
* 操作消息提醒
- *
- * @author ruoyi
+ *
+ * @author Lion Li
*/
-public class AjaxResult extends HashMap
-{
- private static final long serialVersionUID = 1L;
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+@ApiModel("请求响应对象")
+public class AjaxResult {
- /** 状态码 */
- public static final String CODE_TAG = "code";
+ private static final long serialVersionUID = 1L;
- /** 返回内容 */
- public static final String MSG_TAG = "msg";
+ /**
+ * 状态码
+ */
+ @ApiModelProperty("消息状态码")
+ private int code;
- /** 数据对象 */
- public static final String DATA_TAG = "data";
+ /**
+ * 返回内容
+ */
+ @ApiModelProperty("消息内容")
+ private String msg;
- public Integer getCode(){
- return (Integer) super.get(CODE_TAG);
- }
+ /**
+ * 数据对象
+ */
+ @ApiModelProperty("数据对象")
+ private T data;
- public String getMsg(){
- return (String) super.get(MSG_TAG);
- }
- public T getData(){
- return (T) super.get(DATA_TAG);
- }
+ /**
+ * 初始化一个新创建的 AjaxResult 对象
+ *
+ * @param code 状态码
+ * @param msg 返回内容
+ */
+ public AjaxResult(int code, String msg) {
+ this.code = code;
+ this.msg = msg;
+ }
- /**
- * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。
- */
- public AjaxResult()
- {
- }
+ /**
+ * 返回成功消息
+ *
+ * @return 成功消息
+ */
+ public static AjaxResult success() {
+ return AjaxResult.success("操作成功");
+ }
- /**
- * 初始化一个新创建的 AjaxResult 对象
- *
- * @param code 状态码
- * @param msg 返回内容
- */
- public AjaxResult(int code, String msg)
- {
- super.put(CODE_TAG, code);
- super.put(MSG_TAG, msg);
- }
+ /**
+ * 返回成功数据
+ *
+ * @return 成功消息
+ */
+ public static AjaxResult success(T data) {
+ return AjaxResult.success("操作成功", data);
+ }
- /**
- * 初始化一个新创建的 AjaxResult 对象
- *
- * @param code 状态码
- * @param msg 返回内容
- * @param data 数据对象
- */
- public AjaxResult(int code, String msg, T data)
- {
- super.put(CODE_TAG, code);
- super.put(MSG_TAG, msg);
- if (Validator.isNotNull(data))
- {
- super.put(DATA_TAG, data);
- }
- }
+ /**
+ * 返回成功消息
+ *
+ * @param msg 返回内容
+ * @return 成功消息
+ */
+ public static AjaxResult success(String msg) {
+ return AjaxResult.success(msg, null);
+ }
- /**
- * 返回成功消息
- *
- * @return 成功消息
- */
- public static AjaxResult success()
- {
- return AjaxResult.success("操作成功");
- }
+ /**
+ * 返回成功消息
+ *
+ * @param msg 返回内容
+ * @param data 数据对象
+ * @return 成功消息
+ */
+ public static AjaxResult success(String msg, T data) {
+ return new AjaxResult<>(HttpStatus.HTTP_OK, msg, data);
+ }
- /**
- * 返回成功数据
- *
- * @return 成功消息
- */
- public static AjaxResult success(T data)
- {
- return AjaxResult.success("操作成功", data);
- }
+ /**
+ * 返回错误消息
+ *
+ * @return
+ */
+ public static AjaxResult error() {
+ return AjaxResult.error("操作失败");
+ }
- /**
- * 返回成功消息
- *
- * @param msg 返回内容
- * @return 成功消息
- */
- public static AjaxResult success(String msg)
- {
- return AjaxResult.success(msg, null);
- }
+ /**
+ * 返回错误消息
+ *
+ * @param msg 返回内容
+ * @return 警告消息
+ */
+ public static AjaxResult error(String msg) {
+ return AjaxResult.error(msg, null);
+ }
- /**
- * 返回成功消息
- *
- * @param msg 返回内容
- * @param data 数据对象
- * @return 成功消息
- */
- public static AjaxResult success(String msg, T data)
- {
- return new AjaxResult(HttpStatus.HTTP_OK, msg, data);
- }
+ /**
+ * 返回错误消息
+ *
+ * @param msg 返回内容
+ * @param data 数据对象
+ * @return 警告消息
+ */
+ public static AjaxResult error(String msg, T data) {
+ return new AjaxResult<>(HttpStatus.HTTP_INTERNAL_ERROR, msg, data);
+ }
- /**
- * 返回错误消息
- *
- * @return
- */
- public static AjaxResult error()
- {
- return AjaxResult.error("操作失败");
- }
+ /**
+ * 返回错误消息
+ *
+ * @param code 状态码
+ * @param msg 返回内容
+ * @return 警告消息
+ */
+ public static AjaxResult error(int code, String msg) {
+ return new AjaxResult<>(code, msg, null);
+ }
- /**
- * 返回错误消息
- *
- * @param msg 返回内容
- * @return 警告消息
- */
- public static AjaxResult error(String msg)
- {
- return AjaxResult.error(msg, null);
- }
-
- /**
- * 返回错误消息
- *
- * @param msg 返回内容
- * @param data 数据对象
- * @return 警告消息
- */
- public static AjaxResult error(String msg, T data)
- {
- return new AjaxResult(HttpStatus.HTTP_INTERNAL_ERROR, msg, data);
- }
-
- /**
- * 返回错误消息
- *
- * @param code 状态码
- * @param msg 返回内容
- * @return 警告消息
- */
- public static AjaxResult error(int code, String msg)
- {
- return new AjaxResult(code, msg, null);
- }
}
diff --git a/ruoyi/src/main/java/com/ruoyi/common/core/page/PagePlus.java b/ruoyi/src/main/java/com/ruoyi/common/core/page/PagePlus.java
index 2bffe3059..812a683d6 100644
--- a/ruoyi/src/main/java/com/ruoyi/common/core/page/PagePlus.java
+++ b/ruoyi/src/main/java/com/ruoyi/common/core/page/PagePlus.java
@@ -123,15 +123,27 @@ public class PagePlus implements IPage {
return this.optimizeCountSql;
}
- @Override
- public boolean isSearchCount() {
- return this.total >= 0L && this.isSearchCount;
- }
+ @Override
+ public long getPages() {
+ // 解决 github issues/3208
+ return IPage.super.getPages();
+ }
- public PagePlus setSearchCount(boolean isSearchCount) {
- this.isSearchCount = isSearchCount;
- return this;
- }
+ public static PagePlus of(long current, long size) {
+ return of(current, size, 0);
+ }
+
+ public static PagePlus of(long current, long size, long total) {
+ return of(current, size, total, true);
+ }
+
+ public static PagePlus of(long current, long size, boolean searchCount) {
+ return of(current, size, 0, searchCount);
+ }
+
+ public static PagePlus of(long current, long size, long total, boolean searchCount) {
+ return new PagePlus<>(current, size, total, searchCount);
+ }
}
diff --git a/ruoyi/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java b/ruoyi/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java
index 4e71fc158..81c596b4f 100644
--- a/ruoyi/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java
+++ b/ruoyi/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java
@@ -1,5 +1,7 @@
package com.ruoyi.common.core.page;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@@ -9,39 +11,50 @@ import java.util.List;
/**
* 表格分页数据对象
- *
- * @author ruoyi
+ *
+ * @author Lion Li
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
-public class TableDataInfo implements Serializable
-{
- private static final long serialVersionUID = 1L;
+@ApiModel("分页响应对象")
+public class TableDataInfo implements Serializable {
+ private static final long serialVersionUID = 1L;
- /** 总记录数 */
- private long total;
+ /**
+ * 总记录数
+ */
+ @ApiModelProperty("总记录数")
+ private long total;
- /** 列表数据 */
- private List rows;
+ /**
+ * 列表数据
+ */
+ @ApiModelProperty("列表数据")
+ private List rows;
- /** 消息状态码 */
- private int code;
+ /**
+ * 消息状态码
+ */
+ @ApiModelProperty("消息状态码")
+ private int code;
- /** 消息内容 */
- private String msg;
+ /**
+ * 消息内容
+ */
+ @ApiModelProperty("消息内容")
+ private String msg;
- /**
- * 分页
- *
- * @param list 列表数据
- * @param total 总记录数
- */
- public TableDataInfo(List list, long total)
- {
- this.rows = list;
- this.total = total;
- }
+ /**
+ * 分页
+ *
+ * @param list 列表数据
+ * @param total 总记录数
+ */
+ public TableDataInfo(List list, long total) {
+ this.rows = list;
+ this.total = total;
+ }
}
diff --git a/ruoyi/src/main/java/com/ruoyi/framework/captcha/UnsignedMathGenerator.java b/ruoyi/src/main/java/com/ruoyi/framework/captcha/UnsignedMathGenerator.java
new file mode 100644
index 000000000..b4f8bfc12
--- /dev/null
+++ b/ruoyi/src/main/java/com/ruoyi/framework/captcha/UnsignedMathGenerator.java
@@ -0,0 +1,85 @@
+package com.ruoyi.framework.captcha;
+
+import cn.hutool.captcha.generator.CodeGenerator;
+import cn.hutool.core.math.Calculator;
+import cn.hutool.core.util.CharUtil;
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * 无符号计算生成器
+ *
+ * @author Lion Li
+ */
+public class UnsignedMathGenerator implements CodeGenerator {
+
+ private static final long serialVersionUID = -5514819971774091076L;
+
+ private static final String operators = "+-*";
+
+ /**
+ * 参与计算数字最大长度
+ */
+ private final int numberLength;
+
+ /**
+ * 构造
+ */
+ public UnsignedMathGenerator() {
+ this(2);
+ }
+
+ /**
+ * 构造
+ *
+ * @param numberLength 参与计算最大数字位数
+ */
+ public UnsignedMathGenerator(int numberLength) {
+ this.numberLength = numberLength;
+ }
+
+ @Override
+ public String generate() {
+ final int limit = getLimit();
+ int min = RandomUtil.randomInt(limit);
+ int max = RandomUtil.randomInt(min, limit);
+ String number1 = Integer.toString(max);
+ String number2 = Integer.toString(min);
+ number1 = StrUtil.padAfter(number1, this.numberLength, CharUtil.SPACE);
+ number2 = StrUtil.padAfter(number2, this.numberLength, CharUtil.SPACE);
+
+ return number1 + RandomUtil.randomChar(operators) + number2 + '=';
+ }
+
+ @Override
+ public boolean verify(String code, String userInputCode) {
+ int result;
+ try {
+ result = Integer.parseInt(userInputCode);
+ } catch (NumberFormatException e) {
+ // 用户输入非数字
+ return false;
+ }
+
+ final int calculateResult = (int) Calculator.conversion(code);
+ return result == calculateResult;
+ }
+
+ /**
+ * 获取验证码长度
+ *
+ * @return 验证码长度
+ */
+ public int getLength() {
+ return this.numberLength * 2 + 2;
+ }
+
+ /**
+ * 根据长度获取参与计算数字最大值
+ *
+ * @return 最大值
+ */
+ private int getLimit() {
+ return Integer.parseInt("1" + StrUtil.repeat('0', this.numberLength));
+ }
+}
diff --git a/ruoyi/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java b/ruoyi/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java
index 92e39760f..1a92ca088 100644
--- a/ruoyi/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java
+++ b/ruoyi/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java
@@ -51,7 +51,8 @@ public class SwaggerConfig {
.build()
/* 设置安全模式,swagger可以设置访问token */
.securitySchemes(securitySchemes())
- .securityContexts(securityContexts());
+ .securityContexts(securityContexts())
+ .pathMapping(swaggerProperties.getPathMapping());
}
/**
diff --git a/ruoyi/src/main/java/com/ruoyi/framework/config/properties/SwaggerProperties.java b/ruoyi/src/main/java/com/ruoyi/framework/config/properties/SwaggerProperties.java
index 4db6e5884..f99c3da15 100644
--- a/ruoyi/src/main/java/com/ruoyi/framework/config/properties/SwaggerProperties.java
+++ b/ruoyi/src/main/java/com/ruoyi/framework/config/properties/SwaggerProperties.java
@@ -19,6 +19,10 @@ public class SwaggerProperties {
* 验证码类型
*/
private Boolean enabled;
+ /**
+ * 设置请求的统一前缀
+ */
+ private String pathMapping;
/**
* 验证码类别
*/
diff --git a/ruoyi/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java b/ruoyi/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
index c01cc4ed7..098865607 100644
--- a/ruoyi/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
+++ b/ruoyi/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
@@ -5,7 +5,6 @@ import cn.hutool.captcha.CircleCaptcha;
import cn.hutool.captcha.LineCaptcha;
import cn.hutool.captcha.ShearCaptcha;
import cn.hutool.captcha.generator.CodeGenerator;
-import cn.hutool.captcha.generator.MathGenerator;
import cn.hutool.captcha.generator.RandomGenerator;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.IdUtil;
@@ -13,12 +12,15 @@ import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.framework.captcha.UnsignedMathGenerator;
import com.ruoyi.framework.config.properties.CaptchaProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
@@ -59,7 +61,7 @@ public class CaptchaController {
AbstractCaptcha captcha;
switch (captchaProperties.getType()) {
case "math":
- codeGenerator = new MathGenerator(captchaProperties.getNumberLength());
+ codeGenerator = new UnsignedMathGenerator(captchaProperties.getNumberLength());
break;
case "char":
codeGenerator = new RandomGenerator(captchaProperties.getCharLength());
@@ -88,10 +90,10 @@ public class CaptchaController {
code = captcha.getCode();
}
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
- AjaxResult ajax = AjaxResult.success();
+ Map ajax = new HashMap<>();
ajax.put("uuid", uuid);
ajax.put("img", captcha.getImageBase64());
- return ajax;
+ return AjaxResult.success(ajax);
}
private String getCodeResult(String capStr) {
diff --git a/ruoyi/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi/src/main/java/com/ruoyi/web/controller/common/CommonController.java
index c69cdf2a7..7418a2cd3 100644
--- a/ruoyi/src/main/java/com/ruoyi/web/controller/common/CommonController.java
+++ b/ruoyi/src/main/java/com/ruoyi/web/controller/common/CommonController.java
@@ -18,10 +18,12 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.Map;
/**
* 通用请求处理
- *
+ *
* @author ruoyi
*/
@RestController
@@ -34,7 +36,7 @@ public class CommonController
/**
* 通用下载请求
- *
+ *
* @param fileName 文件名称
* @param delete 是否删除
*/
@@ -77,10 +79,10 @@ public class CommonController
// 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName;
- AjaxResult ajax = AjaxResult.success();
+ Map ajax = new HashMap<>();
ajax.put("fileName", fileName);
ajax.put("url", url);
- return ajax;
+ return AjaxResult.success(ajax);
}
catch (Exception e)
{
diff --git a/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java b/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
index 719012b81..c3fdf83f8 100644
--- a/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
+++ b/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
@@ -15,12 +15,14 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
/**
* 部门信息
- *
+ *
* @author ruoyi
*/
@RestController
@@ -89,10 +91,10 @@ public class SysDeptController extends BaseController
public AjaxResult roleDeptTreeselect(@PathVariable("roleId") Long roleId)
{
List depts = deptService.selectDeptList(new SysDept());
- AjaxResult ajax = AjaxResult.success();
+ Map ajax = new HashMap<>();
ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
ajax.put("depts", deptService.buildDeptTreeSelect(depts));
- return ajax;
+ return AjaxResult.success(ajax);
}
/**
diff --git a/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index b2df9550b..b2b9efb3d 100644
--- a/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -17,12 +17,14 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
* 登录验证
- *
+ *
* @author ruoyi
*/
@RestController
@@ -42,24 +44,24 @@ public class SysLoginController
/**
* 登录方法
- *
+ *
* @param loginBody 登录信息
* @return 结果
*/
@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody)
{
- AjaxResult ajax = AjaxResult.success();
+ Map ajax = new HashMap<>();
// 生成令牌
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
loginBody.getUuid());
ajax.put(Constants.TOKEN, token);
- return ajax;
+ return AjaxResult.success(ajax);
}
/**
* 获取用户信息
- *
+ *
* @return 用户信息
*/
@GetMapping("getInfo")
@@ -71,16 +73,16 @@ public class SysLoginController
Set roles = permissionService.getRolePermission(user);
// 权限集合
Set permissions = permissionService.getMenuPermission(user);
- AjaxResult ajax = AjaxResult.success();
+ Map ajax = new HashMap<>();
ajax.put("user", user);
ajax.put("roles", roles);
ajax.put("permissions", permissions);
- return ajax;
+ return AjaxResult.success(ajax);
}
/**
* 获取路由信息
- *
+ *
* @return 路由信息
*/
@GetMapping("getRouters")
diff --git a/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java b/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
index 547368bfe..00f146428 100644
--- a/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
+++ b/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
@@ -18,11 +18,13 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* 菜单信息
- *
+ *
* @author ruoyi
*/
@RestController
@@ -78,10 +80,10 @@ public class SysMenuController extends BaseController
{
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
List menus = menuService.selectMenuList(loginUser.getUser().getUserId());
- AjaxResult ajax = AjaxResult.success();
+ Map ajax = new HashMap<>();
ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId));
ajax.put("menus", menuService.buildMenuTreeSelect(menus));
- return ajax;
+ return AjaxResult.success(ajax);
}
/**
@@ -148,4 +150,4 @@ public class SysMenuController extends BaseController
}
return toAjax(menuService.deleteMenuById(menuId));
}
-}
\ No newline at end of file
+}
diff --git a/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java b/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
index 7c65a9b00..31ca6ddae 100644
--- a/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
+++ b/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
@@ -19,10 +19,12 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
/**
* 个人信息 业务处理
- *
+ *
* @author ruoyi
*/
@RestController
@@ -43,10 +45,11 @@ public class SysProfileController extends BaseController
{
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
SysUser user = loginUser.getUser();
- AjaxResult ajax = AjaxResult.success(user);
+ Map ajax = new HashMap<>();
+ ajax.put("user", user);
ajax.put("roleGroup", userService.selectUserRoleGroup(loginUser.getUsername()));
ajax.put("postGroup", userService.selectUserPostGroup(loginUser.getUsername()));
- return ajax;
+ return AjaxResult.success(ajax);
}
/**
@@ -121,12 +124,12 @@ public class SysProfileController extends BaseController
String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file);
if (userService.updateUserAvatar(loginUser.getUsername(), avatar))
{
- AjaxResult ajax = AjaxResult.success();
+ Map ajax = new HashMap<>();
ajax.put("imgUrl", avatar);
// 更新缓存用户头像
loginUser.getUser().setAvatar(avatar);
tokenService.setLoginUser(loginUser);
- return ajax;
+ return AjaxResult.success(ajax);
}
}
return AjaxResult.error("上传图片异常,请联系管理员");
diff --git a/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index 7e743999b..079c15ac5 100644
--- a/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/ruoyi/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -23,12 +23,14 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.stream.Collectors;
/**
* 用户信息
- *
+ *
* @author ruoyi
*/
@RestController
@@ -94,17 +96,17 @@ public class SysUserController extends BaseController
@GetMapping(value = { "/", "/{userId}" })
public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId)
{
- AjaxResult ajax = AjaxResult.success();
+ Map ajax = new HashMap<>();
List roles = roleService.selectRoleAll();
ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
ajax.put("posts", postService.selectPostAll());
if (Validator.isNotNull(userId))
{
- ajax.put(AjaxResult.DATA_TAG, userService.selectUserById(userId));
+ ajax.put("user", userService.selectUserById(userId));
ajax.put("postIds", postService.selectPostListByUserId(userId));
ajax.put("roleIds", roleService.selectRoleListByUserId(userId));
}
- return ajax;
+ return AjaxResult.success(ajax);
}
/**
diff --git a/ruoyi/src/main/resources/application.yml b/ruoyi/src/main/resources/application.yml
index b034d99fc..535da0a9c 100644
--- a/ruoyi/src/main/resources/application.yml
+++ b/ruoyi/src/main/resources/application.yml
@@ -187,6 +187,8 @@ mybatis-plus:
swagger:
# 是否开启swagger
enabled: true
+ # 请求前缀
+ pathMapping: /dev-api
# 标题
title: '标题:RuoYi-Vue-Plus后台管理系统_接口文档'
# 描述