From cc3df48ed83860888519dde25b792494a9127ec2 Mon Sep 17 00:00:00 2001 From: damonyuan <404054358@qq.com> Date: Mon, 2 Sep 2024 00:43:47 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E5=90=8C=E6=AD=A5=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=9A=84=E7=99=BB=E5=BD=95=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E7=9A=84=E8=BF=94=E5=9B=9E=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/utils/request/index.ts | 1 + .../com/mdd/admin/LikeAdminInterceptor.java | 8 ++-- .../adminapi/auth/AdminController.java | 35 +++++++++++++++ .../service/admin/IAdminRoleService.java | 3 -- .../admin/service/admin/IAdminService.java | 7 +++ .../impl/admin/AdminRoleServiceImpl.java | 7 ++- .../service/impl/admin/AdminServiceImpl.java | 13 ++++++ .../impl/system/SystemLoginServiceImpl.java | 4 ++ .../impl/system/SystemRoleServiceImpl.java | 45 ++++++++++++++++++- .../service/system/ISystemRoleService.java | 6 +++ .../com/mdd/admin/vo/auth/AdminMySelfVo.java | 26 +++++++++++ .../src/main/resources/application.yml | 2 +- 12 files changed, 146 insertions(+), 11 deletions(-) create mode 100644 server/like-admin/src/main/java/com/mdd/admin/controller/adminapi/auth/AdminController.java create mode 100644 server/like-admin/src/main/java/com/mdd/admin/vo/auth/AdminMySelfVo.java diff --git a/admin/src/utils/request/index.ts b/admin/src/utils/request/index.ts index 3c03d0c0..228d41f6 100644 --- a/admin/src/utils/request/index.ts +++ b/admin/src/utils/request/index.ts @@ -35,6 +35,7 @@ const axiosHooks: AxiosHooks = { config.params = {} } config.headers = headers + config.url = config.url?.replace(".", "/") return config }, requestInterceptorsCatchHook(err) { diff --git a/server/like-admin/src/main/java/com/mdd/admin/LikeAdminInterceptor.java b/server/like-admin/src/main/java/com/mdd/admin/LikeAdminInterceptor.java index d932003b..ee7ebe78 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/LikeAdminInterceptor.java +++ b/server/like-admin/src/main/java/com/mdd/admin/LikeAdminInterceptor.java @@ -49,7 +49,7 @@ public class LikeAdminInterceptor implements HandlerInterceptor { // 请求方法类型 String reqUri = request.getRequestURI(); - if (!(handler instanceof HandlerMethod) || !reqUri.startsWith("/api")) { + if (!(handler instanceof HandlerMethod) || ( !reqUri.startsWith("/api") && !reqUri.startsWith("/adminapi"))) { return HandlerInterceptor.super.preHandle(request, response, handler); } @@ -67,7 +67,7 @@ public class LikeAdminInterceptor implements HandlerInterceptor { // 演示环境拦截 String env = YmlUtils.get("like.production"); if (StringUtils.isNotNull(env) && env.equals("true")) { - String prefix = "/api/"; + String prefix = "/adminapi/"; String route = request.getRequestURI().replaceFirst(prefix, ""); String auths = route.replace("/", ":"); List ignoreUrl = Arrays.asList("system:login", "system:logout"); @@ -155,9 +155,9 @@ public class LikeAdminInterceptor implements HandlerInterceptor { // 用户校验 Admin adminUser = systemAuthAdminMapper.selectOne( new QueryWrapper() - .select("id,username,role_ids,dept_ids,post_ids,is_disable") + .select("id,name,disable") .eq("id", Integer.parseInt(id.toString())) - .eq("is_delete", 0) + .isNull("delete_time") .last("limit 1")); // 删除校验 diff --git a/server/like-admin/src/main/java/com/mdd/admin/controller/adminapi/auth/AdminController.java b/server/like-admin/src/main/java/com/mdd/admin/controller/adminapi/auth/AdminController.java new file mode 100644 index 00000000..bf25c438 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/controller/adminapi/auth/AdminController.java @@ -0,0 +1,35 @@ +package com.mdd.admin.controller.adminapi.auth; + +import com.mdd.admin.LikeAdminThreadLocal; +import com.mdd.admin.service.IIndexService; +import com.mdd.admin.service.admin.IAdminService; +import com.mdd.admin.vo.auth.AdminMySelfVo; +import com.mdd.common.aop.NotLogin; +import com.mdd.common.core.AjaxResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.Map; + +@Slf4j +@RestController +@RequestMapping("adminapi/auth/admin") +@Api(tags = "管理员详情管理") +public class AdminController { + + @Resource + IAdminService iAdminService; + + @GetMapping("/mySelf") + @ApiOperation(value="获取当前管理员信息") + public AjaxResult mySelf() { + AdminMySelfVo mySelf = iAdminService.mySelf(LikeAdminThreadLocal.getAdminId()); + return AjaxResult.success(mySelf); + } + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/admin/IAdminRoleService.java b/server/like-admin/src/main/java/com/mdd/admin/service/admin/IAdminRoleService.java index 74dc2b9e..cc9827fc 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/admin/IAdminRoleService.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/admin/IAdminRoleService.java @@ -14,7 +14,4 @@ public interface IAdminRoleService { */ List getRoleIdAttr(Integer adminId); - /** - * - */ } diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/admin/IAdminService.java b/server/like-admin/src/main/java/com/mdd/admin/service/admin/IAdminService.java index 874f141e..10df92e7 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/admin/IAdminService.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/admin/IAdminService.java @@ -5,6 +5,7 @@ import com.mdd.admin.validate.system.SystemAdminCreateValidate; import com.mdd.admin.validate.system.SystemAdminSearchValidate; import com.mdd.admin.validate.system.SystemAdminUpInfoValidate; import com.mdd.admin.validate.system.SystemAdminUpdateValidate; +import com.mdd.admin.vo.auth.AdminMySelfVo; import com.mdd.admin.vo.system.SystemAuthAdminDetailVo; import com.mdd.admin.vo.system.SystemAuthAdminListedVo; import com.mdd.admin.vo.system.SystemAuthAdminSelvesVo; @@ -85,4 +86,10 @@ public interface IAdminService { */ void disable(Integer id, Integer adminId); + /** + * 查看管理员详情 + * @param id + * @return + */ + AdminMySelfVo mySelf(Integer id); } diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/impl/admin/AdminRoleServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/impl/admin/AdminRoleServiceImpl.java index 64283572..953fd6bb 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/impl/admin/AdminRoleServiceImpl.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/impl/admin/AdminRoleServiceImpl.java @@ -2,6 +2,7 @@ package com.mdd.admin.service.impl.admin; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mdd.admin.service.admin.IAdminRoleService; +import com.mdd.common.entity.admin.Admin; import com.mdd.common.entity.admin.AdminRole; import com.mdd.common.mapper.admin.AdminRoleMapper; import org.springframework.stereotype.Service; @@ -21,7 +22,11 @@ public class AdminRoleServiceImpl implements IAdminRoleService { public List getRoleIdAttr(Integer adminId) { List ret = new ArrayList(); List rolesList = adminRoleMapper.selectList(new QueryWrapper().eq("admin_id", adminId).select("role_id")); - System.out.println(rolesList); + if (rolesList.size() > 0) { + for (AdminRole adminRole : rolesList) { + ret.add(adminRole.getRoleId()); + } + } return ret; } } diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/impl/admin/AdminServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/impl/admin/AdminServiceImpl.java index 4ddbcd6b..59c6fc2b 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/impl/admin/AdminServiceImpl.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/impl/admin/AdminServiceImpl.java @@ -1,6 +1,7 @@ package com.mdd.admin.service.impl.admin; import cn.dev33.satoken.stp.StpUtil; +import com.alibaba.fastjson2.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Assert; @@ -13,6 +14,7 @@ import com.mdd.admin.validate.system.SystemAdminCreateValidate; import com.mdd.admin.validate.system.SystemAdminSearchValidate; import com.mdd.admin.validate.system.SystemAdminUpInfoValidate; import com.mdd.admin.validate.system.SystemAdminUpdateValidate; +import com.mdd.admin.vo.auth.AdminMySelfVo; import com.mdd.admin.vo.system.*; import com.mdd.common.core.PageResult; import com.mdd.common.entity.admin.Admin; @@ -414,4 +416,15 @@ public class AdminServiceImpl implements IAdminService { } } + @Override + public AdminMySelfVo mySelf(Integer id) { + AdminMySelfVo ret = new AdminMySelfVo(); + ret.setMenu(new JSONArray()); + ret.setPermissions(new ArrayList(){{ + add("*"); + }}); + ret.setUser(); + return ret; + } + } diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/SystemLoginServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/SystemLoginServiceImpl.java index a6a5573c..ca0d545f 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/SystemLoginServiceImpl.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/SystemLoginServiceImpl.java @@ -4,6 +4,7 @@ import cn.dev33.satoken.stp.StpUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mdd.admin.cache.CaptchaCache; import com.mdd.admin.service.system.ISystemLoginService; +import com.mdd.admin.service.system.ISystemRoleService; import com.mdd.admin.validate.system.SystemAdminLoginsValidate; import com.mdd.admin.vo.system.SystemCaptchaVo; import com.mdd.admin.vo.system.SystemLoginVo; @@ -35,6 +36,8 @@ import java.util.*; @Service public class SystemLoginServiceImpl implements ISystemLoginService { + @Resource + ISystemRoleService iSystemRoleService; @Resource Producer captchaProducer; @@ -136,6 +139,7 @@ public class SystemLoginServiceImpl implements ISystemLoginService { vo.setName(sysAdmin.getName()); vo.setAvatar(UrlUtils.toAbsoluteUrl(avatar)); vo.setToken(StpUtil.getTokenValue()); + vo.setRoleName(ListUtils.listToStringByStr(iSystemRoleService.getRoleNameByAdminId(sysAdmin.getId()), "/")); return vo; } catch (Exception e) { Integer adminId = StringUtils.isNotNull(sysAdmin.getId()) ? sysAdmin.getId() : 0; diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/SystemRoleServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/SystemRoleServiceImpl.java index a624dfd0..c69e3aa0 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/SystemRoleServiceImpl.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/SystemRoleServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.mdd.admin.service.admin.IAdminRoleService; import com.mdd.admin.service.system.ISystemAuthPermService; import com.mdd.admin.service.system.ISystemRoleService; import com.mdd.admin.validate.commons.PageValidate; @@ -12,9 +13,11 @@ import com.mdd.admin.validate.system.SystemRoleUpdateValidate; import com.mdd.admin.vo.system.SystemAuthRoleVo; import com.mdd.common.core.PageResult; import com.mdd.common.entity.admin.Admin; +import com.mdd.common.entity.admin.AdminRole; import com.mdd.common.entity.system.SystemRole; import com.mdd.common.mapper.admin.AdminMapper; import com.mdd.common.mapper.system.SystemRoleMapper; +import com.mdd.common.util.StringUtils; import com.mdd.common.util.TimeUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -31,13 +34,15 @@ import java.util.*; public class SystemRoleServiceImpl implements ISystemRoleService { @Resource - AdminMapper systemAuthAdminMapper; + AdminMapper adminMapper; @Resource SystemRoleMapper systemRoleMapper; @Resource ISystemAuthPermService iSystemAuthPermService; + @Resource + IAdminRoleService iAdminRoleService; /** * 角色所有 @@ -201,7 +206,7 @@ public class SystemRoleServiceImpl implements ISystemRoleService { .last("limit 1")), "角色已不存在!"); - Assert.isNull(systemAuthAdminMapper.selectOne(new QueryWrapper() + Assert.isNull(adminMapper.selectOne(new QueryWrapper() .select("id", "role_ids", "nickname") .apply("find_in_set({0}, role_ids)", id) .eq("is_delete", 0)), @@ -211,4 +216,40 @@ public class SystemRoleServiceImpl implements ISystemRoleService { iSystemAuthPermService.batchDeleteByRoleId(id); } + @Override + public List getRoleNameByAdminId(Integer adminId) { + List ret = new ArrayList(); + Admin admin = adminMapper.selectOne(new QueryWrapper().eq("id", adminId).isNull("delete_time")); + if (StringUtils.isNull(admin)) { + return ret; + } else { + if (admin.getRoot().equals(1)) { + ret.add("系统管理员"); + } else { + List roleIds = iAdminRoleService.getRoleIdAttr(adminId); + if (roleIds.size() > 0) { + ret = getNamesByIds(roleIds); + } else { + return ret; + } + } + } + return ret; + } + + /** + * 根据ids 返回 + * @param ids + * @return + */ + private List getNamesByIds(List ids) { + List ret = new ArrayList(); + List adminRoleList = systemRoleMapper.selectList(new QueryWrapper().in("id", ids).isNull("delete_time")); + if (adminRoleList.size() > 0) { + for (SystemRole item : adminRoleList) { + ret.add(item.getName()); + } + } + return ret; + } } diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/system/ISystemRoleService.java b/server/like-admin/src/main/java/com/mdd/admin/service/system/ISystemRoleService.java index e035a791..ba1fb1c6 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/system/ISystemRoleService.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/system/ISystemRoleService.java @@ -64,4 +64,10 @@ public interface ISystemRoleService { */ void del(Integer id); + /** + * 根据adminID 返回角色名称 + * @param adminId + */ + List getRoleNameByAdminId(Integer adminId); + } diff --git a/server/like-admin/src/main/java/com/mdd/admin/vo/auth/AdminMySelfVo.java b/server/like-admin/src/main/java/com/mdd/admin/vo/auth/AdminMySelfVo.java new file mode 100644 index 00000000..798b8b5a --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/vo/auth/AdminMySelfVo.java @@ -0,0 +1,26 @@ +package com.mdd.admin.vo.auth; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +@ApiModel("相册分类Vo") +public class AdminMySelfVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "当前管理员角色拥有的菜单") + private JSONArray menu; + + @ApiModelProperty(value = "当前管理员橘色拥有的按钮权限") + private List permissions; + + @ApiModelProperty(value = "user") + private JSONObject user; +} diff --git a/server/like-admin/src/main/resources/application.yml b/server/like-admin/src/main/resources/application.yml index feac3d99..0e3bc084 100644 --- a/server/like-admin/src/main/resources/application.yml +++ b/server/like-admin/src/main/resources/application.yml @@ -80,7 +80,7 @@ mybatis-plus: # Sa-token配置 sa-token: - token-name: like-admin # token的名称 + token-name: token # token的名称 timeout: 2592000 # token有效期单位s(默认30天,-1代表永不过期) activity-timeout: -1 # token临时有效期(指定时间无操作掉线) is-concurrent: true # 是否允许同一账号并发登录