/**
 * Copyright 2018 人人开源 https://www.renren.io
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see .
 */
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.RegisterRelationDTO;
import com.epmet.dto.UserBaseInfoDTO;
import com.epmet.dto.form.CommonUserIdFormDTO;
import com.epmet.dto.form.VolunteerRegResiFormDTO;
import com.epmet.dto.result.CustomerUserDetailResultDTO;
import com.epmet.dto.result.ExtUserInfoResultDTO;
import com.epmet.dto.result.ResiUserBaseInfoResultDTO;
import com.epmet.dto.result.UserBaseInfoResultDTO;
import com.epmet.entity.UserBaseInfoEntity;
import java.util.List;
import java.util.Map;
/**
 * 用户基础信息
 *
 * @author generator generator@elink-cn.com
 * @since v1.0.0 2020-07-19
 */
public interface UserBaseInfoService extends BaseService {
    /**
     * 默认分页
     *
     * @param params
     * @return PageData
     * @author generator
     * @date 2020-07-19
     */
    PageData page(Map params);
    /**
     * 默认查询
     *
     * @param params
     * @return java.util.List
     * @author generator
     * @date 2020-07-19
     */
    List list(Map params);
    /**
     * 单条查询
     *
     * @param id
     * @return UserBaseInfoDTO
     * @author generator
     * @date 2020-07-19
     */
    UserBaseInfoDTO get(String id);
    /**
     * 默认保存
     *
     * @param dto
     * @return void
     * @author generator
     * @date 2020-07-19
     */
    void save(UserBaseInfoDTO dto);
    /**
     * 默认更新
     *
     * @param dto
     * @return void
     * @author generator
     * @date 2020-07-19
     */
    void update(UserBaseInfoDTO dto);
    /**
     * 批量删除
     *
     * @param ids
     * @return void
     * @author generator
     * @date 2020-07-19
     */
    void delete(String[] ids);
    /**
     * @param userId
     * @return com.epmet.dto.result.UserBaseInfoResultDTO
     * @author yinzuomei
     * @description 先从缓存获取 缓存没有获取db
     * @Date 2020/11/18 19:35
     **/
    UserBaseInfoResultDTO queryUserBaseInfoFromCache(String userId);
    /**
     * @param userIdList
     * @return java.util.List
     * @author yinzuomei
     * @description 传入用户id集合,返回用户的基本信息(包含微信基本信息)
     * @Date 2020/7/22 9:35
     **/
    List queryUserBaseInfo(List userIdList);
    /**
     * @Description  查询用户信息
     * @Param userIdList
     * @author zxc
     * @date 2021/3/16 下午2:52
     */
    List queryUserBaseInfoPlus(List userIdList);
    /**
     * @return void
     * @param
     * @author yinzuomei
     * @description 初始化历史用户信息到user_base_info数据
     * @Date 2020/7/22 10:42
     **/
    void initBaseInfo();
    /**
     * @Description 检查有无居民基础信息表,如果有更新,无插入
     * @param baseInfo
     * @return
     * @author wangc
     * @date 2020.07.23 10:35
    **/
    void insertOrUpdate(UserBaseInfoEntity baseInfo);
    /**
     * @Description 查询用户详情信息
     * @param userId
     * @return
     * @author wangc
     * @date 2020.07.27 01:34
    **/
    CustomerUserDetailResultDTO customerUserDetail(String userId);
    /**
     * 获取用户基础信息
     *
     * @param userId
     * @return com.epmet.commons.tools.utils.Result
     * @Author zhangyong
     * @Date 15:20 2020-07-28
     **/
    Result selecUserBaseInfoByUserId(String userId);
    /**
     * @Description 认证志愿者时保存/修改用户基础信息+自动注册居民
     * @param param
     * @return
     * @author wangc
     * @date 2020.07.31 09:38
     **/
    Result volunteerAutoRegResi(VolunteerRegResiFormDTO param);
    /**
     * @Description 清除用户缓存信息
     * @param ids
     * @return
     * @author wangc
     * @date 2020.08.06 14:38
    **/
    void clearUserCache(List ids);
    /**
     * @Description 查询当前用户信息 - 对外接口
     * @param param
     * @return
     * @author wangc
     * @date 2020.08.21 17:16
    **/
    ExtUserInfoResultDTO extUserInfo(CommonUserIdFormDTO param);
    List getCommonIdNumUser(String customerId, String idNum);
    @Deprecated
    Integer checkIdNum(String idNum, String customerId, String excludeUserId);
    /**
     * @Description  查询居民注册关系
     * @param userId
     * @author zxc
     * @date 2021/12/30 3:12 下午
     */
    RegisterRelationDTO resiRelationInfo(String userId);
}