评论

收藏

[PHP] 干货分享 | HZERO系列组件之辅助开发核心包,一招搞定开发!

开发技术 开发技术 发布于:2022-08-26 14:06 | 阅读数:246 | 评论:0

DSC0000.jpg
在项目实施过程中,我们经常遇到这些需求: 
 场景一:前端页面展示的金额字段格式使用两位小数或千分位表示; 
 场景二:录入特定字段信息时需要进行校验,如手机、邮箱、IP地址、是否是数字等; 
 场景三:涉及数据安全的字段,插入数据库时需要加密,读取时解密; 
   
 以上举例需求均有以下特点: 
  
   在大部分项目中十分常见,即普遍性;  
   需求都比较简单;  
   实现方式大同小异,即通用性;  
  
 我们在实施HZERO企业级PaaS平台项目中,如果每个项目都需要重新实现且各个项目实现方式均不相同,会带来人力资源浪费、成本高、开发效率低、项目不规范、项目管理混乱等一系列问题;为了解决以上痛点问题,我们推荐使用HZERO的辅助核心开发包。

HZERO辅助开发核心包
简介及作用
该组件主要针对技术开发中进行技术支持,定义了基础实现类,异常封装,常用工具等。
      
  • 减少重复造轮子
      
  • 提升开发效率
      
  • 使项目实施规范化标准化


组件坐标
<dependency>   <groupId>org.hzero.starter</groupId>  <artifactId>hzero-starter-core</artifactId></dependency>

开发者指南
下图是辅助开发核心包的总体支持功能概览,让开发者可以通过该图了解到辅助开发核心包提供的一系列能力。需要大家去发现⇥学习⇥使用
DSC0001.png

在项目实施交付过程中,优先考虑辅助开发包是否提供所需常量类和工具类,建议形成一套自己的思维习惯。
接下来介绍一些常用的常量类和工具类的使用。

常用常量类使用
基础常量
下图列举了辅助开发核心包已有的基础常量以及对应的类,便于开发者索引。
DSC0002.png

Hzero-starter-core 基础包中提供了很多常用的常量类和常量定义,在开发中就无需重复定义常量。
常用的如用户、语言常量,符号常量,日期格式常量,错误编码常量,请求头常量等等。

