
package com.tmerclub.cloud.supplier.service;

import com.tmerclub.cloud.common.database.dto.PageDTO;
import com.tmerclub.cloud.common.database.vo.PageVO;
import com.tmerclub.cloud.common.response.ServerResponseEntity;
import com.tmerclub.cloud.multishop.dto.ShopUserDTO;
import com.tmerclub.cloud.multishop.vo.ShopUserVO;
import com.tmerclub.cloud.supplier.dto.SupplierUserDTO;
import com.tmerclub.cloud.supplier.dto.SupplierUserRegisterDTO;
import com.tmerclub.cloud.supplier.model.SupplierUser;
import com.tmerclub.cloud.supplier.vo.SupplierUserVO;

import java.util.List;

/**
 * 供应商用户
 *
 * @author lhd
 * @date 2022-03-14 17:04:32
 */
public interface SupplierUserService {

    /**
     * 分页获取供应商用户列表
     *
     * @param pageDTO         分页参数
     * @param supplierUserDTO 搜索参数
     * @return 供应商用户列表
     */
    PageVO<SupplierUserVO> pageBySupplierId(PageDTO pageDTO, SupplierUserDTO supplierUserDTO);

    /**
     * 根据用户id获取商家用户信息
     *
     * @param userId 用户id
     * @return 商家用户信息
     */
    SupplierUserVO getByUserId(Long userId);

    /**
     * 根据用户id获取商家用户信息
     *
     * @param userId 用户id
     * @return 商家用户信息
     */
    SupplierUserVO getSimpleByUserId(Long userId);

    /**
     * 保存供应商用户信息
     *
     * @param supplierUser 供应商用户id
     * @param roleIds      角色id列表
     */
    void save(SupplierUser supplierUser, List<Long> roleIds);

    /**
     * 更新供应商用户信息
     *
     * @param supplierUser 供应商用户id
     * @param roleIds      角色id列表
     */
    void update(SupplierUser supplierUser, List<Long> roleIds);

    /**
     * 根据供应商用户id删除供应商用户信息
     *
     * @param supplierUserId 供应商用户id
     */
    void deleteById(Long supplierUserId);

    /**
     * 获取店主账号的用户id-第一个创建的账号（仅用于审核供应商）
     *
     * @param supplierId
     * @return
     */
    Long getUserIdBySupplierId(Long supplierId);

    /**
     * 商家注册
     *
     * @param supplierUserRegisterDTO
     */
    void register(SupplierUserRegisterDTO supplierUserRegisterDTO);

    /**
     * 验证供应商的职工手机号/邮箱/用户名是否存在
     *
     * @param supplierUserDTO 供应商职工信息参数
     * @return Boolean true验证通过,该账号不存在 false验证不通过，该账号存在
     */
    ServerResponseEntity<Boolean> verifySupplierUserAccount(SupplierUserDTO supplierUserDTO);

    /**
     * 新增供应商职工信息，以及账号
     *
     * @param supplierUserDTO 供应商职工参数
     */
    void saveAccount(SupplierUserDTO supplierUserDTO);

    /**
     * 修改供应商职工信息，以及账号
     *
     * @param supplierUserDTO 供应商职工参数
     */
    void updateAccount(SupplierUserDTO supplierUserDTO);

    /**
     * 根据用户手机号查询用户数量
     *
     * @param mobile 手机号码
     * @return 用户数量
     */
    Integer countAccoutByMobile(String mobile);

    /**
     * 获取员工列表
     * @param supplierUserDTO
     * @return
     */
    List<SupplierUserVO> listBySupplierId(SupplierUserDTO supplierUserDTO);
}
