refactor: 项目规范

This commit is contained in:
2025-06-22 10:06:05 +08:00
parent 3ea5a17caa
commit 8de8fbfc26
43 changed files with 143 additions and 119 deletions
+13
View File
@@ -6,6 +6,19 @@
模板文档: [https://panjiachen.github.io/vue-element-admin-site/zh/guide/](https://panjiachen.github.io/vue-element-admin-site/zh/guide/)
#### 集成、自定义组件
- echart 图表
- wangEditor 富文本
- MavonEditor Markdown编辑器
- CodeMirror Yaml编辑器
- CodeMirror Java代码编辑器
- 自定义业务组件(用户下拉选择框、部门下拉选择框)
- 滚动数字
- 表格拖拽
- 面板分割
- WebSocket
- 快速复制
## 快速开始
### 环境要求
+4 -4
View File
@@ -1,6 +1,6 @@
import request from '@/utils/request'
export function describeDeptList(params) {
export function queryDeptList(params) {
return request({
url: 'api/dept',
method: 'get',
@@ -8,11 +8,11 @@ export function describeDeptList(params) {
})
}
export function describeDeptSuperiorTree(ids, exclude) {
export function queryDeptSuperiorTree(ids, exclude) {
exclude = exclude !== undefined ? exclude : false
const data = Array.isArray(ids) ? ids : [ids]
return request({
url: 'api/dept/describeDeptSuperiorTree?exclude=' + exclude,
url: 'api/dept/queryDeptSuperiorTree?exclude=' + exclude,
method: 'post',
data
})
@@ -42,4 +42,4 @@ export function edit(data) {
})
}
export default { add, edit, del, describeDeptList, describeDeptSuperiorTree }
export default { add, edit, del, queryDeptList, queryDeptSuperiorTree }
+7 -7
View File
@@ -1,8 +1,8 @@
import request from '@/utils/request'
export function describeMenuListByPid(pid) {
export function queryMenuListByPid(pid) {
return request({
url: 'api/menus/describeMenuListByPid?pid=' + pid,
url: 'api/menus/queryMenuListByPid?pid=' + pid,
method: 'post'
})
}
@@ -15,18 +15,18 @@ export function getMenus(params) {
})
}
export function describeMenuSuperior(ids) {
export function queryMenuSuperior(ids) {
const data = Array.isArray(ids) ? ids : [ids]
return request({
url: 'api/menus/describeMenuSuperior',
url: 'api/menus/queryMenuSuperior',
method: 'post',
data
})
}
export function describeChildMenuSet(id) {
export function queryChildMenuSet(id) {
return request({
url: 'api/menus/describeChildMenuSet?id=' + id,
url: 'api/menus/queryChildMenuSet?id=' + id,
method: 'post'
})
}
@@ -62,4 +62,4 @@ export function edit(data) {
})
}
export default { add, edit, del, describeMenuListByPid, describeMenuSuperior, getMenus, describeChildMenuSet }
export default { add, edit, del, queryMenuListByPid, queryMenuSuperior, getMenus, queryChildMenuSet }
+4 -4
View File
@@ -1,9 +1,9 @@
import request from '@/utils/request'
// 获取所有的Role
export function describeRoleList() {
export function queryRoleList() {
return request({
url: 'api/roles/describeRoleList',
url: 'api/roles/queryRoleList',
method: 'post'
})
}
@@ -18,7 +18,7 @@ export function add(data) {
export function get(id) {
return request({
url: 'api/roles/describeRoleById',
url: 'api/roles/queryRoleById',
method: 'post',
data: { id: id }
})
@@ -26,7 +26,7 @@ export function get(id) {
export function getLevel() {
return request({
url: 'api/roles/describeRoleLevel',
url: 'api/roles/queryRoleLevel',
method: 'post'
})
}
+1 -1
View File
@@ -67,7 +67,7 @@ export function updateEmail(form) {
export function queryUserMetaPage(query) {
return request({
url: 'api/users/describeUserMetadataOptions',
url: 'api/users/queryUserMetadataOptions',
method: 'post',
data: {
page: 1,
+2 -2
View File
@@ -1,8 +1,8 @@
import request from '@/utils/request'
export function describeEmailConfig() {
export function queryEmailConfig() {
return request({
url: 'api/email/describeEmailConfig',
url: 'api/email/queryEmailConfig',
method: 'post'
})
}
+2 -2
View File
@@ -1,8 +1,8 @@
import request from '@/utils/request'
export function describeQiniuConfig() {
export function queryQiniuConfig() {
return request({
url: 'api/qiNiuContent/describeQiniuConfig',
url: 'api/qiNiuContent/queryQiniuConfig',
method: 'post'
})
}
+4 -4
View File
@@ -1,8 +1,8 @@
import axios from 'axios'
import router from '@/router/routers'
import {Notification} from 'element-ui'
import { Notification } from 'element-ui'
import store from '../store'
import {getToken} from '@/utils/auth'
import { getToken } from '@/utils/auth'
import Config from '@/settings'
import Cookies from 'js-cookie'
@@ -37,7 +37,7 @@ service.interceptors.response.use(
if (error.response.data instanceof Blob && error.response.data.type.toLowerCase().indexOf('json') !== -1) {
const reader = new FileReader()
reader.readAsText(error.response.data, 'utf-8')
reader.onload = function (e) {
reader.onload = function(e) {
const errorMsg = JSON.parse(reader.result).message
Notification.error({
title: errorMsg,
@@ -66,7 +66,7 @@ service.interceptors.response.use(
location.reload()
})
} else if (code === 403) {
router.push({path: '/401'})
router.push({ path: '/401' })
} else {
const errorMsg = error.response.data.message
if (errorMsg !== undefined) {
@@ -56,7 +56,7 @@ export default {
' zone: primary # This is needed for the load balancer\n' +
' profile: ${spring.profiles.active}\n' +
' version: ${info.project.version:}\n' +
' git-version: ${git.commit.id.describe:}\n' +
' git-version: ${git.commit.id.query:}\n' +
' git-commit: ${git.commit.id.abbrev:}\n' +
' git-branch: ${git.branch:}\n' +
'ribbon:\n' +
@@ -24,7 +24,7 @@
<script>
import { describeDeptList } from '@/api/system/dept'
import { queryDeptList } from '@/api/system/dept'
export default {
name: 'CuteDeptTree',
@@ -60,7 +60,7 @@ export default {
params['pid'] = node.data.id
}
setTimeout(() => {
describeDeptList(params).then(res => {
queryDeptList(params).then(res => {
if (resolve) {
resolve(res.content)
} else {
@@ -148,7 +148,7 @@ export default {
return {
show: false,
monitor: null,
url: 'api/monitor/describeServerMonitorInfo',
url: 'api/monitor/queryServerMonitorInfo',
data: {},
cpuInfo: {
tooltip: {
@@ -141,7 +141,7 @@ export default {
getDeptDatas(tree, treeNode, resolve) {
const params = { pid: tree.id }
setTimeout(() => {
crudDept.describeDeptList(params).then(res => {
crudDept.queryDeptList(params).then(res => {
resolve(res.content)
})
}, 100)
@@ -161,7 +161,7 @@ export default {
}
},
getSupDepts(id) {
crudDept.describeDeptSuperiorTree(id, true).then(res => {
crudDept.queryDeptSuperiorTree(id, true).then(res => {
const data = res.content
this.buildDepts(data)
this.depts = data
@@ -178,7 +178,7 @@ export default {
})
},
getDepts() {
crudDept.describeDeptList({ enabled: true }).then(res => {
crudDept.queryDeptList({ enabled: true }).then(res => {
this.depts = res.content.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
@@ -190,7 +190,7 @@ export default {
// 获取弹窗内部门数据
loadDepts({ action, parentNode, callback }) {
if (action === LOAD_CHILDREN_OPTIONS) {
crudDept.describeDeptList({ enabled: true, pid: parentNode.id }).then(res => {
crudDept.queryDeptList({ enabled: true, pid: parentNode.id }).then(res => {
parentNode.children = res.content.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
@@ -208,7 +208,7 @@ export default {
}, 100)
},
getSupDepts(id) {
crudMenu.describeMenuSuperior(id).then(res => {
crudMenu.queryMenuSuperior(id).then(res => {
const children = res.map(function(obj) {
if (!obj.leaf && !obj.children) {
obj.children = null
@@ -122,8 +122,8 @@
<script>
import crudRoles from '@/api/system/role'
import { describeDeptList, describeDeptSuperiorTree } from '@/api/system/dept'
import { describeMenuListByPid, describeChildMenuSet } from '@/api/system/menu'
import { queryDeptList, queryDeptSuperiorTree } from '@/api/system/dept'
import { queryMenuListByPid, queryChildMenuSet } from '@/api/system/menu'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
@@ -168,7 +168,7 @@ export default {
methods: {
getMenuDatas(node, resolve) {
setTimeout(() => {
describeMenuListByPid(node.data.id ? node.data.id : 0).then(res => {
queryMenuListByPid(node.data.id ? node.data.id : 0).then(res => {
resolve(res)
})
}, 100)
@@ -232,7 +232,7 @@ export default {
},
menuChange(menu) {
// 获取该节点的所有子节点,id 包含自身
describeChildMenuSet(menu.id).then(childIds => {
queryChildMenuSet(menu.id).then(childIds => {
// 判断是否在 menuIds 中,如果存在则删除,否则添加
if (this.menuIds.indexOf(menu.id) !== -1) {
for (let i = 0; i < childIds.length; i++) {
@@ -284,7 +284,7 @@ export default {
},
// 获取部门数据
getDepts() {
describeDeptList({ enabled: true }).then(res => {
queryDeptList({ enabled: true }).then(res => {
this.depts = res.content.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
@@ -298,7 +298,7 @@ export default {
depts.forEach(dept => {
ids.push(dept.id)
})
describeDeptSuperiorTree(ids).then(res => {
queryDeptSuperiorTree(ids).then(res => {
const date = res.content
this.buildDepts(date)
this.depts = date
@@ -317,7 +317,7 @@ export default {
// 获取弹窗内部门数据
loadDepts({ action, parentNode, callback }) {
if (action === LOAD_CHILDREN_OPTIONS) {
describeDeptList({ enabled: true, pid: parentNode.id }).then(res => {
queryDeptList({ enabled: true, pid: parentNode.id }).then(res => {
parentNode.children = res.content.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
@@ -183,8 +183,8 @@
<script>
import crudUser from '@/api/system/user'
import { isvalidPhone } from '@/utils/validate'
import { describeDeptList, describeDeptSuperiorTree } from '@/api/system/dept'
import { describeRoleList, getLevel } from '@/api/system/role'
import { queryDeptList, queryDeptSuperiorTree } from '@/api/system/dept'
import { queryRoleList, getLevel } from '@/api/system/role'
import { getAllJob } from '@/api/system/job'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
@@ -376,7 +376,7 @@ export default {
this.crud.toQuery()
},
getDepts() {
describeDeptList({ enabled: true }).then(res => {
queryDeptList({ enabled: true }).then(res => {
this.depts = res.content.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
@@ -386,7 +386,7 @@ export default {
})
},
getSupDepts(deptId) {
describeDeptSuperiorTree(deptId).then(res => {
queryDeptSuperiorTree(deptId).then(res => {
const date = res.content
this.buildDepts(date)
this.depts = date
@@ -405,7 +405,7 @@ export default {
// 获取弹窗内部门数据
loadDepts({ action, parentNode, callback }) {
if (action === LOAD_CHILDREN_OPTIONS) {
describeDeptList({ enabled: true, pid: parentNode.id }).then(res => {
queryDeptList({ enabled: true, pid: parentNode.id }).then(res => {
parentNode.children = res.content.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
@@ -436,7 +436,7 @@ export default {
},
// 获取弹窗内角色数据
getRoles() {
describeRoleList().then(res => {
queryRoleList().then(res => {
this.roles = res
}).catch(() => { })
},
@@ -27,7 +27,7 @@
</template>
<script>
import { describeEmailConfig, modifyEmailConfig } from '@/api/tools/email'
import { queryEmailConfig, modifyEmailConfig } from '@/api/tools/email'
export default {
name: 'Config',
data() {
@@ -58,7 +58,7 @@ export default {
},
methods: {
init() {
describeEmailConfig().then(res => {
queryEmailConfig().then(res => {
this.form = res
})
},
@@ -36,7 +36,7 @@
</template>
<script>
import { describeQiniuConfig, modifyQiniuConfig } from '@/api/tools/qiniu'
import { queryQiniuConfig, modifyQiniuConfig } from '@/api/tools/qiniu'
export default {
data() {
return {
@@ -63,7 +63,7 @@ export default {
},
methods: {
init() {
describeQiniuConfig().then(res => {
queryQiniuConfig().then(res => {
this.form = res
})
},
@@ -54,7 +54,7 @@ spring:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://127.0.0.1:3306/cutejava?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
url: jdbc:p6spy:mysql://127.0.0.1:3306/cutejava?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: root123456
# 初始连接数,建议设置为与最小空闲连接数相同
@@ -54,7 +54,7 @@ spring:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://127.0.0.1:3306/cutejava?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
url: jdbc:p6spy:mysql://127.0.0.1:3306/cutejava?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: root123456
# 初始连接数,建议设置为与最小空闲连接数相同
@@ -20,7 +20,7 @@ spring:
dataSource:
jobStoreDataSource:
driver: com.mysql.cj.jdbc.Driver
URL: jdbc:mysql://127.0.0.1:3306/cutejava?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
url: jdbc:p6spy:mysql://127.0.0.1:3306/cutejava?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
user: root
password: root123456
maxConnections: 10
@@ -39,4 +39,4 @@ spring:
tablePrefix: QRTZ_
# 可选,指定误触发阈值,可以根据需要调整
misfireThreshold: 60000
dataSource: jobStoreDataSource
dataSource: jobStoreDataSource
@@ -58,7 +58,7 @@ public class SystemAuthController {
@ApiOperation("登录授权")
@AnonymousPostMapping(value = "/login")
public ResponseEntity<Object> login(@Validated @RequestBody SystemUserLoginArgs loginRequest, HttpServletRequest request) throws Exception {
public ResponseEntity<Map<String, Object>> login(@Validated @RequestBody SystemUserLoginArgs loginRequest, HttpServletRequest request) throws Exception {
// 密码解密
String password = RsaEncryptUtil.decryptByPrivateKey(properties.getRsa().getPrivateKey(), loginRequest.getPassword());
// 查询验证码
@@ -106,7 +106,7 @@ public class SystemAuthController {
@ApiOperation("获取验证码")
@AnonymousPostMapping(value = "/code")
public ResponseEntity<Object> getCode() {
public ResponseEntity<Map<String, Object>> getCode() {
// 获取运算的结果
Captcha captcha = properties.getLogin().getCaptchaSetting().getCaptcha();
String uuid = SystemRedisKey.CAPTCHA_LOGIN + IdUtil.simpleUUID();
@@ -127,7 +127,7 @@ public class SystemAuthController {
@ApiOperation("退出登录")
@AnonymousPostMapping(value = "/logout")
public ResponseEntity<Object> logout(HttpServletRequest request) {
public ResponseEntity<Void> logout(HttpServletRequest request) {
String token = tokenProvider.getToken(request);
onlineUserService.logoutByToken(token);
return new ResponseEntity<>(HttpStatus.OK);
@@ -30,21 +30,21 @@ public class SystemCaptchaController {
*/
@ApiOperation("重置邮箱,发送验证码")
@PostMapping(value = "/sendResetEmailCaptcha")
public ResponseEntity<Object> sendResetEmailCaptcha(@RequestParam String email) {
public ResponseEntity<Void> sendResetEmailCaptcha(@RequestParam String email) {
emailService.sendEmail(captchaService.renderCodeTemplate(email, SystemCaptchaBizEnum.EMAIL_RESET_EMAIL_CODE.getRedisKey()));
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("重置密码,发送验证码")
@PostMapping(value = "/sendResetPasswordCaptcha")
public ResponseEntity<Object> sendResetPasswordCaptcha(@RequestParam String email) {
public ResponseEntity<Void> sendResetPasswordCaptcha(@RequestParam String email) {
emailService.sendEmail(captchaService.renderCodeTemplate(email, SystemCaptchaBizEnum.EMAIL_RESET_PWD_CODE.getRedisKey()));
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("验证码验证")
@PostMapping(value = "/checkCodeAvailable")
public ResponseEntity<Object> checkCodeAvailable(@RequestParam String email, @RequestParam String code, @RequestParam String codeBi) {
public ResponseEntity<Void> checkCodeAvailable(@RequestParam String email, @RequestParam String code, @RequestParam String codeBi) {
SystemCaptchaBizEnum biEnum = SystemCaptchaBizEnum.getByBizCode(codeBi);
switch (Objects.requireNonNull(biEnum)) {
case EMAIL_RESET_EMAIL_CODE:
@@ -44,10 +44,12 @@ public class SystemDeptController {
@ApiOperation("查询部门:根据ID获取同级与上级数据")
@PostMapping("/queryDeptSuperiorTree")
@PreAuthorize("@el.check('user:list','dept:list')")
public ResponseEntity<Object> queryDeptSuperiorTree(@RequestBody List<Long> ids, @RequestParam(defaultValue = "false") Boolean exclude) {
public ResponseEntity<CsResultVo<Set<SystemDeptTb>>> queryDeptSuperiorTree(@RequestBody List<Long> ids, @RequestParam(defaultValue = "false") Boolean exclude) {
Set<SystemDeptTb> deptSet = new LinkedHashSet<>();
for (Long id : ids) {
// 同级数据
SystemDeptTb dept = systemDeptService.queryDeptById(id);
// 上级数据
List<SystemDeptTb> depts = systemDeptService.querySuperiorDeptListByPid(dept, new ArrayList<>());
if (exclude) {
for (SystemDeptTb data : depts) {
@@ -66,7 +68,7 @@ public class SystemDeptController {
@ApiOperation("新增部门")
@PostMapping(value = "/saveDept")
@PreAuthorize("@el.check('dept:add')")
public ResponseEntity<Object> saveDept(@Validated @RequestBody CreateSystemDeptArgs resources) {
public ResponseEntity<Void> saveDept(@Validated @RequestBody CreateSystemDeptArgs resources) {
systemDeptService.saveDept(resources);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@@ -74,7 +76,7 @@ public class SystemDeptController {
@ApiOperation("修改部门")
@PostMapping(value = "/modifyDept")
@PreAuthorize("@el.check('dept:edit')")
public ResponseEntity<Object> modifyDept(@Validated(SystemDeptTb.Update.class) @RequestBody SystemDeptTb resources) {
public ResponseEntity<Void> modifyDept(@Validated(SystemDeptTb.Update.class) @RequestBody SystemDeptTb resources) {
systemDeptService.modifyDept(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@@ -82,7 +84,7 @@ public class SystemDeptController {
@ApiOperation("删除部门")
@PostMapping(value = "/removeDeptByIds")
@PreAuthorize("@el.check('dept:del')")
public ResponseEntity<Object> removeDeptByIds(@RequestBody Set<Long> ids) {
public ResponseEntity<Void> removeDeptByIds(@RequestBody Set<Long> ids) {
// 获取部门,和其所有子部门
Set<SystemDeptTb> depts = systemDeptService.traverseDeptByIdWithPids(ids);
// 验证是否被角色或用户关联
@@ -52,7 +52,7 @@ public class SystemDictController {
@ApiOperation("新增字典")
@PostMapping(value = "/saveDict")
@PreAuthorize("@el.check('dict:add')")
public ResponseEntity<Object> saveDict(@Validated @RequestBody CreateSystemDictArgs resources) {
public ResponseEntity<Void> saveDict(@Validated @RequestBody CreateSystemDictArgs resources) {
systemDictService.saveDict(resources);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@@ -60,7 +60,7 @@ public class SystemDictController {
@ApiOperation("修改字典")
@PostMapping(value = "/modifyDictById")
@PreAuthorize("@el.check('dict:edit')")
public ResponseEntity<Object> modifyDictById(@Validated(SystemDictTb.Update.class) @RequestBody SystemDictTb resources) {
public ResponseEntity<Void> modifyDictById(@Validated(SystemDictTb.Update.class) @RequestBody SystemDictTb resources) {
systemDictService.modifyDictById(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@@ -68,7 +68,7 @@ public class SystemDictController {
@ApiOperation("删除字典")
@PostMapping(value = "/removeDictByIds")
@PreAuthorize("@el.check('dict:del')")
public ResponseEntity<Object> removeDictByIds(@RequestBody Set<Long> ids) {
public ResponseEntity<Void> removeDictByIds(@RequestBody Set<Long> ids) {
systemDictService.removeDictByIds(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@@ -35,7 +35,7 @@ public class SystemDictDetailController {
@ApiOperation("查询多个字典详情")
@GetMapping(value = "/getDictDetailMaps")
public ResponseEntity<Object> getDictDetailMaps(@RequestParam String dictName) {
public ResponseEntity<Map<String, List<SystemDictDetailTb>>> getDictDetailMaps(@RequestParam String dictName) {
String[] names = dictName.split("[,,]");
Map<String, List<SystemDictDetailTb>> dictMap = new HashMap<>(16);
for (String name : names) {
@@ -47,7 +47,7 @@ public class SystemDictDetailController {
@ApiOperation("新增字典详情")
@PostMapping(value = "/saveDictDetail")
@PreAuthorize("@el.check('dict:add')")
public ResponseEntity<Object> saveDictDetail(@Validated @RequestBody CreateSystemDictDetailArgs resources) {
public ResponseEntity<Void> saveDictDetail(@Validated @RequestBody CreateSystemDictDetailArgs resources) {
systemDictDetailService.saveDictDetail(resources);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@@ -55,7 +55,7 @@ public class SystemDictDetailController {
@ApiOperation("修改字典详情")
@PostMapping(value = "/modifyDictDetailById")
@PreAuthorize("@el.check('dict:edit')")
public ResponseEntity<Object> modifyDictDetailById(@Validated(SystemDictDetailTb.Update.class) @RequestBody SystemDictDetailTb resources) {
public ResponseEntity<Void> modifyDictDetailById(@Validated(SystemDictDetailTb.Update.class) @RequestBody SystemDictDetailTb resources) {
systemDictDetailService.modifyDictDetailById(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@@ -63,7 +63,7 @@ public class SystemDictDetailController {
@ApiOperation("删除字典详情")
@PostMapping(value = "/removeDictDetailById")
@PreAuthorize("@el.check('dict:del')")
public ResponseEntity<Object> removeDictDetailById(@RequestBody SystemDictDetailTb args) {
public ResponseEntity<Void> removeDictDetailById(@RequestBody SystemDictDetailTb args) {
systemDictDetailService.removeDictDetailById(args.getId());
return new ResponseEntity<>(HttpStatus.OK);
}
@@ -32,14 +32,14 @@ public class SystemEmailController {
@ApiOperation("配置邮件")
@PostMapping(value = "/modifyEmailConfig")
public ResponseEntity<Object> modifyEmailConfig(@Validated @RequestBody SystemEmailConfigTb emailConfig) throws Exception {
public ResponseEntity<Void> modifyEmailConfig(@Validated @RequestBody SystemEmailConfigTb emailConfig) throws Exception {
systemEmailService.modifyEmailConfigOnPassChange(emailConfig);
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("发送邮件")
@PostMapping(value = "/sendEmail")
public ResponseEntity<Object> sendEmail(@Validated @RequestBody SendSystemEmailArgs sendEmailRequest) {
public ResponseEntity<Void> sendEmail(@Validated @RequestBody SendSystemEmailArgs sendEmailRequest) {
systemEmailService.sendEmail(sendEmailRequest);
return new ResponseEntity<>(HttpStatus.OK);
}
@@ -46,7 +46,7 @@ public class SystemJobController {
@ApiOperation("新增岗位")
@PostMapping(value = "/saveJob")
@PreAuthorize("@el.check('job:add')")
public ResponseEntity<Object> saveJob(@Validated @RequestBody CreateSystemJobArgs resources) {
public ResponseEntity<Void> saveJob(@Validated @RequestBody CreateSystemJobArgs resources) {
systemJobService.saveJob(resources);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@@ -54,7 +54,7 @@ public class SystemJobController {
@ApiOperation("修改岗位")
@PostMapping(value = "/modifyJobById")
@PreAuthorize("@el.check('job:edit')")
public ResponseEntity<Object> modifyJobById(@Validated(SystemJobTb.Update.class) @RequestBody SystemJobTb resources) {
public ResponseEntity<Void> modifyJobById(@Validated(SystemJobTb.Update.class) @RequestBody SystemJobTb resources) {
systemJobService.modifyJobById(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@@ -62,7 +62,7 @@ public class SystemJobController {
@ApiOperation("删除岗位")
@PostMapping(value = "/removeJobByIds")
@PreAuthorize("@el.check('job:del')")
public ResponseEntity<Object> removeJobByIds(@RequestBody Set<Long> ids) {
public ResponseEntity<Void> removeJobByIds(@RequestBody Set<Long> ids) {
// 验证是否被用户关联
systemJobService.verifyBindRelationByIds(ids);
systemJobService.removeJobByIds(ids);
@@ -47,7 +47,7 @@ public class SystemLocalStorageController {
@ApiOperation("上传文件")
@PostMapping(value = "/uploadFile")
@PreAuthorize("@el.check('storage:add')")
public ResponseEntity<Object> uploadFile(@RequestParam String name, @RequestParam("file") MultipartFile file) {
public ResponseEntity<Void> uploadFile(@RequestParam String name, @RequestParam("file") MultipartFile file) {
localStorageService.uploadFile(name, file);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@@ -67,14 +67,14 @@ public class SystemLocalStorageController {
@ApiOperation("修改文件")
@PostMapping(value = "/modifyLocalStorageById")
@PreAuthorize("@el.check('storage:edit')")
public ResponseEntity<Object> modifyLocalStorageById(@Validated @RequestBody SystemLocalStorageTb resources) {
public ResponseEntity<Void> modifyLocalStorageById(@Validated @RequestBody SystemLocalStorageTb resources) {
localStorageService.modifyLocalStorageById(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@ApiOperation("多选删除")
@PostMapping(value = "/removeFileByIds")
public ResponseEntity<Object> deleteFileByIds(@RequestBody Long[] ids) {
public ResponseEntity<Void> deleteFileByIds(@RequestBody Long[] ids) {
localStorageService.removeFileByIds(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@@ -56,7 +56,7 @@ public class SystemMenuController {
@ApiOperation("根据菜单ID返回所有子节点ID,包含自身ID")
@PostMapping(value = "/queryChildMenuSet")
@PreAuthorize("@el.check('menu:list','roles:list')")
public ResponseEntity<Object> queryChildMenuSet(@RequestParam Long id) {
public ResponseEntity<Set<Long>> queryChildMenuSet(@RequestParam Long id) {
Set<SystemMenuTb> menuSet = new HashSet<>();
List<SystemMenuTb> menuList = systemMenuService.queryMenuListByPid(id);
menuSet.add(systemMenuService.queryMenuById(id));
@@ -99,7 +99,7 @@ public class SystemMenuController {
@ApiOperation("新增菜单")
@PostMapping(value = "/saveMenu")
@PreAuthorize("@el.check('menu:add')")
public ResponseEntity<Object> saveMenu(@Validated @RequestBody SystemMenuTb resources) {
public ResponseEntity<Void> saveMenu(@Validated @RequestBody SystemMenuTb resources) {
if (resources.getId() != null) {
throw new BadRequestException("A new " + ENTITY_NAME + " cannot already have an ID");
}
@@ -110,7 +110,7 @@ public class SystemMenuController {
@ApiOperation("修改菜单")
@PostMapping(value = "/modifyMenuById")
@PreAuthorize("@el.check('menu:edit')")
public ResponseEntity<Object> modifyMenuById(@Validated(SystemMenuTb.Update.class) @RequestBody SystemMenuTb resources) {
public ResponseEntity<Void> modifyMenuById(@Validated(SystemMenuTb.Update.class) @RequestBody SystemMenuTb resources) {
systemMenuService.modifyMenuById(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@@ -118,7 +118,7 @@ public class SystemMenuController {
@ApiOperation("删除菜单")
@PostMapping(value = "/removeMenuByIds")
@PreAuthorize("@el.check('menu:del')")
public ResponseEntity<Object> removeMenuByIds(@RequestBody Set<Long> ids) {
public ResponseEntity<Void> removeMenuByIds(@RequestBody Set<Long> ids) {
Set<SystemMenuTb> menuSet = new HashSet<>();
for (Long id : ids) {
List<SystemMenuTb> menuList = systemMenuService.queryMenuListByPid(id);
@@ -10,6 +10,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
@RequiredArgsConstructor
@@ -22,7 +23,7 @@ public class SystemMonitorController {
@PostMapping(value = "/queryServerMonitorInfo")
@ApiOperation("查询服务监控")
@PreAuthorize("@el.check('monitor:list')")
public ResponseEntity<Object> queryServerMonitorInfo() {
public ResponseEntity<Map<String, Object>> queryServerMonitorInfo() {
return new ResponseEntity<>(serverService.queryServerMonitorInfo(), HttpStatus.OK);
}
}
@@ -45,7 +45,7 @@ public class SystemOnlineController {
@ApiOperation("踢出用户")
@PostMapping(value = "/kickOutUser")
@PreAuthorize("@el.check()")
public ResponseEntity<Object> kickOutUser(@RequestBody Set<String> keys) throws Exception {
public ResponseEntity<Void> kickOutUser(@RequestBody Set<String> keys) throws Exception {
for (String token : keys) {
// 解密Key
token = DesEncryptUtil.desDecrypt(token);
@@ -43,7 +43,7 @@ public class SystemQiniuController {
@ApiOperation("配置七牛云存储")
@PostMapping(value = "/modifyQiniuConfig")
public ResponseEntity<Object> modifyQiniuConfig(@Validated @RequestBody SystemQiniuConfigTb qiniuConfig) {
public ResponseEntity<Void> modifyQiniuConfig(@Validated @RequestBody SystemQiniuConfigTb qiniuConfig) {
qiNiuConfigService.saveQiniuConfig(qiniuConfig);
qiNiuConfigService.modifyQiniuConfigType(qiniuConfig.getType());
return new ResponseEntity<>(HttpStatus.OK);
@@ -64,7 +64,7 @@ public class SystemQiniuController {
@ApiOperation("上传文件")
@PostMapping
public ResponseEntity<Object> uploadQiNiu(@RequestParam MultipartFile file) {
public ResponseEntity<Map<String, Object>> uploadQiNiu(@RequestParam MultipartFile file) {
SystemQiniuContentTb qiniuContent = qiniuContentService.uploadFile(file);
Map<String, Object> map = new HashMap<>(3);
map.put("id", qiniuContent.getId());
@@ -75,14 +75,14 @@ public class SystemQiniuController {
@ApiOperation("同步七牛云数据")
@PostMapping(value = "/synchronize")
public ResponseEntity<Object> synchronizeQiNiu() {
public ResponseEntity<Void> synchronizeQiNiu() {
qiniuContentService.synchronize();
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("下载文件")
@GetMapping(value = "/createFilePreviewUrl/{id}")
public ResponseEntity<Object> createFilePreviewUrl(@PathVariable Long id) {
public ResponseEntity<Map<String, Object>> createFilePreviewUrl(@PathVariable Long id) {
Map<String, Object> map = new HashMap<>(1);
map.put("url", qiniuContentService.createFilePreviewUrl(qiniuContentService.getById(id)));
return new ResponseEntity<>(map, HttpStatus.OK);
@@ -90,14 +90,14 @@ public class SystemQiniuController {
@ApiOperation("删除文件")
@DeleteMapping(value = "/{id}")
public ResponseEntity<Object> deleteQiNiu(@PathVariable Long id) {
public ResponseEntity<Void> deleteQiNiu(@PathVariable Long id) {
qiniuContentService.removeFileById(id);
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("删除多张图片")
@DeleteMapping
public ResponseEntity<Object> deleteAllQiNiu(@RequestBody Long[] ids) {
public ResponseEntity<Void> deleteAllQiNiu(@RequestBody Long[] ids) {
qiniuContentService.removeFileByIds(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@@ -67,7 +67,7 @@ public class SystemQuartzJobController {
@ApiOperation("新增定时任务")
@PostMapping
@PreAuthorize("@el.check('timing:add')")
public ResponseEntity<Object> createQuartzJob(@Validated @RequestBody SystemQuartzJobTb resources) {
public ResponseEntity<Void> createQuartzJob(@Validated @RequestBody SystemQuartzJobTb resources) {
if (resources.getId() != null) {
throw new BadRequestException("A new " + ENTITY_NAME + " cannot already have an ID");
}
@@ -80,7 +80,7 @@ public class SystemQuartzJobController {
@ApiOperation("修改定时任务")
@PutMapping
@PreAuthorize("@el.check('timing:edit')")
public ResponseEntity<Object> updateQuartzJob(@Validated(SystemQuartzJobTb.Update.class) @RequestBody UpdateSystemQuartzJobArgs resources) {
public ResponseEntity<Void> updateQuartzJob(@Validated(SystemQuartzJobTb.Update.class) @RequestBody UpdateSystemQuartzJobArgs resources) {
// 验证Bean是不是合法的,合法的定时任务 Bean 需要用 @Service 定义
checkBean(resources.getBeanName());
systemQuartzJobService.modifyQuartzJobResumeCron(resources);
@@ -90,7 +90,7 @@ public class SystemQuartzJobController {
@ApiOperation("更改定时任务状态")
@PostMapping(value = "/switchQuartzJobStatus/{id}")
@PreAuthorize("@el.check('timing:edit')")
public ResponseEntity<Object> switchQuartzJobStatus(@PathVariable Long id) {
public ResponseEntity<Void> switchQuartzJobStatus(@PathVariable Long id) {
systemQuartzJobService.switchQuartzJobStatus(systemQuartzJobService.getById(id));
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@@ -98,7 +98,7 @@ public class SystemQuartzJobController {
@ApiOperation("执行定时任务")
@PostMapping(value = "/startQuartzJob/{id}")
@PreAuthorize("@el.check('timing:edit')")
public ResponseEntity<Object> startQuartzJob(@PathVariable Long id) {
public ResponseEntity<Void> startQuartzJob(@PathVariable Long id) {
systemQuartzJobService.startQuartzJob(systemQuartzJobService.getById(id));
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@@ -106,7 +106,7 @@ public class SystemQuartzJobController {
@ApiOperation("删除定时任务")
@DeleteMapping
@PreAuthorize("@el.check('timing:del')")
public ResponseEntity<Object> removeJobByIds(@RequestBody Set<Long> ids) {
public ResponseEntity<Void> removeJobByIds(@RequestBody Set<Long> ids) {
systemQuartzJobService.removeJobByIds(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@@ -3,10 +3,10 @@ package cn.odboy.core.controller.system;
import cn.hutool.core.lang.Dict;
import cn.odboy.base.CsResultVo;
import cn.odboy.core.dal.dataobject.system.SystemRoleTb;
import cn.odboy.core.framework.permission.core.SecurityHelper;
import cn.odboy.core.service.system.SystemRoleService;
import cn.odboy.core.dal.model.system.CreateSystemRoleArgs;
import cn.odboy.core.dal.model.system.QuerySystemRoleArgs;
import cn.odboy.core.framework.permission.core.SecurityHelper;
import cn.odboy.core.service.system.SystemRoleService;
import cn.odboy.exception.BadRequestException;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
@@ -16,8 +16,11 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collections;
@@ -64,14 +67,14 @@ public class SystemRoleController {
@ApiOperation("获取用户级别")
@PostMapping(value = "/queryRoleLevel")
public ResponseEntity<Object> queryRoleLevel() {
public ResponseEntity<Dict> queryRoleLevel() {
return new ResponseEntity<>(Dict.create().set("level", checkRoleLevels(null)), HttpStatus.OK);
}
@ApiOperation("新增角色")
@PostMapping(value = "/saveRole")
@PreAuthorize("@el.check('roles:add')")
public ResponseEntity<Object> saveRole(@Validated @RequestBody CreateSystemRoleArgs resources) {
public ResponseEntity<Void> saveRole(@Validated @RequestBody CreateSystemRoleArgs resources) {
checkRoleLevels(resources.getLevel());
systemRoleService.saveRole(resources);
return new ResponseEntity<>(HttpStatus.CREATED);
@@ -80,7 +83,7 @@ public class SystemRoleController {
@ApiOperation("修改角色")
@PostMapping(value = "/modifyRoleById")
@PreAuthorize("@el.check('roles:edit')")
public ResponseEntity<Object> modifyRoleById(@Validated(SystemRoleTb.Update.class) @RequestBody SystemRoleTb resources) {
public ResponseEntity<Void> modifyRoleById(@Validated(SystemRoleTb.Update.class) @RequestBody SystemRoleTb resources) {
checkRoleLevels(resources.getLevel());
systemRoleService.modifyRoleById(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
@@ -89,7 +92,7 @@ public class SystemRoleController {
@ApiOperation("修改角色菜单")
@PostMapping(value = "/modifyBindMenuById")
@PreAuthorize("@el.check('roles:edit')")
public ResponseEntity<Object> modifyBindMenuById(@RequestBody SystemRoleTb resources) {
public ResponseEntity<Void> modifyBindMenuById(@RequestBody SystemRoleTb resources) {
SystemRoleTb role = systemRoleService.getById(resources.getId());
checkRoleLevels(role.getLevel());
systemRoleService.modifyBindMenuById(resources);
@@ -99,7 +102,7 @@ public class SystemRoleController {
@ApiOperation("删除角色")
@PostMapping(value = "/removeRoleByIds")
@PreAuthorize("@el.check('roles:del')")
public ResponseEntity<Object> removeRoleByIds(@RequestBody Set<Long> ids) {
public ResponseEntity<Void> removeRoleByIds(@RequestBody Set<Long> ids) {
for (Long id : ids) {
SystemRoleTb role = systemRoleService.getById(id);
checkRoleLevels(role.getLevel());
@@ -70,7 +70,7 @@ public class SystemUserController {
criteria.getDeptIds().addAll(systemDeptService.queryChildDeptIdListByDeptIds(data));
}
// 数据权限
List<Long> dataScopes = systemDataService.queryDeptIdListByUserIdWithDeptId(systemUserService.queryUserByUsername(SecurityHelper.getCurrentUsername()));
List<Long> dataScopes = systemDataService.queryDeptIdListByArgs(systemUserService.queryUserByUsername(SecurityHelper.getCurrentUsername()));
// criteria.getDeptIds() 不为空并且数据权限不为空则取交集
if (!CollectionUtils.isEmpty(criteria.getDeptIds()) && !CollectionUtils.isEmpty(dataScopes)) {
// 取交集
@@ -40,7 +40,7 @@ public class UserDetailsHandler implements UserDetailsService {
// 获取用户的权限
List<SystemRoleCodeVo> authorities = systemRoleService.buildUserRolePermissions(user);
// 初始化JwtUserDto
userJwtVo = new SystemUserJwtVo(user, systemDataService.queryDeptIdListByUserIdWithDeptId(user), authorities);
userJwtVo = new SystemUserJwtVo(user, systemDataService.queryDeptIdListByArgs(user), authorities);
// 添加缓存数据
systemUserJwtService.saveUserJwtModelByUserName(username, userJwtVo);
}
@@ -16,5 +16,5 @@ public interface SystemDataService {
* @param user /
* @return /
*/
List<Long> queryDeptIdListByUserIdWithDeptId(SystemUserTb user);
List<Long> queryDeptIdListByArgs(SystemUserTb user);
}
@@ -30,7 +30,7 @@ public class SystemDataServiceImpl implements SystemDataService {
* @return /
*/
@Override
public List<Long> queryDeptIdListByUserIdWithDeptId(SystemUserTb user) {
public List<Long> queryDeptIdListByArgs(SystemUserTb user) {
Set<Long> deptIds = new HashSet<>();
// 查询用户角色
List<SystemRoleTb> roleList = systemRoleService.queryRoleListByUsersId(user.getId());
@@ -42,7 +42,7 @@ public class SystemDataServiceImpl implements SystemDataService {
deptIds.add(user.getDept().getId());
break;
case CUSTOMIZE:
deptIds.addAll(getCustomize(deptIds, role));
deptIds.addAll(queryCustomDataPermissionList(deptIds, role));
break;
default:
return new ArrayList<>();
@@ -58,7 +58,7 @@ public class SystemDataServiceImpl implements SystemDataService {
* @param role 角色
* @return 数据权限ID
*/
public Set<Long> getCustomize(Set<Long> deptIds, SystemRoleTb role) {
public Set<Long> queryCustomDataPermissionList(Set<Long> deptIds, SystemRoleTb role) {
Set<SystemDeptTb> deptList = systemDeptService.queryDeptByRoleId(role.getId());
for (SystemDeptTb dept : deptList) {
deptIds.add(dept.getId());
@@ -100,7 +100,7 @@ public interface SystemDeptService extends IService<SystemDeptTb> {
* @param depts /
* @return /
*/
CsResultVo<Object> buildDeptTree(List<SystemDeptTb> depts);
CsResultVo<Set<SystemDeptTb>> buildDeptTree(List<SystemDeptTb> depts);
/**
* 获取
@@ -200,7 +200,7 @@ public class SystemDeptServiceImpl extends ServiceImpl<SystemDeptMapper, SystemD
}
@Override
public CsResultVo<Object> buildDeptTree(List<SystemDeptTb> deptList) {
public CsResultVo<Set<SystemDeptTb>> buildDeptTree(List<SystemDeptTb> deptList) {
Set<SystemDeptTb> trees = new LinkedHashSet<>();
Set<SystemDeptTb> deptSet = new LinkedHashSet<>();
List<String> deptNames = deptList.stream().map(SystemDeptTb::getName).collect(Collectors.toList());
@@ -228,7 +228,7 @@ public class SystemDeptServiceImpl extends ServiceImpl<SystemDeptMapper, SystemD
if (CollectionUtil.isEmpty(trees)) {
trees = deptSet;
}
CsResultVo<Object> baseResult = new CsResultVo<>();
CsResultVo<Set<SystemDeptTb>> baseResult = new CsResultVo<>();
baseResult.setContent(CollectionUtil.isEmpty(trees) ? deptSet : trees);
baseResult.setTotalElements(deptSet.size());
return baseResult;
@@ -4,7 +4,7 @@
<select id="queryLocalStoragePageByArgs" resultType="cn.odboy.core.dal.dataobject.system.SystemLocalStorageTb">
select
*
from tool_local_storage
from system_local_storage
<where>
<if test="criteria.blurry != null and criteria.blurry != ''">
AND (
@@ -20,4 +20,4 @@
</where>
ORDER BY id DESC
</select>
</mapper>
</mapper>
@@ -3,14 +3,14 @@
<mapper namespace="cn.odboy.core.dal.mysql.system.SystemQiniuContentMapper">
<select id="getQiniuContentByName" resultType="cn.odboy.core.dal.dataobject.system.SystemQiniuContentTb">
SELECT *
FROM tool_qiniu_content
FROM system_qiniu_content
WHERE name = #{name}
</select>
<select id="queryQiniuContentPageByArgs" resultType="cn.odboy.core.dal.dataobject.system.SystemQiniuContentTb">
SELECT
*
FROM tool_qiniu_content
FROM system_qiniu_content
<where>
<if test="criteria.key != null and criteria.key != ''">
AND name LIKE CONCAT('%',#{criteria.key},'%')
@@ -21,4 +21,4 @@
</where>
ORDER BY id DESC
</select>
</mapper>
</mapper>
+5
View File
@@ -56,6 +56,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<dependency>
<groupId>io.undertow</groupId>
<artifactId>undertow-core</artifactId>
<version>2.3.18.Final</version>
</dependency>
<!-- Spring boot 测试 -->
<dependency>