tangcent / easy-yapi

Generate API document to yapi
https://easyyapi.com
GNU Affero General Public License v3.0
435 stars 143 forks source link

[Bug] enum.use.custom 没有生效 #1089

Open ChenYilei2016 opened 10 months ago

ChenYilei2016 commented 10 months ago

easy api config:

enum.use.custom[groovy:it.isExtend("com.zbycorp.fenghuo.domain.common.constants.BaseEnum")]=code

基类

public interface BaseEnum {
    default String enumClass() {
        return this.getClass().getName();
    }

    /**
     * 枚举一般作为value的字段
     */
    Object getCode();
}

实现类

@Getter
public enum StrategyTypeEnum implements BaseEnum {

    CAMPAIGN_BUDGET("广告活动分时预算"),
    TARGET_BID("分时竞价")

    ;

    private String desc;

    StrategyTypeEnum(String desc) {
        this.desc = desc;
    }

    @Override
    public String getCode() {
        return this.name();
    }
}

使用地方

    /**
     * @see StrategyTypeEnum
     */
    @ApiModelProperty("策略类型")
    private String strategyType;

结果 没有输出任何值, 去掉配置之后 就可以输出了, 不知道为啥, 也没报错

tangcent commented 10 months ago

😂,目前还没有办法解析方法, 虽然你这里的例子并不复杂。

    @Override
    public String getCode() {
        return this.name();
    }

但如果你这里getCode返回的总是name(),那可以试试直接配:

enum.use.custom[groovy:it.isExtend("com.zbycorp.fenghuo.domain.common.constants.BaseEnum")]=name()
ChenYilei2016 commented 10 months ago

只是部分枚举用到了name() , 还是希望能支持下方法撒 😄

tangcent commented 10 months ago

有尝试过实现方法推断,但是代码逻辑太复杂了可能导致卡死,目前还没有找到好的实现方案。 https://github.com/tangcent/easy-yapi/blob/master/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/api/DefaultMethodInferHelper.kt


只是部分枚举用到了name()

其他的大概是怎么样的?

ChenYilei2016 commented 7 months ago

就是部分枚举 没有写任何属性, 直接继承了 BaseEnum , 重写了 getCode 直接用的 name() (⊙o⊙)…