package com.cool.store.service.tp;

import com.cool.store.request.tp.TpPenaltyRuleUpdateRequest;
import com.cool.store.request.tp.TpRewardRuleUpdateRequest;
import com.cool.store.request.tp.TpRuleQueryRequest;
import com.cool.store.vo.tp.TpPenaltyRuleDetailVO;
import com.cool.store.vo.tp.TpPenaltyRuleListVO;
import com.cool.store.vo.tp.TpRewardRuleDetailVO;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * <p>
 * 十二分制-奖惩规则
 * </p>
 *
 * @author wangff
 * @since 2025/11/4
 */
public interface TpRuleService {

    /**
     * 新增惩处规则
     * @param request 惩处规则更新Request
     * @return 是否成功
     */
    Boolean insertPenaltyRule(TpPenaltyRuleUpdateRequest request);

    /**
     * 修改惩处规则
     * @param request 惩处规则更新Request
     * @return 是否成功
     */
    Boolean updatePenaltyRule(TpPenaltyRuleUpdateRequest request);

    /**
     * 惩处规则详情
     * @param ruleId 规则id
     * @return 惩处规则详情VO
     */
    TpPenaltyRuleDetailVO penaltyRuleDetail(Long ruleId);

    /**
     * 惩处规则分页查询
     * @param request 规则查询Request
     * @return 惩处规则列表
     */
    PageInfo<TpPenaltyRuleListVO> penaltyRulePage(TpRuleQueryRequest request);

    /**
     * 新增加分规则
     * @param request 加分规则更新Request
     * @return 是否成功
     */
    Boolean insertRewardRule(TpRewardRuleUpdateRequest request);

    /**
     * 修改加分规则
     * @param request 加分规则更新Request
     * @return 是否成功
     */
    Boolean updateRewardRule(TpRewardRuleUpdateRequest request);

    /**
     * 加分规则详情
     * @param ruleId 规则id
     * @return 加分规则详情VO
     */
    TpRewardRuleDetailVO rewardRuleDetail(Long ruleId);

    /**
     * 加分规则分页查询
     * @param request 规则查询Request
     * @return 加分规则详情列表
     */
    PageInfo<TpRewardRuleDetailVO> rewardRulePage(TpRuleQueryRequest request);

    /**
     * 批量删除
     * @param ruleIds 规则id列表
     * @return 是否成功
     */
    Boolean deleteRuleByIds(List<Long> ruleIds);

    /**
     * 批量启用
     * @param ruleIds 规则id列表
     * @param enable 启用状态，0未启用 1启用
     * @return 是否成功
     */
    Boolean enableRuleByIds(List<Long> ruleIds, Integer enable);
}
