工具分享--避免重复造轮子(一)

简介: 开源工具类库,建议收藏,小标题都带有官网链接

feilong-core 让Java开发更简便的工具包

Maven 配置
image.png

com.feilong.core 包
全能校验小帮手 — Validator
常用时间间隔 —TimeInterval
常用时间模式 — DatePattern
常用数字模式 - NumberPattern
字母常量 -- Alphabet
字符编码常量 - CharsetType
uri字符常量 - URIComponents
UncheckedIOException
com.feilong.core.date 包
小巧实用日期处理 - DateUtil
日期扩展 - DateExtensionUtil
com.feilong.core.util 包
集合处理利器 - CollectionsUtil
Map处理利器 - MapUtil
排序专家 - SortUtil
统计专家 - AggregateUtil
正则表达式工具类 - RegexUtil
随机数工具 - RandomUtil
com.feilong.core.lang 包
对象工具 - ObjectUtil
线程助手 - ThreadUtil
com.feilong.core.net 包
参数解析能手 - ParamUtil
com.feilong.core.bean 包
全能类型转换器 - ConvertUtil
BeanUtil
PropertyUtil

Hutool-Java 工具类库

● hutool-aop JDK 动态代理封装,提供非 IOC 下的切面支持
● hutool-bloomFilter 布隆过滤,提供一些 Hash 算法的布隆过滤
● hutool-cache 缓存
● hutool-core 核心,包括 Bean 操作、日期、各种 Util 等
● hutool-cron 定时任务模块,提供类 Crontab 表达式的定时任务
● hutool-crypto 加密解密模块
● hutool-db JDBC 封装后的数据操作,基于 ActiveRecord 思想
● hutool-dfa 基于 DFA 模型的多关键字查找
● hutool-extra 扩展模块,对第三方封装(模板引擎、邮件等)
● hutool-http 基于 HttpUrlConnection 的 Http 客户端封装
● hutool-log 自动识别日志实现的日志门面
● hutool-script 脚本执行封装,例如 Javascript
● hutool-setting 功能更强大的 Setting 配置文件和 Properties 封装
● hutool-system 系统参数调用封装(JVM 信息等)
● hutool-json JSON 实现
● hutool-captcha 图片验证码实现

http客户端框架retrofit-spring-boot-starter

gitee:https://gitee.com/lianjiatech/retrofit-spring-boot-starter
maven引入:

<dependency>
    <groupId>com.github.lianjiatech</groupId>
    <artifactId>retrofit-spring-boot-starter</artifactId>
    <version>2.0.2</version>
</dependency>
  • 自定义注入OkHttpClient
  • 注解式拦截器
  • 连接池管理
  • 日志打印
  • 请求重试
  • 错误解码器
  • 全局拦截器
  • 熔断降级
  • 微服务之间的HTTP调用
  • 调用适配器
  • 数据转换器

支付best-pay-sdk

支持微信支付、支付宝等多种,以微信为例:

所需参数
image.png

导入依赖

<groupId>cn.springboot</groupId>
<artifactId>best-pay-sdk</artifactId>
<version>1.3.0.BETA</version>

配置
WechatAccountConfig.java

@Data
@ConfigurationProperties(prefix = "wechat")
@Component
public class WechatAccountConfig {
    /**
     * 公众账号appid
     * 获取地址 https://mp.weixin.qq.com
     */
    private String mpAppId;
​
    //公众号秘钥
    private String appSecret;
​
    /**
     * 商户号
     * 获取地址 https://pay.weixin.qq.com
     */
    private String mchId;
​
    /**
     * 商户密钥
     */
    private String mchKey;
​
    /**
     * 商户证书路径
     */
    private String keyPath;
​
    /**
     * 微信支付异步通知地址
     */
    private String notifyUrl;
}

PayConfig.java

@Configuration
public class PayConfig {
​
    @Autowired
    private WechatAccountConfig accountConfig;
​
​
    @Bean
    public WxPayConfig wxPayConfig() {
        WxPayConfig wxPayConfig = new WxPayConfig();
        wxPayConfig.setAppId(accountConfig.getMpAppId());
        wxPayConfig.setAppSecret(accountConfig.getAppSecret());
        wxPayConfig.setMchId(accountConfig.getMchId());
        wxPayConfig.setMchKey(accountConfig.getMchKey());
        wxPayConfig.setKeyPath(accountConfig.getKeyPath());
        wxPayConfig.setNotifyUrl(accountConfig.getNotifyUrl());
        return wxPayConfig;
    }
​
​
    @Bean
    public BestPayServiceImpl bestPayService(WxPayConfig wxPayConfig) {
        BestPayServiceImpl bestPayService = new BestPayServiceImpl();
        bestPayService.setWxPayConfig(wxPayConfig);
        return bestPayService;
    }
}

发起支付
这里有个openid项目一开始便获取到的,因为项目也做了微信授权登录,所以在那边先获取到了openid存进了数据库,这里需要便取出。

如果有需要的话,可以后面写如何获取openid的

