feilong-core 让Java开发更简便的工具包
Maven 配置
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
支持微信支付、支付宝等多种,以微信为例:
所需参数
导入依赖
<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值得你尝试