package com.hzya.frame.base;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.hzya.frame.web.entity.JsonResultEntity;

/**
 * @Content插件基类接口
 * @Author 👻👻👻👻👻👻👻👻👻👻 gjh
 * @Date 2023-08-02 10:48
 * @Version 1.0
 */
public interface SystemPluginInitializer {
    /***
     * 插件初始化方法
     * @Author 👻👻👻👻👻👻👻👻 gjh
     * @Date 2023-08-02 10:48
     * @Param []
     * @return void
     **/
    void initialize();

    /****
     * 插件销毁方法
     * @author 👻👻👻👻👻👻👻👻 gjh
     * @date 2023-08-02 10:48
     * @param
     * @return void
     **/
    void destroy();

    /****
     * 插件的ID
     * @author 👻👻👻👻👻👻👻👻 gjh
     * @date 2023-08-02 10:48
     * @param
     * @return void
     **/
    String getPluginId();

    /****
     * 插件的名称
     * @author 👻👻👻👻👻👻👻👻 gjh
     * @date 2023-08-02 10:48
     * @param
     * @return void
     **/
    String getPluginName();

    /****
     * 插件的显示值
     * @author 👻👻👻👻👻👻👻👻 gjh
     * @date 2023-08-02 10:48
     * @param
     * @return void
     **/
    String getPluginLabel();

    /***
     * 插件类型 1、场景插件
     * @Author 👻👻👻👻👻👻👻👻 gjh
     * @Date 2023-08-02 14:01
     * @Param []
     * @return java.lang.String
     **/
    String getPluginType();

    /***
     * 执行业务代码
     * @Author 👻👻👻👻👻👻👻👻 gjh
     * @Date 2023-08-07 11:20
     * @param requestJson  执行业务代码的参数
     * @return void
     **/
    @DSTransactional()
    JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception;
}
