xgotool

package module
v0.2.52 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 22, 2024 License: BSD-3-Clause-Clear Imports: 11 Imported by: 0

README

xgotool

介绍

go代码的个人工具仓库,其他地方可直接引入此包以便使用

通知内容 通知时间
目前仓库内最大时间为 2099-12-312099-12-31 23:59:59 ,后期需要变更时再行通知 2023-07-31 09:33:47
目前仓库内最小时间为 1970-01-011970-01-01 08:00:00 ,后期需要变更时再行通知 2023-10-20 10:15:44

PS: 此工具包中部分功能可能会依赖于其他mod包,并非完全自主原创的代码工具包

编程进步的重点:以编写代码库的方式进行编写代码

版本说明

本组件采用主、次、修订版本的规则,具体概述如下:

  • 主版本号:有里程碑式的改动,需要提供较为完善的版本说明
  • 次版本号:内容丰富到一定程度后,会增加一个次级版本号
  • 修订版本号:完善需求后的版本号 修订前后可能会出现不兼容,使用时请以当时使用的版本为准
版本号 版本说明
v0.1.0 基本完成封装使用的第一个较大版本,主要完成了底层架构、主要层级依赖以及nsq、cache等非常重要但是可以不用的可选组件
v0.2.0 改动较大的第二个版本,主要针对1.0的一些不确定属性进行了确定及后续开发
v0.3.0 开发中,还未到此版本
软件架构
目录 说明
/ 最常用的工具存放于此处
/https 网络请求工具存放于此处,此模块调无需直接调用,直接调用外部的xgotool.Get等服务即可(路由转发服务Gatway需要单独引入此包)
/xgodb* 数据库相关工具存放于此处,此模块仅调用xgodb.xxxx即可,无需引入内部包进行调用
/xgodb/xgodbkv* KV配置模块,此模块为外导模块,内部100%的功能已导出到 xgodb 模块中
/xgodb/xgodbconfig* Configure配置模块,此模块为外导模块,内部100%的功能已导出到 xgodb 模块中
/xstring 常用字符串处理类
/xnum 常用数字计算类,含相等运算、金额计算等
/optional 可选模块存放于此处,此模块需引入内部的xxxx包进行调用内部服务,如xintegral.Cron()
/optional/xarticle* 文章模块
/optional/xauth* 权限模块,封装有菜单、页面、按钮、接口、成员等功能
/optional/xbank* 银行卡属性模块,封装有银行卡号前X位确定银行、归属等信息
/optional/xbanner* Banner广告模块
/optional/xcache 缓存配置模块,若不进行Regedit配置则仅使用内存作为缓存值
/optional/xcity* 省市区模块,此模块为高德官方下载的省市区列表信息
/optional/xfile* 文件模块,可进行封装文件保存、搜索等的模块
/optional/xintegral* 积分模块,拥有长期积分、短期积分、固定期限积分等
/optional/xlink* 短连模块,可作为友情链接使用
/optional/xlog* 日志模块,此模块会将日志记录到数据库中,而不是文件、控制台中,使用go携程的方式进行记录(队列模块依赖此模块进行日志记录)
/optional/xlogin* 三方登录模块,目前支持WPS、微信H5平台
/optional/xnsq* NSQ队列模块,需要在main入口中使用 xnsq.Listen() 进行队列监听,若未配置nsq队列则使用 go 携程来实现
/optional/xrate* 抽奖模块,支持保底、概率配置、中奖记录等功能
/optional/xsource* 商品溯源模块
/optional/xsql gorm执行SQL语句模块【含SQL提取执行方法】
/optional/xtag* 标签模块
/optional/xtype* POI分类编码模块,此模块为高德官方下载的POI分类编码信息

PS: 带*的需要使用 xxx.Regedit() 进行配置注入,其中 xgodb模块下的子模块无需单独注入,直接使用 xgodb.Regedit() 进行注入即可

安装教程

本工具包为源码依赖、源码发布,所以无具体安装教程

使用说明

在代码中的 import 结构中可直接复制 gitee.com/xiaoyutab/xgotool ,然后代码中使用 xgotool.xxxx 即可,最后执行命令 go mod tidy 进行代码包下载

参与贡献
  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

Documentation

Index

Constants

