mirror of https://gitee.com/stylefeng/roses
【7.2.5】【rule】新增对json返回字段格式化的接口
parent
34b05577dd
commit
ac2287833f
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
* Copyright [2020-2030] [https://www.stylefeng.cn]
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
||||
*
|
||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
||||
* 2.请不要删除和修改Guns源码头部的版权声明。
|
||||
* 3.请保留源码和相关描述文件的项目出处,作者声明等。
|
||||
* 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
|
||||
* 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
|
||||
* 6.若您的项目无法满足以上几点,可申请商业授权
|
||||
*/
|
||||
package cn.stylefeng.roses.kernel.rule.annotation;
|
||||
|
||||
import cn.stylefeng.roses.kernel.rule.base.JsonFieldFormatProcess;
|
||||
import cn.stylefeng.roses.kernel.rule.enums.FormatTypeEnum;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* json字段的格式化,可以将多种情景的id,code,枚举等,转化为具体的具有可读性的名称
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/6 11:34
|
||||
*/
|
||||
@Inherited
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ElementType.FIELD})
|
||||
public @interface JsonFieldFormat {
|
||||
|
||||
/**
|
||||
* 字段格式化的类型 详情见:{@link FormatTypeEnum}
|
||||
* <p>
|
||||
* 默认采用包装型,不改变原有的字段
|
||||
*/
|
||||
FormatTypeEnum formatType() default FormatTypeEnum.WRAPPER;
|
||||
|
||||
/**
|
||||
* 具体处理值转化的过程
|
||||
*/
|
||||
Class<? extends JsonFieldFormatProcess> process();
|
||||
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package cn.stylefeng.roses.kernel.rule.base;
|
||||
|
||||
/**
|
||||
* json字段格式化的过程接口规范
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/6 11:54
|
||||
*/
|
||||
public interface JsonFieldFormatProcess {
|
||||
|
||||
/**
|
||||
* 是否可以进行格式化转化
|
||||
*
|
||||
* @param originValue 原来的值,格式化之前的值
|
||||
* @return 返回true,代表可以进行转化
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/6 13:16
|
||||
*/
|
||||
boolean canFormat(Object originValue);
|
||||
|
||||
/**
|
||||
* 执行格式转化
|
||||
*
|
||||
* @param originValue 格式转化之前的值
|
||||
* @return 格式转化之后的值
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/6 13:28
|
||||
*/
|
||||
Object formatProcess(Object originValue);
|
||||
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* Copyright [2020-2030] [https://www.stylefeng.cn]
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
||||
*
|
||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
||||
* 2.请不要删除和修改Guns源码头部的版权声明。
|
||||
* 3.请保留源码和相关描述文件的项目出处,作者声明等。
|
||||
* 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
|
||||
* 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
|
||||
* 6.若您的项目无法满足以上几点,可申请商业授权
|
||||
*/
|
||||
package cn.stylefeng.roses.kernel.rule.base;
|
||||
|
||||
/**
|
||||
* 可读性枚举的规范,必须包含一个key和一个value
|
||||
* <p>
|
||||
* key一般是编码,id,具有标识性的类型
|
||||
* value一般是String类型,是一串文字
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/6 11:27
|
||||
*/
|
||||
public interface ReadableEnum {
|
||||
|
||||
/**
|
||||
* 获取枚举中具有标识性的key
|
||||
* <p>
|
||||
* 例如:状态枚举中的装填值,1 或 2
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/6 11:29
|
||||
*/
|
||||
Object getKey();
|
||||
|
||||
/**
|
||||
* 获取枚举中具有可读性的value值
|
||||
* <p>
|
||||
* 例如:状态枚举中的状态名称,"启用" 或 "禁用"
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/6 11:30
|
||||
*/
|
||||
Object getValue();
|
||||
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package cn.stylefeng.roses.kernel.rule.enums;
|
||||
|
||||
/**
|
||||
* 字段格式化的类型
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/6 11:48
|
||||
*/
|
||||
public enum FormatTypeEnum {
|
||||
|
||||
/**
|
||||
* 替换型,将原有字段替换成新的值
|
||||
* <p>
|
||||
* 例如:接口返回userId=1001,采用本种方式则返回userId=张三
|
||||
*/
|
||||
REPLACE,
|
||||
|
||||
/**
|
||||
* 包装型,不改变原来字段值,在同级别字段中,增加一个 “源字段名+Wrapper" 字段
|
||||
* <p>
|
||||
* 例如:接口返回userId=1001,采用本种方式则返回userIdWrapper=张三
|
||||
*/
|
||||
WRAPPER
|
||||
|
||||
}
|
Loading…
Reference in New Issue