Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如果属性为 LocalDateTime、BigInteger 等复杂类型,插件无法支持 #21

Closed
superleeyom opened this issue Sep 14, 2020 · 1 comment

Comments

@superleeyom
Copy link
Contributor

superleeyom commented Sep 14, 2020

作者你好,目前我在配合YApi使用此插件的时候,发现,如果实体类属性中有 jdk自带LocalDateTimeBigInteger 类型属性的时候,插件生成的YAPI json5 数据会出现错误,主要的错误,属性注释会出现错位或不显示,同时铺开该复杂类型内部的其他属性,这里我给个示例,比如此接口:

    /**
     * 测试接口
     *
     * @return test
     */
    @GetMapping("test")
    public ApiResponse<ReserveOrderTestDTO> test() {
        return ApiResponse.ofSuccess(new ReserveOrderTestDTO());
    }

返回实体类:

/**
 * 测试实体类
 *
 * @author leeyom wang
 * @date 2020/9/14 5:05 下午
 */
@Data
public class ReserveOrderTestDTO extends Model<ReserveOrderTestDTO> implements Serializable {

    /**
     * 预约单id
     */
    private Integer orderId;

    /**
     * 预约人微信openid
     */
    private String reserveOpenId;

    /**
     * 预约设备
     */
    private Integer deviceId;

    /**
     * 预约时间
     */
    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
    private LocalDateTime reserveTime;

    /**
     * 预约联系电话
     */
    private String applyContactPhone;

    /**
     * 预约人姓名
     */
    private String applyUserName;

    /**
     * 预约地址
     */
    private String applyAddress;

    /**
     * 办公室
     */
    private Integer departmentId;

    /**
     * 状态,1已完成,0未处理
     */
    private Integer status;

    /**
     * 备注
     */
    private String remark;

    /**
     * 版本号
     */
    private Integer version;
}

由于实体类中带了private LocalDateTime reserveTime;属性,最终在 YAPI平台生产的接口json5数据格式为:

{
  "code": 0,//状态码
  "message": "@string",//返回内容
  "data": {//返回数据
    "orderId": 0,//预约单id
    "reserveOpenId": "@string",//预约人微信openid
    "deviceId": 0,//预约设备
    "reserveTime": {//预约时间
      "MIN": {},
      "MAX": {},
      "date": {
        "MIN": {},
        "MAX": {},
        "DAYS_PER_CYCLE": 1,
        "DAYS_0000_TO_1970": 1,
        "year": 1,
        "month": 1,
        "day": 1
      },
      "time": {
        "MIN": {},
        "MAX": {},
        "MIDNIGHT": {},
        "NOON": {},
        "HOURS_PER_DAY": 1,
        "MINUTES_PER_HOUR": 1,
        "MINUTES_PER_DAY": 1,
        "SECONDS_PER_MINUTE": 1,
        "SECONDS_PER_HOUR": 1,
        "SECONDS_PER_DAY": 1,
        "MILLIS_PER_DAY": 1,
        "MICROS_PER_DAY": 1,
        "NANOS_PER_SECOND": 1,
        "NANOS_PER_MINUTE": 1,
        "NANOS_PER_HOUR": 1,
        "NANOS_PER_DAY": 1,
        "hour": 1,
        "minute": 1,
        "second": 1,
        "nano": 1
      }
    },
    "applyContactPhone": "@string",
    "applyUserName": "@string",//预约联系电话
    "applyAddress": "@string",//预约人姓名
    "departmentId": 0,//预约地址
    "status": 0,//办公室
    "remark": "@string",//状态,1已完成,0未处理
    "version": 0//备注
  }
}

image

属性注释发生了错位,能不能对这些复杂类型,进行处理(比如 LocalDateTime类型的,根据是否有 @JsonFormat 注解判断,BigInteger 就直接显示 @long类型 ),不铺开内部的属性,生成正常的数据格式:

{
  "code": 0,//状态码
  "message": "@string",//返回内容
  "data": {//返回数据
    "orderId": 0,//预约单id
    "reserveOpenId": "@string",//预约人微信openid
    "deviceId": 0,//预约设备
    "reserveTime": "@LocalDateTime",//预约时间
    "applyContactPhone": "@string",//预约联系电话
    "applyUserName": "@string",//预约人姓名
    "applyAddress": "@string",//预约地址
    "departmentId": 0,//办公室
    "status": 0,//状态,1已完成,0未处理
    "remark": "@string",//备注
    "version": 0//版本号
  }
}

以上便是我使用中遇到的问题,望回复,谢谢

@superleeyom
Copy link
Contributor Author

superleeyom commented Sep 19, 2020

修改了源码,目前已解决,已pr,重新编译了一个:链接: https://pan.baidu.com/s/1Bd-QPJtNGbgZ9_NtNoQAgg 提取码: saxq

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant