package cn.pluss.platform.service.common;


import cn.pluss.platform.entity.UserApp;
import cn.pluss.platform.leshua.ExpandDto;
import cn.pluss.platform.vo.SpreadData;
import cn.pluss.platform.vo.UserNumVO;
import cn.pluss.platform.vo.UserTeamAchieVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.Map;

/**
 * app推广页面及其内也的接口逻辑
 *
 * @author DJH
 */
public interface SpreadService {

    /**
     * app拓展页面列表查询接口
     *
     * @param dto 查询参数
     *            type不传为查间推
     * @return 结果
     */
    Page<UserApp> expandPageData(ExpandDto dto);

    /**
     * 获取用户升级的图片
     *
     * @return
     */
    String getUpgradeImage();

    /**
     * 获取支付成功后页面的数据配置数据
     *
     * @return
     */
    Map<String, Object> appPaySuccessPageData();

    /**
     * 查询团队业绩
     * @date: 2022/1/24 14:25
     * @param vo:
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<cn.pluss.platform.vo.UserTeamAchieVO>
     */
    Page<UserTeamAchieVO> userTeamAchiePage(Page<UserTeamAchieVO> page, UserTeamAchieVO vo);

    /**
     * 获取用户直推数量信息
     * @date: 2022/1/24 23:20
     * @param vo:
     * @param type:
     * @return cn.pluss.platform.vo.UserNumVO
     */
    UserNumVO getUserDirectNumInfo(UserNumVO vo,int type);


    /**
     * 获取当日推广数据
     *
     * @return
     */
    SpreadData apiTodaySpreadData();

    /**
     * 获取当日推广数据
     *
     * @param userId 用户id
     * @return
     */
    SpreadData todaySpreadData(String userId);

    /**
     * 获取当日推广数据
     *
     * @param type {@link SpreadData#getType()}
     * @param target
     * @return
     */
    Page<SpreadData> apiHistorySpreadPageData(Page<SpreadData> page, String type, String target);

    /**
     * 获取当日推广数据
     *
     * @param userId 用户id
     * @param page   分页数据
     * @param type   {@link SpreadData#getType()}
     * @param target
     * @return
     */
    Page<SpreadData> historySpreadPageData(String userId, Page<SpreadData> page, String type, String target);

    /**
     * 获取用户团队交易流水
     * @date: 2022/1/25 23:53
     * @param vo:
     * @return cn.pluss.platform.vo.UserTeamAchieVO
     */
    UserTeamAchieVO getAppUserTeanFlow(UserTeamAchieVO vo);
}
