package com.ruoyi.file.service.impl;

import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.file.domain.SysRoleUserFile;
import com.ruoyi.file.mapper.SysRoleUserFileMapper;
import com.ruoyi.file.service.ISysRoleUserFileService;
import com.ruoyi.system.mapper.SysRoleMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class SysRoleUserFileServiceImpl implements ISysRoleUserFileService {

    @Autowired
    SysRoleUserFileMapper roleUserFileMapper;

    @Autowired
    SysRoleMapper roleMapper;

    @Override
    public List<String> selectUserFileIdListByRoleId(Long roleId) {
        return roleUserFileMapper.selectUserFileIdListByRoleId(roleId);
    }

    /**
     * 修改数据权限信息
     *
     * @param role 角色信息
     * @return 结果
     */
    @Override
    @Transactional
    public int authDataScope(SysRole role)
    {
        // 修改角色信息
        roleMapper.updateRole(role);
        // 删除角色与部门关联
        roleUserFileMapper.deleteRoleUserFileByRoleId(role.getRoleId());
        // 新增角色和部门信息（数据权限）
        return insertRoleUserFile(role);
    }

    /**
     * 新增角色部门信息(数据权限)
     *
     * @param role 角色对象
     */
    public int insertRoleUserFile(SysRole role)
    {
        int rows = 1;
        // 新增角色与部门（数据权限）管理
        List<SysRoleUserFile> list = new ArrayList<SysRoleUserFile>();
        for (String userFileId : role.getUserFileIds())
        {
            SysRoleUserFile ru = new SysRoleUserFile();
            ru.setRoleId(role.getRoleId());
            ru.setUserFileId(userFileId);
            list.add(ru);
        }
        if (list.size() > 0)
        {
            rows = roleUserFileMapper.batchRoleUserFile(list);
        }
        return rows;
    }
}
