SSM案例-企業權限系統(14)-用戶詳情查詢

1 用戶詳情查詢

在這裏插入圖片描述

1.1 頁面

在這裏插入圖片描述

在這裏插入圖片描述

1.2 DAO

  • IPermissionDao
public interface IPermissionDao {

    @Select("select * from permission where id in" +
            "(select permissionId from role_permission where roleId=#{id} )")
    public List<Permission> findPermissionByRoleId(String id) throws Exception;
}

  • IRoleDao
public interface IRoleDao {

    @Select("select * from role where id in (select roleId from users_role where userId = #{userId})")
    @Results({
            @Result(id = true, property = "id", column = "id"),
            @Result(property = "roleName", column = "roleName"),
            @Result(property = "roleDesc", column = "roleDesc"),
            @Result(property = "permissions" ,column = "id",javaType = java.util.List.class,
            many = @Many(select = "com.tzb.dao.IPermissionDao.findPermissionByRoleId")),

    })
    public List<Role> findRoleByUserId(String userId) throws Exception;
}

  • IUserDao
public interface IUserDao {

    @Select("select * from users where username=#{username}")
    @Results({
            @Result(id = true, property = "id", column = "id"),
            @Result(property = "username", column = "username"),
            @Result(property = "email", column = "email"),
            @Result(property = "password", column = "password"),
            @Result(property = "phoneNum", column = "phoneNum"),
            @Result(property = "status", column = "status"),
            @Result(property = "roles", column = "id", javaType = java.util.List.class,
                    many = @Many(select = "com.tzb.dao.IRoleDao.findRoleByUserId"))

    })
    public UserInfo findByUserName(String username) throws Exception;

    @Select("select * from users")
    List<UserInfo> findAll() throws Exception;

    @Insert("insert into users(email,username,password,phoneNum,status) values (#{email}," +
            "#{username},#{password},#{phoneNum},#{status})")
    void save(UserInfo userInfo) throws Exception;


    @Select("select * from users where id=#{id}")
    @Results({
            @Result(id = true, property = "id", column = "id"),
            @Result(property = "username", column = "username"),
            @Result(property = "email", column = "email"),
            @Result(property = "password", column = "password"),
            @Result(property = "phoneNum", column = "phoneNum"),
            @Result(property = "status", column = "status"),
            @Result(property = "roles", column = "id", javaType = java.util.List.class,
                    many = @Many(select = "com.tzb.dao.IRoleDao.findRoleByUserId"))
    })
    UserInfo findById(String id);
}

1.3 Service

  • 接口
public interface IUserService extends UserDetailsService {

    List<UserInfo> findAll() throws Exception;

    void save(UserInfo userInfo) throws Exception;

    UserInfo findById(String id) throws Exception;
}

  • 實現類
@Service("userService")
@Transactional
public class UserServiceImpl implements IUserService {

    @Autowired
    private IUserDao userDao;

    @Autowired
    private BCryptPasswordEncoder encoder;

    /**
     * 登錄認證
     *
     * @param username
     * @return
     * @throws UsernameNotFoundException
     */
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        UserInfo userInfo = null;
        try {
            userInfo = userDao.findByUserName(username);
        } catch (Exception e) {
            e.printStackTrace();
        }

        // 自己的用戶對象封裝成 UserDetails的實現類User
//        User user = new User(userInfo.getUsername(), "{noop}" + userInfo.getPassword(),
//                getAuthority(userInfo.getRoles()));

        User user = new User(userInfo.getUsername(), userInfo.getPassword(),
                userInfo.getStatus() == 0 ? false : true,
                true,
                true,
                true,
                getAuthority(userInfo.getRoles()));
        return user;
    }

    // 集合中裝入的是角色的描述
    private List<SimpleGrantedAuthority> getAuthority(List<Role> roles) {
        List<SimpleGrantedAuthority> list = new ArrayList<>();
        for (Role role : roles) {
            list.add(new SimpleGrantedAuthority("ROLE_" + role.getRoleName()));
        }
        return list;
    }


    /**
     * 查詢所有用戶
     *
     * @return
     * @throws Exception
     */
    @Override
    public List<UserInfo> findAll() throws Exception {
        return userDao.findAll();
    }

    /**
     * 添加用戶
     *
     * @param userInfo
     * @throws Exception
     */
    @Override
    public void save(UserInfo userInfo) throws Exception {
        // 對密碼進行加密處理
        userInfo.setPassword(encoder.encode(userInfo.getPassword()));
        userDao.save(userInfo);
    }

    @Override
    public UserInfo findById(String id) throws Exception {
        return userDao.findById(id);
    }
}

1.4 Controller

在這裏插入圖片描述

1.5 數據庫表之間的關係

  • 用戶和角色

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述


  • 角色和權限
    在這裏插入圖片描述
    在這裏插入圖片描述

1.6 結果測試

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章