This commit is contained in:
TinyAnts 2022-03-30 14:58:31 +08:00
parent 8e6f2f8ca3
commit 539216f2dc
38 changed files with 756 additions and 443 deletions

View File

@ -3,8 +3,8 @@ package com.hxkj.admin;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.hxkj.admin.config.SystemConfig;
import com.hxkj.admin.service.ISysAdminService;
import com.hxkj.admin.service.ISysRoleMenuService;
import com.hxkj.admin.service.ISystemAdminService;
import com.hxkj.admin.service.ISystemRoleMenuService;
import com.hxkj.common.core.AjaxResult;
import com.hxkj.common.enums.HttpEnum;
import com.hxkj.common.utils.RedisUtil;
@ -27,10 +27,10 @@ import java.util.Map;
public class LikeAdminInterceptor implements HandlerInterceptor {
@Resource
ISysAdminService iSysAdminService;
ISystemAdminService iSystemAdminService;
@Resource
ISysRoleMenuService iSysRoleMenuService;
ISystemRoleMenuService iSystemRoleMenuService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
@ -65,24 +65,37 @@ public class LikeAdminInterceptor implements HandlerInterceptor {
// 用户信息缓存
String uid = RedisUtil.get(token).toString();
if (!RedisUtil.hExists(SystemConfig.backstageManageKey, uid)) {
iSysAdminService.cacheAdminUserByUid(Integer.parseInt(uid));
iSystemAdminService.cacheAdminUserByUid(Integer.parseInt(uid));
}
// 校验用户是否被删除
// 校验用户被删除
Map<String, Object> map = ToolsUtil.jsonToMap(RedisUtil.hGet(SystemConfig.backstageManageKey, uid).toString());
if (map == null || map.get("isDelete").toString().equals("1")) {
RedisUtil.del(token);
RedisUtil.hDel(SystemConfig.backstageManageKey, uid);
AjaxResult result = AjaxResult.failed(HttpEnum.TOKEN_INVALID.getCode(), HttpEnum.TOKEN_INVALID.getMsg());
response.getWriter().print(JSON.toJSONString(result));
return false;
}
// 校验用户是否被禁用
// 校验用户被禁用
if (map.get("isDisable").toString().equals("1")) {
AjaxResult result = AjaxResult.failed(HttpEnum.LOGIN_DISABLE_ERROR.getCode(), HttpEnum.LOGIN_DISABLE_ERROR.getMsg());
response.getWriter().print(JSON.toJSONString(result));
return false;
}
// 令牌剩余30分钟自动续签
if (RedisUtil.ttl(token) < 1800) {
RedisUtil.expire(token, 7200L);
}
// 写入本地线程
LikeAdminThreadLocal.put("adminId", uid);
LikeAdminThreadLocal.put("roleId", map.get("role").toString());
LikeAdminThreadLocal.put("username", map.get("username").toString());
LikeAdminThreadLocal.put("nickname", map.get("nickname").toString());
// 免权限验证接口
List<String> notAuthUri = Arrays.asList(SystemConfig.notLoginUri);
if (notAuthUri.contains(request.getRequestURI()) || Integer.parseInt(uid) == 1) {
@ -92,7 +105,7 @@ public class LikeAdminInterceptor implements HandlerInterceptor {
// 校验角色权限是否存在
String roleId = map.get("role").toString();
if (!RedisUtil.hExists(SystemConfig.backstageRolesKey, roleId)) {
iSysRoleMenuService.cacheRoleMenusByRoleId(Integer.parseInt(roleId));
iSystemRoleMenuService.cacheRoleMenusByRoleId(Integer.parseInt(roleId));
}
// 验证是否有权限操作
@ -103,9 +116,6 @@ public class LikeAdminInterceptor implements HandlerInterceptor {
return false;
}
// 写入本地线程
LikeAdminThreadLocal.put("adminId", uid);
// 验证通过继续操作
return HandlerInterceptor.super.preHandle(request, response, handler);
}

View File

@ -2,6 +2,9 @@ package com.hxkj.admin;
import java.util.LinkedHashMap;
/**
* 本地线程
*/
public class LikeAdminThreadLocal {
/**
@ -18,8 +21,12 @@ public class LikeAdminThreadLocal {
/**
* 写入本地线程
*/
public static void put(String key, String val) {
public static void put(String key, Object val) {
LinkedHashMap<String, Object> map = MY_LOCAL.get();
if (map == null) {
map = new LinkedHashMap<>();
}
map.put(key, val);
MY_LOCAL.set(map);
}
@ -42,6 +49,17 @@ public class LikeAdminThreadLocal {
return Integer.parseInt(adminId);
}
/**
* 获取角色ID
*/
public static Integer getRoleId() {
String roleId = LikeAdminThreadLocal.get("roleId").toString();
if (roleId.equals("")) {
return 0;
}
return Integer.parseInt(roleId);
}
/**
* 删除本地线程
*/

View File

@ -1,11 +1,7 @@
package com.hxkj.admin.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hxkj.common.entity.system.SysAdmin;
import com.hxkj.common.utils.YmlUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController

View File

@ -1,9 +1,9 @@
package com.hxkj.admin.controller.system;
import com.hxkj.admin.service.ISysAdminService;
import com.hxkj.admin.service.ISystemAdminService;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.validate.SysAdminParam;
import com.hxkj.admin.vo.system.SysAdminVo;
import com.hxkj.admin.vo.system.SystemAdminVo;
import com.hxkj.common.core.AjaxResult;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.validator.annotation.IDMust;
@ -15,10 +15,10 @@ import java.util.Map;
@RestController
@RequestMapping("/api/system/admin")
public class SysAdminController {
public class SystemAdminController {
@Resource
ISysAdminService iSysAdminService;
ISystemAdminService iSystemAdminService;
/**
* 管理员列表
@ -29,7 +29,7 @@ public class SysAdminController {
@GetMapping("/lists")
public Object lists(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
PageResult<SysAdminVo> list = iSysAdminService.lists(pageParam, params);
PageResult<SystemAdminVo> list = iSystemAdminService.lists(pageParam, params);
return AjaxResult.success(list);
}
@ -41,7 +41,7 @@ public class SysAdminController {
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SysAdminVo vo = iSysAdminService.detail(id);
SystemAdminVo vo = iSystemAdminService.detail(id);
return AjaxResult.success(vo);
}
@ -54,7 +54,7 @@ public class SysAdminController {
*/
@PostMapping("/add")
public Object add(@Validated(value = SysAdminParam.create.class) @RequestBody SysAdminParam sysAdminParam) {
iSysAdminService.add(sysAdminParam);
iSystemAdminService.add(sysAdminParam);
return AjaxResult.success();
}
@ -67,7 +67,7 @@ public class SysAdminController {
*/
@PostMapping("/edit")
public Object edit(@Validated(value = SysAdminParam.update.class) @RequestBody SysAdminParam sysAdminParam) {
iSysAdminService.edit(sysAdminParam);
iSystemAdminService.edit(sysAdminParam);
return AjaxResult.success();
}
@ -79,7 +79,7 @@ public class SysAdminController {
*/
@PostMapping("/del")
public Object del(@Validated(value = SysAdminParam.delete.class) @RequestBody SysAdminParam sysAdminParam) {
iSysAdminService.del(sysAdminParam.getId());
iSystemAdminService.del(sysAdminParam.getId());
return AjaxResult.success();
}

View File

@ -1,6 +1,6 @@
package com.hxkj.admin.controller.system;
import com.hxkj.admin.service.ISysLoginService;
import com.hxkj.admin.service.ISystemLoginService;
import com.hxkj.admin.validate.SysLoginParam;
import com.hxkj.common.core.AjaxResult;
import com.hxkj.common.exception.LoginException;
@ -17,10 +17,10 @@ import java.util.Map;
@RestController
@RequestMapping("/api/system")
public class SysLoginController {
public class SystemLoginController {
@Resource
ISysLoginService iSysLoginService;
ISystemLoginService iSystemLoginService;
/**
* 登录系统
@ -32,7 +32,7 @@ public class SysLoginController {
@PostMapping("/login")
public Object login(@Validated() @RequestBody SysLoginParam sysLoginParam) {
try {
Map<String, Object> map = iSysLoginService.login(sysLoginParam);
Map<String, Object> map = iSystemLoginService.login(sysLoginParam);
return AjaxResult.success(map);
} catch (LoginException e) {
return AjaxResult.failed(e.getCode(), e.getMsg());
@ -51,7 +51,7 @@ public class SysLoginController {
@PostMapping("/logout")
public Object logout(HttpServletRequest request) {
try {
iSysLoginService.logout(request.getHeader("token"));
iSystemLoginService.logout(request.getHeader("token"));
return AjaxResult.success();
} catch (Exception e) {
return AjaxResult.failed(e.getMessage());

View File

@ -1,11 +1,11 @@
package com.hxkj.admin.controller.system;
import com.alibaba.fastjson.JSONArray;
import com.hxkj.admin.service.ISysMenuService;
import com.hxkj.admin.LikeAdminThreadLocal;
import com.hxkj.admin.service.ISystemMenuService;
import com.hxkj.admin.validate.SysMenuParam;
import com.hxkj.admin.vo.system.SysMenuVo;
import com.hxkj.admin.vo.system.SystemMenuVo;
import com.hxkj.common.core.AjaxResult;
import com.hxkj.common.entity.system.SysMenu;
import com.hxkj.common.validator.annotation.IDMust;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -14,10 +14,23 @@ import javax.annotation.Resource;
@RestController
@RequestMapping("/api/system/menu")
public class SysMenuController {
public class SystemMenuController {
@Resource
ISysMenuService iSysMenuService;
ISystemMenuService iSystemMenuService;
/**
* 获取系统菜单
*
* @author fzr
* @return Object
*/
@GetMapping("/menus")
public Object menus() {
Integer roleId = LikeAdminThreadLocal.getRoleId();
JSONArray lists = iSystemMenuService.selectMenuByRoleId(roleId);
return AjaxResult.success(lists);
}
/**
* 获取菜单列表
@ -27,7 +40,7 @@ public class SysMenuController {
*/
@GetMapping("/lists")
public Object lists() {
JSONArray lists = iSysMenuService.lists();
JSONArray lists = iSystemMenuService.lists();
return AjaxResult.success(lists);
}
@ -39,7 +52,7 @@ public class SysMenuController {
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SysMenuVo vo = iSysMenuService.detail(id);
SystemMenuVo vo = iSystemMenuService.detail(id);
return AjaxResult.success(vo);
}
@ -51,7 +64,7 @@ public class SysMenuController {
*/
@PostMapping("/add")
public Object add(@Validated(value = SysMenuParam.create.class) @RequestBody SysMenuParam sysMenuParam) {
iSysMenuService.add(sysMenuParam);
iSystemMenuService.add(sysMenuParam);
return AjaxResult.success();
}
@ -63,7 +76,7 @@ public class SysMenuController {
*/
@PostMapping("/edit")
public Object edit(@Validated(value = SysMenuParam.update.class) @RequestBody SysMenuParam sysMenuParam) {
iSysMenuService.edit(sysMenuParam);
iSystemMenuService.edit(sysMenuParam);
return AjaxResult.success();
}
@ -75,7 +88,7 @@ public class SysMenuController {
*/
@PostMapping("/del")
public Object del(@Validated(value = SysMenuParam.delete.class) @RequestBody SysMenuParam sysMenuParam) {
iSysMenuService.del(sysMenuParam.getId());
iSystemMenuService.del(sysMenuParam.getId());
return AjaxResult.success();
}

View File

@ -1,9 +1,9 @@
package com.hxkj.admin.controller.system;
import com.hxkj.admin.service.ISysRoleService;
import com.hxkj.admin.service.ISystemRoleService;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.validate.SysRoleParam;
import com.hxkj.admin.vo.system.SysRoleVo;
import com.hxkj.admin.vo.system.SystemRoleVo;
import com.hxkj.common.core.AjaxResult;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.validator.annotation.IDMust;
@ -14,10 +14,10 @@ import javax.annotation.Resource;
@RestController
@RequestMapping("/api/system/role")
public class SysRoleController {
public class SystemRoleController {
@Resource
ISysRoleService iSysRoleService;
ISystemRoleService iSystemRoleService;
/**
* 角色列表
@ -28,7 +28,7 @@ public class SysRoleController {
*/
@GetMapping("/lists")
public Object lists(@Validated PageParam pageParam) {
PageResult<SysRoleVo> lists = iSysRoleService.lists(pageParam);
PageResult<SystemRoleVo> lists = iSystemRoleService.lists(pageParam);
return AjaxResult.success(lists);
}
@ -39,8 +39,9 @@ public class SysRoleController {
* @return Object
*/
@GetMapping("/detail")
public Object detail() {
return null;
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SystemRoleVo vo = iSystemRoleService.detail(id);
return AjaxResult.success(vo);
}
/**
@ -52,7 +53,7 @@ public class SysRoleController {
*/
@PostMapping("/add")
public Object add(@Validated(value = SysRoleParam.create.class) @RequestBody SysRoleParam sysRoleParam) {
iSysRoleService.add(sysRoleParam);
iSystemRoleService.add(sysRoleParam);
return AjaxResult.success();
}
@ -65,7 +66,7 @@ public class SysRoleController {
*/
@PostMapping("/edit")
public Object edit(@Validated(value = SysRoleParam.create.class) @RequestBody SysRoleParam sysRoleParam) {
iSysRoleService.edit(sysRoleParam);
iSystemRoleService.edit(sysRoleParam);
return AjaxResult.success();
}
@ -73,12 +74,12 @@ public class SysRoleController {
* 删除角色
*
* @author fzr
* @param id 角色ID
* @param sysRoleParam 角色参数
* @return Object
*/
@PostMapping("/del")
public Object del(@Validated @IDMust() @RequestBody Integer id) {
iSysRoleService.del(id);
public Object del(@Validated(value = SysRoleParam.delete.class) @RequestBody SysRoleParam sysRoleParam) {
iSystemRoleService.del(sysRoleParam.getId());
return AjaxResult.success();
}

View File

@ -1,37 +0,0 @@
package com.hxkj.admin.service;
import com.hxkj.common.basics.BaseService;
import com.hxkj.common.entity.system.SysRoleMenu;
/**
* 系统角色菜单服务
*/
public interface ISysRoleMenuService extends BaseService<SysRoleMenu> {
/**
* 批量写入角色菜单
*
* @author fzr
* @param roleId 角色ID
* @param ids 菜单ID组
*/
void batchSaveByMenuIds(Integer roleId, String ids);
/**
* 根据ID批量删除角色菜单
*
* @author fzr
* @param roleId 角色ID
*/
void batchDeleteByRoleId(Integer roleId);
/**
* 缓存角色菜单
*
* @author fzr
* @param roleId 角色ID
*/
void cacheRoleMenusByRoleId(Integer roleId);
}

View File

@ -2,17 +2,17 @@ package com.hxkj.admin.service;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.validate.SysAdminParam;
import com.hxkj.admin.vo.system.SysAdminVo;
import com.hxkj.admin.vo.system.SystemAdminVo;
import com.hxkj.common.basics.BaseService;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.entity.system.SysAdmin;
import com.hxkj.common.entity.system.SystemAdmin;
import java.util.Map;
/**
* 系统管理员服务
*/
public interface ISysAdminService extends BaseService<SysAdmin> {
public interface ISystemAdminService extends BaseService<SystemAdmin> {
/**
* 根据账号查找管理员
@ -21,7 +21,7 @@ public interface ISysAdminService extends BaseService<SysAdmin> {
* @param username 主键ID
* @return SysAdmin
*/
SysAdmin findByUsername(String username);
SystemAdmin findByUsername(String username);
/**
* 管理员列表
@ -30,7 +30,7 @@ public interface ISysAdminService extends BaseService<SysAdmin> {
* @param pageParam 分页参数
* @return PageResult<SysAdminListVo>
*/
PageResult<SysAdminVo> lists(PageParam pageParam, Map<String, String> params);
PageResult<SystemAdminVo> lists(PageParam pageParam, Map<String, String> params);
/**
* 管理员详情
@ -39,7 +39,7 @@ public interface ISysAdminService extends BaseService<SysAdmin> {
* @param id 主键参数
* @return SysAdmin
*/
SysAdminVo detail(Integer id);
SystemAdminVo detail(Integer id);
/**
* 新增管理员

View File

@ -2,13 +2,12 @@ package com.hxkj.admin.service;
import com.hxkj.admin.validate.SysLoginParam;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/**
* 系统登录服务
*/
public interface ISysLoginService {
public interface ISystemLoginService {
/**
* 登录

View File

@ -2,18 +2,27 @@ package com.hxkj.admin.service;
import com.alibaba.fastjson.JSONArray;
import com.hxkj.admin.validate.SysMenuParam;
import com.hxkj.admin.vo.system.SysMenuVo;
import com.hxkj.admin.vo.system.SystemMenuVo;
import com.hxkj.common.basics.BaseService;
import com.hxkj.common.entity.system.SysMenu;
import com.hxkj.common.entity.system.SystemMenu;
/**
* 系统菜单服务
*/
public interface ISysMenuService extends BaseService<SysMenu> {
public interface ISystemMenuService extends BaseService<SystemMenu> {
/**
* 根据角色获取菜单
*
* @author fzr
* @return JSONArray
*/
JSONArray selectMenuByRoleId(Integer roleId);
/**
* 菜单列表
*
* @author fzr
* @return JSONArray
*/
JSONArray lists();
@ -25,7 +34,7 @@ public interface ISysMenuService extends BaseService<SysMenu> {
* @param id 主键
* @return SysMenu
*/
SysMenuVo detail(Integer id);
SystemMenuVo detail(Integer id);
/**
* 新增菜单

View File

@ -0,0 +1,54 @@
package com.hxkj.admin.service;
import com.hxkj.common.basics.BaseService;
import com.hxkj.common.entity.system.SystemRoleMenu;
import java.util.List;
/**
* 系统角色菜单服务
*/
public interface ISystemRoleMenuService extends BaseService<SystemRoleMenu> {
/**
* 根据角色ID获取菜单ID
*
* @param roleId 角色ID
* @return List<Integer>
*/
List<Integer> selectMenuIdsByRoleId(Integer roleId);
/**
* 批量写入角色菜单
*
* @author fzr
* @param roleId 角色ID
* @param menuIds 菜单ID组
*/
void batchSaveByMenuIds(Integer roleId, String menuIds);
/**
* 根据角色ID批量删除角色菜单
*
* @author fzr
* @param roleId 角色ID
*/
void batchDeleteByRoleId(Integer roleId);
/**
* 根据菜单ID批量删除角色菜单
*
* @author fzr
* @param menuId 菜单ID
*/
void batchDeleteByMenuId(Integer menuId);
/**
* 缓存角色菜单
*
* @author fzr
* @param roleId 角色ID
*/
void cacheRoleMenusByRoleId(Integer roleId);
}

View File

@ -2,16 +2,16 @@ package com.hxkj.admin.service;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.validate.SysRoleParam;
import com.hxkj.admin.vo.system.SysRoleVo;
import com.hxkj.admin.vo.system.SystemRoleVo;
import com.hxkj.common.basics.BaseService;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.entity.system.SysRole;
import com.hxkj.common.entity.system.SystemRole;
import org.springframework.validation.annotation.Validated;
/**
* 系统角色服务
*/
public interface ISysRoleService extends BaseService<SysRole> {
public interface ISystemRoleService extends BaseService<SystemRole> {
/**
* 根据id获取角色名称
@ -27,7 +27,7 @@ public interface ISysRoleService extends BaseService<SysRole> {
* @param pageParam 参数
* @return PageResult<SysRoleListVo>
*/
PageResult<SysRoleVo> lists(@Validated PageParam pageParam);
PageResult<SystemRoleVo> lists(@Validated PageParam pageParam);
/**
* 角色详情
@ -36,7 +36,7 @@ public interface ISysRoleService extends BaseService<SysRole> {
* @param id 主键参数
* @return SysRole
*/
SysRole detail(Integer id);
SystemRoleVo detail(Integer id);
/**
* 新增角色

View File

@ -1,134 +0,0 @@
package com.hxkj.admin.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.hxkj.admin.config.SystemConfig;
import com.hxkj.admin.service.ISysMenuService;
import com.hxkj.admin.validate.SysMenuParam;
import com.hxkj.admin.vo.system.SysMenuVo;
import com.hxkj.common.entity.system.SysMenu;
import com.hxkj.common.mapper.system.SysMenuMapper;
import com.hxkj.common.utils.ArrayUtil;
import com.hxkj.common.utils.RedisUtil;
import com.hxkj.common.utils.TimeUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Service
public class ISysMenuServiceImpl extends MPJBaseServiceImpl<SysMenuMapper, SysMenu> implements ISysMenuService {
/**
* 菜单列表
*
* @author fzr
* @return JSONArray
*/
@Override
public JSONArray lists() {
QueryWrapper<SysMenu> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc(Arrays.asList("menu_sort", "id"));
List<SysMenu> sysMenus = this.list( queryWrapper);
List<SysMenuVo> lists = new ArrayList<>();
for (SysMenu sysMenu : sysMenus) {
SysMenuVo vo = new SysMenuVo();
BeanUtils.copyProperties(sysMenu, vo);
vo.setCreateTime(TimeUtil.timestampToDate(sysMenu.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(sysMenu.getUpdateTime()));
lists.add(vo);
}
JSONArray jsonArray = JSONArray.parseArray(JSONArray.toJSONString(lists));
return ArrayUtil.listToTree(jsonArray, "id", "pid", "children");
}
/**
* 菜单详情
*
* @author fzr
* @param id 主键参数
* @return SysMenu
*/
@Override
public SysMenuVo detail(Integer id) {
SysMenu sysMenu = this.getOne(new QueryWrapper<SysMenu>().eq("id", id));
Assert.notNull(sysMenu, "菜单已不存在!");
SysMenuVo vo = new SysMenuVo();
BeanUtils.copyProperties(sysMenu, vo);
vo.setCreateTime(TimeUtil.timestampToDate(sysMenu.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(sysMenu.getUpdateTime()));
return vo;
}
/**
* 新增菜单
*
* @author fzr
* @param sysMenuParam 参数
*/
@Override
public void add(SysMenuParam sysMenuParam) {
SysMenu model = new SysMenu();
model.setPid(sysMenuParam.getPid());
model.setMenuType(sysMenuParam.getMenuType());
model.setMenuName(sysMenuParam.getMenuName());
model.setMenuIcon(sysMenuParam.getMenuIcon());
model.setMenuSort(sysMenuParam.getMenuSort());
model.setPerms(sysMenuParam.getPerms());
model.setIsDisable(sysMenuParam.getIsDisable());
model.setCreateTime(System.currentTimeMillis() / 1000);
model.setUpdateTime(System.currentTimeMillis() / 1000);
this.save(model);
}
/**
* 编辑菜单
*
* @author fzr
* @param sysMenuParam 菜单
*/
@Override
public void edit(SysMenuParam sysMenuParam) {
SysMenu model = this.getOne(new QueryWrapper<SysMenu>().eq("id", sysMenuParam.getId()));
Assert.notNull(model, "菜单已不存在!");
model.setMenuType(sysMenuParam.getMenuType());
model.setMenuName(sysMenuParam.getMenuName());
model.setMenuIcon(sysMenuParam.getMenuIcon());
model.setMenuSort(sysMenuParam.getMenuSort());
model.setPerms(sysMenuParam.getPerms());
model.setPid(sysMenuParam.getPid());
model.setIsDisable(sysMenuParam.getIsDisable());
model.setUpdateTime(System.currentTimeMillis() / 1000);
this.updateById(model);
RedisUtil.del(SystemConfig.backstageRolesKey);
}
/**
* 删除菜单
*
* @author fzr
* @param id 主键参数
*/
@Override
public void del(Integer id) {
SysMenu model = this.getOne(new QueryWrapper<SysMenu>().eq("id", id));
Assert.notNull(model, "菜单已不存在!");
this.removeById(id);
RedisUtil.del(SystemConfig.backstageRolesKey);
}
}

View File

@ -1,89 +0,0 @@
package com.hxkj.admin.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.hxkj.admin.config.SystemConfig;
import com.hxkj.admin.service.ISysMenuService;
import com.hxkj.admin.service.ISysRoleMenuService;
import com.hxkj.common.entity.system.SysMenu;
import com.hxkj.common.entity.system.SysRoleMenu;
import com.hxkj.common.mapper.system.SysRoleMenuMapper;
import com.hxkj.common.utils.RedisUtil;
import com.hxkj.common.utils.ToolsUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@Service
public class ISysRoleMenuServiceImpl extends MPJBaseServiceImpl<SysRoleMenuMapper, SysRoleMenu> implements ISysRoleMenuService {
@Resource
ISysMenuService iSysMenuService;
/**
* 批量写入角色菜单
*
* @author fzr
* @param roleId 角色ID
* @param ids 菜单ID组
*/
@Override
public void batchSaveByMenuIds(Integer roleId, String ids) {
if (ids != null && !ids.equals("")) {
List<SysRoleMenu> arrayList = new ArrayList<>();
for (String menuId : ids.split(",")) {
SysRoleMenu model = new SysRoleMenu();
model.setRoleId(roleId);
model.setMenuId(Integer.parseInt(menuId));
arrayList.add(model);
}
this.saveBatch(arrayList);
}
}
/**
* 批量删除角色菜单
*
* @author fzr
* @param roleId 角色ID
*/
@Override
public void batchDeleteByRoleId(Integer roleId) {
this.remove(new QueryWrapper<SysRoleMenu>().eq("role_id", roleId));
}
/**
* 缓存角色菜单
*
* @author fzr
* @param roleId 角色ID
*/
@Override
public void cacheRoleMenusByRoleId(Integer roleId) {
List<Integer> menuIds = new LinkedList<>();
List<String> menuArray = new LinkedList<>();
List<SysRoleMenu> sysRoleMenus = this.list(new QueryWrapper<SysRoleMenu>().eq("role_id", roleId));
for (SysRoleMenu sysRoleMenu : sysRoleMenus) {
menuIds.add(sysRoleMenu.getMenuId());
}
if (menuIds.size() > 0) {
List<SysMenu> sysMenus = iSysMenuService.list(new QueryWrapper<SysMenu>()
.select("id,perms")
.in("id", menuIds)
.eq("is_disable", 0));
for (SysMenu sysMenu : sysMenus) {
menuArray.add(sysMenu.getPerms().trim());
}
}
RedisUtil.hSet(SystemConfig.backstageRolesKey, String.valueOf(roleId), ToolsUtil.listStrToString(menuArray, ","));
}
}

View File

@ -7,18 +7,15 @@ import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.hxkj.admin.config.SystemConfig;
import com.hxkj.admin.service.ISysAdminService;
import com.hxkj.admin.service.ISysRoleService;
import com.hxkj.admin.service.ISystemAdminService;
import com.hxkj.admin.service.ISystemRoleService;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.validate.SysAdminParam;
import com.hxkj.admin.vo.system.SysAdminVo;
import com.hxkj.admin.vo.system.SystemAdminVo;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.entity.system.SysAdmin;
import com.hxkj.common.mapper.system.SysAdminMapper;
import com.hxkj.common.utils.RedisUtil;
import com.hxkj.common.utils.TimeUtil;
import com.hxkj.common.utils.ToolsUtil;
import com.hxkj.common.utils.UrlUtil;
import com.hxkj.common.entity.system.SystemAdmin;
import com.hxkj.common.mapper.system.SystemAdminMapper;
import com.hxkj.common.utils.*;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -26,10 +23,10 @@ import javax.annotation.Resource;
import java.util.*;
@Service
public class ISysAdminServiceImpl extends MPJBaseServiceImpl<SysAdminMapper, SysAdmin> implements ISysAdminService {
public class ISystemAdminServiceImpl extends MPJBaseServiceImpl<SystemAdminMapper, SystemAdmin> implements ISystemAdminService {
@Resource
ISysRoleService iSysRoleService;
ISystemRoleService iSystemRoleService;
/**
* 根据账号查找管理员
@ -39,8 +36,8 @@ public class ISysAdminServiceImpl extends MPJBaseServiceImpl<SysAdminMapper, Sys
* @return SysAdmin
*/
@Override
public SysAdmin findByUsername(String username) {
return this.getOne(new QueryWrapper<SysAdmin>()
public SystemAdmin findByUsername(String username) {
return this.getOne(new QueryWrapper<SystemAdmin>()
.eq("username", username)
.last("limit 1"));
}
@ -53,12 +50,12 @@ public class ISysAdminServiceImpl extends MPJBaseServiceImpl<SysAdminMapper, Sys
* @return PageResult<SysAdminListVo>
*/
@Override
public PageResult<SysAdminVo> lists(PageParam pageParam, Map<String, String> params) {
public PageResult<SystemAdminVo> lists(PageParam pageParam, Map<String, String> params) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
QueryWrapper<SysAdmin> queryWrapper = new QueryWrapper<>();
queryWrapper.select(SysAdmin.class, info->
QueryWrapper<SystemAdmin> queryWrapper = new QueryWrapper<>();
queryWrapper.select(SystemAdmin.class, info->
!info.getColumn().equals("salt") &&
!info.getColumn().equals("password") &&
!info.getColumn().equals("is_delete") &&
@ -72,15 +69,15 @@ public class ISysAdminServiceImpl extends MPJBaseServiceImpl<SysAdminMapper, Sys
"=:role:int"
});
IPage<SysAdmin> iPage = this.page(new Page<>(page, limit), queryWrapper);
IPage<SystemAdmin> iPage = this.page(new Page<>(page, limit), queryWrapper);
List<SysAdminVo> adminVoArrayList = new ArrayList<>();
for (SysAdmin sysAdmin : iPage.getRecords()) {
SysAdminVo vo = new SysAdminVo();
List<SystemAdminVo> adminVoArrayList = new ArrayList<>();
for (SystemAdmin sysAdmin : iPage.getRecords()) {
SystemAdminVo vo = new SystemAdminVo();
BeanUtils.copyProperties(sysAdmin, vo);
vo.setAvatar(UrlUtil.toAbsoluteUrl(sysAdmin.getAvatar()));
vo.setRole(iSysRoleService.getRoleNameById(sysAdmin.getRole()));
vo.setRole(iSystemRoleService.getRoleNameById(sysAdmin.getRole()));
vo.setCreateTime(TimeUtil.timestampToDate(sysAdmin.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(sysAdmin.getUpdateTime()));
vo.setLastLoginTime(TimeUtil.timestampToDate(sysAdmin.getLastLoginTime()));
@ -98,9 +95,9 @@ public class ISysAdminServiceImpl extends MPJBaseServiceImpl<SysAdminMapper, Sys
* @return SysAdmin
*/
@Override
public SysAdminVo detail(Integer id) {
SysAdmin sysAdmin = this.getOne(new QueryWrapper<SysAdmin>()
.select(SysAdmin.class, info->
public SystemAdminVo detail(Integer id) {
SystemAdmin sysAdmin = this.getOne(new QueryWrapper<SystemAdmin>()
.select(SystemAdmin.class, info->
!info.getColumn().equals("salt") &&
!info.getColumn().equals("password") &&
!info.getColumn().equals("is_delete") &&
@ -111,7 +108,7 @@ public class ISysAdminServiceImpl extends MPJBaseServiceImpl<SysAdminMapper, Sys
Assert.notNull(sysAdmin, "账号已不存在!");
SysAdminVo vo = new SysAdminVo();
SystemAdminVo vo = new SystemAdminVo();
BeanUtils.copyProperties(sysAdmin, vo);
vo.setRole(String.valueOf(sysAdmin.getRole()));
@ -132,25 +129,25 @@ public class ISysAdminServiceImpl extends MPJBaseServiceImpl<SysAdminMapper, Sys
@Override
public void add(SysAdminParam sysAdminParam) {
String[] field = {"id", "username", "nickname"};
Assert.isNull(this.getOne(new QueryWrapper<SysAdmin>()
Assert.isNull(this.getOne(new QueryWrapper<SystemAdmin>()
.select(field)
.eq("is_delete", 0)
.eq("username", sysAdminParam.getUsername())
.last("limit 1")), "账号已存在换一个吧!");
Assert.isNull(this.getOne(new QueryWrapper<SysAdmin>()
Assert.isNull(this.getOne(new QueryWrapper<SystemAdmin>()
.select(field)
.eq("is_delete", 0)
.eq("nickname", sysAdminParam.getNickname())
.last("limit 1")), "昵称已存在换一个吧!");
Assert.notNull(iSysRoleService.getById(sysAdminParam.getRole()), "角色不存在!");
Assert.notNull(iSystemRoleService.getById(sysAdminParam.getRole()), "角色不存在!");
String salt = ToolsUtil.randomString(5);
String pwd = ToolsUtil.makeMd5(sysAdminParam.getPassword().trim() + salt);
String avatar = UrlUtil.toRelativeUrl(sysAdminParam.getAvatar());
SysAdmin model = new SysAdmin();
SystemAdmin model = new SystemAdmin();
model.setUsername(sysAdminParam.getUsername());
model.setNickname(sysAdminParam.getNickname());
model.setRole(sysAdminParam.getRole());
@ -173,29 +170,29 @@ public class ISysAdminServiceImpl extends MPJBaseServiceImpl<SysAdminMapper, Sys
@Override
public void edit(SysAdminParam sysAdminParam) {
String[] field = {"id", "username", "nickname"};
Assert.notNull(this.getOne(new QueryWrapper<SysAdmin>()
Assert.notNull(this.getOne(new QueryWrapper<SystemAdmin>()
.select(field)
.eq("id", sysAdminParam.getId())
.eq("is_delete", 0)
.last("limit 1")), "账号不存在了!");
Assert.isNull(this.getOne(new QueryWrapper<SysAdmin>()
Assert.isNull(this.getOne(new QueryWrapper<SystemAdmin>()
.select(field)
.eq("is_delete", 0)
.eq("username", sysAdminParam.getUsername())
.ne("id", sysAdminParam.getId())
.last("limit 1")), "账号已存在换一个吧!");
Assert.isNull(this.getOne(new QueryWrapper<SysAdmin>()
Assert.isNull(this.getOne(new QueryWrapper<SystemAdmin>()
.select(field)
.eq("is_delete", 0)
.eq("nickname", sysAdminParam.getNickname())
.ne("id", sysAdminParam.getId())
.last("limit 1")), "昵称已存在换一个吧!");
Assert.notNull(iSysRoleService.getById(sysAdminParam.getRole()), "角色不存在!");
Assert.notNull(iSystemRoleService.getById(sysAdminParam.getRole()), "角色不存在!");
SysAdmin model = new SysAdmin();
SystemAdmin model = new SystemAdmin();
model.setId(sysAdminParam.getId());
model.setNickname(sysAdminParam.getNickname());
model.setUsername(sysAdminParam.getUsername());
@ -205,7 +202,7 @@ public class ISysAdminServiceImpl extends MPJBaseServiceImpl<SysAdminMapper, Sys
model.setIsDisable(sysAdminParam.getIsDisable());
model.setUpdateTime(System.currentTimeMillis() / 1000);
if (sysAdminParam.getPassword() != null && !sysAdminParam.getPassword().equals("")) {
if (sysAdminParam.getPassword() != null) {
String salt = ToolsUtil.randomString(5);
String pwd = ToolsUtil.makeMd5( sysAdminParam.getPassword().trim() + salt);
model.setPassword(pwd);
@ -214,6 +211,10 @@ public class ISysAdminServiceImpl extends MPJBaseServiceImpl<SysAdminMapper, Sys
this.updateById(model);
this.cacheAdminUserByUid(sysAdminParam.getId());
if (sysAdminParam.getPassword() != null) {
RedisUtil.del(Objects.requireNonNull(HttpUtil.obj()).getHeader("token"));
}
}
/**
@ -225,7 +226,7 @@ public class ISysAdminServiceImpl extends MPJBaseServiceImpl<SysAdminMapper, Sys
@Override
public void del(Integer id) {
String[] field = {"id", "username", "nickname"};
Assert.notNull(this.getOne(new QueryWrapper<SysAdmin>()
Assert.notNull(this.getOne(new QueryWrapper<SystemAdmin>()
.select(field)
.eq("id", id)
.eq("is_delete", 0)
@ -233,7 +234,7 @@ public class ISysAdminServiceImpl extends MPJBaseServiceImpl<SysAdminMapper, Sys
Assert.isFalse(id == 1, "系统管理员不允许删除");
SysAdmin model = new SysAdmin();
SystemAdmin model = new SystemAdmin();
model.setId(id);
model.setIsDelete(1);
model.setDeleteTime(System.currentTimeMillis() / 1000);
@ -246,7 +247,7 @@ public class ISysAdminServiceImpl extends MPJBaseServiceImpl<SysAdminMapper, Sys
*/
@Override
public void cacheAdminUserByUid(Integer id) {
SysAdmin sysAdmin = this.getById(id);
SystemAdmin sysAdmin = this.getById(id);
Map<String, Object> user = new LinkedHashMap<>();
Map<String, Object> map = new LinkedHashMap<>();

View File

@ -1,14 +1,13 @@
package com.hxkj.admin.service.impl;
import com.hxkj.admin.config.SystemConfig;
import com.hxkj.admin.service.ISysAdminService;
import com.hxkj.admin.service.ISysLoginService;
import com.hxkj.admin.service.ISystemAdminService;
import com.hxkj.admin.service.ISystemLoginService;
import com.hxkj.admin.validate.SysLoginParam;
import com.hxkj.common.entity.system.SysAdmin;
import com.hxkj.common.entity.system.SystemAdmin;
import com.hxkj.common.enums.HttpEnum;
import com.hxkj.common.exception.LoginException;
import com.hxkj.common.exception.OperateException;
import com.hxkj.common.mapper.system.SysAdminMapper;
import com.hxkj.common.utils.HttpUtil;
import com.hxkj.common.utils.RedisUtil;
import com.hxkj.common.utils.ToolsUtil;
@ -19,13 +18,10 @@ import java.util.LinkedHashMap;
import java.util.Map;
@Service
public class ISysLoginServiceImpl implements ISysLoginService {
public class ISystemLoginServiceImpl implements ISystemLoginService {
@Resource
SysAdminMapper sysAdminMapper;
@Resource
ISysAdminService iSysAdminService;
ISystemAdminService iSystemAdminService;
/**
* 登录
@ -39,7 +35,7 @@ public class ISysLoginServiceImpl implements ISysLoginService {
String username = sysLoginParam.getUsername();
String password = sysLoginParam.getPassword();
SysAdmin sysAdmin = iSysAdminService.findByUsername(username);
SystemAdmin sysAdmin = iSystemAdminService.findByUsername(username);
if (sysAdmin == null || sysAdmin.getIsDelete() == 1) {
throw new LoginException(HttpEnum.LOGIN_ACCOUNT_ERROR.getCode(), HttpEnum.LOGIN_ACCOUNT_ERROR.getMsg());
}
@ -57,11 +53,11 @@ public class ISysLoginServiceImpl implements ISysLoginService {
try {
sysAdmin.setLastLoginIp(HttpUtil.ip());
sysAdmin.setLastLoginTime(System.currentTimeMillis() / 1000);
sysAdminMapper.updateById(sysAdmin);
iSystemAdminService.updateById(sysAdmin);
String token = ToolsUtil.makeToken();
RedisUtil.set(SystemConfig.backstageTokenKey+token, sysAdmin.getId(), 7200);
iSysAdminService.cacheAdminUserByUid(sysAdmin.getId());
iSystemAdminService.cacheAdminUserByUid(sysAdmin.getId());
Map<String, Object> response = new LinkedHashMap<>();
response.put("token", token);

View File

@ -0,0 +1,175 @@
package com.hxkj.admin.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.hxkj.admin.LikeAdminThreadLocal;
import com.hxkj.admin.config.SystemConfig;
import com.hxkj.admin.service.ISystemMenuService;
import com.hxkj.admin.service.ISystemRoleMenuService;
import com.hxkj.admin.validate.SysMenuParam;
import com.hxkj.admin.vo.system.SystemMenuVo;
import com.hxkj.common.entity.system.SystemMenu;
import com.hxkj.common.mapper.system.SystemMenuMapper;
import com.hxkj.common.utils.ArrayUtil;
import com.hxkj.common.utils.RedisUtil;
import com.hxkj.common.utils.TimeUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Service
public class ISystemMenuServiceImpl extends MPJBaseServiceImpl<SystemMenuMapper, SystemMenu> implements ISystemMenuService {
@Resource
ISystemRoleMenuService iSystemRoleMenuService;
/**
* 根据角色ID获取菜单
*
* @author fzr
* @param roleId 角色ID
* @return JSONArray
*/
@Override
public JSONArray selectMenuByRoleId(Integer roleId) {
Integer adminId = LikeAdminThreadLocal.getAdminId();
List<Integer> menuIds = iSystemRoleMenuService.selectMenuIdsByRoleId(roleId);
QueryWrapper<SystemMenu> queryWrapper = new QueryWrapper<>();
queryWrapper.in("menu_type", Arrays.asList("M", "C"));
queryWrapper.orderByDesc(Arrays.asList("menu_sort", "id"));
if (adminId != 1 && menuIds.size() > 0) {
queryWrapper.in("id", menuIds);
}
List<SystemMenu> systemMenus = this.list(queryWrapper);
List<SystemMenuVo> lists = new ArrayList<>();
for (SystemMenu systemMenu : systemMenus) {
SystemMenuVo vo = new SystemMenuVo();
BeanUtils.copyProperties(systemMenu, vo);
vo.setUpdateTime(TimeUtil.timestampToDate(systemMenu.getUpdateTime()));
vo.setCreateTime(TimeUtil.timestampToDate(systemMenu.getCreateTime()));
lists.add(vo);
}
JSONArray jsonArray = JSONArray.parseArray(JSONArray.toJSONString(lists));
return ArrayUtil.listToTree(jsonArray, "id", "pid", "children");
}
/**
* 菜单列表
*
* @author fzr
* @return JSONArray
*/
@Override
public JSONArray lists() {
QueryWrapper<SystemMenu> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc(Arrays.asList("menu_sort", "id"));
List<SystemMenu> systemMenus = this.list(queryWrapper);
List<SystemMenuVo> lists = new ArrayList<>();
for (SystemMenu systemMenu : systemMenus) {
SystemMenuVo vo = new SystemMenuVo();
BeanUtils.copyProperties(systemMenu, vo);
vo.setCreateTime(TimeUtil.timestampToDate(systemMenu.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(systemMenu.getUpdateTime()));
lists.add(vo);
}
JSONArray jsonArray = JSONArray.parseArray(JSONArray.toJSONString(lists));
return ArrayUtil.listToTree(jsonArray, "id", "pid", "children");
}
/**
* 菜单详情
*
* @author fzr
* @param id 主键参数
* @return SysMenu
*/
@Override
public SystemMenuVo detail(Integer id) {
SystemMenu systemMenu = this.getOne(new QueryWrapper<SystemMenu>().eq("id", id));
Assert.notNull(systemMenu, "菜单已不存在!");
SystemMenuVo vo = new SystemMenuVo();
BeanUtils.copyProperties(systemMenu, vo);
vo.setCreateTime(TimeUtil.timestampToDate(systemMenu.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(systemMenu.getUpdateTime()));
return vo;
}
/**
* 新增菜单
*
* @author fzr
* @param sysMenuParam 参数
*/
@Override
public void add(SysMenuParam sysMenuParam) {
SystemMenu model = new SystemMenu();
model.setPid(sysMenuParam.getPid());
model.setMenuType(sysMenuParam.getMenuType());
model.setMenuName(sysMenuParam.getMenuName());
model.setMenuIcon(sysMenuParam.getMenuIcon());
model.setMenuSort(sysMenuParam.getMenuSort());
model.setPerms(sysMenuParam.getPerms());
model.setIsDisable(sysMenuParam.getIsDisable());
model.setCreateTime(System.currentTimeMillis() / 1000);
model.setUpdateTime(System.currentTimeMillis() / 1000);
this.save(model);
}
/**
* 编辑菜单
*
* @author fzr
* @param sysMenuParam 菜单
*/
@Override
public void edit(SysMenuParam sysMenuParam) {
SystemMenu model = this.getOne(new QueryWrapper<SystemMenu>().eq("id", sysMenuParam.getId()));
Assert.notNull(model, "菜单已不存在!");
model.setMenuType(sysMenuParam.getMenuType());
model.setMenuName(sysMenuParam.getMenuName());
model.setMenuIcon(sysMenuParam.getMenuIcon());
model.setMenuSort(sysMenuParam.getMenuSort());
model.setPerms(sysMenuParam.getPerms());
model.setPid(sysMenuParam.getPid());
model.setIsDisable(sysMenuParam.getIsDisable());
model.setUpdateTime(System.currentTimeMillis() / 1000);
this.updateById(model);
RedisUtil.del(SystemConfig.backstageRolesKey);
}
/**
* 删除菜单
*
* @author fzr
* @param id 主键参数
*/
@Override
public void del(Integer id) {
SystemMenu model = this.getOne(new QueryWrapper<SystemMenu>().eq("id", id));
Assert.notNull(model, "菜单已不存在!");
this.removeById(id);
iSystemRoleMenuService.batchDeleteByMenuId(id);
RedisUtil.del(SystemConfig.backstageRolesKey);
}
}

View File

@ -0,0 +1,115 @@
package com.hxkj.admin.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.hxkj.admin.config.SystemConfig;
import com.hxkj.admin.service.ISystemMenuService;
import com.hxkj.admin.service.ISystemRoleMenuService;
import com.hxkj.common.entity.system.SystemMenu;
import com.hxkj.common.entity.system.SystemRoleMenu;
import com.hxkj.common.mapper.system.SystemRoleMenuMapper;
import com.hxkj.common.utils.RedisUtil;
import com.hxkj.common.utils.ToolsUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@Service
public class ISystemRoleMenuServiceImpl extends MPJBaseServiceImpl<SystemRoleMenuMapper, SystemRoleMenu> implements ISystemRoleMenuService {
@Resource
ISystemMenuService iSystemMenuService;
/**
* 根据角色ID获取菜单ID
*
* @param roleId 角色ID
* @return List<Integer>
*/
@Override
public List<Integer> selectMenuIdsByRoleId(Integer roleId) {
List<Integer> menus = new LinkedList<>();
List<SystemRoleMenu> systemRoleMenus = this.list(new QueryWrapper<SystemRoleMenu>().eq("role_id", roleId));
for (SystemRoleMenu systemRoleMenu : systemRoleMenus) {
menus.add(systemRoleMenu.getMenuId());
}
return menus;
}
/**
* 批量写入角色菜单
*
* @author fzr
* @param roleId 角色ID
* @param menuIds 菜单ID组
*/
@Override
public void batchSaveByMenuIds(Integer roleId, String menuIds) {
if (menuIds != null && !menuIds.equals("")) {
List<SystemRoleMenu> arrayList = new ArrayList<>();
for (String menuId : menuIds.split(",")) {
SystemRoleMenu model = new SystemRoleMenu();
model.setRoleId(roleId);
model.setMenuId(Integer.parseInt(menuId));
arrayList.add(model);
}
this.saveBatch(arrayList);
}
}
/**
* 批量删除角色菜单(根据角色ID)
*
* @author fzr
* @param roleId 角色ID
*/
@Override
public void batchDeleteByRoleId(Integer roleId) {
this.remove(new QueryWrapper<SystemRoleMenu>().eq("role_id", roleId));
}
/**
* 批量删除角色菜单(根据菜单ID)
*
* @author fzr
* @param menuId 菜单ID
*/
@Override
public void batchDeleteByMenuId(Integer menuId) {
this.remove(new QueryWrapper<SystemRoleMenu>().eq("menu_id", menuId));
}
/**
* 缓存角色菜单
*
* @author fzr
* @param roleId 角色ID
*/
@Override
public void cacheRoleMenusByRoleId(Integer roleId) {
List<Integer> menuIds = new LinkedList<>();
List<String> menuArray = new LinkedList<>();
List<SystemRoleMenu> systemRoleMenus = this.list(new QueryWrapper<SystemRoleMenu>().eq("role_id", roleId));
for (SystemRoleMenu systemRoleMenu : systemRoleMenus) {
menuIds.add(systemRoleMenu.getMenuId());
}
if (menuIds.size() > 0) {
List<SystemMenu> systemMenus = iSystemMenuService.list(new QueryWrapper<SystemMenu>()
.select("id,perms")
.in("id", menuIds)
.eq("is_disable", 0));
for (SystemMenu systemMenu : systemMenus) {
menuArray.add(systemMenu.getPerms().trim());
}
}
RedisUtil.hSet(SystemConfig.backstageRolesKey, String.valueOf(roleId), ToolsUtil.listStrToString(menuArray, ","));
}
}

View File

@ -6,16 +6,16 @@ import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.hxkj.admin.config.SystemConfig;
import com.hxkj.admin.service.ISysAdminService;
import com.hxkj.admin.service.ISysRoleMenuService;
import com.hxkj.admin.service.ISysRoleService;
import com.hxkj.admin.service.ISystemAdminService;
import com.hxkj.admin.service.ISystemRoleMenuService;
import com.hxkj.admin.service.ISystemRoleService;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.validate.SysRoleParam;
import com.hxkj.admin.vo.system.SysRoleVo;
import com.hxkj.admin.vo.system.SystemRoleVo;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.entity.system.SysAdmin;
import com.hxkj.common.entity.system.SysRole;
import com.hxkj.common.mapper.system.SysRoleMapper;
import com.hxkj.common.entity.system.SystemAdmin;
import com.hxkj.common.entity.system.SystemRole;
import com.hxkj.common.mapper.system.SystemRoleMapper;
import com.hxkj.common.utils.RedisUtil;
import com.hxkj.common.utils.TimeUtil;
import org.springframework.beans.BeanUtils;
@ -29,13 +29,13 @@ import java.util.Arrays;
import java.util.List;
@Service
public class ISysRoleServiceImpl extends MPJBaseServiceImpl<SysRoleMapper, SysRole> implements ISysRoleService {
public class ISystemRoleServiceImpl extends MPJBaseServiceImpl<SystemRoleMapper, SystemRole> implements ISystemRoleService {
@Resource
ISysAdminService iSysAdminService;
ISystemAdminService iSystemAdminService;
@Resource
ISysRoleMenuService iSysRoleMenuService;
ISystemRoleMenuService iSystemRoleMenuService;
/**
@ -47,16 +47,16 @@ public class ISysRoleServiceImpl extends MPJBaseServiceImpl<SysRoleMapper, SysRo
*/
@Override
public String getRoleNameById(Integer id) {
QueryWrapper<SysRole> queryWrapper = new QueryWrapper<>();
QueryWrapper<SystemRole> queryWrapper = new QueryWrapper<>();
queryWrapper.select("id", "name")
.eq("id", id)
.last("limit 1");
SysRole sysRole = this.getOne(queryWrapper, false);
if (sysRole == null) {
SystemRole systemRole = this.getOne(queryWrapper, false);
if (systemRole == null) {
return "";
}
return sysRole.getName();
return systemRole.getName();
}
/**
@ -67,22 +67,23 @@ public class ISysRoleServiceImpl extends MPJBaseServiceImpl<SysRoleMapper, SysRo
* @return PageResult<SysRoleListVo>
*/
@Override
public PageResult<SysRoleVo> lists(@Validated PageParam pageParam) {
public PageResult<SystemRoleVo> lists(@Validated PageParam pageParam) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
QueryWrapper<SysRole> queryWrapper = new QueryWrapper<>();
QueryWrapper<SystemRole> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
IPage<SysRole> iPage = this.page(new Page<>(page, limit), queryWrapper);
IPage<SystemRole> iPage = this.page(new Page<>(page, limit), queryWrapper);
List<SysRoleVo> roleVoArrayList = new ArrayList<>();
for (SysRole sysRole : iPage.getRecords()) {
SysRoleVo vo = new SysRoleVo();
BeanUtils.copyProperties(sysRole, vo);
List<SystemRoleVo> roleVoArrayList = new ArrayList<>();
for (SystemRole systemRole : iPage.getRecords()) {
SystemRoleVo vo = new SystemRoleVo();
BeanUtils.copyProperties(systemRole, vo);
vo.setCreateTime(TimeUtil.timestampToDate(sysRole.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(sysRole.getUpdateTime()));
vo.setMenus(new ArrayList<>());
vo.setCreateTime(TimeUtil.timestampToDate(systemRole.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(systemRole.getUpdateTime()));
roleVoArrayList.add(vo);
}
@ -97,14 +98,21 @@ public class ISysRoleServiceImpl extends MPJBaseServiceImpl<SysRoleMapper, SysRo
* @return SysRole
*/
@Override
public SysRole detail(Integer id) {
SysRole sysRole = this.getOne(new QueryWrapper<SysRole>()
public SystemRoleVo detail(Integer id) {
SystemRole systemRole = this.getOne(new QueryWrapper<SystemRole>()
.eq("id", id)
.last("limit 1"));
Assert.notNull(sysRole, "角色已不存在!");
Assert.notNull(systemRole, "角色已不存在!");
return sysRole;
SystemRoleVo vo = new SystemRoleVo();
BeanUtils.copyProperties(systemRole, vo);
vo.setMenus(iSystemRoleMenuService.selectMenuIdsByRoleId(systemRole.getId()));
vo.setCreateTime(TimeUtil.timestampToDate(systemRole.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(systemRole.getUpdateTime()));
return vo;
}
/**
@ -116,12 +124,12 @@ public class ISysRoleServiceImpl extends MPJBaseServiceImpl<SysRoleMapper, SysRo
@Override
@Transactional
public void add(SysRoleParam sysRoleParam) {
Assert.isNull(this.getOne(new QueryWrapper<SysRole>()
Assert.isNull(this.getOne(new QueryWrapper<SystemRole>()
.select("id,name")
.eq("name", sysRoleParam.getName().trim())
.last("limit 1")), "角色名称已存在!");
SysRole model = new SysRole();
SystemRole model = new SystemRole();
model.setName(sysRoleParam.getName().trim());
model.setRemark(sysRoleParam.getRemark());
model.setIsDisable(sysRoleParam.getIsDisable());
@ -129,7 +137,7 @@ public class ISysRoleServiceImpl extends MPJBaseServiceImpl<SysRoleMapper, SysRo
model.setUpdateTime(System.currentTimeMillis() / 1000);
this.save(model);
iSysRoleMenuService.batchSaveByMenuIds(sysRoleParam.getId(), sysRoleParam.getMenuIds());
iSystemRoleMenuService.batchSaveByMenuIds(model.getId(), sysRoleParam.getMenuIds());
}
/**
@ -141,18 +149,18 @@ public class ISysRoleServiceImpl extends MPJBaseServiceImpl<SysRoleMapper, SysRo
@Override
@Transactional
public void edit(SysRoleParam sysRoleParam) {
Assert.notNull(this.getOne(new QueryWrapper<SysRole>()
Assert.notNull(this.getOne(new QueryWrapper<SystemRole>()
.select("id,name")
.eq("id", sysRoleParam.getId())
.last("limit 1")), "角色已不存在!");
Assert.isNull(this.getOne(new QueryWrapper<SysRole>()
Assert.isNull(this.getOne(new QueryWrapper<SystemRole>()
.select("id,name")
.ne("id", sysRoleParam.getId())
.eq("name", sysRoleParam.getName().trim())
.last("limit 1")), "角色名称已存在!");
SysRole model = new SysRole();
SystemRole model = new SystemRole();
model.setId(sysRoleParam.getId());
model.setName(sysRoleParam.getName().trim());
model.setRemark(sysRoleParam.getRemark());
@ -160,9 +168,9 @@ public class ISysRoleServiceImpl extends MPJBaseServiceImpl<SysRoleMapper, SysRo
model.setUpdateTime(System.currentTimeMillis() / 1000);
this.updateById(model);
iSysRoleMenuService.batchDeleteByRoleId(sysRoleParam.getId());
iSysRoleMenuService.batchSaveByMenuIds(sysRoleParam.getId(), sysRoleParam.getMenuIds());
iSysRoleMenuService.cacheRoleMenusByRoleId(sysRoleParam.getId());
iSystemRoleMenuService.batchDeleteByRoleId(sysRoleParam.getId());
iSystemRoleMenuService.batchSaveByMenuIds(sysRoleParam.getId(), sysRoleParam.getMenuIds());
iSystemRoleMenuService.cacheRoleMenusByRoleId(sysRoleParam.getId());
}
/**
@ -175,21 +183,21 @@ public class ISysRoleServiceImpl extends MPJBaseServiceImpl<SysRoleMapper, SysRo
@Transactional
public void del(Integer id) {
Assert.notNull(
this.getOne(new QueryWrapper<SysRole>()
this.getOne(new QueryWrapper<SystemRole>()
.select("id", "name")
.eq("id", id)
.last("limit 1")),
"角色已不存在!");
Assert.isNull(iSysAdminService.getOne(new QueryWrapper<SysAdmin>()
Assert.isNull(iSystemAdminService.getOne(new QueryWrapper<SystemAdmin>()
.select("id", "role", "nickname")
.eq("role", id)
.eq("is_delete", 0)),
"角色已被管理员使用,请先移除");
this.removeById(id);
iSysRoleMenuService.batchDeleteByRoleId(id);
RedisUtil.hDel(SystemConfig.backstageRolesKey, id);
iSystemRoleMenuService.batchDeleteByRoleId(id);
RedisUtil.hDel(SystemConfig.backstageRolesKey, String.valueOf(id));
}
}

View File

@ -1,15 +1,20 @@
package com.hxkj.admin.validate;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import java.io.Serializable;
/**
* 分页参数
*/
@Data
public class PageParam {
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class PageParam implements Serializable {
// 当前分页
@DecimalMin(value = "1", message = "pageNo参数必须大于0的数字")

View File

@ -3,17 +3,22 @@ package com.hxkj.admin.validate;
import com.hxkj.common.validator.annotation.IDMust;
import com.hxkj.common.validator.annotation.StringContains;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 系统菜单参数
*/
@Data
public class SysMenuParam {
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SysMenuParam implements Serializable {
public interface create{}
public interface update{}

View File

@ -2,19 +2,25 @@ package com.hxkj.admin.validate;
import com.hxkj.common.validator.annotation.IDMust;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Data
public class SysRoleParam {
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SysRoleParam implements Serializable {
public interface create{}
public interface update{}
public interface delete{}
@IDMust(message = "id参数必传且需大于0", groups = {update.class})
@IDMust(message = "id参数必传且需大于0", groups = {update.class, delete.class})
private Integer id;
@NotNull(message = "缺少参数name", groups = {create.class, update.class})

View File

@ -5,7 +5,7 @@ import lombok.Data;
import java.io.Serializable;
@Data
public class SysAdminVo implements Serializable {
public class SystemAdminVo implements Serializable {
private static final long serialVersionUID = 1L;

View File

@ -5,7 +5,7 @@ import lombok.Data;
import java.io.Serializable;
@Data
public class SysMenuVo implements Serializable {
public class SystemMenuVo implements Serializable {
private static final long serialVersionUID = 1L;

View File

@ -5,13 +5,14 @@ import lombok.Data;
import java.io.Serializable;
@Data
public class SysRoleVo implements Serializable {
public class SystemRoleVo implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String remark;
private Object menus;
private Integer sort;
private Integer isDisable;
private String createTime;

View File

@ -1,10 +1,7 @@
package com.hxkj.common.basics;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.entity.system.SysAdmin;
import java.math.BigDecimal;
import java.util.ArrayList;

View File

@ -10,7 +10,7 @@ import java.io.Serializable;
* 系统管理员实体
*/
@Data
public class SysAdmin implements Serializable {
public class SystemAdmin implements Serializable {
private static final long serialVersionUID = 1L;

View File

@ -0,0 +1,25 @@
package com.hxkj.common.entity.system;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
/**
* 系统配置实体
*/
@Data
public class SystemConfig implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value="id", type= IdType.AUTO)
private Integer id;
private String type;
private String name;
private String value;
private Long createTime;
private Long updateTime;
}

View File

@ -10,7 +10,7 @@ import java.io.Serializable;
* 系统菜单实体
*/
@Data
public class SysMenu implements Serializable {
public class SystemMenu implements Serializable {
private static final long serialVersionUID = 1L;

View File

@ -10,7 +10,7 @@ import java.io.Serializable;
* 系统角色实体
*/
@Data
public class SysRole implements Serializable {
public class SystemRole implements Serializable {
private static final long serialVersionUID = 1L;

View File

@ -14,12 +14,12 @@ import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SysRoleMenu implements Serializable {
public class SystemRoleMenu implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.NONE)
private Integer id;
@TableId(type = IdType.ASSIGN_UUID)
private String id;
private Integer roleId;
private Integer menuId;

View File

@ -1,12 +1,12 @@
package com.hxkj.common.mapper.system;
import com.hxkj.common.basics.BaseMapper;
import com.hxkj.common.entity.system.SysAdmin;
import com.hxkj.common.entity.system.SystemAdmin;
import org.apache.ibatis.annotations.Mapper;
/**
* 系统管理员
*/
@Mapper
public interface SysAdminMapper extends BaseMapper<SysAdmin> {
public interface SystemAdminMapper extends BaseMapper<SystemAdmin> {
}

View File

@ -0,0 +1,12 @@
package com.hxkj.common.mapper.system;
import com.hxkj.common.basics.BaseMapper;
import com.hxkj.common.entity.system.SystemConfig;
import org.apache.ibatis.annotations.Mapper;
/**
* 系统配置
*/
@Mapper
public interface SystemConfigMapper extends BaseMapper<SystemConfig> {
}

View File

@ -1,12 +1,12 @@
package com.hxkj.common.mapper.system;
import com.hxkj.common.basics.BaseMapper;
import com.hxkj.common.entity.system.SysMenu;
import com.hxkj.common.entity.system.SystemMenu;
import org.apache.ibatis.annotations.Mapper;
/**
* 系统菜单
*/
@Mapper
public interface SysMenuMapper extends BaseMapper<SysMenu> {
public interface SystemMenuMapper extends BaseMapper<SystemMenu> {
}

View File

@ -1,12 +1,12 @@
package com.hxkj.common.mapper.system;
import com.hxkj.common.basics.BaseMapper;
import com.hxkj.common.entity.system.SysRole;
import com.hxkj.common.entity.system.SystemRole;
import org.apache.ibatis.annotations.Mapper;
/**
* 系统角色
*/
@Mapper
public interface SysRoleMapper extends BaseMapper<SysRole> {
public interface SystemRoleMapper extends BaseMapper<SystemRole> {
}

View File

@ -1,12 +1,12 @@
package com.hxkj.common.mapper.system;
import com.hxkj.common.basics.BaseMapper;
import com.hxkj.common.entity.system.SysRoleMenu;
import com.hxkj.common.entity.system.SystemRoleMenu;
import org.apache.ibatis.annotations.Mapper;
/**
* 角色菜单
*/
@Mapper
public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
public interface SystemRoleMenuMapper extends BaseMapper<SystemRoleMenu> {
}

View File

@ -1,7 +1,134 @@
package com.hxkj.common.utils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hxkj.common.entity.system.SystemConfig;
import com.hxkj.common.mapper.system.SystemConfigMapper;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* 数据库配置操作工具
*/
public class ConfigUtil {
/**
* 根据类型获取配置
*
* @author fzr
* @param type 类型
* @return Map<String, String>
*/
public static Map<String, String> get(String type) {
SystemConfigMapper model = SpringUtil.getBean(SystemConfigMapper.class);
List<SystemConfig> configs = model.selectList(
new QueryWrapper<SystemConfig>()
.select("id", "type", "name", "value")
.eq("type", type));
Map<String, String> map = new LinkedHashMap<>();
for (SystemConfig config : configs) {
map.put(config.getName(), config.getValue());
}
return map;
}
/**
* 根据类型和名称获取配置
*
* @author fzr
* @param type 类型
* @param name 名称
* @return String
*/
public static String get(String type, String name) {
SystemConfigMapper model = SpringUtil.getBean(SystemConfigMapper.class);
SystemConfig config = model.selectOne(
new QueryWrapper<SystemConfig>()
.select("id", "type", "name", "value")
.eq("type", type)
.eq("name", name));
return config.getValue();
}
/**
* 根据类型和名称获取配置
*
* @author fzr
* @param type 类型
* @param name 名称
* @return String
*/
public static String get(String type, String name, String defaults) {
SystemConfigMapper model = SpringUtil.getBean(SystemConfigMapper.class);
SystemConfig config = model.selectOne(
new QueryWrapper<SystemConfig>()
.select("id", "type", "name", "value")
.eq("type", type)
.eq("name", name));
if (config == null) {
return defaults;
}
return config.getValue();
}
/**
* 根据类型和名称获取配置(JSON自定转Map)
*
* @author fzr
* @param type 类型
* @param name 名称
* @return String
*/
public static Map<String, Object> getMap(String type, String name) {
SystemConfigMapper model = SpringUtil.getBean(SystemConfigMapper.class);
SystemConfig config = model.selectOne(
new QueryWrapper<SystemConfig>()
.select("id", "type", "name", "value")
.eq("type", type)
.eq("name", name));
return ToolsUtil.jsonToMap(config.getValue());
}
/**
* 设置配置的值
*
* @author fzr
* @param type 类型
* @param name 名称
* @param val
*/
public static void set(String type, String name, String val) {
SystemConfigMapper model = SpringUtil.getBean(SystemConfigMapper.class);
SystemConfig config = model.selectOne(
new QueryWrapper<SystemConfig>()
.eq("type", type)
.eq("name", name));
if (config != null) {
config.setValue(val);
config.setUpdateTime(System.currentTimeMillis() / 1000);
model.updateById(config);
} else {
SystemConfig systemConfig = new SystemConfig();
systemConfig.setType(type);
systemConfig.setName(name);
systemConfig.setValue(val);
systemConfig.setCreateTime(System.currentTimeMillis() / 1000);
systemConfig.setUpdateTime(System.currentTimeMillis() / 1000);
model.insert(systemConfig);
}
}
}