PermissonMapper.java 2.14 KB
package com.uccc.admin.mapper;

import com.uccc.admin.domain.Permission;
import com.uccc.admin.domain.Role;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * Created by bert on 2021-09-13 14:56
 */
public interface PermissonMapper {

    static final String PERMISSION_TABLE_NAME_1 = "permissions";
    static final String PERMISSION_TABLE_NAME_2 = "role_permission";


    @Select({
        "<script>",
            "select DISTINCT on(rp.permission_id,p.cts) p.id,p.name,p.sub_class, p.parent_id, p.path,p.status,p.cts,r.name as role_name, r.id as role_id from users u ",
            "JOIN user_role ur ON u.id = ur.user_id",
            "JOIN roles r ON r.id = ur.role_id",
            "JOIN role_permission rp ON ur.role_id = rp.role_id ",
            "JOIN permissions p ON rp.permission_id = p.id where u.id = #{id} and p.status = 1",
            "order by p.cts ASC",
        "</script>"
    })
    List<Permission> selectUserPermission(@Param("id") Long id);

    @Select({
            "<script>",
            "select * from " + PERMISSION_TABLE_NAME_1,
            "where type = #{type} or type = 3",
            "</script>"
    })
    List<Permission> selectAllUserPermission(@Param("type") int type);

    @Insert({
            "<script>",
            "insert into " + PERMISSION_TABLE_NAME_2,
            "(",
            "permission_id, role_id, cts, uts",
            ")",
            "values",
            "(",
            "#{permissionId}, #{userId}, now(), now()",
            ")",
            "</script>"
    })
    int createRolePermission(@Param("permissionId") int permissionId, @Param("userId") Long userId);


    @Delete("delete from " + PERMISSION_TABLE_NAME_2 + " where role_id = #{roleId}")
    int deleteRolePermissionByUserId(@Param("roleId") Long roleId);


    @Select({
            "<script>",
            "select permission_id from " + PERMISSION_TABLE_NAME_2,
            "where role_id = #{roleId}",
            "</script>",
    })
    int[] selectPermissionsByRoleId(@Param("roleId") Long roleId);
}