package com.cool.store.service;

import com.cool.store.context.LoginUserInfo;
import com.cool.store.dto.InvestmentCountDTO;
import com.cool.store.dto.PendingCountDTO;
import com.cool.store.entity.HyPartnerLabelDO;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.vo.BaseInfoVO;
import com.cool.store.vo.desk.*;
import com.github.pagehelper.PageInfo;

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

/**
 * @Author suzhuhong
 * @Date 2024/3/26 15:15
 * @Version 1.0
 */
public interface DeskService {


    /**
     * 加盟申请待处理
     * @param pageNum
     * @param pageSize
     * @param userId
     * @return
     */
    PageInfo<IntendPendingVO> intendPendingList(Integer pageNum, Integer pageSize,String userId);

    /**
     * 面试待处理
     * @param pageNum
     * @param pageSize
     * @param userId
     * @return
     */
    PageInfo<InterviewPendingVO>  interviewPendingList(Integer pageNum, Integer pageSize,String userId);

    /**
     * 一审面试待处理
     * @param pageNum
     * @param pageSize
     * @param user
     * @return
     */
    PageInfo<InterviewPendingVO>  firstInterviewPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);

    /**
     * 二审面试待处理
     * @param pageNum
     * @param pageSize
     * @param user
     * @return
     */
    PageInfo<InterviewPendingVO>  secondInterviewPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);

    /**
     * payStagePendingList
     * @param pageNum
     * @param pageSize
     * @param user
     * @return
     */
    PageInfo<PayStagePendingVO>  payStagePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);


    /**
     * signingPendingList
     * @param pageNum
     * @param pageSize
     * @param user
     * @return
     */
    PageInfo<SigningPendingVO>  signingPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);

    /**
     * storeExperiencePendingList
     * @param pageNum
     * @param pageSize
     * @param user
     * @return
     */
    PageInfo<StoreExperiencePendingVO>  storeExperiencePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);

    /**
     * convertToBaseInfoVO
     * @param lineInfoDO
     * @param userPortraitMap
     * @param wantShopAreaMap
     * @return
     */
    BaseInfoVO convertToBaseInfoVO(LineInfoDO lineInfoDO, Map<Long, HyPartnerLabelDO> userPortraitMap, Map<Long,String>  wantShopAreaMap);

    /**
     * getUserPortraitMap
     * @param lineInfoDOList
     * @return
     */
    Map<Long, HyPartnerLabelDO> getUserPortraitMap(List<LineInfoDO> lineInfoDOList);

    /**
     * 待处理数据
     * @param user
     * @return
     */
    PendingCountDTO  getPendingCount(LoginUserInfo user);

    InvestmentCountDTO getInvestmentCount(LoginUserInfo user);


    /**
     * 系统建店待处理数据
     * @param pageNum
     * @param pageSize
     * @param user
     * @return
     */
    PageInfo<PreparationCommonPendingVO> systemBuildStorePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
    /**
     * 缴纳加盟费待处理数据
     * @param pageNum
     * @param pageSize
     * @param user
     * @return
     */
    PageInfo<PreparationCommonPendingVO> payFranchiseFeesPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
    /**
     * 加盟合同签约待处理数据
     * @param pageNum
     * @param pageSize
     * @param user
     * @return
     */
    PageInfo<PreparationCommonPendingVO> signingOfFranchiseContractPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
    /**
     * 开业运营方案待处理数据
     * @param pageNum
     * @param pageSize
     * @param user
     * @return
     */
    PageInfo<PreparationCommonPendingVO> openingAndOperationPlanPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
    /**
     * 首批订货清单待处理数据
     * @param pageNum
     * @param pageSize
     * @param user
     * @return
     */
    PageInfo<PreparationCommonPendingVO> firstOrderListPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);

    PageInfo<PreparationCommonPendingVO> trainListPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
    /**
     *  信发系统
     */
    PageInfo<PreparationCommonPendingVO> xinFaListPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
    /**
     *  pos
     */
    PageInfo<PreparationCommonPendingVO> posListPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
    /**
     *  营帐通
     */
    PageInfo<PreparationCommonPendingVO> tentPassListPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
    /**
     *  orderSys
     */
    PageInfo<PreparationCommonPendingVO> orderSysPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);

    /**
     *      设计阶段
     */
    PageInfo<PreparationCommonPendingVO> designPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);

    /**
     *      施工阶段
     */
    PageInfo<PreparationCommonPendingVO> constructionPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);

    /**
     *      装修验收阶段
     */
    PageInfo<PreparationCommonPendingVO> fitmentPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);

    /**
     *      抖音阶段
     */
    PageInfo<PreparationCommonPendingVO> DYPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
    /**
     *      快手
     */
    PageInfo<PreparationCommonPendingVO> KSPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
    /**
     *      美团外卖
     */
    PageInfo<PreparationCommonPendingVO> MTPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
    /**
     *      美团团购
     */
    PageInfo<PreparationCommonPendingVO> MTBuyPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
    /**
     *      饿了么
     */
    PageInfo<PreparationCommonPendingVO> ELMEPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
}