@Autowired
 private BestPayServiceImpl bestPayService;  
​
 /**
  * 微信支付接口
  */
 @GetMapping("/pay")
 @ResponseBody
 public Result pay(@ApiParam(value = "订单号") @RequestParam("orderNo") String orderNo) {
     //支付请求参数
     PayRequest request = new PayRequest();
     //中间的参数为自己根据项目需求来获取
     
     request.setPayTypeEnum(BestPayTypeEnum.WXPAY_MP);
     request.setOrderId(orderNo);
     request.setOrderName("微信公众账号支付订单");
     request.setOrderAmount(0.01);
     request.setOpenid("openid_xxxxxx");
     
     log.info("【发起支付】request={}", JsonUtil.toJson(request));
​
     PayResponse payResponse = bestPayService.pay(request);
     log.info("【发起支付】response={}", JsonUtil.toJson(payResponse));
     return ResultGenerator.genSuccessResult(payResponse);
 }

支付成功回调

/**
   * 异步回调
   */
  @PostMapping(value = "/notify")
  public Result notify(@RequestBody String notifyData) {
      log.info("【异步通知】支付平台的数据request={}", notifyData);
      PayResponse response = bestPayService.asyncNotify(notifyData);
      log.info("【异步通知】处理后的数据data={}", JsonUtil.toJson(response));
​
      String orderNo = response.getOrderId();
      //支付方式--微信支付
      int payType = 2;
​
      //返回成功信息给支付平台,否则会不停的异步通知
      if (response.getPayPlatformEnum() == BestPayPlatformEnum.WX) {
          String payResult = orderService.paySuccess(orderNo, payType);
          if (ServiceResultEnum.SUCCESS.getResult().equals(payResult)) {
              return ResultGenerator.genSuccessResult();
          } else {
              return ResultGenerator.genFailResult(payResult);
          }
      }
      throw new RuntimeException("错误的支付平台");
  }

easypoi导入导出excel

POI 工具类,Excel的快速导入导出,Excel模板导出,Word模板导出,可以仅仅5行代码就可以完成Excel的导入导出,修改导出格式简单粗暴,快速有效,easypoi值得你尝试

目录
相关文章
|
网络协议 网络安全 开发工具
阿里云DNS常见问题之手机内网打不开如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
7月前
|
JSON API 开发者
ebay 商品列表数据接口(ebay API 系列)
eBay 商品列表数据接口为电商从业者、开发者和研究人员提供了宝贵的数据资源,助力市场分析与应用开发。通过注册 eBay 开发者平台并遵循 OAuth 2.0 认证流程获取访问令牌,用户可以使用 HTTP GET 请求调用 API,根据关键词、价格范围等参数筛选商品,并获取商品标题、价格、图片链接等信息。Python 示例代码展示了如何发送请求、处理响应并解析 JSON 数据,帮助用户快速上手。注意合法合规使用数据。
350 14
|
分布式数据库 流计算 Docker
实时计算 Flink版操作报错合集之在Docker上启动JobManager(JM)时遇到报错,,该怎么处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)
这篇文章介绍了Java中使用`renameTo()`、`Files.copy()`等方法对文件进行重命名、移动和复制的操作,并提供了代码实例和测试效果。
java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)
|
大数据 UED 开发者
实战演练:利用Python的Trie树优化搜索算法,性能飙升不是梦!
【7月更文挑战第19天】Trie树,又称前缀树,是优化字符串搜索的高效数据结构。通过利用公共前缀,Trie树能快速插入、删除和查找字符串。
285 2
|
存储 运维 负载均衡
「微服务」这10道Consul面试题值得一看
Consul 是一个强大的分布式服务发现和配置管理工具,用于服务注册、健康检查、负载均衡、故障恢复等。它支持多数据中心和多种协议,提供服务发现、健康检查、KV 存储和事件通知功能。服务注册与健康检查由 Agent 实现,负载均衡通过 Service Mesh 实现。尽管 Consul 提供诸多优点,如多数据中心支持和高可用性,但其学习和部署成本较高,适合大型项目,对于小型或初学者可能过于复杂。在使用时需根据实际需求和资源考虑。
186 3
|
消息中间件 NoSQL 安全
javpower:后端技术革新的开源之旅
🌟 Java后端开发者javpower热衷于开源项目,分享AI、Git、Redis等领域的知识和工具,如JavaVision、EasyGit。擅长JVM优化、数据库事务处理、微服务架构等,积极参与开源社区,为技术世界贡献力量。
534 3
|
SQL 缓存 Java
ReflectionUtils反射工具:精要介绍与实战应用指南
ReflectionUtils反射工具:精要介绍与实战应用指南
|
Ubuntu 关系型数据库 MySQL
解决方案:MySQL数据表明明存在,但是就是报错表不存在,原来是需要配置 MySQL 忽略表名大小写!
解决方案:MySQL数据表明明存在,但是就是报错表不存在,原来是需要配置 MySQL 忽略表名大小写!
1237 0