package com.zanxiang.game.module.sdk.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zanxiang.game.module.mybatis.entity.Agent;
import com.zanxiang.game.module.mybatis.entity.Game;
import com.zanxiang.game.module.mybatis.entity.User;
import com.zanxiang.game.module.sdk.pojo.param.UserData;
import reactor.util.function.Tuple3;

import java.util.Map;

/**
 * @author bilingfeng
 */
public interface IAgentService extends IService<Agent> {

    /**
     * 用户渠道更新
     *
     * @param user     用户
     * @param userData 用户数据
     */
    void userAgentUpdate(User user, UserData userData);

    /**
     * 根据前端参数获取渠道信息
     *
     * @param game     游戏数据
     * @param userData 用户数据
     * @param openId   用户openId
     * @return {@link Tuple3}<{@link Long}, {@link Map}<{@link String}, {@link String}>, {@link String}>
     */
    Tuple3<Long, Map<String, String>, String> getUserAgentId(Game game, UserData userData, String openId);

    /**
     * 根据channel解析获取渠道信息
     *
     * @param urlParamMap : 渠道解析信息
     * @return : 返回渠道对象
     */
    Agent getAgentByKey(Map<String, String> urlParamMap);

    /**
     * channel解析
     *
     * @param channel 通道
     * @return {@link Map}<{@link String}, {@link String}>
     */
    Map<String, String> channelTransform(String channel);

    /**
     * 查询用户渠道信息
     *
     * @param channel 通道
     * @return {@link Agent}
     */
    Agent getAgentByChannel(String channel);
}
