package com.fzm.mall.server.admin.home_page.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fzm.mall.server.admin.home_page.entity.dto.MerchantCheckDTO;
import com.fzm.mall.server.admin.home_page.entity.dto.MerchantDTO;
import com.fzm.mall.server.admin.home_page.entity.dto.MerchantLockDTO;
import com.fzm.mall.server.admin.home_page.entity.dto.RegisterDTO;
import com.fzm.mall.server.admin.home_page.entity.vo.MerchantVO;
import com.fzm.mall.server.admin.home_page.model.Merchant;

/**
 * @author wangp
 * @date 2021/3/2 13:42
 * @description 商户服务类
 * @since JDK 1.8
 */
public interface IMerchantService extends IService<Merchant> {

    /**
     * 商户注册
     *
     * @param registerDTO 商户注册信息传输对象
     * @return 商户id
     */
    String merchantRegister(RegisterDTO registerDTO);

    /**
     * 完善商户信息
     *
     * @param merchantDTO 商户注册信息传输对象
     */
    String merchantImproveInfo(MerchantDTO merchantDTO);

    /**
     * 完善商户信息
     *
     * @param merchantDTO 商户注册信息传输对象
     */
    void merchantImproveInfo2(MerchantDTO merchantDTO);

    /**
     * 注册支付
     *
     * @param phone 注册手机号
     */
    void registerPay(String phone);

    /**
     * 检查手机号是否已经注册
     *
     * @param phone 注册手机号
     * @return
     */
    boolean checkPhoneExist(String phone);

    /**
     * 根据手机号查询商户状态
     *
     * @param phone 注册手机号
     * @return 商户对象
     */
    Merchant getByRegisterPhone(String phone);

    /**
     * 根据商户号查询商户状态
     *
     * @param merchantId 商户id
     * @return 商户对象
     */
    Merchant getByMerchantId(String merchantId);

    /**
     * 分页查询-商户列表
     *
     * @param merchantId 商户id
     * @param account    登陆账号
     * @param linkMan    联系人
     * @param type       商户类型
     * @param pageNum    当前页数
     * @param pageSize   每页个数
     */
    IPage<MerchantVO> page(String merchantId, String account, String linkMan, Integer type, Integer pageNum, Integer pageSize);

    /**
     * 商户锁定/解锁
     *
     * @param lockDTO 用户锁定/解锁信息
     */
    void lock(MerchantLockDTO lockDTO);

    /**
     * 商户审核
     *
     * @param checkDTO 商户审核
     */
    void check(MerchantCheckDTO checkDTO);

    /**
     * 查询商户身份证
     *
     * @param registerPhone 注册手机号
     */
    String getIdCard(String registerPhone);

    /**
     * 商户最近登陆时间
     *
     * @param merchantId 商户id
     * @param time       登陆时间
     */
    void lastLoginTime(String merchantId, Long time);

    /**
     * 获取所有商户联系电话
     *
     * @return
     */
    String getAllMerchantLinkPhone();

    /**
     * 初始化平台商户
     */
    void initPlatformMerchant(Merchant merchant);

    /**
     * 是否延迟提货
     *
     * @param delayDelivery 结果
     * @param merchantId    商户id
     */
    void delayDelivery(Integer delayDelivery, String merchantId);

    /**
     * 根据注册手机号更新商户状态
     *
     * @param status 状体
     */
    void updateStatusByAccount(String account, Integer status);

    Merchant queryByAddress(String address);
}
