星云erp开发手册V4.0
【免费】如何自定义底层框架
数据库字典
【免费】平台库
【付费】租户库
Jugg底层框架
基本概念
【免费】数据实体
【免费】枚举
【免费】Bo
【免费】数据库主键
【免费】MVC
【免费】异常
【免费】工具类
【免费】响应码
【免费】响应值
web-starter
【免费】自动配置
【免费】Bo字段转换
【免费】多数据源切换
【付费】Excel导入与解析
【付费】锁
【付费】开放接口
【付费】数据权限
【付费】操作权限
【付费】SQL的自定义排序
【付费】操作日志
【付费】单据时间轴
【免费】缓存
【付费】Excel导出
【付费】编号规则
【免费】定时器
【免费】Redis
【免费】登录态维护
【免费】多租户
【付费】多线程
【免费】追踪ID
【付费】文件上传
【免费】字段校验
【免费】MybatisPlus扩展
【付费】异常处理
【免费】代码生成
【免费】内置功能
【付费】WebSocket推送消息
cloud-starter
【付费】FeignClient
【付费】登录态传递
【付费】响应值
mq-starter
【付费】更换MQ
mq-core
【付费】消息生产者
【付费】队列定义
【付费】导出任务
【付费】消息通知
【付费】租户信息传递
rabbitmq-starter
【付费】导出任务
【付费】消息通知
【付费】消息生产者
【付费】队列定义
bpm-starter
【付费】发起流程
【付费】业务监听器
【付费】审核流程
【付费】发起人撤回
【付费】重新发起
【付费】流程实例管理
【付费】流程图
星云ERP-后端
【免费】接口文档
【付费】分摊工具类
【付费】库存操作
【付费】打印模板
星云ERP-前端
【免费】Vue3学习成本高不高
【免费】权限控制
【免费】工具类
【免费】自定义组件
【免费】路由
【免费】数据列表
【免费】日期范围选择器
【付费】事件
【付费】枚举
【免费】CSS
【免费】图标
【免费】mix
本文档使用「觅思文档专业版」发布
-
+
首页
【免费】Bo字段转换
### Bo字段转换 字段转换使用的是hutool的BeanUtil#copyProperties,有兴趣的可以看一下它的源码。他会尽可能的忽略字段类型。例如:dto有一个id字段,类型是Long;bo有一个id字段,类型是String,它也会进行转换。 但是这里就涉及到一些需求:枚举类字段的转换、忽略字段的转换、字段加密(脱敏)。 #### 注解 提供转换注解,主要用于dto转换bo时的字段转换。 位于**com.lframework.starter.web.core.annotations.convert**包下。 ##### 枚举类字段的转换 在bo的相应字段打上==@EnumConvert==注解。 ```java /** * 地址类型 */ @ApiModelProperty("地址类型") @EnumConvert private Integer addressType; ``` ==注意:这里需要dto的这个字段的类型是BaseEnum类型。== #### 忽略字段的转换 有两种方式:注解方式、编码方式。 #### 注解方式 在bo的相应字段打上==@IgnoreConvert==注解。 ```java /** * 地址类型 */ @ApiModelProperty("地址类型") @IgnoreConvert private Integer addressType; ``` #### 编码方式 在Bo类中重写convert方法。 ```java @Data public class CustomerSettleCheckBizItemBo extends BaseBo<CustomerSettleCheckBizItemDto> { // ...省略字段 public CustomerSettleCheckBizItemBo() { } public CustomerSettleCheckBizItemBo(CustomerSettleCheckBizItemDto dto) { super(dto); } @Override public <A> BaseBo<CustomerSettleCheckBizItemDto> convert(CustomerSettleCheckBizItemDto dto) { // 这里就是将bizType和calcType忽略转换 return super.convert(dto, CustomerSettleCheckBizItemBo::getBizType, CustomerSettleCheckBizItemBo::getCalcType); } @Override protected void afterInit(CustomerSettleCheckBizItemDto dto) { // 这里再手动赋值 this.bizType = dto.getBizType().getCode(); this.calcType = dto.getCalcType().getCode(); } } ``` ##### 字段加密(脱敏) 这里的加密指的是:将字段值的部分字符变成星号。 在bo的相应字段打上==@EncryptConvert==注解。 ```java /** * API密钥 */ @ApiModelProperty("API密钥") @EncryptConvert private String apiSecret; ``` @EncryptConvert注解有一个属性:type,默认值是EncryType.AUTO。 EncryType的定义: ```java public enum EncryType { // 自动 AUTO, // 密码 PASSWORD, //中文名 CHINESE_NAME, //身份证号 ID_CARD, //座机号 FIXED_PHONE, //手机号 MOBILE_PHONE, //电子邮件 EMAIL, //中国大陆车牌,包含普通车辆、新能源车辆 CAR_LICENSE, //银行卡 BANK_CARD } ``` 除AUTO以外,其他类型是使用hutool的DesensitizedUtil工具类进行加密。 AUTO的规则是:将字符串的中间部分变成*。 ```java public static String autoEncrypt(CharSequence str) { if (StringUtil.isEmpty(str)) { return StringPool.ENCRYPT_STR; } int len = str.length(); int sub = len >> 1; if (sub <= 0) { return StringPool.ENCRYPT_STR; } int sub2 = sub >> 1; if (sub2 <= 0) { // 字符串的length要么是2 要么是3 return StringUtil.hide(str, 1, 2); } return StringUtil.hide(str, sub - sub2, sub - sub2 + sub); } ```
星云-开发
2025年8月7日 15:03
101
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期