package com.red.circle.other.inner.endpoint.sys.api;

import com.red.circle.framework.dto.PageResult;
import com.red.circle.framework.dto.ResultResponse;
import com.red.circle.other.inner.enums.sys.SysBadgeConfigTypeEnum;
import com.red.circle.other.inner.model.cmd.sys.GiveBadgeConfigQryCmd;
import com.red.circle.other.inner.model.cmd.sys.SysBadgeConfigQryCmd;
import com.red.circle.other.inner.model.cmd.sys.SysBadgePictureConfigParamCmd;
import com.red.circle.other.inner.model.dto.material.BadgeConfigDTO;
import com.red.circle.other.inner.model.dto.material.BadgePictureConfigDTO;
import com.red.circle.other.inner.model.dto.sys.GiveBadgeConfigDTO;
import com.red.circle.other.inner.model.dto.sys.SelectBadgeDTO;
import com.red.circle.other.inner.model.dto.sys.SysBadgeConfigInfoDTO;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 徽章配置.
 *
 * @author pengliang on 2023/8/11
 */
public interface SysBadgeConfigClientApi {

  String API_PREFIX = "/sys/badge-config";

  /**
   * 获得活动徽章集合.
   */
  @GetMapping("/listBadgeByType")
  ResultResponse<List<SelectBadgeDTO>> listBadgeByType(
      @RequestParam("type") SysBadgeConfigTypeEnum type);

  /**
   * 获取徽章规则信息.
   */
  @PostMapping("/getBadgeConfig")
  ResultResponse<PageResult<SysBadgeConfigInfoDTO>> getBadgeConfig(@RequestBody SysBadgeConfigQryCmd query);

  /**
   * 修改徽章信息.
   */
  @PostMapping("/updateBadgeConfig")
  ResultResponse<Void> updateBadgeConfig(@RequestBody BadgeConfigDTO badgeConfigDTO);

  /**
   * 新增徽章信息.
   */
  @PostMapping("/addBadgeConfig")
  ResultResponse<Void> addBadgeConfig(@RequestBody BadgeConfigDTO badgeConfigDTO);

  /**
   * 删除徽章.
   */
  @PostMapping("/deleteBadge")
  ResultResponse<Void> deleteBadge(@RequestParam("id") Long id);

  /**
   * 获取平台徽章.
   */
  @GetMapping("/listBadgePictureBySysOrigin")
  ResultResponse<List<BadgePictureConfigDTO>> listBadgePictureBySysOrigin(
      @RequestParam("sysOrigin") String sysOrigin,
      @RequestParam("type") SysBadgeConfigTypeEnum type);

  /**
   * 获取徽章信息分页-赠送非成就徽章.
   */
  @PostMapping("/getGiveBadgePage")
  ResultResponse<PageResult<GiveBadgeConfigDTO>> getGiveBadgePage(
      @RequestBody GiveBadgeConfigQryCmd query);

  /**
   * 添加或修改徽章图片.
   */
  @PostMapping("/addOrUpdateBadgePicture")
  ResultResponse<Void> addOrUpdateBadgePicture(@RequestBody SysBadgePictureConfigParamCmd param);

  /**
   * 查询管理员徽章
   */
  @GetMapping("/listAdminBadgeIds")
  ResultResponse<List<Long>> listAdminBadgeIds();

  @GetMapping("/getAdminBadgeId")
  ResultResponse<Long> getAdminBadgeId(@RequestParam("roles") String roles);

  @PostMapping("/listBadgePictureByBadgeIds")
  ResultResponse<List<BadgePictureConfigDTO>> listBadgePictureByBadgeIds(@RequestBody List<Long> ids);
}
