| @@ -302,15 +302,21 @@ public class MallUserInfoController extends BaseController { | |||
| MallUserInfo info = getUser(); | |||
| info.protectInfos(); | |||
| // TODO 请用 /menu/nav 获取菜单及权限 | |||
| /* | |||
| if(info.getTenantId().equalsIgnoreCase(Constant.FM_SYS_ADMIN)) { | |||
| // 富茂系统管理员 | |||
| // 富茂超管 | |||
| // 富茂普通管理员 | |||
| } else if (info.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode())) { // isAdmin | |||
| MallPermission q = new MallPermission(); | |||
| PageInfo<MallPermission> list = mallPermissionService.listAsPage(q, 1, 100); | |||
| if(info.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode())) { | |||
| // 富茂系统管理员 | |||
| } else { | |||
| // 富茂普通管理员 | |||
| } | |||
| } else if (info.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode())) { | |||
| // 各商场超管 | |||
| MallUserInfo q = new MallUserInfo(); | |||
| q.setId(info.getId()); | |||
| List<MallPermission> list = mallPermissionService.getUserMenuList(q); | |||
| String menus = ""; | |||
| for (MallPermission rp : list.getList()) { | |||
| for (MallPermission rp : list) { | |||
| menus += rp.getId() + ","; | |||
| } | |||
| if (menus.length() > 0) { | |||
| @@ -318,17 +324,15 @@ public class MallUserInfoController extends BaseController { | |||
| } | |||
| info.setMenus(menus); | |||
| } else { | |||
| MallUserRole ur = new MallUserRole(); | |||
| ur.setUid(info.getId()); | |||
| PageInfo<MallUserRole> page = mallUserRoleService.listAsPage(ur, 1, 1); | |||
| if (page.getSize() > 0) { | |||
| Long roleId = page.getList().get(0).getRoleId(); | |||
| MallUserRole mur = mallUserRoleService.getByUid(info.getId()); | |||
| if (mur != null) { | |||
| Long roleId = mur.getRoleId(); | |||
| MallRolePermission p = new MallRolePermission(); | |||
| p.setRoleId(roleId); | |||
| p.setTenantId(info.getTenantId()); | |||
| PageInfo<MallRolePermission> listAsPage = mallRolePermissionService.listAsPage(p, 1, 100); | |||
| List<MallRolePermission> mrpList = mallRolePermissionService.getList(p); | |||
| String menus = ""; | |||
| for (MallRolePermission rp : listAsPage.getList()) { | |||
| for (MallRolePermission rp : mrpList) { | |||
| menus += rp.getPermissionId() + ","; | |||
| } | |||
| if (menus.length() > 0) { | |||
| @@ -337,6 +341,7 @@ public class MallUserInfoController extends BaseController { | |||
| info.setMenus(menus); | |||
| } | |||
| } | |||
| */ | |||
| return new ResultData(info); | |||
| } | |||
| @@ -1,6 +1,5 @@ | |||
| package com.iformall.controller; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.annotation.SystemControllerLog; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.Result; | |||
| @@ -10,7 +9,8 @@ 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 com.iformall.service.MallUserInfoService; | |||
| import com.iformall.utils.Constant; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.apache.shiro.authz.annotation.RequiresPermissions; | |||
| import org.apache.shiro.util.Assert; | |||
| @@ -40,16 +40,17 @@ public class SysMenuController extends BaseController { | |||
| private MallPermissionService mallPermissionService; | |||
| @Autowired | |||
| private MallUserRoleService mallUserRoleService; | |||
| private MallUserInfoService mallUserInfoService; | |||
| /** | |||
| * 导航菜单 | |||
| */ | |||
| @GetMapping("/nav") | |||
| public ResultData nav(){ | |||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::nav"); | |||
| MallUserInfo user = getUser(); | |||
| List<MallPermission> menuList = mallPermissionService.getUserMenuList(user); | |||
| Set<String> permissions = shiroService.getUserPermissions(getUserId()); | |||
| Set<String> permissions = mallUserInfoService.getUserPermissions(user); | |||
| Map map = new HashMap<>(); | |||
| map.put("menuList", menuList); | |||
| map.put("permissions", permissions); | |||
| @@ -66,11 +67,9 @@ public class SysMenuController extends BaseController { | |||
| @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); | |||
| MallUserInfo user = getUser(); | |||
| List<MallPermission> menuList = mallPermissionService.getUserMenuList(user); | |||
| return new ResultData(Result.SUCCESS, "查询成功", menuList); | |||
| } | |||
| @PostMapping("add") | |||
| @@ -79,7 +78,7 @@ public class SysMenuController extends BaseController { | |||
| public ResultData createPermission(MallPermission mallPermission) { | |||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::createPermission"); | |||
| Assert.notNull(mallPermission.getName(), "用户名不能为空"); | |||
| //数据校验 | |||
| // 数据校验 | |||
| verifyForm(mallPermission); | |||
| mallPermissionService.saveOrUpdate(mallPermission); | |||
| @@ -91,7 +90,7 @@ public class SysMenuController extends BaseController { | |||
| @SystemControllerLog(description = "用户管理-权限更新") | |||
| public ResultData updatePermission(MallPermission sysPermission) { | |||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::updatePermission"); | |||
| //数据校验 | |||
| // 数据校验 | |||
| verifyForm(sysPermission); | |||
| mallPermissionService.saveOrUpdate(sysPermission); | |||
| @@ -103,15 +102,15 @@ public class SysMenuController extends BaseController { | |||
| @SystemControllerLog(description = "用户管理-权限删除") | |||
| public ResultData delete(Long id) { | |||
| logger.debug("[" + getIpAddr() + "] MallPermissionController::delete"); | |||
| if(id <= 100) { | |||
| // TODO | |||
| return new ResultData("系统菜单, 不能删除"); | |||
| if(id <= Constant.SYS_MENU_MAX) { | |||
| logger.error(ErrorCode.MENU_SYS_NOT_DEL.getMessage()); | |||
| return new ResultData(ErrorCode.MENU_SYS_NOT_DEL); | |||
| } | |||
| //判断是否有子菜单或按钮 | |||
| List<MallPermission> menuList = mallPermissionService.getByParentId(id); | |||
| if(menuList.size() > 0){ | |||
| // TODO | |||
| return new ResultData("请先删除子菜单或按钮"); | |||
| logger.error(ErrorCode.MENU_CHILD_NOT_DEL.getMessage()); | |||
| return new ResultData(ErrorCode.MENU_CHILD_NOT_DEL); | |||
| } | |||
| mallPermissionService.deleteById(id); | |||
| return new ResultData(Result.SUCCESS, "删除成功"); | |||
| @@ -133,18 +132,17 @@ public class SysMenuController extends BaseController { | |||
| */ | |||
| private void verifyForm(MallPermission menu){ | |||
| if(StringUtils.isBlank(menu.getName())){ | |||
| // TODO | |||
| throw new MallinkException("菜单名称不能为空"); | |||
| throw new MallinkException(ErrorCode.MENU_NAME_EMPTY); | |||
| } | |||
| if(menu.getParentId() == null){ | |||
| throw new MallinkException("上级菜单不能为空"); | |||
| throw new MallinkException(ErrorCode.MENU_PARENT_EMPTY); | |||
| } | |||
| //菜单 | |||
| if(menu.getResourceType().equals(EnumPermissionType.MENU.getCode())){ | |||
| if(StringUtils.isBlank(menu.getUrl())){ | |||
| throw new MallinkException("菜单URL不能为空"); | |||
| throw new MallinkException(ErrorCode.MENU_URL_EMPTY); | |||
| } | |||
| } | |||
| @@ -159,7 +157,7 @@ public class SysMenuController extends BaseController { | |||
| if(menu.getResourceType().equals(EnumPermissionType.CATALOG.getCode()) || | |||
| menu.getResourceType().equals(EnumPermissionType.MENU.getCode())){ | |||
| if(parentType != EnumPermissionType.CATALOG.getCode()){ | |||
| throw new MallinkException("上级菜单只能为目录类型"); | |||
| throw new MallinkException(ErrorCode.MENU_PARENT_NOT_CATEGORY); | |||
| } | |||
| return ; | |||
| } | |||
| @@ -167,7 +165,7 @@ public class SysMenuController extends BaseController { | |||
| //按钮 | |||
| if(menu.getResourceType().equals(EnumPermissionType.BUTTON.getCode())){ | |||
| if(parentType != EnumPermissionType.MENU.getCode()){ | |||
| throw new MallinkException("上级菜单只能为菜单类型"); | |||
| throw new MallinkException(ErrorCode.MENU_PARENT_NOT_MENU); | |||
| } | |||
| return ; | |||
| } | |||
| @@ -5,7 +5,7 @@ CREATE TABLE `mall_permission` ( | |||
| `parent_id` bigint(64) DEFAULT NULL COMMENT '父编号ID,一级菜单为0', | |||
| `available` varchar(1) DEFAULT 'Y' COMMENT '是否可用 Y/N', | |||
| `permission` varchar(50) DEFAULT NULL COMMENT '授权(多个用逗号分隔,如:user:list,user:create)', | |||
| `resource_type` tinyint(2) DEFAULT NULL COMMENT '资源类型0:目录 1:菜单 2:按钮', | |||
| `resource_type` tinyint(2) DEFAULT NULL COMMENT '资源类型0:目录 1:菜单 2:按钮 3:其它', | |||
| `module_color` varchar(10) DEFAULT NULL COMMENT '菜单背景色-1级菜单使用', | |||
| `module_color_num` varchar(15) DEFAULT NULL COMMENT '菜单字体颜色-1级菜单使用', | |||
| `url` varchar(50) DEFAULT NULL COMMENT '资源路径(user/list or http://localhost/1.html)', | |||
| @@ -19,16 +19,16 @@ CREATE TABLE `mall_permission` ( | |||
| INSERT INTO `mall_permission` | |||
| (`id`,`name`, `parent_id`,`available`,`permission`,`resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`,`sort`) | |||
| VALUES | |||
| (1, '数据塔台', 0, 'Y', 0, '#EE7653', '238,118,83', null, null, 0, 1), | |||
| (2, '商户商铺', 0, 'Y', 0, '#51A9C9', '81,169,201', null, null, 0, 2), | |||
| (3, '合同管理', 0, 'Y', 0, '#5A76BF', '90,118,191', null, null, 0, 3), | |||
| (4, '账单管理', 0, 'Y', 0, '#3FC496', '63,196,150', null, null, 0, 4), | |||
| (5, '会员系统', 0, 'Y', 0, '#6B5EC9', '107,94,201', null, null, 0, 5), | |||
| (6, '营销系统', 0, 'Y', 0, '#C85963', '200,89,99', null, null, 0, 6), | |||
| (7, '账号管理', 0, 'Y', 0, '#B23D8B', '178,61,139', null, null, 0, 9), | |||
| (8, '移动端数据塔台', 0, 'Y', '#B23D8B', '178,61,139', null, null, 0, 8), | |||
| (9, '智能硬件', 0, 'Y', 0, '#E19549', '225,149,73', null, null, 0, 7), | |||
| (50, '系统管理', 0, 'Y', '#B23D8B', '178,61,139', null, null, 0, 50), | |||
| (1, '数据塔台', 0, 'Y', null, 0, '#EE7653', '238,118,83', null, null, 0, 1), | |||
| (2, '商户商铺', 0, 'Y', null, 0, '#51A9C9', '81,169,201', null, null, 0, 2), | |||
| (3, '合同管理', 0, 'Y', null, 0, '#5A76BF', '90,118,191', null, null, 0, 3), | |||
| (4, '账单管理', 0, 'Y', null, 0, '#3FC496', '63,196,150', null, null, 0, 4), | |||
| (5, '会员系统', 0, 'Y', null, 0, '#6B5EC9', '107,94,201', null, null, 0, 5), | |||
| (6, '营销系统', 0, 'Y', null, 0, '#C85963', '200,89,99', null, null, 0, 6), | |||
| (7, '账号管理', 0, 'Y', null, 0, '#B23D8B', '178,61,139', null, null, 0, 9), | |||
| (8, '移动端数据塔台', 0, 'Y', null, 3, '#B23D8B', '178,61,139', null, null, 0, 8), | |||
| (9, '智能硬件', 0, 'Y', null, 0, '#E19549', '225,149,73', null, null, 0, 7), | |||
| (50, '系统管理', 0, 'Y', null, 0, '#B23D8B', '178,61,139', null, null, 0, 50), | |||
| (101, '数据总览', 1, 'Y', null, 1, null, null, 'zonglan', 'icon-fumao-shujuzonglan', 0, 101), | |||
| (102, '运营数据', 1, 'Y', null, 1, null, null, 'yunying', 'icon-shuju1', 0, 102), | |||
| @@ -139,6 +139,6 @@ VALUES | |||
| (902, '用户数量', 7, 'Y', null, 1, null, null, 'userList', 'icon-yonghuguanli', 0, 902), | |||
| (951, '广告大屏', 9, 'Y', null, 0, null, null, 'bigScreentList', 'icon-navicon-yhgl', 0, 951), | |||
| (961, '大屏管理', 951, 'Y', null, 1, null, null, 'bigScreentList', null, 0, 961), | |||
| (961, '大屏管理', 951, 'Y', null, 1, null, null, 'bigScreentList', null, 0, 961) | |||
| ; | |||
| @@ -28,6 +28,16 @@ public enum ErrorCode{ | |||
| SYS_REPEAT_SUBMIT_EXCEPTION(1013, "请勿重复操作"), | |||
| REPORT_TYPE_UNKNOWN(1014, "不支持的报表类型"), | |||
| /** | |||
| * 菜单 | |||
| */ | |||
| MENU_NAME_EMPTY(1020, "菜单名称不能为空"), | |||
| MENU_PARENT_EMPTY(1021, "上级菜单不能为空"), | |||
| MENU_URL_EMPTY(1022, "菜单URL不能为空"), | |||
| MENU_PARENT_NOT_CATEGORY(1023, "上级菜单只能为目录类型"), | |||
| MENU_PARENT_NOT_MENU(1024, "上级菜单只能为菜单类型"), | |||
| MENU_SYS_NOT_DEL(1025, "系统菜单, 不能删除"), | |||
| MENU_CHILD_NOT_DEL(1026, "请先删除子菜单或按钮"), | |||
| /** | |||
| * 数据库 | |||
| */ | |||
| @@ -1,6 +1,8 @@ | |||
| package com.iformall.domain.po; | |||
| import com.iformall.enums.EnumUserAdmin; | |||
| import com.iformall.enums.EnumUserWechat; | |||
| import com.iformall.utils.Constant; | |||
| import lombok.Data; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| @@ -273,6 +275,15 @@ public class MallUserInfo implements Serializable { | |||
| } | |||
| } | |||
| public boolean isFmSuperAdmin() { | |||
| if(tenantId.equalsIgnoreCase(Constant.FM_SYS_ADMIN)) { | |||
| if(id.equals(Constant.SUPER_ADMIN) || isAdmin.equals(EnumUserAdmin.ADMIN.getCode())) { | |||
| return true; | |||
| } | |||
| } | |||
| return false; | |||
| } | |||
| public static enum Field | |||
| { | |||
| Id_ASC("`id` ASC"),Id_DESC("`id` DESC") | |||
| @@ -2,14 +2,53 @@ package com.iformall.service; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.MallPermission; | |||
| import com.iformall.domain.po.MallUserInfo; | |||
| import com.iformall.domain.vo.MallUserInfoVo; | |||
| import java.util.List; | |||
| import java.util.Set; | |||
| public interface MallUserInfoService { | |||
| /** | |||
| //// -------------------- Login ----------------------- //// | |||
| /** | |||
| * 根据用户名查询用户对象 | |||
| * | |||
| * @param username | |||
| * @return | |||
| */ | |||
| MallUserInfo getByUsername(String username); | |||
| /** | |||
| * 根据phone获得实体 | |||
| * | |||
| * @param phone | |||
| * @return | |||
| */ | |||
| MallUserInfo getByPhone(String phone, String tenantId); | |||
| /** | |||
| * 根据web_open_id获得展示列表 | |||
| * | |||
| * @param webOpenId | |||
| * @return | |||
| */ | |||
| List<MallUserInfoVo> getUsersByWebOpenId(String webOpenId); | |||
| /** | |||
| * 根据B端OpenId获得实体 | |||
| * | |||
| * @param openId | |||
| * @return | |||
| */ | |||
| MallUserInfo getByBOpenId(String openId, String tenantId); | |||
| //// -------------------- Login end ----------------------- //// | |||
| /** | |||
| * 根据实体查询分页列表 | |||
| * | |||
| * @param record | |||
| @@ -17,24 +56,25 @@ public interface MallUserInfoService { | |||
| * @param pageSize | |||
| * @return | |||
| */ | |||
| PageInfo<MallUserInfo> listAsPage(MallUserInfo record, Integer pageIndex, Integer pageSize); | |||
| PageInfo<MallUserInfo> listAsPage(MallUserInfo record, Integer pageIndex, Integer pageSize); | |||
| /** | |||
| * 根据实体查询列表 | |||
| * | |||
| * @param record | |||
| * @return | |||
| */ | |||
| int cntUserList(MallUserInfo record); | |||
| /** | |||
| /** | |||
| * 根据Id获得实体 | |||
| * | |||
| * @param id | |||
| * @return | |||
| */ | |||
| MallUserInfo getById(Long id); | |||
| /** | |||
| /** | |||
| * 保存或更新实体 | |||
| * | |||
| * @param record | |||
| @@ -50,34 +90,33 @@ public interface MallUserInfoService { | |||
| /** | |||
| * 查询用户名总数,用于校验用户名是否重复 | |||
| * | |||
| * @param username | |||
| */ | |||
| int cntByUserName(String username); | |||
| /** | |||
| * 查询手机号,用于校验手机号是否重复 | |||
| * | |||
| * @param phone | |||
| */ | |||
| int cntByUserPhone(String phone); | |||
| /** | |||
| * 根据用户名查询用户对象 | |||
| * @param username | |||
| * @return | |||
| */ | |||
| MallUserInfo getByUsername(String username); | |||
| /** | |||
| * 删除用户相关数据(用户记录,角色关联) | |||
| * | |||
| * @param id | |||
| */ | |||
| void deleteUser(Long id); | |||
| /** | |||
| * 检查用户按钮是否有权限 | |||
| * | |||
| * @param userId | |||
| * @param permission | |||
| * @return 是否有权限(true: 有| false: 没有) | |||
| * @return 是否有权限(true : 有 | false : 没有) | |||
| */ | |||
| boolean hasButtonPermission(Long userId, String permission); | |||
| @@ -90,13 +129,6 @@ public interface MallUserInfoService { | |||
| boolean checkCodeValid(MallUserInfo user, String code); | |||
| /** | |||
| * 根据phone获得实体 | |||
| * | |||
| * @param phone | |||
| * @return | |||
| */ | |||
| MallUserInfo getByPhone(String phone, String tenantId); | |||
| /** | |||
| * 根据phone获得实体列表 | |||
| @@ -106,14 +138,6 @@ public interface MallUserInfoService { | |||
| */ | |||
| List<MallUserInfoVo> getUserByPhone(String phone); | |||
| /** | |||
| * 根据B端OpenId获得实体 | |||
| * | |||
| * @param openId | |||
| * @return | |||
| */ | |||
| MallUserInfo getByBOpenId(String openId, String tenantId); | |||
| void updateBOpenId(MallUserInfo user); | |||
| /** | |||
| @@ -124,16 +148,9 @@ public interface MallUserInfoService { | |||
| */ | |||
| List<MallUserInfo> getByWebOpenId(String webOpenId); | |||
| /** | |||
| * 根据phone获得展示列表 | |||
| * | |||
| * @param webOpenId | |||
| * @return | |||
| */ | |||
| List<MallUserInfoVo> getUsersByWebOpenId(String webOpenId); | |||
| /** | |||
| * 根据用户名webOpenId查询用户对象 | |||
| * | |||
| * @param username | |||
| * @return | |||
| */ | |||
| @@ -147,7 +164,15 @@ public interface MallUserInfoService { | |||
| /** | |||
| * 根据条件用户列表 | |||
| * | |||
| * @return | |||
| */ | |||
| List<MallUserInfo> findList(MallUserInfo record); | |||
| /** | |||
| * 用户权限获取 | |||
| * @param record | |||
| * @return | |||
| */ | |||
| Set<String> getUserPermissions(MallUserInfo record); | |||
| } | |||
| @@ -33,6 +33,14 @@ public interface MallUserRoleService { | |||
| * @return | |||
| */ | |||
| MallUserRole getById(Long id); | |||
| /** | |||
| * 根据uid获得实体 | |||
| * | |||
| * @param uid | |||
| * @return | |||
| */ | |||
| MallUserRole getByUid(Long uid); | |||
| /** | |||
| * 保存或更新实体 | |||
| @@ -57,8 +57,7 @@ public class MallPermissionServiceImpl implements MallPermissionService { | |||
| @Override | |||
| public List<MallPermission> getUserMenuList(MallUserInfo userInfo) { | |||
| if(userInfo.getTenantId().equalsIgnoreCase(Constant.FM_SYS_ADMIN) | |||
| && userInfo.getId().equals(Constant.SUPER_ADMIN)) { | |||
| if(userInfo.isFmSuperAdmin()) { | |||
| // 富茂超级管理员,返回所有菜单 | |||
| return getAllMenuList(null); | |||
| } | |||
| @@ -6,15 +6,18 @@ import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.IdWorker; | |||
| 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.domain.po.MallUserRole; | |||
| import com.iformall.domain.po.WxMsgValidationcode; | |||
| import com.iformall.domain.vo.MallUserInfoVo; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.mapper.MallPermissionMapper; | |||
| import com.iformall.mapper.MallUserInfoMapper; | |||
| import com.iformall.mapper.MallUserRoleMapper; | |||
| import com.iformall.mapper.WxMsgValidationcodeMapper; | |||
| import com.iformall.service.MallUserInfoService; | |||
| import com.iformall.utils.Constant; | |||
| import net.sf.saxon.trans.Err; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.slf4j.Logger; | |||
| @@ -23,10 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import org.springframework.transaction.annotation.Transactional; | |||
| import java.util.Date; | |||
| import java.util.HashMap; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| import java.util.*; | |||
| import java.util.stream.Collectors; | |||
| @Service | |||
| @@ -39,6 +39,9 @@ public class MallUserInfoServiceImpl implements MallUserInfoService { | |||
| @Autowired | |||
| MallUserRoleMapper userRoleMapper; | |||
| @Autowired | |||
| MallPermissionMapper mallPermissionMapper; | |||
| @Autowired | |||
| WxMsgValidationcodeMapper wxMsgValidationcodeMapper; | |||
| @@ -233,5 +236,32 @@ public class MallUserInfoServiceImpl implements MallUserInfoService { | |||
| return mallUserInfoMapper.findList(record); | |||
| } | |||
| @Override | |||
| public Set<String> getUserPermissions(MallUserInfo record) { | |||
| List<String> permsList; | |||
| if(record.isFmSuperAdmin()) { | |||
| // 富茂超管 | |||
| MallPermission q = new MallPermission(); | |||
| q.setAvailable("Y"); | |||
| List<MallPermission> menuList = mallPermissionMapper.select(q); | |||
| permsList = new ArrayList<>(menuList.size()); | |||
| for(MallPermission menu : menuList){ | |||
| permsList.add(menu.getPermission()); | |||
| } | |||
| } else { | |||
| permsList = mallUserInfoMapper.queryAllPerms(record.getId()); | |||
| } | |||
| //用户权限列表 | |||
| Set<String> permsSet = new HashSet<>(); | |||
| for(String perms : permsList){ | |||
| if(StringUtils.isBlank(perms)){ | |||
| continue; | |||
| } | |||
| permsSet.addAll(Arrays.asList(perms.trim().split(","))); | |||
| } | |||
| return permsSet; | |||
| } | |||
| } | |||
| @@ -48,6 +48,18 @@ public class MallUserRoleServiceImpl implements MallUserRoleService { | |||
| return mallUserRoleMapper.selectByPrimaryKey(id); | |||
| } | |||
| @Override | |||
| public MallUserRole getByUid(Long uid) { | |||
| try { | |||
| MallUserRole q = new MallUserRole(); | |||
| q.setUid(uid); | |||
| return mallUserRoleMapper.selectOne(q); | |||
| } catch (Exception e) { | |||
| logger.error(e.getMessage()); | |||
| } | |||
| return null; | |||
| } | |||
| @Override | |||
| public void saveOrUpdate(MallUserRole record) { | |||
| if (record.getId() == null) { | |||
| @@ -3,9 +3,11 @@ package com.iformall.utils; | |||
| public class Constant { | |||
| /** 超级管理员ID */ | |||
| public static final Long SUPER_ADMIN = 1; // 富茂超管 | |||
| public static final Long SUPER_ADMIN = 1L; // 富茂超管 | |||
| public static final String FM_SYS_ADMIN = "1"; // 富茂管理员 | |||
| public static final int SYS_MENU_MAX = 2000; // 系统菜单最大值 | |||
| // 1小时过期, | |||
| public final static int H_EXPIRE = 3600000; | |||
| @@ -224,6 +224,21 @@ | |||
| </if> | |||
| </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 mall_user_role ur | |||
| LEFT JOIN mall_role_permission rp on ur.role_id = rp.role_id | |||
| where ur.uid = #{userId} | |||
| </select> | |||
| <resultMap id="VBaseResultMap" type="com.iformall.domain.vo.MallUserInfoVo"> | |||
| <id column="id" jdbcType="BIGINT" property="id"/> | |||
| @@ -282,19 +297,4 @@ | |||
| </if> | |||
| </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> | |||