个人学习demo,相关示例请查看Test.java
![996.icu](https://camo.githubusercontent.com/8767ca8ef5733b2eb3adcc419f073f14408bef1528f57e8798cea72b4dba9ac6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c696e6b2d3939362e6963752d7265642e737667)
![](https://camo.githubusercontent.com/3f35362a88cac154c09852f09c9113caf840035d68ef94bcda4c2c81b5b520f1/68747470733a2f2f70392d6a75656a696e2e62797465696d672e636f6d2f746f732d636e2d692d6b3375316662706663702f61616630626334636134306634346634613230353466346538643532363062377e74706c762d6b3375316662706663702d77617465726d61726b2e696d616765)
utils.DateTimeUtils
daysBetween 计算两个日期之间相差的天数
overdueAdvent 计算临期/超期天数
1 wx 微信公众号模板消息推送
wx.WxRequestController 微信请求本服务接口 用于验证
wx.WxSendMsgController 微信公众号发送消息(用于消息模板类的消息推送通知)
前提:需要提前准备一个微信公众号,个人订阅号无效,可申请注册微信测试号
2 utils.msgPush.mail 邮件发送工具。由于依赖停止维护,请谨慎使用
3 FeiShu 飞书模板消息推送webhook,需要建群邀请自定义机器人
位置:src/main/java/wx/
微信验证:
WxRequestController.check(HttpServletRequest request, HttpServletResponse response)
微信公众号消息推送:
WxSendMsgController.sendMsgMod()
微信获取关注用户openId:
WxSendMsgController.getAccessToken()
注意微信公众号消息推送需要企业号以上才可以,测试可以去微信测试公众号体验。
位置:src/main/java/utils.msgPush.feishu/
卡片消息-带按钮:
FeiShu.cardMsg(String url,String hearTitle,String content,String actionsTitle,String actionsUrl)
使用示例:
cardMsg("飞书机器人发送地址","测试标题", "测试内容", "click me :兔子:", "http://www.fuhouyin.com");
卡片消息
FeiShu.cardMsg(String url,String hearTitle,String content)
使用示例:
cardMsg("飞书机器人发送地址","测试标题", "测试内容");
需要飞书自定义机器人,‘飞书机器人发送地址’即为webhook链接
1 utils.CryptoUtils (AES/CBC/PKCS7Padding 加解密)
字符串加密/解密 encryptAESPkcs7/decryptAESPkcs7
加解密文件参考Test.fileEncDecTest()
2 utils.SM2Util 国密2加解密方法 (工具类中有使用示例)
generateKey 生成公私钥
encrypt 加密
decrypt 解密
sign 签名
verifySign 验签
位置:src/main/java/utils/SM2Util.java
生成密钥:
generateKey()
内容公钥加密:
encrypt(String publicKeyHex, String data)
私钥解密:
decrypt(String privateKeyHex, String data)
私钥生成签名:
sign(String privateKeyHex, String message)
公钥验签:
verifySign(String publicKeyHex, String signedMsg, String originMsg)
使用示例:
Map<String, String> map = generateKey();
String signPublicKey = map.get("PublicKey");
String signPrivateKey = map.get("PrivateKey");
String info = "Test123Test123Test1234567";
//加密
String encodeInfo = encrypt(signPublicKey,info);
logger.info("加密内容"+encodeInfo);
//解密
String decodeInfo = decrypt(signPrivateKey,encodeInfo);
logger.info("解密内容"+decodeInfo);
//签名
String signedInfo = sign(signPrivateKey,encodeInfo);
logger.info("签名:" + signedInfo);
//验签
boolean isSigned = verifySign(signPublicKey,signedInfo,encodeInfo);
logger.info("验签:" + isSigned);
公私密钥,通常是生成两套交叉使用,以达到安全效果。
utils.FileUtils
suffix 获取base64头
fileToBase64 file转base64
saveFile MultipartFile保存本地
getFile 网络文件转File
Base64ToMultipartFile base64转MultipartFile
1 utils.page.*,详情查看Test.PageTest();
2 utils.HandlePage 手动分页
utils.MethodGetAndSet 根据实体类属性名生成GET或SET方法
getGetMethod 根据属性,获取get方法
setValue 根据属性,拿到set方法,并把值set到对象中。参考Test.setObjectValueByField()。
utils.redis.RedisCacheUtils
utils.CamelCAsseUtil 将下划线分割字符串转为驼峰式 (aaa_bbb_ccc => aaaBbbCcc)
utils.EntityUtil
entityToMap 将实体类转为map <String, Object>
getMultiValueMap 解析json字符串为MultiValueMap(传值为json字符串)
位置:src/main/java/utils/EntityUtil.java
实体类转Map<String,Object>:
entityToMap(Object entity)
获取实体类中所有不为空的字段名:
findNotNullFields(Object obj)
根据字段名获取值:
getFieldValue(String fieldName, Object obj)
解析json字符串为MultiValueMap:
getMultiValueMap(String json)
autoentity.pom.xml
基于jOOQ的自动生成实体类功能,添加pom文件或者修改至自己的pom文件中,maven打包即可在对应处生成实体类
需要在<build>内配置数据库信息 以及生成文件所在的位置信息