Golang 典型常用工具包,解决服务端开发的常用场景,提高每个项目的生产力。
定位:每个工具可单独被使用,尽可能保持简洁,并且普适性,大多数典型的服务端可能会用到其中80%的工具。
打印对象更漂亮
logutils.PrintObj(some Obj)
日期工具类,后面根据需求添加。
具体看代码 tools/dateutils/dateutils.go
文件工具类, 后面根据需求添加。
- Exists
- IsDir
- MkDir
- MkDirIfNotExists
- Remove
ip工具类
- GetWanIp
调试工具类,设置全局调试开关,可以开启和关闭调试
具体看代码
APP环境变量管理工具,如envutils.IsProd(),用于判断当前是否属于生产环境。
具体看代码 tools/envutils/envutils.go
更多工具详见 tools/
企业微信API封装, 对 access_token 做了lazy load 和过期刷新。
- GetAccessToken 单独获得access_token,以便做扩展开发用。
- GetUserInfo 获取 UserId。
- SendTextMessage 获取 发送消息。
小程序API封装
- Login 登陆
- 手机号解密 摘自 https://github.com/medivhzhan/weapp
微信支付封装,对 github.com/liyoung1992/wechatpay 项目进行了再一次包装
- Pay 支付。
- VerifyNotify 对支付结果进行验证。
- GetPaySign 小程序二次签名。
简化redis 初始化
对官方驱动Mongo 官方驱动的封装,对常规CRUD进行了简化。 具体看代码 mongo/crud.go
对mysql实例化过程进行了封装,默认使用gorm包装。
为经典http server ,gin 提供的默认模板,避免每个项目一上来就设置一堆。比如时区默认设置为Asia/Shanghai,跨域什么的。
example:
gindefault.Run(":80", func(engine *gin.Engine) {
//在此定义gin的其他
})
牺牲灵活性,对返回进行了标准化。
{status:1,msg:'success',data:some Object}
gindefault.returnSuccess()
gindefault.returnFail()
gindefault.returnError()
具体看代码 gindefault/utils.go
自动下载ip数据库,内存中识别ip对应地址。 使用方法
ip2location.GetLocation(ip)
依赖项目:https://github.com/lionsoul2014/ip2region/
具体看测试用例: ip2location/ip2location_test.go
内存级异步队列
优雅退出进程