package com.njcn.rdms.module.system.service.feedback;

import com.njcn.rdms.framework.common.pojo.PageResult;
import com.njcn.rdms.module.system.controller.admin.feedback.vo.FeedbackPageReqVO;
import com.njcn.rdms.module.system.controller.admin.feedback.vo.FeedbackRespVO;
import com.njcn.rdms.module.system.controller.admin.feedback.vo.FeedbackSaveReqVO;
import com.njcn.rdms.module.system.controller.admin.feedback.vo.FeedbackStatRespVO;
import com.njcn.rdms.module.system.controller.admin.feedback.vo.FeedbackStatusReqVO;
import com.njcn.rdms.module.system.controller.admin.feedback.vo.FeedbackUpdateReqVO;

public interface FeedbackService {

    /** 提交意见反馈，返回新建 id */
    Long createFeedback(FeedbackSaveReqVO reqVO);

    /** 修改意见反馈内容（PUT 全量替换；不改 status/creator）。临时功能，后端不鉴权、仅过 token；编辑权限由前端按钮可见性控制 */
    void updateFeedback(FeedbackUpdateReqVO reqVO);

    /** 分页查询（全量，不按提交人过滤）；creatorName 已按 creator 翻译为提交人姓名 */
    PageResult<FeedbackRespVO> getFeedbackPage(FeedbackPageReqVO reqVO);

    /** 查询详情，不存在抛 FEEDBACK_NOT_FOUND；creatorName 已翻译 */
    FeedbackRespVO getFeedback(Long id);

    /** 修改处理状态（临时功能，后端不鉴权、仅过 token；按钮可见性由前端控制） */
    void updateFeedbackStatus(Long id, FeedbackStatusReqVO reqVO);

    /** 删除（临时功能，后端不鉴权、仅过 token；删除权限由前端按钮可见性控制） */
    void deleteFeedback(Long id);

    /**
     * 全量统计：总数 + 按分类（feedback_type）/ 按状态（feedback_status）分组计数。
     * 排除软删；两个维度均按字典全集补零（无数据的码值 count=0），顺序按字典 sort。
     */
    FeedbackStatRespVO getFeedbackStat();

}
