package com.chinaweal.aiccs.org.service;

import com.chinaweal.aiccs.aiccs.abnormal.entity.Gzaiccode;
import com.chinaweal.aiccs.door.entity.TUserportal;
import com.chinaweal.aiccs.org.entity.OrgUnits;
import com.chinaweal.aiccs.org.entity.TUsers;
import com.chinaweal.aicorg.model.AICUser;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.BaseService;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author <a href="https://blog.lroyia.top">lroyia</a>
 * @since 2021-02-07
 */
public interface TUsersService extends BaseService<TUsers> {

    void updateTusers(TUsers tUsers);

    TUsers selectTusersByUsernameAndPass(String userName, String passwordJm);

    TUsers selectTusersByUsername(String userName);

    TUsers selectTusersById(String intoSponsorId);

    /**
     * 根据名称查询机构
     */
    OrgUnits byOrgUnitName(String orgUnitName);

    OrgUnits byOrgUnitId(String s);

    List<OrgUnits> queryAllOrg();

    /**
     * 通过区局或者所，查询所机包含自身，所级则直接返回
     */
    List<OrgUnits> byNextLevelPlace(String orgUnitId);

    /**
     * 根据部门id查询权限，例如注册二处查询就用这个
     */
    List<AICUser> findUsersByDeptAndPermission(String orgUnitId, String permission);

    /**
     * 查询权限市局排除注册二处专用
     */
    List<AICUser> findUsersByUnitAndUnDepAndPermission(String orgUnitId, String orgDeptID, String permission);

    /**
     * 根据当前用户的机关信息，区和所则获取区，市局则市局
     * 用于决定的机关情况
     */
    Gzaiccode findOrganization(String userId);

    /**
     * 根据当前用户获取机关代码，区和所则获取区，市局则市局
     * @param userId
     * @return
     */
    String findOrgCode(String userId);

    List<AICUser> findUserByPermissionAndOrgIds(String permission,String orgId,Boolean isArea,AICUser loginUser);

    /**
     * 保存门户过来的用户信息
     * @author ymc
     * @date 2022年6月29日 10:41
     * @param tUserportal
     * @return
     */
    TUsers saveDoorUser(TUserportal tUserportal);

    /**
     * 获取用户集合
     * @author ymc
     * @since 2024年3月13日 11:29
     * @param userIds
     * @return
     */
    List<TUsers> listByUserIds(String[] userIds);

    /**
     * 转换为AICUser
     *
     * @param user 用户信息
     * @return 转换结果
     * @author lroyia
     * @since 2023年4月26日 10:08:21
     */
    AICUser toAICUser(TUsers user);

    /**
     * 根据用户id，获取用户信息
     *
     * @param userId 用户id
     * @return 用户信息
     * @author lroyia
     * @since 2023年4月26日 10:42:16
     */
    AICUser getUserById(String userId);

}
