package com.yonge.cooleshow.admin.service;

import com.yonge.cooleshow.admin.dto.UmsAdminParam;
import com.yonge.cooleshow.admin.dto.UpdateAdminPasswordParam;
import com.yonge.cooleshow.auth.api.entity.SysUser;
import com.yonge.cooleshow.mbg.model.UmsAdmin;
import com.yonge.cooleshow.mbg.model.UmsResource;
import com.yonge.cooleshow.mbg.model.UmsRole;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 后台用户管理Service
 * Created by macro on 2018/4/26.
 */
public interface UmsAdminService {
    /**
     * 根据用户名获取后台管理员
     */
    UmsAdmin getAdminByUsername(String username);


    /**
     * 根据用户id获取用户
     */
    UmsAdmin getItem(Long id);

    /**
     * 根据用户名或昵称分页查询用户
     */
    List<UmsAdmin> list(String keyword, Integer pageSize, Integer pageNum);

    /**
     * 修改指定用户信息
     */
    int update(Long id, UmsAdmin admin);

    /**
     * 删除指定用户
     */
    int delete(Long id);

    /**
     * 修改用户角色关系
     */
    @Transactional
    int updateRole(Long adminId, List<Long> roleIds);

    /**
     * 获取用户对应角色
     */
    List<UmsRole> getRoleList(Long adminId);

    /**
     * 获取指定用户的可访问资源
     */
    List<UmsResource> getResourceList(Long adminId);

    /**
     * 获取用户信息
     *
     * @param id id
     * @return
     */
    UmsAdmin getAdminById(Long id);

    /**
     *  创建root用户
     *
     * @param admin 用户信息
     * @return
     */
    boolean createRootAdmin(UmsAdmin admin);

    /**
     * 创建root用户
     *
     * @param adminList
     */
    boolean addRootAdmin(List<UmsAdmin> adminList);

    /**
     * 同步远程用户
     */
    @Transactional
    void saveAdmin();

    /**
     * 更新登录用户信息
     *
     * @param umsAdminId
     * @param sysUser
     */
    void updateInfo(Long umsAdminId, SysUser sysUser);
}