View Source
const EARTH_RADIUS = xnum.EARTH_RADIUS

地球半径大小 用于计算两个经纬度间的距离

View Source
const FLOAT_EQUAL_MIN = xnum.FLOAT_EQUAL_MIN

浮点数比较相等时的最小值

因为浮点数的精度存在丢失问题,所以浮点数的相同不能比较绝对的相等,而应该是在某一范围内相同

所以此处的相同浮点数范围表示为 0.000,000,1

Variables

View Source
var WeekList = xstring.WeekList

周uint定位

Functions

func Base64 added in v0.0.5

func Base64(p string) string

对字符串进行base64编码

p	待编码的字符串

func Base64Raw added in v0.0.5

func Base64Raw(p string) string

对字符串进行base64编码[去除填充吗,一般用于jwt]

p	待编码的字符串

func EarthDistance added in v0.0.7

func EarthDistance(lat1, lng1, lat2, lng2 float64) float64

计算经纬度之间的距离【返回单位:m】 计算公式:C = sin(LatA*Pi/180)*sin(LatB*Pi/180) + cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180)

lat1	坐标点1的纬度
lng1	坐标点1的经度
lat1	坐标点2的纬度
lng2	坐标点2的经度

func EmojiDecode

func EmojiDecode(s string) string

表情解码 将emoji表情替换成类似[\u1f415]的字符串

s	待解码的含emoji表情的字符串

func EmojiEncode

func EmojiEncode(s string) string

表情编码 将类似[\u1f415]的解码emoji表情转换为原始的emoji表情

s	含有类似[\u1f415]字符串的字符串

func Exec

func Exec(name string, arg ...string) (string, error)

Exec 执行Shell命令并等待结果输出【避免僵尸进程】

如果要使用管道进行输出,则需要使用bash进行嵌套,如:

xgotool.Exec("bash", "-c", "ps aux | grep go")

name	命令参数
arg...	参数列表

func Get added in v0.0.4

func Get(url string, param, header map[string]string) *https.CURL

GET请求

url		请求地址
param	请求参数
header	请求头,自动追加accept、Content-Type等属性

func InArray

func InArray(s any, arr any) bool

判断s是否在arr数组中

s	待判断的变量,支持类型:bool,string,float64,float32,int,uint,int8,uint8,int16,uint16,int32,uint32,int64,uint64
arr	待判断的数组,需要对应s的类型,即s为string时arr为[]string

func IsEqualFloat32

func IsEqualFloat32(f1, f2 float32) bool

判断两个浮点数是否相等

f1	待比较的浮点数
f2	待比较的浮点数

func IsEqualFloat64

func IsEqualFloat64(f1, f2 float64) bool

判断两个浮点数是否相等

f1	待比较的浮点数
f2	待比较的浮点数

func Jwt added in v0.0.5

func Jwt(key []byte, payloadData any) (string, error)

生成jwt签名

key			签名
payloadData	待加密的内容

func MD5 added in v0.0.5

func MD5(text string) string

计算字符串的MD5值

text	待计算的字符串值

func MD5Byte added in v0.0.5

func MD5Byte(data []byte) string

计算byte字节流的MD5值

data	待计算的字节流的值

func MD5File added in v0.0.5

func MD5File(file string) string

计算文件的MD5值

file	文件的绝对路径

func Post added in v0.0.4

func Post(url string, param, header map[string]string) *https.CURL

Post请求

url		请求地址
param	请求参数
header	请求头,自动追加accept、Content-Type等属性

func PostJson added in v0.0.4

func PostJson(url string, param map[string]any, header map[string]string) *https.CURL

Post请求[此请求会以json形式发送数据]

url		请求地址
param	请求参数
header	请求头,自动追加accept、Content-Type等属性

func SHA1 added in v0.0.5

func SHA1(text string) string

计算字符串的SHA1值

func SHA1Byte added in v0.0.5

func SHA1Byte(data []byte) string

计算byte字节流的SHA1值

data	待计算的字节流

func SHA1File added in v0.0.5

func SHA1File(file string) string

计算文件的SHA1

file	文件的绝对路径

func SshExec added in v0.0.3

func SshExec(cliConf *ClientConfig, shell string) (string, error)

运行Shell并获取输出内容

shell	待运行的命令