常用数字格式
针对前言中的场景一『前端页面展示的金额字段格式使用两位小数或千分位表示』,使用辅助开发核心包的数字格式常量,可以快速实现需求。
public void demo() {  // 格式化保留两位小数  DecimalFormat format = new DecimalFormat(BaseConstants.Pattern.TWO_DECIMAL);  BigDecimal num = new BigDecimal("10.0001");  String numStr = format.format(num); // 10.00}
public interface BaseConstants {  interface Pattern {    /**     * 无小数位 0     */    String NONE_DECIMAL = "0";    /**     * 一位小数 0.0     */    String ONE_DECIMAL = "0.0";    /**     * 两位小数 0.00     */    String TWO_DECIMAL = "0.00";    /**     * 千分位表示 无小数 #,##0     */    String TB_NONE_DECIMAL = "#,##0";    /**     * 千分位表示 一位小数 #,##0.0     */    String TB_ONE_DECIMAL = "#,##0.0";    /**     * 千分位表示 两位小数 #,##0.00     */    String TB_TWO_DECIMAL = "#,##0.00";  }}
▲常用数字格式

常用时间日期格式
另外列举一些项目常见的格式化场景『格式化时间和解析字符串』和简单Demo。
// SimpleDateFormat 是非线程安全的,可以定义在 ThreadLocal 中final ThreadLocal<SimpleDateFormat> local = ThreadLocal.withInitial(    () -> new SimpleDateFormat(BaseConstants.Pattern.DATETIME));public void demo() throws ParseException {  Date date = new Date();  // Date 格式化成 字符串  String dateStr = local.get().format(date);  // 字符串格式化成 Date  date = local.get().parse(dateStr);}
▲格式化场景使用
public interface BaseConstants {  interface Pattern {    /**     * yyyy-MM-dd     */    String DATE = "yyyy-MM-dd";    /**     * yyyy-MM-dd HH:mm:ss     */    String DATETIME = "yyyy-MM-dd HH:mm:ss";    /**     * yyyy-MM-dd HH:mm     */    String DATETIME_MM = "yyyy-MM-dd HH:mm";    /**     * yyyy-MM-dd HH:mm:ss.SSS     */    String DATETIME_SSS = "yyyy-MM-dd HH:mm:ss.SSS";    /**     * HH:mm     */    String TIME = "HH:mm";    /**     * HH:mm:ss     */    String TIME_SS = "HH:mm:ss";  }}
▲常用时间日期格式

常用工具类使用
Hzero-starter-core 提供了一些常用工具类,下面列举几个例子,建议技术人员先提前了解熟悉,避免重复造轮子。大部分的工具包都在 Org.hzero.core.util包下。
正则Regexs
针对前言中的场景二『录入特定字段信息时需要进行校验,如手机、邮箱、IP地址、是否是数字等』,使用辅助开发核心包的常用工具类(正则Regexs),可以快速实现需求。
Regexs下提供了一些常用的正则表达式以及正则校验方法,例如数字类、字母类、邮箱、URL、中文、IP地址、图片、日期等等,更多的可自行查看。​​​​​​​
public void test() {  // 正则表达式  String integer = Regexs.INTEGER; // 整数  String email = Regexs.EMAIL; // 邮件  String url = Regexs.URL; // URL  String chinese = Regexs.CHINESE; // 中文  // 正则匹配方法  // 判断是否是手机号  boolean isPhone = Regexs.is("185666444", Regexs.MOBILE);  // 判断是否是中文  boolean isChinese = Regexs.is("是否中文", Regexs.CHINESE);  // 判断是否是数字  boolean isNumber = Regexs.isNumber("12345");  // 判断是否是邮箱  boolean isEmail = Regexs.isEmail("hzero@hand-china.com");  // 判断是否是IP地址  boolean isIp = Regexs.isIP("192.168.12.101");  // 判断是否是URL地址  boolean isUrl = Regexs.isUrl("www.baidu.com");  // 判断是否是移动手机号  boolean isMobile = Regexs.isMobile("18523226666", "+86");}

JsonUtils
JsonUtils提供了几个转换Json字符串和对象的工具方法。
注意:JsonUtils转换的Json对象中如果带有日期类型,转换的结果会带有时区。​​​​​​​​​​​​​​
public static void main(String[] args) {
  User user = new User();
  // 对象转为json字符串
  String json = JsonUtils.toJson(user);
  // json字符串转为对象
  user = JsonUtils.fromJson(json, User.class);
  List<User> list = new ArrayList<>();
  // 集合转json字符串
  String jsonList = JsonUtils.toJson(list);
  // json字符串转集合
  list = JsonUtils.fromJsonList(jsonList, User.class);
}

Util工具包
针对前言中的场景三『涉及数据安全的字段,插入数据库时需要加密,读取时解密』,使用辅助开发核心包的常用注解(@DataSecurity)+BaseMapper,可以快速实现需求。
DSC0003.png

▲Org.hzero.core.util包能力概览。


总之,『辅助开发』的核心本质是降本增效,助力开发规范化、标准化
技术经理:建议理解辅助开发核心包的本质和作用并能良好的运用在项目实施过程中。
开发人员:建议动手开发前,登录汉得焱牛开放平台了解HZERO平台组件是否提供相关能力,避免重复造轮子。
通过本次介绍,相信大家对辅助开发核心包有了初步了解;辅助开发核心包还提供其他通用开发支持能力,需要大家不断去发现和使用,进一步了解可查看辅助开发核心包组件文档。

联系我们
产品试用请登录开放平台。请在 PC 端打开:

https://open.hand-china.com/market-home/trial-center/

产品详情请登录开放平台:

https://open.hand-china.com/document-center/

如有疑问登录开放平台提单反馈

https://open.hand-china.com/

DSC0004.png


DSC0005.jpg

▲ 更多精彩内容,扫码关注 “四海汉得” 公众号