package cn.com.ty.lift.system.user.service;

import cn.com.ty.lift.system.user.dao.entity.UserAccount;
import cn.com.ty.lift.system.user.dao.entity.model.ChangeMobileRequest;
import cn.com.ty.lift.system.user.dao.entity.model.UserRequest;
import cn.com.ty.lift.system.user.dao.entity.model.UserResponse;
import cn.com.xwy.boot.web.dto.RestResponse;

import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;

/**
 * <h1>.</h1><BR>
 *
 * @author huangyuan - 2019-11-25 18:36:53
 */
public interface IUserService {
    /**
     * @param userRequest 用户请求对象
     * @return
     * @description 用户注册
     * @date 2019/11/27 10:03 AM
     */
    UserAccount saveUserInfo(UserRequest userRequest);

    /**
     * @param userRequest 用户请求参数对象
     * @return
     * @description 获取用户列表信息
     * @date 2019/11/27 10:03 AM
     */
    RestResponse list(UserRequest userRequest);

    /**
     * @param userRequest 用户请求参数对象
     * @return
     * @description 添加用户
     * @date 2019/11/27 10:03 AM
     */
    RestResponse addUser(UserRequest userRequest);

    /**
     * @param userRequest 用户请求参数对象
     * @return
     * @description 更新用户信息
     * @date 2019/11/27 10:03 AM
     */
    RestResponse updateUser(UserRequest userRequest);

    /**
     * @param userRequest 用户请求参数对象
     * @return
     * @description 删除用户信息
     * @date 2019/11/27 10:03 AM
     */
    RestResponse deleteUser(UserRequest userRequest);

    /**
     * @param userId 用户id
     * @return
     * @description 获取登录的用户信息
     * @date 2019-12-10
     */
    UserResponse getLoginUserInfo(Long userId);

    /**
     * @param
     * @return
     * @description 通过用户id集合获取用户基础信息
     * @date 10:35
     */
    Map<Long, UserResponse> getUserResponseByUserIdList(List<Long> userIdList);

    /**
     * @param queryCondition:用户名或者手机号
     * @return
     * @description 通过手机号或者用户名查询用户信息
     * @date 2019-12-23 16:17
     */
    List<Long> getIdListByQueryCondition(String queryCondition);

    /**
     * @param
     * @return
     * @description 获取用户信息
     * @date 2019-12-28 15:41
     */
    RestResponse getUserInfo(UserRequest userRequest);

    /**
     * @param
     * @return
     * @description 更换手机号
     * @date 2020-01-04 10:31
     */
    RestResponse changeMobile(ChangeMobileRequest changeMobileRequest, HttpSession session);

    /**
     * @param userRequest 用户id
     * @return 用户信息
     * @description 获取用户数据
     * @date 2020/4/16 9:24 上午
     */
    RestResponse personalCenter(UserRequest userRequest);

    /**
     * @param userRequest 用户账号
     * @return 返回数据
     * @description 编辑用户帐号
     * @date 2020/4/16 2:38 下午
     */
    RestResponse modifyAccount(UserRequest userRequest);

    /**
     * @param userRequest 用户描述
     * @return
     * @description 修改用户描述
     * @date 2020/4/16 2:50 下午
     */
    RestResponse modifyRemarks(UserRequest userRequest);

    /**
     * @param userId 用户id
     * @description 小程序用户登录信息
     * @date 2020/4/27 11:24 上午
     */
    UserResponse getAppletUserInfo(Long userId);

    /**
     * @param userRequest 用户id 用户头像路径
     * @return 修改是否成功
     * @description 修改用户头像
     * @date 2020/4/29 9:02 上午
     */
    RestResponse modifyAvatar(UserRequest userRequest);

    /**
     * @param userRequest 用户id 用户名称
     * @return 修改是否成功过
     * @description 修改用户昵称
     * @date 2020/4/29 9:02 上午
     */
    RestResponse modifyName(UserRequest userRequest);

    /**
     * @param companyId 公司id
     * @return 用户id
     * @description 获取公司指定角色的用户id
     * @date 2020/4/30 10:26 上午
     */
    List<Long> getUserIdByCompanyIdAndRoleCode(long companyId, String roleCode);
}