func TimeDateAge added in v0.0.2

func TimeDateAge(str1 string) (uint, error)

计算传入日期到现在的时间差[单位-年,用于计算年龄] str1需为yyyy-mm-dd格式的时间才行

str1	用户出生日期

func TimeDateDiff added in v0.0.2

func TimeDateDiff(str1, str2 string) (time.Duration, error)

计算两个时间的时间差【第一个日期比第二个日期大则为正数】 str1和str2均为yyyy-mm-dd格式的时间才行

str1	日期参数1
str2	日期参数2

func TimeDiff added in v0.0.2

func TimeDiff(str1, str2 string) (time.Duration, error)

计算两个时间的时间差 str1和str2均为yyyy-mm-dd hh:mm:ss格式的时间才行

str1	日期时间参数1
str2	日期时间参数2

func Ua2info

func Ua2info(user_agent_string string) xstring.UaInfo

根据UA获取详情信息

user_agent_string	UA拆分前的UA头

func UnBase64 added in v0.0.5

func UnBase64(p string) string

对字符串进行encode64解码

p	待解码的字符串

func UnBase64Raw added in v0.0.5

func UnBase64Raw(p string) string

对字符串进行encode64解码[去除填充解码,一般用于jwt]

p	待解码的字符串

func UnJwt added in v0.0.5

func UnJwt(key []byte, token string, stu any) error

带签名秘钥的JWT解密

key		签名秘钥
token	JWT字符串
stu		结构体形式的参数体

func UnJwtNoKey added in v0.0.5

func UnJwtNoKey(token string, stu any) error

JWTToken 无视秘钥进行解密

token	JWT token结构体
stu		JWT token解析出的数据

func UploadFile added in v0.0.13

func UploadFile(f *multipart.FileHeader, fc *FileConfig) error

上传文件处理 此方法会根据上传文件的后缀来判断是什么类型的文档,具体判定格式见下方lists PS:此方法仅作为上传/保存文件的目录,并不会生成缩略图/低质图等,缩略图等信息请再安排后续操作进行处理

Types

type ClientConfig added in v0.0.3

type ClientConfig struct {
	Host     string //ip
	Port     int    // 端口
	Username string //用户名
	Password string //密码
	IsPK     bool   // 是否是证书【如果是证书的话,password项填写证书位置】
}

连接的配置

type FileConfig added in v0.0.13

type FileConfig struct {
	SavePath   string `json:"save_path"`   // 保存目录,若结尾不为 `/` 会自动追加 `/` 进行间隔
	SaveName   string `json:"save_name"`   // 保存文件名若无后缀则自动追加原后缀信息
	UpImage    bool   `json:"up_image"`    // 是否允许上传图片
	UpDocument bool   `json:"up_document"` // 是否允许上传文档
	UpAudio    bool   `json:"up_audio"`    // 是否允许上传音频
	UpVideo    bool   `json:"up_video"`    // 是否允许上传视频
	UpConfig   bool   `json:"up_config"`   // 是否允许上传配置文件
	UpZip      bool   `json:"up_zip"`      // 是否允许上传压缩包文件
	UpOther    bool   `json:"up_other"`    // 是否允许上传其他后缀文件
	UpNone     bool   `json:"up_none"`     // 是否允许无后缀文件上传
	MaxSize    int64  `json:"max_size"`    // 上传文件的最大大小配置,单位:B,0表示不限制
	IsImage    bool   `json:"is_image"`    // 上传文件是图片 // 上传处理过程中会回写的变量
	IsDocument bool   `json:"is_document"` // 上传文件是文档 // 上传处理过程中会回写的变量
	IsAudio    bool   `json:"is_audio"`    // 上传文件是音频 // 上传处理过程中会回写的变量
	IsVideo    bool   `json:"is_video"`    // 上传文件是视频 // 上传处理过程中会回写的变量
	IsConfig   bool   `json:"is_config"`   // 上传文件是配置文件 // 上传处理过程中会回写的变量
	IsZip      bool   `json:"is_zip"`      // 上传文件是压缩包文件 // 上传处理过程中会回写的变量
	IsOther    bool   `json:"is_other"`    // 上传文件是其他后缀文件 // 上传处理过程中会回写的变量
	MD5        string `json:"md5"`         // 文件的MD5值 // 上传处理过程中会回写的变量
	SHA1       string `json:"sha1"`        // 文件的SHA1的值 // 上传过程中会回写的变量
	Size       int64  `json:"size"`        // 文件的大小 // 上传处理过程中会回写的变量
}

