// Path: service/src/main/java/com/yuzhi/back/dao/entity/Resource.java
// public class Resource {
//     private Long id;
// 
//     private Long pid;
// 
//     private String name;
// 
//     private String url;
// 
//     private String icon;
// 
//     private Integer status;
// 
//     private Long sort;
// 
//     private Date createTime;
// 
//     private Date updateTime;
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     public Long getPid() {
//         return pid;
//     }
// 
//     public void setPid(Long pid) {
//         this.pid = pid;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public void setUrl(String url) {
//         this.url = url;
//     }
// 
//     public String getIcon() {
//         return icon;
//     }
// 
//     public void setIcon(String icon) {
//         this.icon = icon;
//     }
// 
//     public Integer getStatus() {
//         return status;
//     }
// 
//     public void setStatus(Integer status) {
//         this.status = status;
//     }
// 
//     public Long getSort() {
//         return sort;
//     }
// 
//     public void setSort(Long sort) {
//         this.sort = sort;
//     }
// 
//     public Date getCreateTime() {
//         return createTime;
//     }
// 
//     public void setCreateTime(Date createTime) {
//         this.createTime = createTime;
//     }
// 
//     public Date getUpdateTime() {
//         return updateTime;
//     }
// 
//     public void setUpdateTime(Date updateTime) {
//         this.updateTime = updateTime;
//     }
// }


import com.yuzhi.back.dao.entity.Resource;
import org.apache.ibatis.annotations.*;
import java.util.List;
        "where id = #{id,jdbcType=BIGINT}"
    })
    int updateByPrimaryKey(Resource record);

    @Select({
            "select",
            "id, pid, name, url, icon, status, sort, create_time, update_time",
            "from sys_resource"
    })
    @ResultMap("BaseResultMap")
    List<Resource> getResourceList();


    @Select({
            "select r.* from sys_role re, sys_user_role ur, sys_role_resource rr, sys_resource r",
            "where re.id = ur.role_id and ur.role_id = rr.role_id and rr.resource_id = r.id",
            "and re.status = 1",
            "and r.status = 1",
            "and ur.user_id = #{userId,jdbcType=BIGINT}",
            "order by r.sort"
    })
    @ResultMap("BaseResultMap")
    List<Resource> getUserPermissions(Long userId);

    @Select({
            "select count(1)",
            "from sys_resource where pid = #{pid,jdbcType=BIGINT}"
    })
    int getChildrenCount(Long pid);

// Path: service/src/main/java/com/yuzhi/back/dao/entity/Resource.java
// public class Resource {
//     private Long id;
// 
//     private Long pid;
// 
//     private String name;
// 
//     private String url;
// 
//     private String icon;
// 
//     private Integer status;
// 
//     private Long sort;
// 
//     private Date createTime;
// 
//     private Date updateTime;
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     public Long getPid() {
//         return pid;
//     }
// 
//     public void setPid(Long pid) {
//         this.pid = pid;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public void setUrl(String url) {
//         this.url = url;
//     }
// 
//     public String getIcon() {
//         return icon;
//     }
// 
//     public void setIcon(String icon) {
//         this.icon = icon;
//     }
// 
//     public Integer getStatus() {
//         return status;
//     }
// 
//     public void setStatus(Integer status) {
//         this.status = status;
//     }
// 
//     public Long getSort() {
//         return sort;
//     }
// 
//     public void setSort(Long sort) {
//         this.sort = sort;
//     }
// 
//     public Date getCreateTime() {
//         return createTime;
//     }
// 
//     public void setCreateTime(Date createTime) {
//         this.createTime = createTime;
//     }
// 
//     public Date getUpdateTime() {
//         return updateTime;
//     }
// 
//     public void setUpdateTime(Date updateTime) {
//         this.updateTime = updateTime;
//     }
// }


// Path: service/src/main/java/com/yuzhi/back/dao/mapper/ResourceMapper.java
import com.yuzhi.back.dao.entity.Resource;
import org.apache.ibatis.annotations.*;
import java.util.List;

        "where id = #{id,jdbcType=BIGINT}"
    })
    int updateByPrimaryKey(Resource record);

    @Select({
            "select",
            "id, pid, name, url, icon, status, sort, create_time, update_time",
            "from sys_resource"
    })
    @ResultMap("BaseResultMap")
    List<Resource> getResourceList();


    @Select({
            "select r.* from sys_role re, sys_user_role ur, sys_role_resource rr, sys_resource r",
            "where re.id = ur.role_id and ur.role_id = rr.role_id and rr.resource_id = r.id",
            "and re.status = 1",
            "and r.status = 1",
            "and ur.user_id = #{userId,jdbcType=BIGINT}",
            "order by r.sort"
    })
    @ResultMap("BaseResultMap")
    List<Resource> getUserPermissions(Long userId);

    @Select({
            "select count(1)",
            "from sys_resource where pid = #{pid,jdbcType=BIGINT}"
    })
    int getChildrenCount(Long pid);

    int batchUpdateSort(List<Resource> list);