package org.springblade.modules.martial.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.martial.pojo.dto.MiniScoreModifyDTO;
import org.springblade.modules.martial.pojo.entity.MartialScore;
import org.springblade.modules.martial.pojo.vo.MiniScoreDetailVO;

import java.math.BigDecimal;
import java.util.List;

/**
 * Score 服务类
 *
 * @author BladeX
 */
public interface IMartialScoreService extends IService<MartialScore> {

	/**
	 * Task 2.2: 分数范围验证
	 */
	boolean validateScore(BigDecimal score);

	/**
	 * Task 2.2: 批量分数验证
	 */
	boolean validateScores(Long athleteId, Long projectId);

	/**
	 * Task 2.3: 异常评分检测
	 */
	void checkAnomalyScore(MartialScore score);

	/**
	 * Task 2.3: 获取异常评分列表
	 */
	List<MartialScore> getAnomalyScores(Long athleteId, Long projectId);

	/**
	 * 小程序接口：获取评分详情
	 *
	 * @param athleteId 选手ID
	 * @return 评分详情（选手信息+所有评委评分+修改记录）
	 */
	MiniScoreDetailVO getScoreDetailForMini(Long athleteId);

	/**
	 * 小程序接口：修改评分（裁判长）
	 *
	 * @param dto 修改信息
	 * @return 修改成功/失败
	 */
	boolean modifyScoreByAdmin(MiniScoreModifyDTO dto);

}