文件上传结构

Directories

Path Synopsis
HTTPS请求-带缓存、选项的V2版
HTTPS请求-带缓存、选项的V2版
可选模块配置
可选模块配置
xalbum
用户相册组件
用户相册组件
xarticle
文章模块
文章模块
xauth
权限表
权限表
xbank
银行卡号BIN列表
银行卡号BIN列表
xbanner
Banner模块
Banner模块
xbook
书籍模组 其中的书籍查找功能请自行连接数据库编写,此模组暂不提供书籍查找功能
书籍模组 其中的书籍查找功能请自行连接数据库编写,此模组暂不提供书籍查找功能
xcache
缓存模块
缓存模块
xcity
省市区模块,高德省市区
省市区模块,高德省市区
xcmd
运行CMD命令 此处的命令需要在Linux下执行,请注意
运行CMD命令 此处的命令需要在Linux下执行,请注意
xcoupon
自建通用优惠券系统
自建通用优惠券系统
xcron
定时任务脚本
定时任务脚本
xfile
自建文件管理服务
自建文件管理服务
xim
GoIM服务相关支持组件
GoIM服务相关支持组件
xintegral
用户积分模块
用户积分模块
xlink
短连接服务
短连接服务
xlog
日志记录模块
日志记录模块
xlogin
三方登录服务
三方登录服务
xnote
个人笔记模块
个人笔记模块
xnsq
NSQ队列消息 此模块依赖xlog模块,所以使用时请注意使用 `xlog.Regedit()` 来注册日志配置
NSQ队列消息 此模块依赖xlog模块,所以使用时请注意使用 `xlog.Regedit()` 来注册日志配置
xrate
中奖率支持模块
中奖率支持模块
xrecord
基础数据统计模块
基础数据统计模块
xsign
签到管理模块
签到管理模块
xsource
溯源模块
溯源模块
xsql
SQL语句获取、SQL语句执行的方法
SQL语句获取、SQL语句执行的方法
xtag
标签模块
标签模块
xtype
分类模块,高德POI分类
分类模块,高德POI分类
xuser
用户模块
用户模块
sdk
SDK相关服务,用于封装一些常用的但是没有专属SDK的相关服务
SDK相关服务,用于封装一些常用的但是没有专属SDK的相关服务
xamap
高德地图SDK
高德地图SDK
xduanlianjie
三方-短链接相关的SDK
三方-短链接相关的SDK
xfaceprint
百度人脸识别/人脸认证SDK
百度人脸识别/人脸认证SDK
xfanyibaidu
百度翻译
百度翻译
xgoogauth
谷歌密钥生成操作
谷歌密钥生成操作
xgorm
个人扩展到的一些GROM的常用方法
个人扩展到的一些GROM的常用方法
xocrbaidu
百度OCR识图功能SDK
百度OCR识图功能SDK
命令行程序支持组件 此组件需要使用 xconsole.Listen() 来运行命令监听,即:
命令行程序支持组件 此组件需要使用 xconsole.Listen() 来运行命令监听,即:
自定义错误处理包,支持记录错误的发生我位置、发生行数等信息
自定义错误处理包,支持记录错误的发生我位置、发生行数等信息
xgin框架所提供的支持
xgin框架所提供的支持
xginxalbumn
相册部分的API接口服务
相册部分的API接口服务
xginxcron
CRON的接口注入任务
CRON的接口注入任务
xginxgodb
后台配置管理模块的接口注入
后台配置管理模块的接口注入
xginxim
XIM服务组件,用于提供xim的功能性接口
XIM服务组件,用于提供xim的功能性接口
xginxlog
日志相关路由注册
日志相关路由注册
xginxnote
个人笔记相关接口注入
个人笔记相关接口注入
xginxnsq
队列相关接口注入
队列相关接口注入
数据库操作相关服务
数据库操作相关服务
xgodbconfig
数据库配置的读写支持
数据库配置的读写支持
数值运算相关支持包
数值运算相关支持包
xstring包
xstring包

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL