package com.jkcredit.invoice.service.user;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jkcredit.invoice.model.entity.user.User;
import com.jkcredit.invoice.util.RespR;

import java.util.List;

/**
 * @description:
 * @author: sunzhaoning
 * @create: 2019-05-28 17:49
 * @version: V1.0
 **/
public interface UserService extends IService<User> {

    /**
     * 分页查询用户信息（含有角色信息）
     *
     * @param page 分页对象
     * @param user 参数列表
     * @return
     */
    IPage getUserWithRolePage(Page page, User user);

    /**
     * 获取所有用户信息
     *
     * @return
     */
    List<User> getAllUser();


    /**
     * 删除用户
     *
     * @param user 用户
     * @return boolean
     */
    Boolean deleteUserById(User user);

    /**
     * 通过ID查询用户信息
     *
     * @param id 用户ID
     * @return 用户信息
     */
    User selectUserById(Integer id);

    /**
     * 通过用户名查询用户信息
     *
     * @param userName 用户名
     * @return 用户信息
     */
    User selectUserByUserName(String userName);

    /**
     * 保存用户信息
     *
     * @param user DTO 对象
     * @return success/fail
     */
    Boolean saveUser(User user);

    /**
     * 更新用户密码
     *
     * @param user
     * @return
     */
    RespR<Boolean> restPassword(User user);


    /**
     * 更新锁定状态
     *
     * @param user
     * @return
     */
    RespR<Boolean> updateLock(User user);

    /**
     * 修改用户信息
     *
     * @param user
     * @return
     */
    RespR<Boolean> updateUserInfo(User user);


    /**
     * 更新企业编号
     *
     * @param user
     * @return
     */
    RespR<Boolean> updateCompanyNumById(User user);
}
