
package com.tmerclub.cloud.supplier.service;

import com.tmerclub.cloud.api.supplier.vo.SupplierApiDetailVO;
import com.tmerclub.cloud.supplier.dto.SupplierCompanyDTO;
import com.tmerclub.cloud.supplier.model.SupplierCompany;
import com.tmerclub.cloud.supplier.vo.SupplierCompanyVO;

/**
 * 供应商工商信息
 *
 * @author lhd
 * @date 2022-03-14 17:04:32
 */
public interface SupplierCompanyService {
    /**
     * 根据供应商id更新供应商工商信息
     *
     * @param supplierCompany
     * @param supplierId
     * @param temp 0代表通过审核，1代表平台修改
     */
    void updateBySupplierId(SupplierCompany supplierCompany, Long supplierId, Integer temp);

    /**
     * 根据供应商工商信息id获取供应商工商信息
     *
     * @param supplierCompanyId 供应商工商信息id
     * @return 供应商工商信息
     */
    SupplierCompanyVO getById(Long supplierCompanyId);

    /**
     * 根据供应商id和审核状态获取供应商工商信息
     *
     * @param supplierId
     * @param status
     * @return
     */
    SupplierCompanyVO getSupplierCompanyBySupplierIdAndStatus(Long supplierId, Integer status);

    /**
     * 保存供应商工商信息
     *
     * @param supplierCompany
     * @param isCreate
     */
    void save(SupplierCompany supplierCompany, boolean isCreate);

    /**
     * 更新供应商工商信息
     *
     * @param supplierCompany 供应商工商信息
     */
    void update(SupplierCompany supplierCompany);

    /**
     * 检查统一信息码是否已经存在
     *
     * @param creditCode
     * @param supplierId
     * @return
     */
    Boolean checkCreditCode(String creditCode, Long supplierId);

    /**
     * 根据供应商id和审核状态删除供应商工商信息
     *
     * @param supplierId
     * @param status     审核状态
     * @return
     */
    void deleteBySupplierIdAndStatus(Long supplierId, Integer status);

    /**
     * 根据供应商id更改供应商工商信息状态
     *
     * @param supplierId
     * @param status
     * @param dbStatus
     */
    void batchUpdateStatus(Long supplierId, Integer status, Integer dbStatus);

    /**
     * 校验供应商工商信息，isCreate为true代表校验新增时的信息，false代表校验更新时的信息
     *
     * @param supplierCompany
     * @param isCreate
     * @param temp 0代表通过审核，1代表平台修改
     */
    void checkInfo(SupplierCompany supplierCompany, Boolean isCreate, Integer temp);

    /**
     * 根据供应商id更新供应商工商信息
     *
     * @param supplierCompany 供应商工商信息
     */
    void updateById(SupplierCompany supplierCompany);

    /**
     * 影印件采集
     * @param supplierCompany
     * @param supplierId
     * @return
     */
    String idCardCollect(SupplierCompanyVO supplierCompany, Long supplierId);

    /**
     * 更新正常的供应商工商信息为待审核
     */
    void updateStatusToWaitAudit();

    /**
     * 重新单独上传影印件
     * @param supplierCompanyDTO
     * @param supplierApiDetailVO
     * @param status
     * @return
     */
    String uploadIdCard(SupplierCompanyDTO supplierCompanyDTO, SupplierApiDetailVO supplierApiDetailVO, Integer status);

    /**
     * 平台更新商家工商信息
     * @param supplierCompany
     * @param supplierId
     */
    void platformUpdateSupplierCompany(SupplierCompany supplierCompany, Long supplierId);
}
