package com.hfkj.service;

import com.hfkj.entity.BsPayQrCode;

import java.util.List;
import java.util.Map;

/**
 * 支付二维码
 * @author hurui
 */
public interface BsPayQrCodeService {

    /**
     * 编辑数据
     * @param payQrCode
     */
    void editData(BsPayQrCode payQrCode,String token);

    /**
     * 生成支付二维码
     * @param generateNum 生成数量
     */
    void generatePayQrCode(Integer generateNum);

    /**
     * 批量分配公司
     * @param companyId 公司id
     * @param qrCodeIdList 二维码id集合
     */
    void batchAssignCompany(Long companyId, List<Long> qrCodeIdList);

    /**
     * 批量分配代理商
     * @param agentId 代理商id
     * @param qrCodeIdList 二维码id集合
     */
    void batchAssignAgent(Long agentId, List<Long> qrCodeIdList);

    /**
     * 分配公司
     * @param companyId
     * @param qrCodeId
     */
    void assignCompany(Long companyId, Long qrCodeId);

    /**
     * 分配代理商
     * @param agentId
     * @param qrCodeId
     */
    void assignAgent(Long agentId, Long qrCodeId);

    /**
     * 批量分配给业务员
     * @param salesmanId 业务员id
     * @param qrCodeIdList 二维码id集合
     */
    void batchAssignSalesman(Long salesmanId, List<Long> qrCodeIdList);

    /**
     * 分配给业务员
     * @param salesmanId 业务员id
     * @param qrCodeId   二维码id
     */
    void assignSalesman(Long salesmanId, Long qrCodeId);

    /**
     * 绑定门店
     * @param storeId  门店id
     * @param qrCodeId 二维码id
     */
    void bindStore(Long storeId, Long qrCodeId);

    /**
     * 解绑门店
     * @param qrCodeId 二维码id
     */
    void unbindStore(Long qrCodeId);

    /**
     * 禁用
     * @param qrCodeId 二维码id
     */
    void disabled(Long qrCodeId);

    /**
     * 启用
     * @param qrCodeId 二维码id
     */
    void enable(Long qrCodeId);

    /**
     * 根据序列号查询
     * @param serialNumber 序列号
     * @return
     */
    BsPayQrCode getDetailBySN(String serialNumber);

    /**
     * 根据id查询
     * @param id
     * @return
     */
    BsPayQrCode getDetailById(Long id);

    /**
     * 查询二维码列表
     * @param param 参数
     * @return
     */
    List<BsPayQrCode> getQrCodeList(Map<String, Object> param);

}
