From a1a0ea03f56837a65fc19d713aeb2eff3d6496d4 Mon Sep 17 00:00:00 2001 From: tanyp <742354529@qq.com> Date: Fri, 14 Apr 2023 16:16:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tansci-boot-ui/src/api/monitor/loginLog.ts | 16 ++ tansci-boot-ui/src/api/monitor/onlineUser.ts | 28 ++++ tansci-boot-ui/src/api/monitor/operLog.ts | 16 ++ tansci-boot-ui/src/api/system/dict.ts | 15 ++ tansci-boot-ui/src/components/Table.vue | 26 ++-- tansci-boot-ui/src/router/index.ts | 8 +- tansci-boot-ui/src/router/permission.ts | 2 - .../src/router/{common.ts => staticRouter.ts} | 0 tansci-boot-ui/src/utils/common.ts | 22 ++- tansci-boot-ui/src/views/lowcode/CodeGen.vue | 22 +++ .../src/views/lowcode/Interface.vue | 22 +++ tansci-boot-ui/src/views/monitor/LoginLog.vue | 86 +++++++++++ .../src/views/monitor/OnlineUser.vue | 105 +++++++++++++ tansci-boot-ui/src/views/monitor/OperLog.vue | 140 ++++++++++++++++++ tansci-boot-ui/src/views/system/Dict.vue | 10 +- tansci-boot-ui/src/views/system/Menu.vue | 12 +- tansci-boot-ui/src/views/system/User.vue | 26 +++- .../com/tansci/common/constant/Constants.java | 6 + .../com/tansci/controller/AuthController.java | 8 +- .../tansci/controller/SysDictController.java | 16 +- .../tansci/controller/SysLogController.java | 4 +- .../tansci/controller/SysMenuController.java | 12 +- .../tansci/controller/SysOrgController.java | 8 +- .../tansci/controller/SysRoleController.java | 18 +-- .../tansci/controller/SysUserController.java | 12 +- .../java/com/tansci/domain/SysLoginLog.java | 3 + .../com/tansci/service/SysDictService.java | 2 + .../service/impl/SysDictServiceImpl.java | 15 +- .../service/impl/SysLoginLogServiceImpl.java | 16 +- .../service/impl/SysMenuServiceImpl.java | 1 + .../service/impl/SysUserServiceImpl.java | 8 + 31 files changed, 618 insertions(+), 67 deletions(-) create mode 100644 tansci-boot-ui/src/api/monitor/loginLog.ts create mode 100644 tansci-boot-ui/src/api/monitor/onlineUser.ts create mode 100644 tansci-boot-ui/src/api/monitor/operLog.ts rename tansci-boot-ui/src/router/{common.ts => staticRouter.ts} (100%) create mode 100644 tansci-boot-ui/src/views/lowcode/CodeGen.vue create mode 100644 tansci-boot-ui/src/views/lowcode/Interface.vue create mode 100644 tansci-boot-ui/src/views/monitor/LoginLog.vue create mode 100644 tansci-boot-ui/src/views/monitor/OnlineUser.vue create mode 100644 tansci-boot-ui/src/views/monitor/OperLog.vue diff --git a/tansci-boot-ui/src/api/monitor/loginLog.ts b/tansci-boot-ui/src/api/monitor/loginLog.ts new file mode 100644 index 0000000..bb4fa43 --- /dev/null +++ b/tansci-boot-ui/src/api/monitor/loginLog.ts @@ -0,0 +1,16 @@ +import request from '@/utils/request' + +// 列表 +export function page(params:any){ + return new Promise((resolve, reject) => { + request({ + url: '/tansci/syslog/loginLog', + method: 'get', + params: params + }).then((res:any) => { + resolve(res.data) + }).catch((e:any) => { + reject(e) + }) + }) +} diff --git a/tansci-boot-ui/src/api/monitor/onlineUser.ts b/tansci-boot-ui/src/api/monitor/onlineUser.ts new file mode 100644 index 0000000..d4507ea --- /dev/null +++ b/tansci-boot-ui/src/api/monitor/onlineUser.ts @@ -0,0 +1,28 @@ +import request from '@/utils/request' + +export function page(params:any){ + return new Promise((resolve, reject) => { + request({ + url: '/tansci/auth/onlineUser', + method: 'get', + params: params + }).then((res:any) => { + resolve(res.data) + }).catch((e:any) => { + reject(e) + }) + }) +} + +export function kick(token:String){ + return new Promise((resolve, reject) => { + request({ + url: '/tansci/auth/kick/' + token, + method: 'get' + }).then((res:any) => { + resolve(res.data) + }).catch((e:any) => { + reject(e) + }) + }) +} diff --git a/tansci-boot-ui/src/api/monitor/operLog.ts b/tansci-boot-ui/src/api/monitor/operLog.ts new file mode 100644 index 0000000..d715bea --- /dev/null +++ b/tansci-boot-ui/src/api/monitor/operLog.ts @@ -0,0 +1,16 @@ +import request from '@/utils/request' + +// 列表 +export function page(params:any){ + return new Promise((resolve, reject) => { + request({ + url: '/tansci/syslog/operLog', + method: 'get', + params: params + }).then((res:any) => { + resolve(res.data) + }).catch((e:any) => { + reject(e) + }) + }) +} diff --git a/tansci-boot-ui/src/api/system/dict.ts b/tansci-boot-ui/src/api/system/dict.ts index 9260940..a890e0e 100644 --- a/tansci-boot-ui/src/api/system/dict.ts +++ b/tansci-boot-ui/src/api/system/dict.ts @@ -1,5 +1,20 @@ import request from '@/utils/request' +// 列表树 +export function tree(params:any){ + return new Promise((resolve, reject) => { + request({ + url: '/tansci/sysdict/tree', + method: 'get', + params: params + }).then((res:any) => { + resolve(res.data) + }).catch((e:any) => { + reject(e) + }) + }) +} + // 列表 export function list(params:any){ return new Promise((resolve, reject) => { diff --git a/tansci-boot-ui/src/components/Table.vue b/tansci-boot-ui/src/components/Table.vue index d546209..7376097 100644 --- a/tansci-boot-ui/src/components/Table.vue +++ b/tansci-boot-ui/src/components/Table.vue @@ -69,13 +69,9 @@ emit('onCurrentChange', e) } - // 根据属性获取对象值 function onFind(arr:any,val:any){ if(!arr) return 'info'; - - let temp = arr.find(v=>{ return v.value == val}); - if(temp) return temp.label; - return 'info'; + return arr.find(v=>{ return v.value == val}).label; } @@ -105,11 +101,15 @@ - - + - {{common.toDecimal(scope.row[item.prop])}} + @@ -167,13 +167,21 @@ :color="item.option.color"/> + + + + {{common.getDictLabel(item.dictType, scope.row[item.prop])}} + + + :fixed="item.fixed" + :formatter="item.function"> diff --git a/tansci-boot-ui/src/router/index.ts b/tansci-boot-ui/src/router/index.ts index f379860..2f97c80 100644 --- a/tansci-boot-ui/src/router/index.ts +++ b/tansci-boot-ui/src/router/index.ts @@ -1,13 +1,14 @@ import { createRouter, createWebHistory } from "vue-router" import { ElMessage } from 'element-plus' import { getToken, removeToken, removeUser, setMenus } from "@/api/auth" +import common from '@/utils/common' import { generateRoutes } from "./permission" -import common from './common' +import staticRouter from './staticRouter' const router = createRouter({ history: createWebHistory(), routes: [ - ...common + ...staticRouter ] }) @@ -37,9 +38,10 @@ router.beforeEach(async (to:any, from:any, next) => { router.addRoute(item) }) - let routers = common.concat(accessRoutes) + let routers = staticRouter.concat(accessRoutes) setMenus([...routers]) }) + await common.getDictData() next({ ...to, replace: true }) } catch (error:any) { diff --git a/tansci-boot-ui/src/router/permission.ts b/tansci-boot-ui/src/router/permission.ts index 3285926..48f3c63 100644 --- a/tansci-boot-ui/src/router/permission.ts +++ b/tansci-boot-ui/src/router/permission.ts @@ -56,8 +56,6 @@ export function generateRoutes(){ method: 'get' }).then( (res:any) => { const routers = filterRouter(res.data.result, 0) - - console.log(routers) resolve(routers) }) }) diff --git a/tansci-boot-ui/src/router/common.ts b/tansci-boot-ui/src/router/staticRouter.ts similarity index 100% rename from tansci-boot-ui/src/router/common.ts rename to tansci-boot-ui/src/router/staticRouter.ts diff --git a/tansci-boot-ui/src/utils/common.ts b/tansci-boot-ui/src/utils/common.ts index 012fba3..55b0154 100644 --- a/tansci-boot-ui/src/utils/common.ts +++ b/tansci-boot-ui/src/utils/common.ts @@ -1,5 +1,25 @@ +import { list } from "@/api/system/dict" + const common:any = {} +// 数据字典 +let dictList = [] +common.getDictData = async function() { + await list({}).then((res:any) =>{ + dictList = res.result + }) +} +common.getDictGroup = (groupName:any) => { + return dictList.filter(item => item.groupName === groupName) +} +common.getDictLabel = (groupName:any, value:any) => { + let dicts = common.getDictGroup(groupName) + let dict = dicts.find((item:any) =>{ + return item.dicValue == value + }) + return dict ? dict.dicLabel : null; +} + // 生成UUID common.uuid = () => { function S4() { @@ -34,6 +54,6 @@ common.toDecimal = (value:any) => { s_x += '0'; } return s_x; -} +} export default common \ No newline at end of file diff --git a/tansci-boot-ui/src/views/lowcode/CodeGen.vue b/tansci-boot-ui/src/views/lowcode/CodeGen.vue new file mode 100644 index 0000000..57717fe --- /dev/null +++ b/tansci-boot-ui/src/views/lowcode/CodeGen.vue @@ -0,0 +1,22 @@ + + + + 开发中 + + + \ No newline at end of file diff --git a/tansci-boot-ui/src/views/lowcode/Interface.vue b/tansci-boot-ui/src/views/lowcode/Interface.vue new file mode 100644 index 0000000..0cd14be --- /dev/null +++ b/tansci-boot-ui/src/views/lowcode/Interface.vue @@ -0,0 +1,22 @@ + + + + 开发中 + + + \ No newline at end of file diff --git a/tansci-boot-ui/src/views/monitor/LoginLog.vue b/tansci-boot-ui/src/views/monitor/LoginLog.vue new file mode 100644 index 0000000..1a97ffa --- /dev/null +++ b/tansci-boot-ui/src/views/monitor/LoginLog.vue @@ -0,0 +1,86 @@ + + + + + + + + \ No newline at end of file diff --git a/tansci-boot-ui/src/views/monitor/OnlineUser.vue b/tansci-boot-ui/src/views/monitor/OnlineUser.vue new file mode 100644 index 0000000..ad317d9 --- /dev/null +++ b/tansci-boot-ui/src/views/monitor/OnlineUser.vue @@ -0,0 +1,105 @@ + + + + + + + + 查询 + + + 踢人 + + + + + \ No newline at end of file diff --git a/tansci-boot-ui/src/views/monitor/OperLog.vue b/tansci-boot-ui/src/views/monitor/OperLog.vue new file mode 100644 index 0000000..831fd69 --- /dev/null +++ b/tansci-boot-ui/src/views/monitor/OperLog.vue @@ -0,0 +1,140 @@ + + + + + + 详情 + + + + + {{state.detail.module}} + + 异常 + 成功 + + + {{state.detail.takeUpTime}} ms + + {{state.detail.message}} + + {{state.detail.type}} + {{state.detail.type}} + {{state.detail.type}} + {{state.detail.type}} + {{state.detail.type}} + + {{state.detail.userName}} + {{state.detail.uri}} + {{state.detail.ip}} + {{state.detail.createTime}} + {{state.detail.method}} + + {{state.detail.reqParam}} + + + {{state.detail.resParam}} + + + {{state.detail.unusual}} + + + + + + \ No newline at end of file diff --git a/tansci-boot-ui/src/views/system/Dict.vue b/tansci-boot-ui/src/views/system/Dict.vue index 58171c2..13673ed 100644 --- a/tansci-boot-ui/src/views/system/Dict.vue +++ b/tansci-boot-ui/src/views/system/Dict.vue @@ -2,8 +2,9 @@ import {onMounted, reactive, ref} from 'vue' import {ElMessage, ElMessageBox} from 'element-plus' import type {FormInstance} from 'element-plus' + import common from '@/utils/common' import Table from '@/components/Table.vue' - import {list,save,update,del} from '@/api/system/dict' + import {tree,save,update,del} from '@/api/system/dict' const table = reactive({ loading: false, @@ -14,7 +15,7 @@ tableTitle: [ {prop:'dicLabel',label:'字典标签',align:'left'}, {prop:'groupName',label:'分组名称'}, - {prop:'type',label:'字典类型'}, + {prop:'type',label:'字典类型',type:'dict',dictType:'business_type'}, {prop:'dicValue',label:'字典值'}, {prop:'sort',label:'排序'}, {prop:'createTime',label:'创建时间'}, @@ -29,7 +30,7 @@ function onDictList(){ table.loading = true; - list({}).then((res:any)=>{ + tree({}).then((res:any)=>{ if(res){ table.loading = false; table.tableData = res.result; @@ -104,6 +105,7 @@ if(res){ ElMessage.success('删除成功!'); onDictList(); + common.getDictData() } }) }).catch(e=>{ @@ -120,6 +122,7 @@ if(res){ ElMessage.success("添加成功!"); onDictList() + common.getDictData() } }) } else { @@ -127,6 +130,7 @@ if(res){ ElMessage.success("更新成功!"); onDictList() + common.getDictData() } }) } diff --git a/tansci-boot-ui/src/views/system/Menu.vue b/tansci-boot-ui/src/views/system/Menu.vue index 0663fe0..c0f3db7 100644 --- a/tansci-boot-ui/src/views/system/Menu.vue +++ b/tansci-boot-ui/src/views/system/Menu.vue @@ -19,13 +19,13 @@ chineseName: '', englishName: '', sort: 0, - component: '', + component: null, openMode: 0, isDel: 0, keepAlive: 0, isShow: 0, remarks: '', - permission: '' + permission: null }, menuId: null, iconVisible: false, @@ -88,13 +88,13 @@ chineseName: '', englishName: '', sort: 0, - component: '', + component: null, openMode: 0, isDel: 0, keepAlive: 0, isShow: 0, remarks: '', - permission: '' + permission: null } } else if(val == 2) { state.operate = 2; @@ -128,7 +128,7 @@ keepAlive: 0, isShow: 0, remarks: '', - permission: '' + permission: null }; onMenuTree(); } @@ -173,7 +173,7 @@ chineseName: '', englishName: '', sort: 0, - component: '', + component: null, openMode: 0, isDel: 0, keepAlive: 0, diff --git a/tansci-boot-ui/src/views/system/User.vue b/tansci-boot-ui/src/views/system/User.vue index 332849b..eebb5a8 100644 --- a/tansci-boot-ui/src/views/system/User.vue +++ b/tansci-boot-ui/src/views/system/User.vue @@ -24,14 +24,20 @@ {prop:'',label:'',fixed:'left'}, {prop:'username',label:'用户名称'}, {prop:'nickname',label:'用户昵称'}, - {prop:'type',label:'用户类型'}, + {prop:'type',label:'用户类型',type:'dict',dictType:'user_type'}, {prop:'avatar',label:'头像'}, {prop:'phone',label:'手机号'}, - {prop:'gender',label:'性别'}, + {prop:'gender',label:'性别',type:'dict',dictType:'user_gender'}, {prop:'birthday',label:'出生日期'}, {prop:'email',label:'邮箱'}, {prop:'address',label:'地址'}, - {prop:'isLogin',label:'禁止登录'}, + {prop:'isLogin',label:'是否禁用',type:'switch', + option:{ + activeValue:0,activeColor:'#13ce66',activeText:'启用', + inactiveValue:1,inactiveColor:'#ff4949',inactiveText:'禁用', + inlinePrompt: false + } + }, {prop:'updateTime',label:'更新时间'}, {prop:'remarks',label:'描述'} ], @@ -71,6 +77,18 @@ onUserPage(); } + function onSwitchChange(row:any){ + update({ + id: row.id, + isLogin: row.isLogin + }).then(res=>{ + if(res){ + ElMessage.success('操作成功!'); + onUserPage(); + } + }); + } + const formRef = ref(); const form = reactive({ userVisible: false, @@ -201,7 +219,7 @@ + @onSizeChange="onSizeChange" @onCurrentChange="onCurrentChange" @onSwitchChange="onSwitchChange"> 添加 diff --git a/tansci-boot/src/main/java/com/tansci/common/constant/Constants.java b/tansci-boot/src/main/java/com/tansci/common/constant/Constants.java index c5a9b70..2e947de 100644 --- a/tansci-boot/src/main/java/com/tansci/common/constant/Constants.java +++ b/tansci-boot/src/main/java/com/tansci/common/constant/Constants.java @@ -15,6 +15,12 @@ public class Constants { public final static Integer NOT_DEL_FALG = 0; public final static Integer IS_DEL_FALG = 1; + /** + * 用户是否禁用:0、正常,1、禁用 + */ + public final static Integer USER_IS_LOGIN_IN = 0; + public final static Integer USER_IS_LOGIN_ON = 1; + /** * 操作日志状态:0、成功,1、失败 */ diff --git a/tansci-boot/src/main/java/com/tansci/controller/AuthController.java b/tansci-boot/src/main/java/com/tansci/controller/AuthController.java index e81957b..06504e3 100644 --- a/tansci-boot/src/main/java/com/tansci/controller/AuthController.java +++ b/tansci-boot/src/main/java/com/tansci/controller/AuthController.java @@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.tansci.common.WrapMapper; import com.tansci.common.Wrapper; +import com.tansci.common.annotation.Log; +import com.tansci.common.constant.Constants; import com.tansci.domain.SysLoginLog; import com.tansci.domain.SysUser; import com.tansci.domain.vo.SysUserVo; @@ -66,14 +68,16 @@ public class AuthController { } @ApiOperation(value = "在线用户", notes = "在线用户") + @Log(modul = "鉴权管理", type = Constants.SELECT, desc = "在线用户") @GetMapping("/onlineUser") public Wrapper> onlineUser(Page page, String username) { return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysLoginLogService.onlineUser(page, username)); } @ApiOperation(value = "踢人", notes = "踢人") - @GetMapping("/kick") - public Wrapper kick(String token) { + @Log(modul = "鉴权管理", type = Constants.UPDATE, desc = "踢人") + @GetMapping("/kick/{token}") + public Wrapper kick(@PathVariable String token) { StpUtil.logoutByTokenValue(token); return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, "ok"); } diff --git a/tansci-boot/src/main/java/com/tansci/controller/SysDictController.java b/tansci-boot/src/main/java/com/tansci/controller/SysDictController.java index 300e5d0..ad28c7d 100644 --- a/tansci-boot/src/main/java/com/tansci/controller/SysDictController.java +++ b/tansci-boot/src/main/java/com/tansci/controller/SysDictController.java @@ -32,8 +32,16 @@ public class SysDictController { @Autowired private SysDictService sysDictService; + @ApiOperation(value = "列表树", notes = "列表树") + @Log(modul = "字典管理", type = Constants.SELECT, desc = "列表树") + @GetMapping("/tree") + @SaCheckPermission("dict:list") + public Wrapper> tree(SysDict dict) { + return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysDictService.tree(dict)); + } + @ApiOperation(value = "列表", notes = "列表") - @Log(modul = "字典管理-列表", type = Constants.SELECT, desc = "列表") + @Log(modul = "字典管理", type = Constants.SELECT, desc = "列表") @GetMapping("/list") @SaCheckPermission("dict:list") public Wrapper> list(SysDict dict) { @@ -41,7 +49,7 @@ public class SysDictController { } @ApiOperation(value = "添加", notes = "添加") - @Log(modul = "字典管理-添加", type = Constants.INSERT, desc = "添加") + @Log(modul = "字典管理", type = Constants.INSERT, desc = "添加") @PostMapping("/save") @SaCheckPermission("dict:save") public Wrapper save(@RequestBody SysDict dict) { @@ -51,7 +59,7 @@ public class SysDictController { } @ApiOperation(value = "删除", notes = "删除") - @Log(modul = "字典管理-删除", type = Constants.DELETE, desc = "删除") + @Log(modul = "字典管理", type = Constants.DELETE, desc = "删除") @GetMapping("/delete/{id}") @SaCheckPermission("dict:delete") public Wrapper delete(@PathVariable String id) { @@ -59,7 +67,7 @@ public class SysDictController { } @ApiOperation(value = "修改", notes = "修改") - @Log(modul = "字典管理-修改", type = Constants.UPDATE, desc = "修改") + @Log(modul = "字典管理", type = Constants.UPDATE, desc = "修改") @PostMapping("/update") @SaCheckPermission("dict:update") public Wrapper update(@RequestBody SysDict dict) { diff --git a/tansci-boot/src/main/java/com/tansci/controller/SysLogController.java b/tansci-boot/src/main/java/com/tansci/controller/SysLogController.java index ebfeb12..496a13b 100644 --- a/tansci-boot/src/main/java/com/tansci/controller/SysLogController.java +++ b/tansci-boot/src/main/java/com/tansci/controller/SysLogController.java @@ -37,14 +37,14 @@ public class SysLogController { private SysOperLogService sysOperLogService; @ApiOperation(value = "登录日志", notes = "登录日志") - @Log(modul = "日志管理-登录日志", type = Constants.DELETE, desc = "登录日志") + @Log(modul = "日志管理", type = Constants.DELETE, desc = "登录日志") @GetMapping("/loginLog") public Wrapper> loginLog(Page page) { return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysLoginLogService.page(page)); } @ApiOperation(value = "操作日志", notes = "操作日志") - @Log(modul = "日志管理-操作日志", type = Constants.DELETE, desc = "操作日志") + @Log(modul = "日志管理", type = Constants.DELETE, desc = "操作日志") @GetMapping("/operLog") public Wrapper> operLog(Page page) { return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysOperLogService.page(page)); diff --git a/tansci-boot/src/main/java/com/tansci/controller/SysMenuController.java b/tansci-boot/src/main/java/com/tansci/controller/SysMenuController.java index 2f3d734..3018eed 100644 --- a/tansci-boot/src/main/java/com/tansci/controller/SysMenuController.java +++ b/tansci-boot/src/main/java/com/tansci/controller/SysMenuController.java @@ -34,14 +34,14 @@ public class SysMenuController { private SysMenuService sysMenuService; @ApiOperation(value = "当前用户权限菜单列表", notes = "当前用户权限菜单列表") - @Log(modul = "菜单管理-当前用户权限菜单列表", type = Constants.SELECT, desc = "当前用户权限菜单列表") + @Log(modul = "菜单管理", type = Constants.SELECT, desc = "当前用户权限菜单列表") @GetMapping("/menus") public Wrapper> menus() { return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysMenuService.menus()); } @ApiOperation(value = "菜单树", notes = "菜单树") - @Log(modul = "菜单管理-菜单树", type = Constants.SELECT, desc = "菜单树") + @Log(modul = "菜单管理", type = Constants.SELECT, desc = "菜单树") @GetMapping("/tree") @SaCheckPermission("menu:list") public Wrapper> tree(SysMenu menu) { @@ -49,7 +49,7 @@ public class SysMenuController { } @ApiOperation(value = "详情", notes = "详情") - @Log(modul = "菜单管理-详情", type = Constants.SELECT, desc = "详情") + @Log(modul = "菜单管理", type = Constants.SELECT, desc = "详情") @GetMapping("/getById/{id}") @SaCheckPermission("menu:view") public Wrapper getById(@PathVariable String id) { @@ -57,7 +57,7 @@ public class SysMenuController { } @ApiOperation(value = "添加", notes = "添加") - @Log(modul = "菜单管理-添加", type = Constants.INSERT, desc = "添加") + @Log(modul = "菜单管理", type = Constants.INSERT, desc = "添加") @PostMapping("/save") @SaCheckPermission("menu:save") public Wrapper save(@RequestBody SysMenu menu) { @@ -68,7 +68,7 @@ public class SysMenuController { } @ApiOperation(value = "删除", notes = "删除") - @Log(modul = "菜单管理-删除", type = Constants.DELETE, desc = "删除") + @Log(modul = "菜单管理", type = Constants.DELETE, desc = "删除") @GetMapping("/delete/{id}") @SaCheckPermission("menu:delete") public Wrapper delete(@PathVariable String id) { @@ -76,7 +76,7 @@ public class SysMenuController { } @ApiOperation(value = "修改", notes = "修改") - @Log(modul = "菜单管理-修改", type = Constants.UPDATE, desc = "修改") + @Log(modul = "菜单管理", type = Constants.UPDATE, desc = "修改") @PostMapping("/update") @SaCheckPermission("menu:update") public Wrapper update(@RequestBody SysMenu menu) { diff --git a/tansci-boot/src/main/java/com/tansci/controller/SysOrgController.java b/tansci-boot/src/main/java/com/tansci/controller/SysOrgController.java index b3a0c04..248e37a 100644 --- a/tansci-boot/src/main/java/com/tansci/controller/SysOrgController.java +++ b/tansci-boot/src/main/java/com/tansci/controller/SysOrgController.java @@ -34,7 +34,7 @@ public class SysOrgController { private SysOrgService sysOrgService; @ApiOperation(value = "列表", notes = "列表") - @Log(modul = "组织管理-列表", type = Constants.SELECT, desc = "列表") + @Log(modul = "组织管理", type = Constants.SELECT, desc = "列表") @GetMapping("/list") @SaCheckPermission("org:list") public Wrapper> list(SysOrg org) { @@ -42,7 +42,7 @@ public class SysOrgController { } @ApiOperation(value = "添加", notes = "添加") - @Log(modul = "组织管理-添加", type = Constants.INSERT, desc = "添加") + @Log(modul = "组织管理", type = Constants.INSERT, desc = "添加") @PostMapping("/save") @SaCheckPermission("org:save") public Wrapper save(@RequestBody SysOrg org) { @@ -54,7 +54,7 @@ public class SysOrgController { } @ApiOperation(value = "删除", notes = "删除") - @Log(modul = "组织管理-删除", type = Constants.DELETE, desc = "删除") + @Log(modul = "组织管理", type = Constants.DELETE, desc = "删除") @GetMapping("/delete/{id}") @SaCheckPermission("org:delete") public Wrapper delete(@PathVariable String id) { @@ -62,7 +62,7 @@ public class SysOrgController { } @ApiOperation(value = "修改", notes = "修改") - @Log(modul = "组织管理-修改", type = Constants.UPDATE, desc = "修改") + @Log(modul = "组织管理", type = Constants.UPDATE, desc = "修改") @PostMapping("/update") @SaCheckPermission("org:update") public Wrapper update(@RequestBody SysOrg org) { diff --git a/tansci-boot/src/main/java/com/tansci/controller/SysRoleController.java b/tansci-boot/src/main/java/com/tansci/controller/SysRoleController.java index 9de492d..f8700c3 100644 --- a/tansci-boot/src/main/java/com/tansci/controller/SysRoleController.java +++ b/tansci-boot/src/main/java/com/tansci/controller/SysRoleController.java @@ -34,14 +34,14 @@ public class SysRoleController { private SysRoleService sysRoleService; @ApiOperation(value = "分页", notes = "分页") - @Log(modul = "角色管理-分页", type = Constants.SELECT, desc = "列表") + @Log(modul = "角色管理", type = Constants.SELECT, desc = "列表") @GetMapping("/page") public Wrapper> page(Page page, SysRole role) { return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysRoleService.page(page, role)); } @ApiOperation(value = "列表", notes = "列表") - @Log(modul = "角色管理-列表", type = Constants.SELECT, desc = "列表") + @Log(modul = "角色管理", type = Constants.SELECT, desc = "列表") @GetMapping("/list") @SaCheckPermission("role:list") public Wrapper> list(SysRole role) { @@ -49,7 +49,7 @@ public class SysRoleController { } @ApiOperation(value = "添加", notes = "添加") - @Log(modul = "角色管理-添加", type = Constants.INSERT, desc = "添加") + @Log(modul = "角色管理", type = Constants.INSERT, desc = "添加") @PostMapping("/save") @SaCheckPermission("role:save") public Wrapper save(@RequestBody SysRole role) { @@ -57,7 +57,7 @@ public class SysRoleController { } @ApiOperation(value = "删除", notes = "删除") - @Log(modul = "角色管理-删除", type = Constants.DELETE, desc = "删除") + @Log(modul = "角色管理", type = Constants.DELETE, desc = "删除") @GetMapping("/delete/{id}") @SaCheckPermission("role:delete") public Wrapper delete(@PathVariable String id) { @@ -65,7 +65,7 @@ public class SysRoleController { } @ApiOperation(value = "修改", notes = "修改") - @Log(modul = "角色管理-修改", type = Constants.UPDATE, desc = "修改") + @Log(modul = "角色管理", type = Constants.UPDATE, desc = "修改") @PostMapping("/update") @SaCheckPermission("role:update") public Wrapper update(@RequestBody SysRole role) { @@ -73,7 +73,7 @@ public class SysRoleController { } @ApiOperation(value = "数据权限", notes = "数据权限") - @Log(modul = "角色管理-数据权限", type = Constants.UPDATE, desc = "数据权限") + @Log(modul = "角色管理", type = Constants.UPDATE, desc = "数据权限") @PostMapping("/dataPermissions") @SaCheckPermission("role:data") public Wrapper dataPermissions(@RequestBody SysRole role) { @@ -81,7 +81,7 @@ public class SysRoleController { } @ApiOperation(value = "获取权限组织", notes = "获取权限组织") - @Log(modul = "角色管理-获取权限组织", type = Constants.UPDATE, desc = "获取权限组织") + @Log(modul = "角色管理", type = Constants.UPDATE, desc = "获取权限组织") @GetMapping("/orgList/{roleId}") @SaCheckPermission("role:data") public Wrapper orgList(@PathVariable String roleId) { @@ -89,7 +89,7 @@ public class SysRoleController { } @ApiOperation(value = "菜单权限", notes = "菜单权限") - @Log(modul = "角色管理-菜单权限", type = Constants.UPDATE, desc = "菜单权限") + @Log(modul = "角色管理", type = Constants.UPDATE, desc = "菜单权限") @PostMapping("/menuPermissions") @SaCheckPermission("role:menu") public Wrapper menuPermissions(@RequestBody SysRole role) { @@ -97,7 +97,7 @@ public class SysRoleController { } @ApiOperation(value = "获取权限菜单", notes = "获取权限菜单") - @Log(modul = "角色管理-获取权限菜单", type = Constants.UPDATE, desc = "获取权限菜单") + @Log(modul = "角色管理", type = Constants.UPDATE, desc = "获取权限菜单") @GetMapping("/menuList/{roleId}") @SaCheckPermission("role:menu") public Wrapper menuList(@PathVariable String roleId) { diff --git a/tansci-boot/src/main/java/com/tansci/controller/SysUserController.java b/tansci-boot/src/main/java/com/tansci/controller/SysUserController.java index 6acd80c..044d0bf 100644 --- a/tansci-boot/src/main/java/com/tansci/controller/SysUserController.java +++ b/tansci-boot/src/main/java/com/tansci/controller/SysUserController.java @@ -34,14 +34,14 @@ public class SysUserController { private SysUserService sysUserService; @ApiOperation(value = "分页", notes = "分页") - @Log(modul = "用户管理-分页", type = Constants.SELECT, desc = "分页") + @Log(modul = "用户管理", type = Constants.SELECT, desc = "分页") @GetMapping("/page") public Wrapper> page(Page page, SysUser user) { return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, sysUserService.page(page, user)); } @ApiOperation(value = "列表", notes = "列表") - @Log(modul = "用户管理-列表", type = Constants.SELECT, desc = "列表") + @Log(modul = "用户管理", type = Constants.SELECT, desc = "列表") @GetMapping("/list") @SaCheckPermission("user:list") public Wrapper> list(SysUser user) { @@ -49,7 +49,7 @@ public class SysUserController { } @ApiOperation(value = "添加", notes = "添加") - @Log(modul = "用户管理-添加", type = Constants.INSERT, desc = "添加") + @Log(modul = "用户管理", type = Constants.INSERT, desc = "添加") @PostMapping("/save") @SaCheckPermission("user:save") public Wrapper save(@RequestBody SysUser user) { @@ -57,7 +57,7 @@ public class SysUserController { } @ApiOperation(value = "修改", notes = "修改") - @Log(modul = "用户管理-修改", type = Constants.UPDATE, desc = "修改") + @Log(modul = "用户管理", type = Constants.UPDATE, desc = "修改") @PostMapping("/update") @SaCheckPermission("user:update") public Wrapper update(@RequestBody SysUser user) { @@ -65,7 +65,7 @@ public class SysUserController { } @ApiOperation(value = "删除", notes = "删除") - @Log(modul = "用户管理-删除", type = Constants.DELETE, desc = "删除") + @Log(modul = "用户管理", type = Constants.DELETE, desc = "删除") @GetMapping("/delete/{id}") @SaCheckPermission("user:delete") public Wrapper delete(@PathVariable String id) { @@ -73,7 +73,7 @@ public class SysUserController { } @ApiOperation(value = "修改密码", notes = "修改密码") - @Log(modul = "用户管理-修改密码", type = Constants.UPDATE, desc = "修改密码") + @Log(modul = "用户管理", type = Constants.UPDATE, desc = "修改密码") @PostMapping("/modifyPass") @SaCheckPermission("user:password") public Wrapper modifyPass(@RequestBody SysUser user) { diff --git a/tansci-boot/src/main/java/com/tansci/domain/SysLoginLog.java b/tansci-boot/src/main/java/com/tansci/domain/SysLoginLog.java index 9fd4ddc..ea9c947 100644 --- a/tansci-boot/src/main/java/com/tansci/domain/SysLoginLog.java +++ b/tansci-boot/src/main/java/com/tansci/domain/SysLoginLog.java @@ -57,6 +57,9 @@ public class SysLoginLog { @ApiModelProperty(value = "token") private String token; + @ApiModelProperty(value = "失败原因") + private String message; + @ApiModelProperty(value = "创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8") private LocalDateTime createTime; diff --git a/tansci-boot/src/main/java/com/tansci/service/SysDictService.java b/tansci-boot/src/main/java/com/tansci/service/SysDictService.java index 020f6c1..daa9a1d 100644 --- a/tansci-boot/src/main/java/com/tansci/service/SysDictService.java +++ b/tansci-boot/src/main/java/com/tansci/service/SysDictService.java @@ -14,6 +14,8 @@ import java.util.List; **/ public interface SysDictService extends IService { + List tree(SysDict dict); + List list(SysDict dict); Object delete(String id); diff --git a/tansci-boot/src/main/java/com/tansci/service/impl/SysDictServiceImpl.java b/tansci-boot/src/main/java/com/tansci/service/impl/SysDictServiceImpl.java index 8486396..ab53099 100644 --- a/tansci-boot/src/main/java/com/tansci/service/impl/SysDictServiceImpl.java +++ b/tansci-boot/src/main/java/com/tansci/service/impl/SysDictServiceImpl.java @@ -24,10 +24,12 @@ import java.util.stream.Collectors; public class SysDictServiceImpl extends ServiceImpl implements SysDictService { @Override - public List list(SysDict dict) { + public List tree(SysDict dict) { List list = this.baseMapper.selectList( Wrappers.lambdaQuery() .eq(Objects.nonNull(dict.getParentId()), SysDict::getParentId, dict.getParentId()) + .eq(Objects.nonNull(dict.getGroupName()), SysDict::getGroupName, dict.getGroupName()) + .eq(Objects.nonNull(dict.getDicValue()), SysDict::getDicValue, dict.getDicValue()) .orderByDesc(SysDict::getUpdateTime) ); list = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SysDict::getId))), ArrayList::new)); @@ -38,6 +40,17 @@ public class SysDictServiceImpl extends ServiceImpl impl return orgList; } + @Override + public List list(SysDict dict) { + return this.baseMapper.selectList( + Wrappers.lambdaQuery() + .eq(Objects.nonNull(dict.getParentId()), SysDict::getParentId, dict.getParentId()) + .eq(Objects.nonNull(dict.getGroupName()), SysDict::getGroupName, dict.getGroupName()) + .eq(Objects.nonNull(dict.getDicValue()), SysDict::getDicValue, dict.getDicValue()) + .orderByDesc(SysDict::getUpdateTime) + ); + } + @Override public Object delete(String id) { List orgs = this.baseMapper.selectList(Wrappers.lambdaQuery().eq(SysDict::getParentId, id)); diff --git a/tansci-boot/src/main/java/com/tansci/service/impl/SysLoginLogServiceImpl.java b/tansci-boot/src/main/java/com/tansci/service/impl/SysLoginLogServiceImpl.java index fe48608..3e756f5 100644 --- a/tansci-boot/src/main/java/com/tansci/service/impl/SysLoginLogServiceImpl.java +++ b/tansci-boot/src/main/java/com/tansci/service/impl/SysLoginLogServiceImpl.java @@ -11,7 +11,9 @@ import com.tansci.service.SysLoginLogService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * @ClassName: SysLoginLogServiceImpl.java @@ -26,11 +28,15 @@ public class SysLoginLogServiceImpl extends ServiceImpl onlineUser(Page page, String username) { - return this.baseMapper.selectPage(page, - Wrappers.lambdaQuery() - .in(SysLoginLog::getToken, StpUtil.searchTokenValue("", -1, 0, true)) - .eq(Objects.nonNull(username), SysLoginLog::getUsername, username) - ); + List tokens = StpUtil.searchTokenValue("", -1, 99999, true); + if (Objects.nonNull(tokens) && tokens.size() > 0) { + return this.baseMapper.selectPage(page, + Wrappers.lambdaQuery() + .in(SysLoginLog::getToken, tokens.stream().map(item -> item.replace("token:login:token:", "")).collect(Collectors.toList())) + .eq(Objects.nonNull(username), SysLoginLog::getUsername, username) + ); + } + return new Page<>(); } } diff --git a/tansci-boot/src/main/java/com/tansci/service/impl/SysMenuServiceImpl.java b/tansci-boot/src/main/java/com/tansci/service/impl/SysMenuServiceImpl.java index 0ea9667..8cf2efd 100644 --- a/tansci-boot/src/main/java/com/tansci/service/impl/SysMenuServiceImpl.java +++ b/tansci-boot/src/main/java/com/tansci/service/impl/SysMenuServiceImpl.java @@ -70,6 +70,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl .eq(SysMenu::getIsDel, Constants.NOT_DEL_FALG) .eq(SysMenu::getIsShow, 1) .eq(Objects.nonNull(menuIds) && menuIds.size() > 0, SysMenu::getId, menuIds) + .orderByAsc(SysMenu::getSort) ); List newList = new ArrayList<>(); diff --git a/tansci-boot/src/main/java/com/tansci/service/impl/SysUserServiceImpl.java b/tansci-boot/src/main/java/com/tansci/service/impl/SysUserServiceImpl.java index 2e25fee..386bb02 100644 --- a/tansci-boot/src/main/java/com/tansci/service/impl/SysUserServiceImpl.java +++ b/tansci-boot/src/main/java/com/tansci/service/impl/SysUserServiceImpl.java @@ -126,15 +126,23 @@ public class SysUserServiceImpl extends ServiceImpl impl String code = (String) request.getSession().getAttribute("verifyCode"); if (Objects.isNull(user.getCode()) || !Objects.equals(code, user.getCode())) { loginLog.setType("失败"); + loginLog.setMessage("验证码有误"); throw new BusinessException("验证码有误,请重新获取!"); } SysUser sysUser = this.baseMapper.selectOne(Wrappers.lambdaQuery().eq(SysUser::getUsername, user.getUsername())); if (Objects.isNull(sysUser) && !Objects.equals(sysUser.getPassword(), Sha256Util.getSHA256(user.getPassword()))) { loginLog.setType("失败"); + loginLog.setMessage("用户名或密码有误"); throw new BusinessException("登录失败,用户名或密码有误!"); } + if(Objects.equals(Constants.USER_IS_LOGIN_ON, sysUser.getIsLogin())){ + loginLog.setType("失败"); + loginLog.setMessage("该账号已被禁用"); + throw new BusinessException("登录失败,该账号已被禁用!"); + } + // 生成token StpUtil.login(sysUser.getId()); loginLog.setToken(StpUtil.getTokenInfo().getTokenValue());