import request from "@/utils/request";

const USERFEEDBACK_BASE_URL = "/api/v1/userFeedback";

const UserFeedbackAPI = {
  /** 获取用户反馈分页数据 */
  getPage(queryParams?: UserFeedbackPageQuery) {
    return request<any, PageResult<UserFeedbackPageVO[]>>({
      url: `${USERFEEDBACK_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  },
  /**
   * 获取用户反馈表单数据
   *
   * @param id 用户反馈ID
   * @returns 用户反馈表单数据
   */
  getFormData(id: number) {
    return request<any, UserFeedbackForm>({
      url: `${USERFEEDBACK_BASE_URL}/${id}/form`,
      method: "get",
    });
  },

  /**
   *  添加用户反馈
   *
   *  @param data 用户反馈表单数据
   */
  create(data: UserFeedbackForm) {
    return request({
      url: `${USERFEEDBACK_BASE_URL}`,
      method: "post",
      data,
    });
  },

  /**
   * 更新用户反馈
   *
   * @param data 用户反馈表单数据
   */
  update(data: UserFeedbackForm) {
    return request({
      url: `${USERFEEDBACK_BASE_URL}/reply`,
      method: "put",
      data,
    });
  },

  /**
   * 批量删除用户反馈，多个以英文逗号(,)分割
   *
   * @param ids 用户反馈ID字符串，多个以英文逗号(,)分割
   */
  deleteByIds(ids: string) {
    return request({
      url: `${USERFEEDBACK_BASE_URL}/${ids}`,
      method: "delete",
    });
  },
};

export default UserFeedbackAPI;

/** 用户反馈分页查询参数 */
export interface UserFeedbackPageQuery extends PageQuery {}

/** 用户反馈表单对象 */
export interface UserFeedbackForm {
  /** 问题类型（1投诉吐槽，2功能异常，3体验问题，4功能建议，9其他 ） */
  type?: number;
  /** 问题描述 */
  describe?: string;
  /** 相关图片 */
  images?: string;
  /** 联系方式(手机号或者邮箱) */
  contactWay?: string;
  /** 答复信息 */
  reply?: string;
  /** 用户编号 */
  userId?: number;
  /** 回复时间 */
  replyTime?: string;
  /** 0未回复，1已回复 */
  replyStatus?: number;
}

/** 用户反馈分页对象 */
export interface UserFeedbackPageVO {
  /** 问题类型（1投诉吐槽，2功能异常，3体验问题，4功能建议，9其他 ） */
  type?: number;
  /** 问题描述 */
  describe?: string;
  /** 相关图片 */
  images?: string;
  /** 联系方式(手机号或者邮箱) */
  contactWay?: string;
  /** 答复信息 */
  reply?: string;
  /** 用户编号 */
  userId?: number;
  /** 回复时间 */
  replyTime?: string;
  /** 0未回复，1已回复 */
  replyStatus?: number;
  /** 创建时间 */
  createTime?: Date;
}
