package com.red.circle.other.app.convertor.game;

import com.red.circle.framework.core.convertor.ConvertorModel;
import com.red.circle.mq.business.model.event.game.GameLuckyBoxCountUser;
import com.red.circle.other.app.dto.clientobject.game.GameLuckyBoxAwardDetailsConfigCO;
import com.red.circle.other.app.dto.clientobject.game.GameLuckyBoxBountyDetailsConfigCO;
import com.red.circle.other.app.dto.clientobject.game.GameLuckyBoxCountCO;
import com.red.circle.other.app.dto.clientobject.game.GameLuckyBoxCountDetailsCO;
import com.red.circle.other.app.dto.clientobject.game.GameLuckyBoxFortuneValueConfigCO;
import com.red.circle.other.app.dto.clientobject.game.GameLuckyBoxGiftConfigDetailsCO;
import com.red.circle.other.app.dto.clientobject.game.GameLuckyBoxTimeConfigCO;
import com.red.circle.other.infra.database.cache.entity.game.luckgift.GameLuckyBoxAwardDetailsConfigCache;
import com.red.circle.other.infra.database.cache.entity.game.luckgift.GameLuckyBoxFortuneValueConfigCache;
import com.red.circle.other.infra.database.cache.entity.game.luckgift.GameLuckyBoxGiftConfigDetailsCache;
import com.red.circle.other.infra.database.cache.entity.game.luckgift.GameLuckyBoxInventoryCache;
import com.red.circle.other.infra.database.cache.entity.game.luckgift.GameLuckyBoxTimeConfigCache;
import com.red.circle.other.infra.database.rds.entity.game.GameLuckyBoxAwardDetailsConfig;
import com.red.circle.other.infra.database.rds.entity.game.GameLuckyBoxBountyDetailsConfig;
import com.red.circle.other.infra.database.rds.entity.game.GameLuckyBoxCount;
import com.red.circle.other.infra.database.rds.entity.game.GameLuckyBoxCountDetails;
import com.red.circle.other.infra.database.rds.entity.game.GameLuckyBoxFortuneValueConfig;
import com.red.circle.other.infra.database.rds.entity.game.GameLuckyBoxGiftConfig;
import com.red.circle.other.infra.database.rds.entity.game.GameLuckyBoxProbabilityConfig;
import com.red.circle.other.infra.database.rds.entity.game.GameLuckyBoxTimeConfig;
import java.util.List;
import org.mapstruct.Mapper;

/**
 * luckyBox
 *
 * @author zongpubin on 2023/8/26
 */
@Mapper(componentModel = ConvertorModel.SPRING)
public interface GameLuckyBoxConvertor {

  List<GameLuckyBoxTimeConfigCO> toLuckyBoxTimeConfigCO(
      List<GameLuckyBoxTimeConfigCache> gameLuckyBoxTimeConfigCaches);

  List<GameLuckyBoxTimeConfigCache> toLuckyBoxTimeConfigCache(
      List<GameLuckyBoxTimeConfig> luckyBoxTimeConfigs);

  List<GameLuckyBoxGiftConfigDetailsCO> toLuckyBoxGiftConfigDetailsCO(
      List<GameLuckyBoxGiftConfigDetailsCache> gameLuckyBoxGiftConfigDetailsCaches);

  List<GameLuckyBoxGiftConfigDetailsCache> toLuckyBoxGiftConfigDetailsCache(
      List<GameLuckyBoxGiftConfig> listByStandardId);

  GameLuckyBoxBountyDetailsConfigCO toLuckyBoxBountyConfigDetailsCO(
      GameLuckyBoxBountyDetailsConfig bountyDetailsConfig);

  GameLuckyBoxCountCO toLuckyBoxCountCO(GameLuckyBoxCount gameLuckyBoxCount);

  GameLuckyBoxCountDetailsCO toCountDetailsCO(GameLuckyBoxCountDetails countDetailsInfo);

  List<GameLuckyBoxAwardDetailsConfigCO> toLuckyBoxAwardDetailsConfigCO(
      List<GameLuckyBoxAwardDetailsConfigCache> awardDetailsConfigCaches);

  List<GameLuckyBoxAwardDetailsConfigCache> toLuckyBoxAwardDetailsConfigCache(
      List<GameLuckyBoxAwardDetailsConfig> listByAwardId);

  GameLuckyBoxFortuneValueConfigCO toLuckyBoxFortuneValueConfigCO(
      GameLuckyBoxFortuneValueConfigCache fortuneValueConfigCache);

  GameLuckyBoxFortuneValueConfigCache toFortuneValueConfigCache(
      GameLuckyBoxFortuneValueConfig fortuneValueConfig);

  List<GameLuckyBoxInventoryCache> toGameLuckyBoxInventoryCache(
      List<GameLuckyBoxProbabilityConfig> gameLuckyBoxProbabilityConfigs);

  List<GameLuckyBoxCountDetailsCO> toGameLuckyBoxCountDetailsCO(
      List<GameLuckyBoxCountDetails> boxCountDetails);

  List<GameLuckyBoxCountUser> toBoxCountUser(List<GameLuckyBoxCountDetails> boxCountDetails);
}
