| @@ -31,8 +31,6 @@ import java.util.Map; | |||||
| */ | */ | ||||
| @Configuration | @Configuration | ||||
| public class ShiroConfig { | public class ShiroConfig { | ||||
| @Autowired(required = false) | |||||
| private MallPermissionService resourcesService; | |||||
| @Value("${spring.redis.host}") | @Value("${spring.redis.host}") | ||||
| private String host; | private String host; | ||||
| @@ -45,6 +45,11 @@ public class BaseController { | |||||
| MallUserInfo user = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userInfo); | MallUserInfo user = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userInfo); | ||||
| return user; | return user; | ||||
| } | } | ||||
| public Long getUserId(){ | |||||
| Long userId = (Long) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userId); | |||||
| return userId; | |||||
| } | |||||
| public String getTenantId(){ | public String getTenantId(){ | ||||
| String tenantId = (String)SecurityUtils.getSubject().getSession().getAttribute(UserSession.tenantId); | String tenantId = (String)SecurityUtils.getSubject().getSession().getAttribute(UserSession.tenantId); | ||||
| @@ -164,8 +164,6 @@ public class HomeController extends BaseController { | |||||
| logger.error(e.getMessage()); | logger.error(e.getMessage()); | ||||
| return new ResultData(Result.ERROR, e.getMessage()); | return new ResultData(Result.ERROR, e.getMessage()); | ||||
| } | } | ||||
| data.data = info; | |||||
| } | } | ||||
| return data; | return data; | ||||
| } | } | ||||
| @@ -1,82 +0,0 @@ | |||||
| package com.iformall.controller; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.annotation.SystemControllerLog; | |||||
| import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.domain.po.MallPermission; | |||||
| import com.iformall.service.MallPermissionService; | |||||
| import org.apache.shiro.util.Assert; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.web.bind.annotation.GetMapping; | |||||
| import org.springframework.web.bind.annotation.PostMapping; | |||||
| import org.springframework.web.bind.annotation.RequestMapping; | |||||
| import org.springframework.web.bind.annotation.RestController; | |||||
| /** | |||||
| * @author chenkx | |||||
| * @date 2018-01-05. | |||||
| */ | |||||
| @RestController | |||||
| @RequestMapping("permission") | |||||
| public class MallPermissionController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| MallPermissionService mallPermissionService; | |||||
| @GetMapping("alllist") | |||||
| @SystemControllerLog(description = "用户管理-权限") | |||||
| public ResultData alllist(String ava) { | |||||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::alllist"); | |||||
| MallPermission record = new MallPermission(); | |||||
| record.setAvailable(ava); | |||||
| PageInfo<MallPermission> permissions = mallPermissionService.listAsPage(record, 1, 10000); | |||||
| return new ResultData(Result.SUCCESS, "查询成功", permissions.getList()); | |||||
| } | |||||
| @PostMapping("add") | |||||
| @SystemControllerLog(description = "用户管理-权限添加") | |||||
| public ResultData createPermission(MallPermission mallPermission) { | |||||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::createPermission"); | |||||
| Assert.notNull(mallPermission.getName(), "用户名不能为空"); | |||||
| mallPermissionService.saveOrUpdate(mallPermission); | |||||
| return new ResultData(mallPermission.getId()); | |||||
| } | |||||
| @PostMapping("update") | |||||
| @SystemControllerLog(description = "用户管理-权限更新") | |||||
| public ResultData updatePermission(MallPermission sysPermission) { | |||||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::updatePermission"); | |||||
| mallPermissionService.saveOrUpdate(sysPermission); | |||||
| return new ResultData(); | |||||
| } | |||||
| @GetMapping("/del") | |||||
| @SystemControllerLog(description = "用户管理-权限删除") | |||||
| public ResultData delete(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::delete"); | |||||
| mallPermissionService.deleteById(id); | |||||
| return new ResultData(Result.SUCCESS, "删除成功", null); | |||||
| } | |||||
| @GetMapping("/findById") | |||||
| @SystemControllerLog(description = "用户管理-权限查找") | |||||
| public ResultData findById(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::findById"); | |||||
| mallPermissionService.getById(id); | |||||
| return new ResultData(Result.SUCCESS, "成功", null); | |||||
| } | |||||
| @GetMapping("/findByParentId") | |||||
| @SystemControllerLog(description = "用户管理-子权限查找") | |||||
| public ResultData findByParentId(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::findByParentId"); | |||||
| return new ResultData(Result.SUCCESS, "成功", mallPermissionService.getByParentId(id)); | |||||
| } | |||||
| } | |||||
| @@ -14,6 +14,8 @@ import com.iformall.enums.EnumUserWechat; | |||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.shiro.PasswordHelper; | import com.iformall.shiro.PasswordHelper; | ||||
| import com.iformall.shiro.UserSession; | import com.iformall.shiro.UserSession; | ||||
| import com.iformall.utils.Constant; | |||||
| import com.sun.tools.internal.jxc.ap.Const; | |||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
| import io.swagger.annotations.ApiImplicitParams; | import io.swagger.annotations.ApiImplicitParams; | ||||
| @@ -299,7 +301,12 @@ public class MallUserInfoController extends BaseController { | |||||
| logger.debug("[" + getIpAddr() + "] MallUserInfoController::getUserInfo"); | logger.debug("[" + getIpAddr() + "] MallUserInfoController::getUserInfo"); | ||||
| MallUserInfo info = getUser(); | MallUserInfo info = getUser(); | ||||
| info.protectInfos(); | info.protectInfos(); | ||||
| if (info.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode())) { // isAdmin | |||||
| if(info.getTenantId().equalsIgnoreCase(Constant.FM_SYS_ADMIN)) { | |||||
| // 富茂系统管理员 | |||||
| // 富茂超管 | |||||
| // 富茂普通管理员 | |||||
| } else if (info.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode())) { // isAdmin | |||||
| MallPermission q = new MallPermission(); | MallPermission q = new MallPermission(); | ||||
| PageInfo<MallPermission> list = mallPermissionService.listAsPage(q, 1, 100); | PageInfo<MallPermission> list = mallPermissionService.listAsPage(q, 1, 100); | ||||
| String menus = ""; | String menus = ""; | ||||
| @@ -0,0 +1,177 @@ | |||||
| package com.iformall.controller; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.annotation.SystemControllerLog; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.domain.po.MallPermission; | |||||
| import com.iformall.domain.po.MallUserInfo; | |||||
| import com.iformall.enums.EnumPermissionType; | |||||
| import com.iformall.exception.MallinkException; | |||||
| import com.iformall.service.MallPermissionService; | |||||
| import com.iformall.service.MallUserRoleService; | |||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.apache.shiro.authz.annotation.RequiresPermissions; | |||||
| import org.apache.shiro.util.Assert; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.web.bind.annotation.GetMapping; | |||||
| import org.springframework.web.bind.annotation.PostMapping; | |||||
| import org.springframework.web.bind.annotation.RequestMapping; | |||||
| import org.springframework.web.bind.annotation.RestController; | |||||
| import java.util.HashMap; | |||||
| import java.util.List; | |||||
| import java.util.Map; | |||||
| import java.util.Set; | |||||
| /** | |||||
| * @author Stormeye Wu | |||||
| * @date 2019-04-20. | |||||
| */ | |||||
| @RestController | |||||
| @RequestMapping("menu") | |||||
| public class SysMenuController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private MallPermissionService mallPermissionService; | |||||
| @Autowired | |||||
| private MallUserRoleService mallUserRoleService; | |||||
| /** | |||||
| * 导航菜单 | |||||
| */ | |||||
| @GetMapping("/nav") | |||||
| public ResultData nav(){ | |||||
| MallUserInfo user = getUser(); | |||||
| List<MallPermission> menuList = mallPermissionService.getUserMenuList(user); | |||||
| Set<String> permissions = shiroService.getUserPermissions(getUserId()); | |||||
| Map map = new HashMap<>(); | |||||
| map.put("menuList", menuList); | |||||
| map.put("permissions", permissions); | |||||
| return new ResultData(map); | |||||
| } | |||||
| /** | |||||
| * 所有菜单列表 | |||||
| * @return | |||||
| */ | |||||
| @GetMapping("list") | |||||
| @RequiresPermissions("sys:menu:list") | |||||
| @SystemControllerLog(description = "用户管理-权限") | |||||
| public ResultData getList() { | |||||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::list"); | |||||
| List<MallPermission> permissions = mallPermissionService.getByParentId(null); | |||||
| for(MallPermission permission: permissions) { | |||||
| List<MallPermission> permissions = null; | |||||
| } | |||||
| return new ResultData(Result.SUCCESS, "查询成功", permissions); | |||||
| } | |||||
| @PostMapping("add") | |||||
| @RequiresPermissions("sys:menu:save") | |||||
| @SystemControllerLog(description = "用户管理-权限添加") | |||||
| public ResultData createPermission(MallPermission mallPermission) { | |||||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::createPermission"); | |||||
| Assert.notNull(mallPermission.getName(), "用户名不能为空"); | |||||
| //数据校验 | |||||
| verifyForm(mallPermission); | |||||
| mallPermissionService.saveOrUpdate(mallPermission); | |||||
| return new ResultData(mallPermission.getId()); | |||||
| } | |||||
| @PostMapping("update") | |||||
| @RequiresPermissions("sys:menu:update") | |||||
| @SystemControllerLog(description = "用户管理-权限更新") | |||||
| public ResultData updatePermission(MallPermission sysPermission) { | |||||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::updatePermission"); | |||||
| //数据校验 | |||||
| verifyForm(sysPermission); | |||||
| mallPermissionService.saveOrUpdate(sysPermission); | |||||
| return new ResultData(); | |||||
| } | |||||
| @GetMapping("/del") | |||||
| @RequiresPermissions("sys:menu:delete") | |||||
| @SystemControllerLog(description = "用户管理-权限删除") | |||||
| public ResultData delete(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::delete"); | |||||
| if(id <= 100) { | |||||
| // TODO | |||||
| return new ResultData("系统菜单, 不能删除"); | |||||
| } | |||||
| //判断是否有子菜单或按钮 | |||||
| List<MallPermission> menuList = mallPermissionService.getByParentId(id); | |||||
| if(menuList.size() > 0){ | |||||
| // TODO | |||||
| return new ResultData("请先删除子菜单或按钮"); | |||||
| } | |||||
| mallPermissionService.deleteById(id); | |||||
| return new ResultData(Result.SUCCESS, "删除成功"); | |||||
| } | |||||
| /** | |||||
| * 菜单信息 | |||||
| */ | |||||
| @GetMapping("/findById") | |||||
| @RequiresPermissions("sys:menu:info") | |||||
| @SystemControllerLog(description = "用户管理-权限查找") | |||||
| public ResultData findById(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::findById"); | |||||
| return new ResultData(Result.SUCCESS, "成功", mallPermissionService.getById(id)); | |||||
| } | |||||
| /** | |||||
| * 验证参数是否正确 | |||||
| */ | |||||
| private void verifyForm(MallPermission menu){ | |||||
| if(StringUtils.isBlank(menu.getName())){ | |||||
| // TODO | |||||
| throw new MallinkException("菜单名称不能为空"); | |||||
| } | |||||
| if(menu.getParentId() == null){ | |||||
| throw new MallinkException("上级菜单不能为空"); | |||||
| } | |||||
| //菜单 | |||||
| if(menu.getResourceType().equals(EnumPermissionType.MENU.getCode())){ | |||||
| if(StringUtils.isBlank(menu.getUrl())){ | |||||
| throw new MallinkException("菜单URL不能为空"); | |||||
| } | |||||
| } | |||||
| //上级菜单类型 | |||||
| int parentType = EnumPermissionType.CATALOG.getCode(); | |||||
| if(menu.getParentId() != 0){ | |||||
| MallPermission parentMenu = mallPermissionService.getById(menu.getParentId()); | |||||
| parentType = parentMenu.getResourceType(); | |||||
| } | |||||
| //目录、菜单 | |||||
| if(menu.getResourceType().equals(EnumPermissionType.CATALOG.getCode()) || | |||||
| menu.getResourceType().equals(EnumPermissionType.MENU.getCode())){ | |||||
| if(parentType != EnumPermissionType.CATALOG.getCode()){ | |||||
| throw new MallinkException("上级菜单只能为目录类型"); | |||||
| } | |||||
| return ; | |||||
| } | |||||
| //按钮 | |||||
| if(menu.getResourceType().equals(EnumPermissionType.BUTTON.getCode())){ | |||||
| if(parentType != EnumPermissionType.MENU.getCode()){ | |||||
| throw new MallinkException("上级菜单只能为菜单类型"); | |||||
| } | |||||
| return ; | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -22,8 +22,8 @@ public class PasswordHelper { | |||||
| public static void main(String[] args) { | public static void main(String[] args) { | ||||
| MallUserInfo user = new MallUserInfo(); | MallUserInfo user = new MallUserInfo(); | ||||
| user.setUsername("sadmin"); | |||||
| user.setPassword("sadmin123"); | |||||
| user.setUsername("fmkjadmin"); | |||||
| user.setPassword("fmkjadmin790"); | |||||
| PasswordHelper passwordHelper = new PasswordHelper(); | PasswordHelper passwordHelper = new PasswordHelper(); | ||||
| passwordHelper.encryptPassword(user); | passwordHelper.encryptPassword(user); | ||||
| System.out.println(user); | System.out.println(user); | ||||
| @@ -35,8 +35,8 @@ public class MallPermission implements Serializable { | |||||
| private String nameLike; | private String nameLike; | ||||
| @io.swagger.annotations.ApiModelProperty(value="父编号ID,一级菜单为0",name="parentId") | @io.swagger.annotations.ApiModelProperty(value="父编号ID,一级菜单为0",name="parentId") | ||||
| private Long parentId; | private Long parentId; | ||||
| @io.swagger.annotations.ApiModelProperty(value="是否可用 Y/N",name="available") | |||||
| private String available; | |||||
| @io.swagger.annotations.ApiModelProperty(value="是否可用 Y/N",name="permission") | |||||
| private String available; | |||||
| @io.swagger.annotations.ApiModelProperty(value="授权(多个用逗号分隔,如:user:list,user:create)",name="permission") | @io.swagger.annotations.ApiModelProperty(value="授权(多个用逗号分隔,如:user:list,user:create)",name="permission") | ||||
| private String permission; | private String permission; | ||||
| @Transient | @Transient | ||||
| @@ -69,11 +69,15 @@ public class MallPermission implements Serializable { | |||||
| @Transient | @Transient | ||||
| private Integer sortLt; | private Integer sortLt; | ||||
| @Transient | |||||
| @io.swagger.annotations.ApiModelProperty(value="子菜单",name="childs") | |||||
| private List<?> childs; | |||||
| public static enum Field | public static enum Field | ||||
| { | { | ||||
| Id_ASC("`id` ASC"),Id_DESC("`id` DESC") | Id_ASC("`id` ASC"),Id_DESC("`id` DESC") | ||||
| ,Name_ASC("`name` ASC"),Name_DESC("`name` DESC") | ,Name_ASC("`name` ASC"),Name_DESC("`name` DESC") | ||||
| ,ParentId_ASC("`parentId` ASC"),ParentId_DESC("`parentId` DESC") | |||||
| ,ParentId_ASC("`parent_id` ASC"),ParentId_DESC("`parent_id` DESC") | |||||
| ,Available_ASC("`available` ASC"),Available_DESC("`available` DESC") | ,Available_ASC("`available` ASC"),Available_DESC("`available` DESC") | ||||
| ,Permission_ASC("`permission` ASC"),Permission_DESC("`permission` DESC") | ,Permission_ASC("`permission` ASC"),Permission_DESC("`permission` DESC") | ||||
| ,ResourceType_ASC("`resource_type` ASC"),ResourceType_DESC("`resource_type` DESC") | ,ResourceType_ASC("`resource_type` ASC"),ResourceType_DESC("`resource_type` DESC") | ||||
| @@ -0,0 +1,39 @@ | |||||
| package com.iformall.enums; | |||||
| /** | |||||
| * Created by Stormeye on 2018/08/09. | |||||
| */ | |||||
| public enum EnumPermissionType { | |||||
| // 0:目录 1:菜单 2:按钮 | |||||
| CATALOG(0, "目录"), | |||||
| MENU(1, "菜单"), | |||||
| BUTTON(2,"按钮") | |||||
| ; | |||||
| public static EnumPermissionType getEnum(Integer code) { | |||||
| for (EnumPermissionType value : values()) { | |||||
| if (value.getCode().equals(code)) { | |||||
| return value; | |||||
| } | |||||
| } | |||||
| return null; | |||||
| } | |||||
| private Integer code; | |||||
| private String message; | |||||
| EnumPermissionType(Integer code, String message) { | |||||
| this.code = code; | |||||
| this.message = message; | |||||
| } | |||||
| public Integer getCode() { | |||||
| return code; | |||||
| } | |||||
| public String getMessage() { | |||||
| return message; | |||||
| } | |||||
| } | |||||
| @@ -9,9 +9,10 @@ import java.util.List; | |||||
| public interface MallPermissionMapper extends CommonMapper<MallPermission, String> { | public interface MallPermissionMapper extends CommonMapper<MallPermission, String> { | ||||
| List<MallPermission> findList(MallPermission mallPermission); | List<MallPermission> findList(MallPermission mallPermission); | ||||
| List<MallPermission> findPermissionByRoleId(Long roleId); | |||||
| List<MallPermission> findPermissionByRoleIds(@Param("roleIds") List<Long> roleIds); | |||||
| List<MallPermission> queryListParentId(Long parentId); | |||||
| List<MallPermission> queryNotButtonList(); | |||||
| @@ -37,4 +37,16 @@ public interface MallUserInfoMapper extends CommonMapper<MallUserInfo, String> { | |||||
| List<MallUserInfoVo> selectUsersByWebOpenId(@Param("webOpenId") String webOpenId); | List<MallUserInfoVo> selectUsersByWebOpenId(@Param("webOpenId") String webOpenId); | ||||
| /** | |||||
| * 查询用户的所有权限 | |||||
| * @param userId 用户ID | |||||
| */ | |||||
| List<String> queryAllPerms(Long userId); | |||||
| /** | |||||
| * 查询用户的所有菜单ID | |||||
| */ | |||||
| List<Long> queryAllMenuId(Long userId); | |||||
| } | } | ||||
| @@ -2,11 +2,41 @@ package com.iformall.service; | |||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.domain.po.MallPermission; | import com.iformall.domain.po.MallPermission; | ||||
| import com.iformall.domain.po.MallUserInfo; | |||||
| import java.util.List; | import java.util.List; | ||||
| public interface MallPermissionService { | public interface MallPermissionService { | ||||
| /** | |||||
| * 获取子菜单 | |||||
| * @param parentId | |||||
| * @param menuIdList | |||||
| * @return | |||||
| */ | |||||
| List<MallPermission> queryListParentId(Long parentId, List<Long> menuIdList); | |||||
| /** | |||||
| * | |||||
| * @param parentId | |||||
| * @return | |||||
| */ | |||||
| List<MallPermission> queryListParentId(Long parentId); | |||||
| /** | |||||
| * 所有菜单 | |||||
| */ | |||||
| List<MallPermission> queryNotButtonList(); | |||||
| /** | |||||
| * 用户菜单 | |||||
| * @param userInfo | |||||
| * @return | |||||
| */ | |||||
| List<MallPermission> getUserMenuList(MallUserInfo userInfo); | |||||
| /** | /** | ||||
| * 根据实体查询分页列表 | * 根据实体查询分页列表 | ||||
| * | * | ||||
| @@ -16,7 +46,7 @@ public interface MallPermissionService { | |||||
| * @return | * @return | ||||
| */ | */ | ||||
| PageInfo<MallPermission> listAsPage(MallPermission record, Integer pageIndex, Integer pageSize); | PageInfo<MallPermission> listAsPage(MallPermission record, Integer pageIndex, Integer pageSize); | ||||
| /** | /** | ||||
| * 根据Id获得实体 | * 根据Id获得实体 | ||||
| * | * | ||||
| @@ -46,25 +76,5 @@ public interface MallPermissionService { | |||||
| * @param id | * @param id | ||||
| */ | */ | ||||
| void deleteById(Long id); | void deleteById(Long id); | ||||
| /** | |||||
| * 根据roleId查询菜单和按钮权限 | |||||
| * @param roleId | |||||
| * @return | |||||
| */ | |||||
| List<MallPermission> findPermissionByRoleId(Long roleId); | |||||
| /** | |||||
| * 根据ruleId权限组查找相应权限 | |||||
| * @param roleIds | |||||
| * @return | |||||
| */ | |||||
| List<MallPermission> findPermissionByRoleIds(List<Long> roleIds); | |||||
| } | } | ||||
| @@ -1,13 +1,13 @@ | |||||
| package com.iformall.service; | package com.iformall.service; | ||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.domain.po.MallPermission; | |||||
| import com.iformall.domain.po.MallUserInfo; | import com.iformall.domain.po.MallUserInfo; | ||||
| import com.iformall.domain.po.MallUserRole; | import com.iformall.domain.po.MallUserRole; | ||||
| import java.util.List; | import java.util.List; | ||||
| public interface MallUserRoleService { | public interface MallUserRoleService { | ||||
| /** | /** | ||||
| * 根据实体查询分页列表 | * 根据实体查询分页列表 | ||||
| * | * | ||||
| @@ -2,15 +2,21 @@ package com.iformall.service.impl; | |||||
| import com.github.pagehelper.PageHelper; | import com.github.pagehelper.PageHelper; | ||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.domain.po.MallPermission; | import com.iformall.domain.po.MallPermission; | ||||
| import com.iformall.domain.po.MallUserInfo; | |||||
| import com.iformall.enums.EnumPermissionType; | |||||
| import com.iformall.mapper.MallPermissionMapper; | import com.iformall.mapper.MallPermissionMapper; | ||||
| import com.iformall.mapper.MallUserInfoMapper; | |||||
| import com.iformall.service.MallPermissionService; | import com.iformall.service.MallPermissionService; | ||||
| import com.iformall.utils.Constant; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import java.util.ArrayList; | |||||
| import java.util.List; | import java.util.List; | ||||
| @Service | @Service | ||||
| @@ -20,6 +26,76 @@ public class MallPermissionServiceImpl implements MallPermissionService { | |||||
| @Autowired | @Autowired | ||||
| MallPermissionMapper mallPermissionMapper; | MallPermissionMapper mallPermissionMapper; | ||||
| @Autowired | |||||
| MallUserInfoMapper mallUserInfoMapper; | |||||
| @Override | |||||
| public List<MallPermission> queryListParentId(Long parentId, List<Long> menuIdList) { | |||||
| List<MallPermission> menuList = queryListParentId(parentId); | |||||
| if(menuIdList == null){ | |||||
| return menuList; | |||||
| } | |||||
| List<MallPermission> userMenuList = new ArrayList<>(); | |||||
| for(MallPermission menu : menuList){ | |||||
| if(menuIdList.contains(menu.getId())){ | |||||
| userMenuList.add(menu); | |||||
| } | |||||
| } | |||||
| return userMenuList; | |||||
| } | |||||
| @Override | |||||
| public List<MallPermission> queryListParentId(Long parentId) { | |||||
| return mallPermissionMapper.queryListParentId(parentId); | |||||
| } | |||||
| @Override | |||||
| public List<MallPermission> queryNotButtonList() { | |||||
| return mallPermissionMapper.queryNotButtonList(); | |||||
| } | |||||
| @Override | |||||
| public List<MallPermission> getUserMenuList(MallUserInfo userInfo) { | |||||
| if(userInfo.getTenantId().equalsIgnoreCase(Constant.FM_SYS_ADMIN) | |||||
| && userInfo.getId().equals(Constant.SUPER_ADMIN)) { | |||||
| // 富茂超级管理员,返回所有菜单 | |||||
| return getAllMenuList(null); | |||||
| } | |||||
| //用户菜单列表 | |||||
| List<Long> menuIdList = mallUserInfoMapper.queryAllMenuId(userInfo.getId()); | |||||
| return getAllMenuList(menuIdList); | |||||
| } | |||||
| /** | |||||
| * 获取所有菜单列表 | |||||
| */ | |||||
| private List<MallPermission> getAllMenuList(List<Long> menuIdList){ | |||||
| //查询根菜单列表 | |||||
| List<MallPermission> menuList = queryListParentId(0L, menuIdList); | |||||
| //递归获取子菜单 | |||||
| getMenuTreeList(menuList, menuIdList); | |||||
| return menuList; | |||||
| } | |||||
| /** | |||||
| * 递归 | |||||
| */ | |||||
| private List<MallPermission> getMenuTreeList(List<MallPermission> menuList, List<Long> menuIdList){ | |||||
| List<MallPermission> subMenuList = new ArrayList<MallPermission>(); | |||||
| for(MallPermission entity : menuList){ | |||||
| //目录 | |||||
| if(entity.getResourceType().equals(EnumPermissionType.CATALOG.getCode())){ | |||||
| entity.setChilds(getMenuTreeList(queryListParentId(entity.getId(), menuIdList), menuIdList)); | |||||
| } | |||||
| subMenuList.add(entity); | |||||
| } | |||||
| return subMenuList; | |||||
| } | |||||
| @Override | @Override | ||||
| public PageInfo<MallPermission> listAsPage(MallPermission record, Integer pageIndex, Integer pageSize) { | public PageInfo<MallPermission> listAsPage(MallPermission record, Integer pageIndex, Integer pageSize) { | ||||
| @@ -45,7 +121,6 @@ public class MallPermissionServiceImpl implements MallPermissionService { | |||||
| @Override | @Override | ||||
| public void saveOrUpdate(MallPermission record) { | public void saveOrUpdate(MallPermission record) { | ||||
| if (record.getId() == null) { | if (record.getId() == null) { | ||||
| //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); | |||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| record.setId(idWorker.nextId()); | record.setId(idWorker.nextId()); | ||||
| mallPermissionMapper.insertSelective(record); | mallPermissionMapper.insertSelective(record); | ||||
| @@ -59,20 +134,4 @@ public class MallPermissionServiceImpl implements MallPermissionService { | |||||
| mallPermissionMapper.deleteByPrimaryKey(id); | mallPermissionMapper.deleteByPrimaryKey(id); | ||||
| } | } | ||||
| @Override | |||||
| public List<MallPermission> findPermissionByRoleId(Long roleId) { | |||||
| return mallPermissionMapper.findPermissionByRoleId(roleId); | |||||
| } | |||||
| @Override | |||||
| public List<MallPermission> findPermissionByRoleIds(List<Long> roleIds) { | |||||
| return mallPermissionMapper.findPermissionByRoleIds(roleIds); | |||||
| } | |||||
| } | } | ||||
| @@ -3,6 +3,7 @@ package com.iformall.service.impl; | |||||
| import com.github.pagehelper.PageHelper; | import com.github.pagehelper.PageHelper; | ||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.domain.po.MallPermission; | |||||
| import com.iformall.domain.po.MallRolePermission; | import com.iformall.domain.po.MallRolePermission; | ||||
| import com.iformall.domain.po.MallUserInfo; | import com.iformall.domain.po.MallUserInfo; | ||||
| import com.iformall.domain.po.MallUserRole; | import com.iformall.domain.po.MallUserRole; | ||||
| @@ -12,11 +13,13 @@ import com.iformall.mapper.MallPermissionMapper; | |||||
| import com.iformall.mapper.MallRolePermissionMapper; | import com.iformall.mapper.MallRolePermissionMapper; | ||||
| import com.iformall.mapper.MallUserRoleMapper; | import com.iformall.mapper.MallUserRoleMapper; | ||||
| import com.iformall.service.MallUserRoleService; | import com.iformall.service.MallUserRoleService; | ||||
| import com.iformall.utils.Constant; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import java.util.ArrayList; | |||||
| import java.util.List; | import java.util.List; | ||||
| @Service | @Service | ||||
| @@ -2,6 +2,11 @@ package com.iformall.utils; | |||||
| public class Constant { | public class Constant { | ||||
| /** 超级管理员ID */ | |||||
| public static final Long SUPER_ADMIN = 1; // 富茂超管 | |||||
| public static final String FM_SYS_ADMIN = "1"; // 富茂管理员 | |||||
| // 1小时过期, | // 1小时过期, | ||||
| public final static int H_EXPIRE = 3600000; | public final static int H_EXPIRE = 3600000; | ||||
| @@ -89,5 +89,19 @@ | |||||
| <include refid="dynamicWhereConditions"/> | <include refid="dynamicWhereConditions"/> | ||||
| </select> | </select> | ||||
| <select id="queryListParentId" parameterType="long" resultMap="BaseResultMap"> | |||||
| select | |||||
| <include refid="allColumns"/> | |||||
| from mall_permission | |||||
| where 1=1 and `parent_id` = #{value} and available = 'Y' order by sort asc | |||||
| </select> | |||||
| <select id="queryNotButtonList" resultMap="BaseResultMap"> | |||||
| select | |||||
| <include refid="allColumns"/> | |||||
| from mall_permission | |||||
| where 1=1 and `resource_type` != 2 and `available` = 'Y' order by sort asc | |||||
| </select> | |||||
| </mapper> | </mapper> | ||||
| @@ -282,4 +282,19 @@ | |||||
| </if> | </if> | ||||
| </select> | </select> | ||||
| <!-- 查询用户的所有权限 --> | |||||
| <select id="queryAllPerms" resultType="string"> | |||||
| select p.permission from mall_user_role ur | |||||
| LEFT JOIN mall_role_permission rp on ur.role_id = rp.role_id | |||||
| LEFT JOIN mall_permission p on rp.permission_id = p.id | |||||
| where ur.uid = #{userId} | |||||
| </select> | |||||
| <!-- 查询用户的所有菜单ID --> | |||||
| <select id="queryAllMenuId" resultType="long"> | |||||
| select distinct rp.permission_id from sys_user_role ur | |||||
| LEFT JOIN mall_role_permission rp on ur.role_id = rp.role_id | |||||
| where ur.uid = #{userId} | |||||
| </select> | |||||
| </mapper> | </mapper> | ||||