package com.gic.haoban.manage.api.service.hm;

import java.util.List;

import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.manage.api.dto.hm.*;
import com.gic.haoban.manage.api.dto.qdto.hm.HmBatchModifyQDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.HmQrcodeListQDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.HmQrcodeQDTO;

/**
 * @author mozhu
 * @date 2022/7/5 09:33
 */
public interface HmQrcodeApiService {

    /**
     * 添加
     *
     * @param hmQrcodeQDTO hm qrcode qdto
     * @return int
     * @author mozhu
     * @date 2022-07-05 10:59:08
     */
    ServiceResponse add(HmQrcodeQDTO hmQrcodeQDTO);


    /**
     * 批量创建单人码
     *
     * @param hmQrcodeQDTO hm qrcode qdto
     * @return {@link ServiceResponse }
     * @author mozhu
     * @date 2022-07-15 13:48:15
     */
    ServiceResponse addList(HmQrcodeQDTO hmQrcodeQDTO);


    /**
     * 添加好友
     * addHmQrcodeMq
     * @param param 参数
     * @author mozhu
     * @date 2022-08-16 17:03:19
     */
    void addHmQrcode(String param);

    /**
     * 更新
     *
     * @param hmQrcodeQDTO hm qrcode qdto
     * @return int
     * @author mozhu
     * @date 2022-07-05 10:59:06
     */
    ServiceResponse update(HmQrcodeQDTO hmQrcodeQDTO);
    
    /**
     * 
    * @Title: batchModifyHm
    * @Description: 批量更新多人活码
    * @author xugh
    * @param qdto
    * @return
    * @throws
     */
    public ServiceResponse batchUpdateHm(HmQrcodeQDTO qdto) ;

    /**
     * 查询详情
     *
     * @param hmId hb id
     * @return {@link HmQrcodeDTO }
     * @author mozhu
     * @date 2022-07-05 10:59:03
     */
    HmQrcodeDTO getDetailById(Long hmId);

    /**
     * 查询详情简单
     *
     * @param hmId hm id
     * @return {@link HmQrcodeDTO }
     * @author mozhu
     * @date 2022-07-15 16:32:10
     */
    HmQrcodeDTO getSimpleById(Long hmId);


    /**
     * 作废
     *
     * @param hmId         hm id
     * @param invokingType 调用类型
     * @return {@link ServiceResponse }
     * @author mozhu
     * @date 2022-07-22 15:10:42
     */
    ServiceResponse delById(Long hmId, Integer invokingType, WebLoginDTO loginDTO);


    /**
     * 通过id添加num
     *
     * @param hmId    hm id
     * @param clerkId 职员id
     * @return int
     * @author mozhu
     * @date 2022-07-07 11:14:53
     */
    int updateAddNumById(Long hmId, String clerkId);


    /**
     * 重置 每天的上限好友数量
     * 定时任务
     *
     * @param param 参数
     * @author mozhu
     * @date 2022-07-07 13:52:28
     */
    void resetAddNumAndOverFlag(String param);


    /**
     * 检查员工开启联系我
     * 定时任务
     *
     * @param param 参数
     * @author mozhu
     * @date 2022-07-07 14:25:54
     */
    void checkStaffOpenContact(String param);

    /**
     * 检查员工开启联系我
     * <p>
     * "routerName": "checkStaffOpenContactByWxEnterpriseIdMq"
     *
     * @param param 参数
     * @author mozhu
     * @date 2022-08-19 15:18:29
     */
    void checkStaffOpenContactByWxEnterpriseId(String param);


    /**
     * 活码门店ids
     *
     * @param enterpriseId 企业标识
     * @return {@link List }<{@link HmQrcodeStoreDTO }>
     * @author mozhu
     * @date 2022-07-08 15:07:15
     */
    List<HmQrcodeStoreDTO> getHmStoreByEnterpriseId(String wxEnterpriseId, String enterpriseId);

    /**
     * @param enterpriseId
     * @return
     * @throws
     * @Title: getHmStoreForWxa
     * @Description: 返回小程序有活码的门店列表
     * @author xugh
     */
    List<String> getHmStoreForWxa(String wxEnterpriseId, String enterpriseId);


    /**
     * 批量修改活码分组
     *
     * @param hmIds
     * @param groupId
     * @return
     */
    ServiceResponse<Boolean> batchUpdateHmQrcodeGroup(List<Long> hmIds, Long groupId);


    /**
     * @param qdto
     * @return
     * @throws
     * @Title: listHmIdForIndex
     * @Description: 返回活码id列表, 用于首页列表查询
     * @author xugh
     */
    ServiceResponse<List<String>> listHmIdForIndex(HmQrcodeListQDTO qdto);

    ServiceResponse<List<String>> listHasQrcodeClerk(String enterpriseId, List<String> clerkIdList);
    
    ServiceResponse<String> getClerkQrcode(String enterpriseId , String clerkId) ;
    
    ServiceResponse<List<HmBatchModifyResultDTO>> batchModify(HmBatchModifyQDTO qdto) ;
    
    ServiceResponse<HmBatchCountDTO> getModifyResult(String wxEnterpriseId , String taskId) ;

    List<ClerkQrcodeDTO> listClerkQrcode(String enterpriseId, List<String> clerkIdList);

}
