diff --git a/src/main/java/com/lz/modules/app/dao/StaffDao.java b/src/main/java/com/lz/modules/app/dao/StaffDao.java index 1d51f1ec..093d6ae1 100644 --- a/src/main/java/com/lz/modules/app/dao/StaffDao.java +++ b/src/main/java/com/lz/modules/app/dao/StaffDao.java @@ -68,4 +68,5 @@ public interface StaffDao extends BaseMapper { int addStaff(StaffEntity staff); + StaffEntity selectByPhone(@Param("phone") String phone); } diff --git a/src/main/java/com/lz/modules/app/service/StaffService.java b/src/main/java/com/lz/modules/app/service/StaffService.java index f3de6f5d..977e2fef 100644 --- a/src/main/java/com/lz/modules/app/service/StaffService.java +++ b/src/main/java/com/lz/modules/app/service/StaffService.java @@ -67,5 +67,7 @@ public interface StaffService extends IService { int deleteStaffById(Long id); + + StaffEntity selectByPhone(String userName); } diff --git a/src/main/java/com/lz/modules/app/service/impl/StaffServiceImpl.java b/src/main/java/com/lz/modules/app/service/impl/StaffServiceImpl.java index e212ae79..4a666c2d 100644 --- a/src/main/java/com/lz/modules/app/service/impl/StaffServiceImpl.java +++ b/src/main/java/com/lz/modules/app/service/impl/StaffServiceImpl.java @@ -82,8 +82,10 @@ public class StaffServiceImpl extends ServiceImpl impleme return staffDao.deleteStaffById(id); } - - + @Override + public StaffEntity selectByPhone(String phone) { + return staffDao.selectByPhone(phone); + } @Override diff --git a/src/main/java/com/lz/modules/flow/dao/FlowDepartmentMapper.java b/src/main/java/com/lz/modules/flow/dao/FlowDepartmentMapper.java index b80f4f97..765b5405 100644 --- a/src/main/java/com/lz/modules/flow/dao/FlowDepartmentMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/FlowDepartmentMapper.java @@ -30,4 +30,5 @@ public interface FlowDepartmentMapper extends BaseMapper { int deleteFlowDepartmentById(@Param("id")Long id); + FlowDepartment selectByStaffId(@Param("staffId") Long staffId); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/dao/StaffRoleMapper.java b/src/main/java/com/lz/modules/flow/dao/StaffRoleMapper.java index 55089ba6..e9734d3e 100644 --- a/src/main/java/com/lz/modules/flow/dao/StaffRoleMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/StaffRoleMapper.java @@ -30,4 +30,5 @@ public interface StaffRoleMapper extends BaseMapper { int deleteStaffRoleById(@Param("id")Long id); + StaffRole selectByStaffId(@Param("staffId") Long staffId); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/FlowDepartmentService.java b/src/main/java/com/lz/modules/flow/service/FlowDepartmentService.java index c6d90757..d81b307b 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowDepartmentService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowDepartmentService.java @@ -30,4 +30,5 @@ public interface FlowDepartmentService extends IService { int deleteFlowDepartmentById(Long id); + FlowDepartment selectByStaffId(Long staffId); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/StaffRoleService.java b/src/main/java/com/lz/modules/flow/service/StaffRoleService.java index 4aee0df3..249945d5 100644 --- a/src/main/java/com/lz/modules/flow/service/StaffRoleService.java +++ b/src/main/java/com/lz/modules/flow/service/StaffRoleService.java @@ -30,5 +30,5 @@ public interface StaffRoleService extends IService { int deleteStaffRoleById(Long id); - + StaffRole selectByStaffId(Long staffId); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowDepartmentServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowDepartmentServiceImpl.java index 03ff0d04..a654cd16 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowDepartmentServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowDepartmentServiceImpl.java @@ -58,7 +58,10 @@ public class FlowDepartmentServiceImpl extends ServiceImpl menuList = sysMenuService.getUserMenuList(getUserId()); - Set permissions = shiroService.getUserPermissions(getUserId()); + Set permissions = shiroService.getUserPermissions(getUser()); return R.ok().put("menuList", menuList).put("permissions", permissions); } diff --git a/src/main/java/com/lz/modules/sys/dao/SysUserDao.java b/src/main/java/com/lz/modules/sys/dao/SysUserDao.java index 698ffeba..7c7810ef 100644 --- a/src/main/java/com/lz/modules/sys/dao/SysUserDao.java +++ b/src/main/java/com/lz/modules/sys/dao/SysUserDao.java @@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.lz.modules.app.dto.UserDto; import com.lz.modules.sys.entity.SysUserEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -43,4 +44,6 @@ public interface SysUserDao extends BaseMapper { int getTotalCount(String realName, Long createUserId, String mobile, String roleName); + + List queryMenuIdListByRoleId(@Param("roleId") Long roleId); } diff --git a/src/main/java/com/lz/modules/sys/oauth2/OAuth2Realm.java b/src/main/java/com/lz/modules/sys/oauth2/OAuth2Realm.java index db5fd15f..d9a261b0 100644 --- a/src/main/java/com/lz/modules/sys/oauth2/OAuth2Realm.java +++ b/src/main/java/com/lz/modules/sys/oauth2/OAuth2Realm.java @@ -8,6 +8,8 @@ package com.lz.modules.sys.oauth2; +import com.lz.modules.app.entity.StaffEntity; +import com.lz.modules.app.service.StaffService; import com.lz.modules.sys.entity.SysUserEntity; import com.lz.modules.sys.entity.SysUserTokenEntity; import com.lz.modules.sys.service.ShiroService; @@ -31,6 +33,9 @@ public class OAuth2Realm extends AuthorizingRealm { @Autowired private ShiroService shiroService; + @Autowired + private StaffService staffService; + @Override public boolean supports(AuthenticationToken token) { return token instanceof OAuth2Token; @@ -42,11 +47,8 @@ public class OAuth2Realm extends AuthorizingRealm { @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { SysUserEntity user = (SysUserEntity)principals.getPrimaryPrincipal(); - Long userId = user.getUserId(); - //用户权限列表 - Set permsSet = shiroService.getUserPermissions(userId); - + Set permsSet = shiroService.getUserPermissions(user); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); info.setStringPermissions(permsSet); return info; @@ -66,8 +68,23 @@ public class OAuth2Realm extends AuthorizingRealm { if(tokenEntity == null || tokenEntity.getExpireTime().getTime() < System.currentTimeMillis()){ throw new IncorrectCredentialsException("token失效,请重新登录"); } + //查询用户信息 - SysUserEntity user = shiroService.queryUser(tokenEntity.getUserId()); + SysUserEntity user = null; + if(tokenEntity.getType() == 0){ //如果是系统用户 + user = shiroService.queryUser(tokenEntity.getUserId()); + }else{ + user = new SysUserEntity();//如果是普通用户 + StaffEntity staffEntity = staffService.selectStaffById(tokenEntity.getUserId()); + user.setPassword(staffEntity.getPassword()); + user.setMobile(staffEntity.getMobile()); + user.setUserId(staffEntity.getId()); + user.setEmail(staffEntity.getEmail()); + user.setSalt(staffEntity.getSalt()); + user.setStatus(1); + user.setRealName(staffEntity.getName()); + user.setUserNo(staffEntity.getMobile()); + } //账号锁定 if(user.getStatus() == 0){ throw new LockedAccountException("账号已被锁定,请联系管理员"); diff --git a/src/main/java/com/lz/modules/sys/service/ShiroService.java b/src/main/java/com/lz/modules/sys/service/ShiroService.java index 186aaa8b..b82436e6 100644 --- a/src/main/java/com/lz/modules/sys/service/ShiroService.java +++ b/src/main/java/com/lz/modules/sys/service/ShiroService.java @@ -22,7 +22,7 @@ public interface ShiroService { /** * 获取用户权限列表 */ - Set getUserPermissions(long userId); + Set getUserPermissions(SysUserEntity user); SysUserTokenEntity queryByToken(String token); diff --git a/src/main/java/com/lz/modules/sys/service/SysMenuService.java b/src/main/java/com/lz/modules/sys/service/SysMenuService.java index ee95c744..6ca8d615 100644 --- a/src/main/java/com/lz/modules/sys/service/SysMenuService.java +++ b/src/main/java/com/lz/modules/sys/service/SysMenuService.java @@ -11,6 +11,7 @@ package com.lz.modules.sys.service; import com.baomidou.mybatisplus.extension.service.IService; import com.lz.modules.sys.entity.SysMenuEntity; +import com.lz.modules.sys.entity.SysUserEntity; import java.util.List; @@ -43,7 +44,7 @@ public interface SysMenuService extends IService { /** * 获取用户菜单列表 */ - List getUserMenuList(Long userId); + List getUserMenuList(SysUserEntity user); /** * 删除 diff --git a/src/main/java/com/lz/modules/sys/service/SysUserService.java b/src/main/java/com/lz/modules/sys/service/SysUserService.java index 1a6c52ae..1b6bcdf9 100644 --- a/src/main/java/com/lz/modules/sys/service/SysUserService.java +++ b/src/main/java/com/lz/modules/sys/service/SysUserService.java @@ -63,4 +63,6 @@ public interface SysUserService extends IService { * @param newPassword 新密码 */ boolean updatePassword(Long userId, String password, String newPassword); + + List queryMenuIdListByRoleId(Long roleId); } diff --git a/src/main/java/com/lz/modules/sys/service/SysUserTokenService.java b/src/main/java/com/lz/modules/sys/service/SysUserTokenService.java index 69e1f7ab..cff603ca 100644 --- a/src/main/java/com/lz/modules/sys/service/SysUserTokenService.java +++ b/src/main/java/com/lz/modules/sys/service/SysUserTokenService.java @@ -10,6 +10,7 @@ package com.lz.modules.sys.service; import com.baomidou.mybatisplus.extension.service.IService; import com.lz.common.utils.R; +import com.lz.modules.sys.entity.SysUserEntity; import com.lz.modules.sys.entity.SysUserTokenEntity; /** @@ -23,7 +24,7 @@ public interface SysUserTokenService extends IService { * 生成token * @param userId 用户ID */ - R createToken(long userId); + R createToken(SysUserEntity user); /** * 退出,修改token值 diff --git a/src/main/java/com/lz/modules/sys/service/impl/ShiroServiceImpl.java b/src/main/java/com/lz/modules/sys/service/impl/ShiroServiceImpl.java index 97ea2c44..093889ec 100644 --- a/src/main/java/com/lz/modules/sys/service/impl/ShiroServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/impl/ShiroServiceImpl.java @@ -32,18 +32,17 @@ public class ShiroServiceImpl implements ShiroService { private SysUserTokenDao sysUserTokenDao; @Override - public Set getUserPermissions(long userId) { - List permsList; - + public Set getUserPermissions(SysUserEntity user) { + List permsList = null; //系统管理员,拥有最高权限 - if(userId == Constant.SUPER_ADMIN){ + if(user.getUserId() == Constant.SUPER_ADMIN || user.getType() == 2){ List menuList = sysMenuDao.selectList(null); permsList = new ArrayList<>(menuList.size()); for(SysMenuEntity menu : menuList){ permsList.add(menu.getPerms()); } }else{ - permsList = sysUserDao.queryAllPerms(userId); + permsList = sysUserDao.queryAllPerms(user.getUserId()); } //用户权限列表 Set permsSet = new HashSet<>(); diff --git a/src/main/java/com/lz/modules/sys/service/impl/SysMenuServiceImpl.java b/src/main/java/com/lz/modules/sys/service/impl/SysMenuServiceImpl.java index 9323a819..4253ab04 100644 --- a/src/main/java/com/lz/modules/sys/service/impl/SysMenuServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/impl/SysMenuServiceImpl.java @@ -12,8 +12,13 @@ package com.lz.modules.sys.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.lz.common.utils.Constant; import com.lz.common.utils.MapUtils; +import com.lz.modules.flow.entity.FlowDepartment; +import com.lz.modules.flow.entity.StaffRole; +import com.lz.modules.flow.service.FlowDepartmentService; +import com.lz.modules.flow.service.StaffRoleService; import com.lz.modules.sys.dao.SysMenuDao; import com.lz.modules.sys.entity.SysMenuEntity; +import com.lz.modules.sys.entity.SysUserEntity; import com.lz.modules.sys.service.SysMenuService; import com.lz.modules.sys.service.SysRoleMenuService; import com.lz.modules.sys.service.SysUserService; @@ -31,13 +36,18 @@ public class SysMenuServiceImpl extends ServiceImpl i @Autowired private SysRoleMenuService sysRoleMenuService; + @Autowired + private FlowDepartmentService flowDepartmentService ; + + @Autowired + private StaffRoleService staffRoleService; + @Override public List queryListParentId(Long parentId, List menuIdList) { List menuList = queryListParentId(parentId); if(menuIdList == null){ return menuList; } - List userMenuList = new ArrayList<>(); for(SysMenuEntity menu : menuList){ if(menuIdList.contains(menu.getMenuId())){ @@ -58,14 +68,28 @@ public class SysMenuServiceImpl extends ServiceImpl i } @Override - public List getUserMenuList(Long userId) { + public List getUserMenuList(SysUserEntity user) { //系统管理员,拥有最高权限 - if(userId == Constant.SUPER_ADMIN){ + if(user.getUserId() == Constant.SUPER_ADMIN){ return getAllMenuList(null); } - //用户菜单列表 - List menuIdList = sysUserService.queryAllMenuId(userId); + List menuIdList = null; + if (user.getType() == 0) { + menuIdList = sysUserService.queryAllMenuId(user.getUserId()); + } else { + Long roleId = 13l; //普通员工角色 + FlowDepartment flowDepartment = flowDepartmentService.selectByStaffId(user.getUserId()); + if (flowDepartment != null) { + roleId = 14l; + } else { + StaffRole staffRole = staffRoleService.selectByStaffId(user.getUserId()); + if (staffRole != null) { + roleId = 14l; + } + } + menuIdList = sysUserService.queryMenuIdListByRoleId(roleId); + } return getAllMenuList(menuIdList); } diff --git a/src/main/java/com/lz/modules/sys/service/impl/SysUserServiceImpl.java b/src/main/java/com/lz/modules/sys/service/impl/SysUserServiceImpl.java index 71a8b30f..ecc3cc32 100644 --- a/src/main/java/com/lz/modules/sys/service/impl/SysUserServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/impl/SysUserServiceImpl.java @@ -46,6 +46,7 @@ public class SysUserServiceImpl extends ServiceImpl i @Autowired private SysUserDao sysUserDao; + @Override public PageUtils queryPage(Map params) { String realName = (String) params.get("realName"); @@ -132,6 +133,12 @@ public class SysUserServiceImpl extends ServiceImpl i new QueryWrapper().eq("user_id", userId).eq("password", password)); } + @Override + public List queryMenuIdListByRoleId(Long roleId) { + return baseMapper.queryMenuIdListByRoleId(roleId); + } + + /** * 检查角色是否越权 */ diff --git a/src/main/java/com/lz/modules/sys/service/impl/SysUserTokenServiceImpl.java b/src/main/java/com/lz/modules/sys/service/impl/SysUserTokenServiceImpl.java index 444f63e1..f2bc699a 100644 --- a/src/main/java/com/lz/modules/sys/service/impl/SysUserTokenServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/impl/SysUserTokenServiceImpl.java @@ -9,6 +9,7 @@ package com.lz.modules.sys.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.lz.modules.sys.entity.SysUserEntity; import com.lz.modules.sys.entity.SysUserTokenEntity; import com.lz.modules.sys.oauth2.TokenGenerator; import com.lz.modules.sys.service.SysUserTokenService; @@ -26,7 +27,7 @@ public class SysUserTokenServiceImpl extends ServiceImpl + insert into lz_flow_department( department_id, @@ -89,5 +90,11 @@ update lz_flow_department set is_delete = 1 where id=#{id} limit 1 + + + + diff --git a/src/main/resources/mapper/flow/StaffRoleMapper.xml b/src/main/resources/mapper/flow/StaffRoleMapper.xml index 9e16fe4d..e258a2e9 100644 --- a/src/main/resources/mapper/flow/StaffRoleMapper.xml +++ b/src/main/resources/mapper/flow/StaffRoleMapper.xml @@ -74,5 +74,10 @@ update lz_staff_role set is_delete = 1 where id=#{id} limit 1 + + + diff --git a/src/main/resources/mapper/generator/StaffDao.xml b/src/main/resources/mapper/generator/StaffDao.xml index 0b1e5342..23083163 100644 --- a/src/main/resources/mapper/generator/StaffDao.xml +++ b/src/main/resources/mapper/generator/StaffDao.xml @@ -422,11 +422,15 @@ + INSERT INTO lz_staff(name,gender,mobile,email,open_id,employee_id,union_id,avatar,job_number) VALUES (#{name},#{gender},#{mobile},#{email},#{openId},#{employeeId},#{unionId},#{avatar},#{jobNumber}) + diff --git a/src/main/resources/mapper/sys/SysUserDao.xml b/src/main/resources/mapper/sys/SysUserDao.xml index 7b795c1a..5b31a09f 100644 --- a/src/main/resources/mapper/sys/SysUserDao.xml +++ b/src/main/resources/mapper/sys/SysUserDao.xml @@ -56,5 +56,11 @@ and sr.role_name like concat('%',#{roleName},'%') + +