package io.gisbi.application.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import io.gisbi.application.system.domain.User;

import java.util.Map;

/**
 * <p>
 * 用户 服务类
 * </p>
 *
 * @author lilin
 * @since 2025-05-08
 */
public interface IUserService extends IService<User> {



    /***********************************
     * 用途说明：新增系统用户
     * 参数说明
     * user     用户对象
     * roleids  角色ID
     * 返回值说明:  是否新增成功
     ***********************************/
    Map addUser(User user, String roleids);

    /***********************************
     * 用途说明：修改用户信息
     * 参数说明
     * user     用户对象
     * roleids  角色ID
     * 返回值说明:  是否新增成功
     ***********************************/
    Map updateById(User user, String roleids);

    /***********************************
     * 用途说明：查询用户信息
     * 参数说明
     * orgid     所属组织ID
     * nickname  用户昵称
     * page      分页条件
     * 返回值说明:  用户信息集合
     ***********************************/
    Page<Map<String, Object>> queryUsers(String orgid,String appId, String nickname, Page<User> page);

    /***********************************
     * 用途说明：根据id删除用户
     * 参数说明
     *id         用户id
     * 返回值说明: 判断是否删除成功
     ************************************/
    Boolean deleteUserById(String id);

    /***********************************
     * 用途说明：根据ID批量删除用户
     * 参数说明
     *ids        用户id集合
     * 返回值说明: 判断是否删除成功
     ************************************/
    boolean deleteUserByIds(String ids);

    /***********************************
     * 用途说明：重置用户密码(管理员)
     * 参数说明
     *id        重置密码的 用户id
     * 返回值说明: 判断是否重置成功
     ************************************/
    boolean resetPassword(String id);

    /***********************************
     * 用途说明：设置账号状态(管理员)
     * 参数说明
     *id        用户id
     * status   设置状态
     * 返回值说明: 判断是否设置成功
     ************************************/
    boolean setStatus(String id, String status);

    /***********************************
     * 用途说明：角色添加用户
     * 参数说明
     * roleid       角色id
     * userids      用户id组
     * 返回值说明:  是否新增成功
     ***********************************/
    boolean addUserRole(String roleid, String userid);
}
