package com.gxwebsoft.app.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.app.entity.AppCredential;
import com.gxwebsoft.app.param.AppCredentialParam;

import java.util.List;

/**
 * 应用密钥凭证Service
 *
 * @author 科技小王子
 * @since 2026-03-28 21:29:43
 */
public interface AppCredentialService extends IService<AppCredential> {

    /**
     * 分页关联查询
     */
    PageResult<AppCredential> pageRel(AppCredentialParam param);

    /**
     * 关联查询全部
     */
    List<AppCredential> listRel(AppCredentialParam param);

    /**
     * 根据id查询
     */
    AppCredential getByIdRel(Integer id);

    /**
     * 创建凭证（自动生成 appId 和 appSecret）
     *
     * @param credential 凭证基础信息
     * @return 包含明文 appSecret 的凭证对象（仅此次返回，之后不再展示）
     */
    AppCredential createCredential(AppCredential credential);

    /**
     * 重置密钥（重新生成 appSecret）
     *
     * @param id 凭证ID
     * @return 包含新明文 appSecret 的凭证对象
     */
    AppCredential resetSecret(Long id);

    /**
     * 禁用/启用凭证
     *
     * @param id     凭证ID
     * @param status 0=正常 1=冻结
     */
    boolean updateStatus(Long id, Integer status);

}
