package org.xyzh.system.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.xyzh.api.system.role.RoleService;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.dto.permission.TbSysPermission;
import org.xyzh.common.dto.role.TbSysRole;
import org.xyzh.common.dto.role.TbSysRolePermission;
import org.xyzh.common.vo.DeptRoleVO;

/**
 * @description    RoleController.java文件描述 角色控制器
 * @filename    RoleController.java
 * @author    yslg
 * @copyright xyzh
 * @ since 2025-10-09
 */
@RestController
@RequestMapping("/roles")
public class RoleController {
    private static final Logger logger = LoggerFactory.getLogger(RoleController.class);

    @Autowired
    private RoleService roleService;

    /**
     * @description    获取所有角色
     * @return  角色列表
     * @author    yslg
     * @ since 2025-10-09
     */
    @PostMapping("/all")
    public ResultDomain<TbSysRole> all() {
        return roleService.getAllRoles();
    }

    /**
     * @description    根据角色ID获取角色
     * @param    role 角色信息
     * @return    ResultDomain<TbSysRole> 角色信息
     * @author    yslg
     * @since 2025-10-09
     */
    @PostMapping("/id")
    public ResultDomain<TbSysRole> getRoleById(@RequestBody TbSysRole role) {
        return roleService.getRoleById(role.getRoleID());
    }

    /**
     * @description    根据过滤条件获取角色列表
     * @param    filter 过滤条件
     * @return    ResultDomain<TbSysRole> 角色列表
     * @author    yslg
     * @since 2025-10-09
     */
    @PostMapping("/list")
    public ResultDomain<TbSysRole> getRoleList(@RequestBody TbSysRole filter) {
        return roleService.getRoleList(filter);
    }

    /**
     * @description    创建角色
     * @param    role 角色信息
     * @return    ResultDomain<TbSysRole> 角色信息
     * @author    yslg
     * @since 2025-10-09
     */
    @PostMapping("/role")
    public ResultDomain<TbSysRole> createRole(@RequestBody TbSysRole role) {
        return roleService.createRole(role);
    }

    /**
     * @description    更新角色
     * @param    role 角色信息
     * @return    ResultDomain<TbSysRole> 角色信息
     * @author    yslg
     * @since 2025-10-09
     */
    @PutMapping("/role")
    public ResultDomain<TbSysRole> updateRole(@RequestBody TbSysRole role) {
        return roleService.updateRole(role);
    }

    /**
     * @description    删除角色
     * @param    role 角色信息
     * @return    ResultDomain<TbSysRole> 角色信息
     * @author    yslg
     * @since 2025-10-09
     */
    @DeleteMapping("/role")
    public ResultDomain<TbSysRole> deleteRole(@RequestBody TbSysRole role) {
        return roleService.deleteRole(role);
    }

    /**
     * @description    获取角色权限
     * @param    role 角色信息
     * @return    ResultDomain<TbSysRolePermission> 角色权限信息
     * @author    yslg
     * @since 2025-10-09
     */
    @PostMapping("/permission")
    public ResultDomain<TbSysPermission> getRolePermission(@RequestBody TbSysRole role) {        
        return roleService.getRolePermission(role.getRoleID());
    }
    
    
}
