Merge branch 'master' of git.zhangdeman.cn:zhangdeman/gopkg

This commit is contained in:
zhangdeman001 2021-07-26 10:59:13 +08:00
commit e72c059f67
51 changed files with 577 additions and 233 deletions

View File

@ -2,7 +2,7 @@
//
// Description : 任意类型之间的相互转换
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-23 10:23 下午
package convert
@ -16,7 +16,7 @@ package convert
代码中有一个Scaner接口可以自行实现然后通过"convertAssign()"函数作为dst参数传入
Author : zhangdeman001@ke.com<张德满>
Author : zhangdeman001@ke.com<白茶清欢>
*/
import (

View File

@ -2,14 +2,14 @@
//
// Description : easylock...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-24 6:29 下午
package easylock
// EasyLock ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:18 下午 2021/4/1
type EasyLock interface {

View File

@ -2,7 +2,7 @@
//
// Description : easylock ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-04-01 4:13 下午
package easylock
@ -13,14 +13,14 @@ type option struct {
// Option 设置option选项
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:15 下午 2021/4/1
type OptionFunc func(o *option)
// WithFlag 设置flag
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:17 下午 2021/4/1
func WithFlag(flag string) OptionFunc {
@ -31,7 +31,7 @@ func WithFlag(flag string) OptionFunc {
// LockCnt 计数lockCnt
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:41 下午 2021/4/1
type LockCnt struct {
@ -44,7 +44,7 @@ type base struct {
// ParseOption 解析option
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:24 下午 2021/4/1
func (b *base) ParseOption(optionFuncList ...OptionFunc) *option {
@ -57,7 +57,7 @@ func (b *base) ParseOption(optionFuncList ...OptionFunc) *option {
// AddLockCnt 锁数量加一
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:44 下午 2021/4/1
func (b *base) AddLockCnt(lockCnt *LockCnt) {
@ -66,7 +66,7 @@ func (b *base) AddLockCnt(lockCnt *LockCnt) {
// DecreaseLockCnt 锁数量
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:45 下午 2021/4/1
func (b *base) DecreaseLockCnt(lockCnt *LockCnt) {
@ -75,7 +75,7 @@ func (b *base) DecreaseLockCnt(lockCnt *LockCnt) {
// AddRLockCnt 锁数量加一
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:44 下午 2021/4/1
func (b *base) AddRLockCnt(lockCnt *LockCnt) {
@ -84,7 +84,7 @@ func (b *base) AddRLockCnt(lockCnt *LockCnt) {
// DecreaseRLockCnt 锁数量
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:45 下午 2021/4/1
func (b *base) DecreaseRLockCnt(lockCnt *LockCnt) {

View File

@ -2,7 +2,7 @@
//
// Description : easylock...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-24 10:55 下午
package easylock
@ -11,7 +11,7 @@ import "github.com/pkg/errors"
// segmentError ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 1:44 下午 2021/2/24
func segmentError() error {

View File

@ -2,7 +2,7 @@
//
// Description : 包装各种姿势的锁
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-24 6:26 下午
package easylock
@ -11,7 +11,7 @@ import "sync"
// NewLock获取普通锁实例,因为只有一把锁,flag没有意义,传空即可
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:42 下午 2021/2/24
func NewLock() EasyLock {

View File

@ -2,16 +2,16 @@
//
// Description : 分段的锁
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-24 10:44 下午
package easylock
import "github.com/go-developer/gopkg/util"
import "git.zhangdeman.cn/zhangdeman/gopkg/util"
// NewSegment 获取分段锁
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:20 下午 2021/2/24
func NewSegment(segmentCnt int) (EasyLock, error) {

View File

@ -2,14 +2,14 @@
//
// Description : easymap...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-23 9:55 下午
package easymap
// EasyMap 约束各种数据接口的实现
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:56 下午 2021/2/23
type EasyMap interface {

View File

@ -2,7 +2,7 @@
//
// Description : easymap...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-23 10:15 下午
package easymap
@ -11,7 +11,7 @@ import "github.com/pkg/errors"
// keyNotFound key 不存在
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:17 下午 2021/2/23
func keyNotFound(key interface{}) error {
@ -20,7 +20,7 @@ func keyNotFound(key interface{}) error {
// convertFail 数据类型妆换失败
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:28 下午 2021/2/23
func convertFail(err error) error {
@ -29,7 +29,7 @@ func convertFail(err error) error {
// segmentError ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 1:44 下午 2021/2/24
func segmentError() error {

View File

@ -2,7 +2,7 @@
//
// Description : 普通的的map,增加锁支持
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-23 10:03 下午
package easymap
@ -10,12 +10,12 @@ package easymap
import (
"sync"
"github.com/go-developer/gopkg/convert"
"git.zhangdeman.cn/zhangdeman/gopkg/convert"
)
// NewNormal 获取map实例
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:07 下午 2021/2/23
func NewNormal(withLock bool) EasyMap {
@ -31,7 +31,7 @@ func NewNormal(withLock bool) EasyMap {
// normal 普通map,内部可以加锁
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:03 下午 2021/2/23
type normal struct {
@ -235,7 +235,7 @@ func (n *normal) Exist(key interface{}) bool {
// GetAll 读取全部数据使用的是原始数据深拷贝,避免获取到全部数据之后,直接读取导致并发读写
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:36 下午 2021/2/23
func (n *normal) GetAll() map[interface{}]interface{} {

View File

@ -2,18 +2,18 @@
//
// Description : 分段存储的map并发行更好,分段数量为 1 将退化成普通的
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-23 10:47 下午
package easymap
import (
"github.com/go-developer/gopkg/util"
"git.zhangdeman.cn/zhangdeman/gopkg/util"
)
// NewSegment 获取分段map实例
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:05 下午 2021/2/24
func NewSegment(segmentCnt int, withLock bool) (EasyMap, error) {

View File

@ -2,7 +2,7 @@
//
// Description : 内置sync.Map + segment
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-24 2:08 下午
package easymap
@ -10,7 +10,7 @@ package easymap
import (
"sync"
"github.com/go-developer/gopkg/convert"
"git.zhangdeman.cn/zhangdeman/gopkg/convert"
)
func NewSync() EasyMap {

View File

@ -2,7 +2,7 @@
//
// Description : easymap...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-24 5:57 下午
package easymap

View File

@ -2,18 +2,18 @@
//
// Description : 内置sync.Map + segment
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-24 2:08 下午
package easymap
import (
"github.com/go-developer/gopkg/util"
"git.zhangdeman.cn/zhangdeman/gopkg/util"
)
// NewSegmentSync 获取SegmentSync实例
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 6:02 下午 2021/2/24
func NewSegmentSync(segment int) (EasyMap, error) {

View File

@ -2,7 +2,7 @@
//
// Description : 便捷的相关API处理
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-26 2:06 下午
package api
@ -13,7 +13,7 @@ import (
// IApi 每一个接口的实现约束
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2:08 下午 2021/3/26
type IApi interface {
@ -29,7 +29,7 @@ type IApi interface {
// RouterFunc 注册路由的函数
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 3:09 下午 2021/3/26
type RouterFunc func() (method string, uri string, handlerFunc gin.HandlerFunc, middlewareList []gin.HandlerFunc)

View File

@ -2,7 +2,7 @@
//
// Description : 注册路由
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-26 2:13 下午
package api
@ -11,7 +11,7 @@ import (
"log"
"reflect"
"github.com/go-developer/gopkg/gin/util"
"git.zhangdeman.cn/zhangdeman/gopkg/gin/util"
"github.com/pkg/errors"
@ -25,7 +25,7 @@ var (
// DisableDebugLog 禁用debug日志
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2:17 下午 2021/3/26
func DisableDebugLog() {
@ -34,7 +34,7 @@ func DisableDebugLog() {
// RegisterRouter 注册一个路由
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2:14 下午 2021/3/26
func RegisterRouter(router *gin.Engine, apiInstanceList ...interface{}) error {
@ -106,7 +106,7 @@ func RegisterRouter(router *gin.Engine, apiInstanceList ...interface{}) error {
// routerLog 记录日志
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2:28 下午 2021/3/26
func routerLog(msg string) {

View File

@ -2,7 +2,7 @@
//
// Description : 路由注册单元测试
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-26 3:49 下午
package api
@ -18,7 +18,7 @@ import (
// TestRegisterRouter ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 3:50 下午 2021/3/26
func TestRegisterRouter(t *testing.T) {

View File

@ -2,7 +2,7 @@
//
// Description : middleware...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-09 5:52 下午
package middleware
@ -10,13 +10,13 @@ package middleware
import (
"time"
commonUtil "git.zhangdeman.cn/zhangdeman/gopkg/util"
"github.com/gin-gonic/gin"
commonUtil "github.com/go-developer/gopkg/util"
)
// InitRequest 初始化请求信息,统一设置请求时间/请求ID等信息
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 5:53 下午 2021/3/9
func InitRequest() func(ctx *gin.Context) {

62
gin/request/util.go Normal file
View File

@ -0,0 +1,62 @@
// Package request...
//
// Description : 解析请求
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-07-24 8:53 下午
package request
import (
"net/url"
"strings"
"github.com/gin-gonic/gin"
)
// ParseGetRequestURI 解析URL请求参数
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:03 下午 2021/7/24
func ParseGetRequestURI(url *url.URL) map[string][]string {
url.RawQuery = strings.TrimSpace(url.RawQuery)
parseResult := make(map[string][]string)
if len(url.RawQuery) == 0 {
return parseResult
}
requestURIArr := strings.Split(url.RawQuery, "&")
for _, kvPair := range requestURIArr {
kvPair = strings.TrimSpace(kvPair)
if len(kvPair) == 0 {
continue
}
kvArr := strings.Split(kvPair, "=")
_, keyExist := parseResult[kvArr[0]]
if len(kvArr) == 1 {
// 识别到 ?a=1&b=2&c 这种格式,默认补齐成 ?a=1&b=2&c=
if keyExist {
parseResult[kvPair] = append(parseResult[kvPair], "")
} else {
parseResult[kvPair] = []string{""}
}
continue
}
// 兼容参数值中包含=的情况
if keyExist {
parseResult[kvArr[0]] = append(parseResult[kvArr[0]], strings.Join(kvArr[1:], "="))
} else {
parseResult[kvArr[0]] = []string{strings.Join(kvArr[1:], "=")}
}
}
return parseResult
}
// ParseGetRequestBody 解析get请求的body
//
// Author : zhangdeman001@ke.com<白茶清欢>
//
// Date : 9:07 下午 2021/7/24
func ParseGetRequestBody(ctx *gin.Context) {
}

43
gin/request/util_test.go Normal file
View File

@ -0,0 +1,43 @@
// Package request...
//
// Description : request...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-07-24 9:21 下午
package request
import (
"net/url"
"reflect"
"testing"
)
// TestParseGetRequestURI 测试解析请求uri
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:28 下午 2021/7/24
func TestParseGetRequestURI(t *testing.T) {
type args struct {
url *url.URL
}
tests := []struct {
name string
args args
want map[string][]string
}{
{"不存在任何参数", args{url: &url.URL{RawQuery: ""}}, make(map[string][]string)},
{"正常参数", args{url: &url.URL{RawQuery: "name=zhang&age=10"}}, map[string][]string{"name": {"zhang"}, "age": {"10"}}},
{"多个相同参数", args{url: &url.URL{RawQuery: "name=zhang&age=10&name=wang"}}, map[string][]string{"name": {"zhang", "wang"}, "age": {"10"}}},
{"末尾存在&符", args{url: &url.URL{RawQuery: "name=zhang&age=10&name=wang&"}}, map[string][]string{"name": {"zhang", "wang"}, "age": {"10"}}},
{"缺失=号", args{url: &url.URL{RawQuery: "name=zhang&age=10&name=wang&test"}}, map[string][]string{"name": {"zhang", "wang"}, "age": {"10"}, "test": {""}}},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := ParseGetRequestURI(tt.args.url); !reflect.DeepEqual(got, tt.want) {
t.Errorf("ParseGetRequestURI() = %v, want %v", got, tt.want)
}
})
}
}

View File

@ -1,8 +1,8 @@
// Package gin ...
// Package util ...
//
// Description : 结合gin框架的一些工具集
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-09 4:51 下午
package util
@ -18,7 +18,7 @@ import (
// Response 向客户端响应数据
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:52 下午 2021/3/9
func Response(ctx *gin.Context, code interface{}, message string, data interface{}) {
@ -34,7 +34,7 @@ func Response(ctx *gin.Context, code interface{}, message string, data interface
// RegisterRouter 注册gin路由
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 8:36 下午 2021/3/9
func RegisterRouter(router *gin.Engine, method string, uri string, handler gin.HandlerFunc, middlewareList []gin.HandlerFunc) error {
@ -67,7 +67,7 @@ func RegisterRouter(router *gin.Engine, method string, uri string, handler gin.H
// RegisterRouterGroup 注册gin路由
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 8:36 下午 2021/3/9
func RegisterRouterGroup(router *gin.RouterGroup, method string, uri string, handler gin.HandlerFunc) error {

4
go.mod
View File

@ -1,4 +1,4 @@
module github.com/go-developer/gopkg
module git.zhangdeman.cn/zhangdeman/gopkg
go 1.15
@ -15,7 +15,7 @@ require (
github.com/tidwall/gjson v1.6.8
github.com/tidwall/pretty v1.1.0 // indirect
go.uber.org/zap v1.16.0
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v2 v2.4.0
gorm.io/driver/mysql v1.0.4
gorm.io/gorm v1.20.12
)

13
go.sum
View File

@ -42,11 +42,8 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
@ -56,11 +53,9 @@ github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9q
github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8=
github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
@ -93,11 +88,9 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
@ -114,7 +107,6 @@ github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo=
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/yuin/goldmark v1.2.1 h1:ruQGxdhGHe7FWOJPT0mKs5+pD2Xs1Bm/kdGlHO04FmM=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.opentelemetry.io/otel v0.17.0 h1:6MKOu8WY4hmfpQ4oQn34u6rYhnf2sWf1LXYO/UFm71U=
go.opentelemetry.io/otel v0.17.0/go.mod h1:Oqtdxmf7UtEvL037ohlgnaYa1h7GtMh0NcSd9eqkC9s=
@ -135,7 +127,6 @@ go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
@ -152,7 +143,6 @@ golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb h1:eBmm0M9fYhWpKZLjQUUKka/Lt
golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@ -192,16 +182,13 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=

View File

@ -2,7 +2,7 @@
//
// Description : 动态构建json
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-10 10:26 下午
package json
@ -13,7 +13,7 @@ import (
"strconv"
"strings"
"github.com/go-developer/gopkg/easylock"
"git.zhangdeman.cn/zhangdeman/gopkg/easylock"
"github.com/pkg/errors"
)
@ -24,7 +24,7 @@ const (
// JSONode JSOM节点
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:33 下午 2021/3/10
type JSONode struct {
@ -42,7 +42,7 @@ type JSONode struct {
// NewDynamicJSON 获取JSON实例
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:36 下午 2021/3/10
func NewDynamicJSON() *DynamicJSON {
@ -62,7 +62,7 @@ func NewDynamicJSON() *DynamicJSON {
// DynamicJSON 动态json
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:03 下午 2021/3/10
type DynamicJSON struct {
@ -74,7 +74,7 @@ type DynamicJSON struct {
// SetValue 设置节点值,如果节点不存在,创建;如果已存在,更新, 多级key使用, value 必须是基础数据类型, 如果是结构体, 需要继续添加path,多级path使用.分割
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:45 下午 2021/3/10
func (dj *DynamicJSON) SetValue(path string, value interface{}, isComplexType bool) {
@ -102,7 +102,7 @@ func (dj *DynamicJSON) SetValue(path string, value interface{}, isComplexType bo
// String 获取字符串的格式JSON
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2:16 下午 2021/3/11
func (dj *DynamicJSON) String() string {
@ -114,7 +114,7 @@ func (dj *DynamicJSON) String() string {
// buildTpl 构建json模版与绑定数据
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:38 下午 2021/3/11
func (dj *DynamicJSON) buildTpl(root *JSONode, tplList *[]string, valList *[]interface{}) (*[]string, *[]interface{}) {
@ -151,7 +151,7 @@ func (dj *DynamicJSON) buildTpl(root *JSONode, tplList *[]string, valList *[]int
// getValFormat 构建值得占位符
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:49 下午 2021/3/13
func (dj *DynamicJSON) getValFormat(root *JSONode) string {
@ -181,7 +181,7 @@ func (dj *DynamicJSON) getValFormat(root *JSONode) string {
// getStartSymbol 计算起始的符号
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:21 下午 2021/3/13
func (dj *DynamicJSON) getStartSymbol(root *JSONode) string {
@ -216,7 +216,7 @@ func (dj *DynamicJSON) getStartSymbol(root *JSONode) string {
// getEndSymbol 计算结束的符号
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:21 下午 2021/3/13
func (dj *DynamicJSON) getEndSymbol(root *JSONode) string {
@ -246,7 +246,7 @@ func (dj *DynamicJSON) getEndSymbol(root *JSONode) string {
// Search 搜索一个key TODO : 优化
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:19 下午 2021/3/10
func (dj *DynamicJSON) search(root *JSONode, key string) *JSONode {
@ -266,7 +266,7 @@ func (dj *DynamicJSON) search(root *JSONode, key string) *JSONode {
// createNode 创建新的节点
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:57 下午 2021/3/10
func (dj *DynamicJSON) createNode(parent *JSONode, key string, value interface{}, isComplexType bool) error {
@ -309,7 +309,7 @@ func (dj *DynamicJSON) createNode(parent *JSONode, key string, value interface{}
// extraSliceIndex 抽取slice索引
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:37 下午 2021/3/11
func (dj *DynamicJSON) extraSliceIndex(key string) (bool, int) {

View File

@ -2,7 +2,7 @@
//
// Description : json...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-10 11:44 下午
package json
@ -14,7 +14,7 @@ import (
// TestJSON ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:58 下午 2021/3/14
func TestJSON(t *testing.T) {
@ -42,7 +42,7 @@ func TestJSON(t *testing.T) {
// TestType 判断数据类型断言
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:59 下午 2021/3/14
func TestType(t *testing.T) {
@ -51,7 +51,7 @@ func TestType(t *testing.T) {
// TestSelect 测试动态选择字段
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:47 下午 2021/4/13
func TestSelect(t *testing.T) {

View File

@ -2,7 +2,7 @@
//
// Description : 将复杂数据结构转化为 JSONNode 树
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-14 10:40 下午
package json
@ -17,12 +17,12 @@ import (
"github.com/pkg/errors"
"github.com/go-developer/gopkg/util"
"git.zhangdeman.cn/zhangdeman/gopkg/util"
)
// NewParseJSONTree 获取解析的实例
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:43 下午 2021/3/14
func NewParseJSONTree(data interface{}) *ParseJSONTree {
@ -31,7 +31,7 @@ func NewParseJSONTree(data interface{}) *ParseJSONTree {
// ParseJSONTree 解析json树
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:41 下午 2021/3/14
type ParseJSONTree struct {
@ -40,7 +40,7 @@ type ParseJSONTree struct {
// Parse 解析数据
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:44 下午 2021/3/14
func (pjt *ParseJSONTree) Parse(pathList []string) (*DynamicJSON, error) {
@ -77,7 +77,7 @@ func (pjt *ParseJSONTree) Parse(pathList []string) (*DynamicJSON, error) {
// isLegalData 判断是否能转换成json结构, 只有slice/map/struct/能转换成slice或map的[]byte是合法的
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:46 下午 2021/3/14
func (pjt *ParseJSONTree) isLegalData() bool {

View File

@ -2,7 +2,7 @@
//
// Description : config 日志配置
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-01-02 3:07 下午
package logger
@ -39,7 +39,7 @@ const (
// RotateLogConfig 日志切割的配置
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 3:08 下午 2021/1/2
type RotateLogConfig struct {
@ -54,14 +54,14 @@ type RotateLogConfig struct {
// SetRotateLogConfigOption 设置日志切割的选项
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 3:13 下午 2021/1/2
type SetRotateLogConfigFunc func(rlc *RotateLogConfig)
// WithTimeIntervalType 设置日志切割时间间隔
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 3:34 下午 2021/1/2
func WithTimeIntervalType(timeIntervalType TimeIntervalType) SetRotateLogConfigFunc {
@ -72,7 +72,7 @@ func WithTimeIntervalType(timeIntervalType TimeIntervalType) SetRotateLogConfigF
// WithDivisionChar 设置分隔符
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 3:49 下午 2021/1/2
func WithDivisionChar(divisionChar string) SetRotateLogConfigFunc {
@ -83,7 +83,7 @@ func WithDivisionChar(divisionChar string) SetRotateLogConfigFunc {
// WithMaxAge 设置日志保存时间
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 5:03 下午 2021/1/2
func WithMaxAge(maxAge time.Duration) SetRotateLogConfigFunc {
@ -94,7 +94,7 @@ func WithMaxAge(maxAge time.Duration) SetRotateLogConfigFunc {
// NewRotateLogConfig 生成日志切割的配置
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 3:53 下午 2021/1/2
func NewRotateLogConfig(logPath string, logFile string, option ...SetRotateLogConfigFunc) (*RotateLogConfig, error) {
@ -121,7 +121,7 @@ func NewRotateLogConfig(logPath string, logFile string, option ...SetRotateLogCo
// formatConfig 格式化配置
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:23 下午 2021/1/2
func formatConfig(c *RotateLogConfig) error {
@ -188,7 +188,7 @@ const (
// defaultTimeEncoder 默认的时间处理
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:53 下午 2021/1/2
func defaultTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
@ -200,7 +200,7 @@ func defaultTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
// SecondTimeEncoder 秒级时间戳格式化
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 8:34 下午 2021/1/3
func SecondTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
@ -209,7 +209,7 @@ func SecondTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
// MsTimeEncoder 毫秒时间格式化方法
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 8:35 下午 2021/1/3
func MsTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
@ -220,7 +220,7 @@ func MsTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
// defaultEncodeDuration 默认的原始时间处理
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:56 下午 2021/1/2
func defaultEncodeDuration(d time.Duration, enc zapcore.PrimitiveArrayEncoder) {
@ -229,7 +229,7 @@ func defaultEncodeDuration(d time.Duration, enc zapcore.PrimitiveArrayEncoder) {
// OptionLogger 日志配置的选项
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:41 下午 2021/1/2
type OptionLogger struct {
@ -280,7 +280,7 @@ func WithEncoder(encoder zapcore.Encoder) SetLoggerOptionFunc {
// WithUseJsonFormat 日志是否使用json格式数据
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:30 上午 2021/1/3
func WithUseJsonFormat(isJsonFormat bool) SetLoggerOptionFunc {
@ -291,7 +291,7 @@ func WithUseJsonFormat(isJsonFormat bool) SetLoggerOptionFunc {
// WithMessageKey 使用message key
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:32 上午 2021/1/3
func WithMessageKey(messageKey string) SetLoggerOptionFunc {
@ -306,7 +306,7 @@ func WithMessageKey(messageKey string) SetLoggerOptionFunc {
// WithLevelKey 设置level key
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:33 上午 2021/1/3
func WithLevelKey(levelKey string) SetLoggerOptionFunc {
@ -321,7 +321,7 @@ func WithLevelKey(levelKey string) SetLoggerOptionFunc {
// WithTimeKey 设置time key ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:34 上午 2021/1/3
func WithTimeKey(timeKey string) SetLoggerOptionFunc {
@ -336,7 +336,7 @@ func WithTimeKey(timeKey string) SetLoggerOptionFunc {
// WithCallerKey 设置caller key
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:37 上午 2021/1/3
func WithCallerKey(callerKey string) SetLoggerOptionFunc {
@ -351,7 +351,7 @@ func WithCallerKey(callerKey string) SetLoggerOptionFunc {
// WithShortCaller 是否使用短caller格式
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:39 上午 2021/1/3
func WithShortCaller(useShortCaller bool) SetLoggerOptionFunc {
@ -362,7 +362,7 @@ func WithShortCaller(useShortCaller bool) SetLoggerOptionFunc {
// WithTimeEncoder 设置格式化时间方法
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:41 上午 2021/1/3
func WithTimeEncoder(encoder zapcore.TimeEncoder) SetLoggerOptionFunc {
@ -376,7 +376,7 @@ func WithTimeEncoder(encoder zapcore.TimeEncoder) SetLoggerOptionFunc {
// WithEncodeDuration 原始时间
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:42 上午 2021/1/3
func WithEncodeDuration(encoder zapcore.DurationEncoder) SetLoggerOptionFunc {
@ -390,7 +390,7 @@ func WithEncodeDuration(encoder zapcore.DurationEncoder) SetLoggerOptionFunc {
// GetEncoder 获取空中台输出的encoder
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 6:24 下午 2021/1/2
func GetEncoder(option ...SetLoggerOptionFunc) zapcore.Encoder {

View File

@ -2,7 +2,7 @@
//
// Description : logger...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-01-03 12:58 上午
package logger
@ -14,7 +14,7 @@ import (
// FormatJson 格式化输出json
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 1:06 上午 2021/1/3
func FormatJson(src interface{}) string {

View File

@ -2,7 +2,7 @@
//
// Description : error 定义日志处理过程中的各种错误
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-01-02 2:44 下午
package logger
@ -11,7 +11,7 @@ import "github.com/pkg/errors"
// CreateLogFileError 创建日志文件失败
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2:55 下午 2021/1/2
func CreateLogFileError(err error, logFilePath string) error {
@ -20,7 +20,7 @@ func CreateLogFileError(err error, logFilePath string) error {
// LogPathEmptyError 日志路径为空
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:03 下午 2021/1/2
func LogPathEmptyError() error {
@ -29,7 +29,7 @@ func LogPathEmptyError() error {
// CustomTimeIntervalError 自定义日志切割时间间隔错误
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:11 下午 2021/1/2
func CustomTimeIntervalError() error {
@ -38,7 +38,7 @@ func CustomTimeIntervalError() error {
// DealLogPathError 日志路径处理异常
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:31 下午 2021/1/2
func DealLogPathError(err error, logPath string) error {
@ -47,7 +47,7 @@ func DealLogPathError(err error, logPath string) error {
// LogSplitTypeError 日志切割类型错误
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:50 下午 2021/1/2
func LogSplitTypeError(splitType TimeIntervalType) error {
@ -56,7 +56,7 @@ func LogSplitTypeError(splitType TimeIntervalType) error {
// CreateIOWriteError 创建日志实例失败
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 5:20 下午 2021/1/2
func CreateIOWriteError(err error) error {

View File

@ -2,7 +2,7 @@
//
// Description : logger 日志文件
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-01-02 5:04 下午
package logger
@ -22,7 +22,7 @@ import (
// NewLogger 获取日志实例
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 5:05 下午 2021/1/2
func NewLogger(loggerLevel zapcore.Level, splitConfig *RotateLogConfig, optionFunc ...SetLoggerOptionFunc) (*zap.Logger, error) {
@ -78,7 +78,7 @@ func NewLogger(loggerLevel zapcore.Level, splitConfig *RotateLogConfig, optionFu
// NewConsoleLogger 获取控制台输出的日志实例
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 8:22 下午 2021/4/17
func NewConsoleLogger(loggerLevel zapcore.Level, optionFunc ...SetLoggerOptionFunc) (*zap.Logger, error) {
@ -115,7 +115,7 @@ type Logger struct {
// getWriter 获取日志实例
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 5:08 下午 2021/1/2
func (l *Logger) getWriter() (io.Writer, error) {

View File

@ -2,7 +2,7 @@
//
// Description : logger_test 单元测试
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-01-02 4:59 下午
package logger
@ -19,7 +19,7 @@ import (
// Test_Logger ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 5:50 下午 2021/1/2
func Test_Logger(t *testing.T) {
@ -41,7 +41,7 @@ func Test_Logger(t *testing.T) {
// Test_FormatJson 测试json格式化输出
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 1:08 上午 2021/1/3
func Test_FormatJson(t *testing.T) {
@ -59,7 +59,7 @@ func Test_FormatJson(t *testing.T) {
// Test_Time 测试格式化纳秒时间戳
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 8:32 下午 2021/1/3
func Test_Time(t *testing.T) {

View File

@ -2,7 +2,7 @@
//
// Description : gorm v2 版本接口实现
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-01 9:52 下午
package wrapper
@ -18,13 +18,13 @@ import (
"go.uber.org/zap"
logger2 "github.com/go-developer/gopkg/logger"
logger2 "git.zhangdeman.cn/zhangdeman/gopkg/logger"
"gorm.io/gorm/logger"
)
// NewGormV2 获取日志实例
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:56 下午 2021/3/1
func NewGormV2(loggerLevel zapcore.Level, consoleOutput bool, encoder zapcore.Encoder, splitConfig *logger2.RotateLogConfig, traceIDField string, skip int) (logger.Interface, error) {
@ -47,7 +47,7 @@ func NewGormV2(loggerLevel zapcore.Level, consoleOutput bool, encoder zapcore.En
// Gorm v2 版本库日志实现
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:55 下午 2021/3/1
type Gorm struct {
@ -58,7 +58,7 @@ type Gorm struct {
// LogMode ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:08 下午 2021/3/1
func (g *Gorm) LogMode(level logger.LogLevel) logger.Interface {
@ -67,7 +67,7 @@ func (g *Gorm) LogMode(level logger.LogLevel) logger.Interface {
// Info 日志
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:18 下午 2021/3/1
func (g *Gorm) Info(ctx context.Context, s string, i ...interface{}) {
@ -81,7 +81,7 @@ func (g *Gorm) Info(ctx context.Context, s string, i ...interface{}) {
// Warn ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:16 下午 2021/3/1
func (g *Gorm) Warn(ctx context.Context, s string, i ...interface{}) {
@ -95,7 +95,7 @@ func (g *Gorm) Warn(ctx context.Context, s string, i ...interface{}) {
// Error 日志
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:18 下午 2021/3/1
func (g *Gorm) Error(ctx context.Context, s string, i ...interface{}) {
@ -109,7 +109,7 @@ func (g *Gorm) Error(ctx context.Context, s string, i ...interface{}) {
// Trace Trace 记录
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:19 下午 2021/3/1
func (g *Gorm) Trace(ctx context.Context, begin time.Time, fc func() (string, int64), err error) {
@ -136,7 +136,7 @@ func (g *Gorm) Trace(ctx context.Context, begin time.Time, fc func() (string, in
// getTraceID 获取traceID
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:11 下午 2021/3/1
func (g *Gorm) getTraceID(ctx context.Context) string {
@ -145,7 +145,7 @@ func (g *Gorm) getTraceID(ctx context.Context) string {
// GetGormSQL 获取tracefn
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:38 下午 2021/3/1
func GetGormSQL(dbClient *gorm.DB) func() (string, int64) {

View File

@ -2,7 +2,7 @@
//
// Description : http_gin 使用gin框架时的记录日志
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-01-03 3:43 下午
package wrapper
@ -10,16 +10,16 @@ package wrapper
import (
"encoding/json"
"git.zhangdeman.cn/zhangdeman/gopkg/logger"
logger2 "git.zhangdeman.cn/zhangdeman/gopkg/logger"
"github.com/gin-gonic/gin"
"github.com/go-developer/gopkg/logger"
logger2 "github.com/go-developer/gopkg/logger"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
// NewGinLogger 使用gin框架记录日志
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 3:45 下午 2021/1/3
func NewGinLogger(loggerLevel zapcore.Level, consoleOutput bool, encoder zapcore.Encoder, splitConfig *logger.RotateLogConfig, extractFieldList []string, skip int) (*Gin, error) {
@ -43,7 +43,7 @@ func NewGinLogger(loggerLevel zapcore.Level, consoleOutput bool, encoder zapcore
// Gin 包装gin实例
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 3:59 下午 2021/1/3
type Gin struct {
@ -53,7 +53,7 @@ type Gin struct {
// formatFieldList 格式化日志field列表
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:13 下午 2021/1/3
func (gw *Gin) formatFieldList(ginCtx *gin.Context, inputFieldList []zap.Field) []zap.Field {
@ -74,7 +74,7 @@ func (gw *Gin) formatFieldList(ginCtx *gin.Context, inputFieldList []zap.Field)
// Debug 日志
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:14 下午 2021/1/3
func (gw *Gin) Debug(ginCtx *gin.Context, msg string, field ...zap.Field) {
@ -84,7 +84,7 @@ func (gw *Gin) Debug(ginCtx *gin.Context, msg string, field ...zap.Field) {
// Info 日志
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:28 下午 2021/1/3
func (gw *Gin) Info(ginCtx *gin.Context, msg string, field ...zap.Field) {
@ -94,7 +94,7 @@ func (gw *Gin) Info(ginCtx *gin.Context, msg string, field ...zap.Field) {
// Warn 日志
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:29 下午 2021/1/3
func (gw *Gin) Warn(ginCtx *gin.Context, msg string, field ...zap.Field) {
@ -104,7 +104,7 @@ func (gw *Gin) Warn(ginCtx *gin.Context, msg string, field ...zap.Field) {
// Error 日志
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:29 下午 2021/1/3
func (gw *Gin) Error(ginCtx *gin.Context, msg string, field ...zap.Field) {
@ -114,7 +114,7 @@ func (gw *Gin) Error(ginCtx *gin.Context, msg string, field ...zap.Field) {
// Panic 日志
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:29 下午 2021/1/3
func (gw *Gin) Panic(ginCtx *gin.Context, msg string, field ...zap.Field) {
@ -124,7 +124,7 @@ func (gw *Gin) Panic(ginCtx *gin.Context, msg string, field ...zap.Field) {
// DPanic 日志
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:30 下午 2021/1/3
func (gw *Gin) DPanic(ginCtx *gin.Context, msg string, field ...zap.Field) {
@ -134,7 +134,7 @@ func (gw *Gin) DPanic(ginCtx *gin.Context, msg string, field ...zap.Field) {
// GetZapLoggerInstance 获取zap日志实例
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021/01/03 22:56:47
func (gw *Gin) GetZapLoggerInstance() *zap.Logger {

View File

@ -2,7 +2,7 @@
//
// Description : mysql客户端
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-01 9:20 下午
package mysql
@ -10,7 +10,7 @@ package mysql
import (
"fmt"
"github.com/go-developer/gopkg/logger/wrapper"
"git.zhangdeman.cn/zhangdeman/gopkg/logger/wrapper"
"gorm.io/driver/mysql"
"gorm.io/gorm"
@ -18,7 +18,7 @@ import (
// GetDatabaseClient 获取日志实例
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:49 下午 2021/3/1
func GetDatabaseClient(conf *DBConfig, logConf *LogConfig) (*gorm.DB, error) {
@ -49,7 +49,7 @@ func GetDatabaseClient(conf *DBConfig, logConf *LogConfig) (*gorm.DB, error) {
// buildConnectionDSN 构建建立连接的DSN
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:34 下午 2021/3/1
func buildConnectionDSN(conf *DBConfig) string {

View File

@ -2,19 +2,19 @@
//
// Description : 数据定义
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-01 9:27 下午
package mysql
import (
"github.com/go-developer/gopkg/logger"
"git.zhangdeman.cn/zhangdeman/gopkg/logger"
"go.uber.org/zap/zapcore"
)
// DBConfig 数据库连接的配置
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:32 下午 2021/3/1
type DBConfig struct {
@ -30,7 +30,7 @@ type DBConfig struct {
// LogConfig 日志配置
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:51 下午 2021/3/1
type LogConfig struct {

View File

@ -2,7 +2,7 @@
//
// Description : 异常定义
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-01 9:42 下午
package mysql
@ -11,7 +11,7 @@ import "github.com/pkg/errors"
// ConnectionOpenError 数据库连接失败
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:43 下午 2021/3/1
func ConnectionOpenError(err error) error {
@ -20,7 +20,7 @@ func ConnectionOpenError(err error) error {
// CreateDBLogError 打开日志失败
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:53 下午 2021/3/1
func CreateDBLogError(err error) error {

View File

@ -2,7 +2,7 @@
//
// Description : redis 客户端
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-27 4:49 下午
package redis
@ -11,16 +11,16 @@ import (
"strings"
"time"
"github.com/go-developer/gopkg/convert"
"git.zhangdeman.cn/zhangdeman/gopkg/convert"
"github.com/go-developer/gopkg/logger"
"git.zhangdeman.cn/zhangdeman/gopkg/logger"
redisInstance "github.com/go-redis/redis/v8"
"go.uber.org/zap"
)
// defaultParseError ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:59 下午 2021/2/27
func defaultParseError(err error) error {
@ -44,7 +44,7 @@ func defaultParseError(err error) error {
// Options 连接选项,百分之百兼容第三方包的选项
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:57 下午 2021/2/27
type Options struct {
@ -63,7 +63,7 @@ type RealClient struct {
// NewClient 获取redis client实例
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 5:05 下午 2021/2/27
func NewClient(config map[string]Options, parseErrorFunc func(err error) error) (ClientInterface, error) {
@ -80,7 +80,7 @@ func NewClient(config map[string]Options, parseErrorFunc func(err error) error)
// Client 包装的redis client
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 4:52 下午 2021/2/27
type Client struct {
@ -91,7 +91,7 @@ type Client struct {
// init 初始化redis连接
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 5:31 下午 2021/2/27
func (c *Client) init() error {
@ -135,7 +135,7 @@ func (c *Client) init() error {
// getLogger ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 7:07 下午 2021/2/27
func (c *Client) getLogger(conf *LoggerConfig) (*zap.Logger, error) {
@ -152,7 +152,7 @@ func (c *Client) getLogger(conf *LoggerConfig) (*zap.Logger, error) {
// GetRedisClient 获取redis实例
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 5:16 下午 2021/2/27
func (c *Client) GetRedisClient(flag string) (*RealClient, error) {
@ -165,7 +165,7 @@ func (c *Client) GetRedisClient(flag string) (*RealClient, error) {
// log 记录redis请求日志
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 8:52 下午 2021/2/27
func (c *Client) log(ctx *Context, realClient *RealClient, cmdResult redisInstance.Cmder, startTime int64, finishTime int64) {
@ -183,7 +183,7 @@ func (c *Client) log(ctx *Context, realClient *RealClient, cmdResult redisInstan
// CommandProxy 执行命令的代理
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:41 下午 2021/2/27
func (c *Client) CommandProxy(ctx *Context, flag string, cmd string, param ...interface{}) (interface{}, error) {
@ -210,7 +210,7 @@ func (c *Client) CommandProxy(ctx *Context, flag string, cmd string, param ...in
// CommandProxyWithReceiver 执行命令,并解析结果
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:00 下午 2021/2/27
func (c *Client) CommandProxyWithReceiver(ctx *Context, flag string, receiver interface{}, cmd string, param ...interface{}) error {
@ -231,7 +231,7 @@ func (c *Client) CommandProxyWithReceiver(ctx *Context, flag string, receiver in
// ClientInterface 定义redis client的接口实现,方便单元测试数据mock
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:49 下午 2021/2/27
type ClientInterface interface {

View File

@ -2,7 +2,7 @@
//
// Description : redis...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-27 8:22 下午
package redis
@ -10,7 +10,7 @@ package redis
import (
"context"
"github.com/go-developer/gopkg/easymap"
"git.zhangdeman.cn/zhangdeman/gopkg/easymap"
"github.com/gin-gonic/gin"
)
@ -30,7 +30,7 @@ const (
// Context 请求上下文
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 8:25 下午 2021/2/27
type Context struct {
@ -44,7 +44,7 @@ type Context struct {
// NewContext 生成一个上下文
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 8:26 下午 2021/2/27
func NewContext(flag string, of ...SetContextFunc) *Context {
@ -87,7 +87,7 @@ type SetContextFunc func(rc *Context)
// WithCtx 设置context
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 8:30 下午 2021/2/27
func WithCtx(ctx context.Context) SetContextFunc {
@ -98,7 +98,7 @@ func WithCtx(ctx context.Context) SetContextFunc {
// WithGinCtx 设置gin上下文
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 8:34 下午 2021/2/27
func WithGinCtx(ginCtx *gin.Context) SetContextFunc {
@ -109,7 +109,7 @@ func WithGinCtx(ginCtx *gin.Context) SetContextFunc {
// WithExtra 设置扩展信息
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 8:36 下午 2021/2/27
func WithExtra(extra easymap.EasyMap) SetContextFunc {
@ -120,7 +120,7 @@ func WithExtra(extra easymap.EasyMap) SetContextFunc {
// WithRequestIDField 设置request_id参数名
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 8:41 下午 2021/2/27
func WithRequestIDField(requestIDField string) SetContextFunc {
@ -131,7 +131,7 @@ func WithRequestIDField(requestIDField string) SetContextFunc {
// WithRequestID ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 8:42 下午 2021/2/27
func WithRequestID(requestID string) SetContextFunc {

View File

@ -2,7 +2,7 @@
//
// Description : redis...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-27 5:13 下午
package redis
@ -11,7 +11,7 @@ import "github.com/pkg/errors"
// FlagNotFound flag不存在异常
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 5:15 下午 2021/2/27
func FlagNotFound(flag string) error {
@ -20,7 +20,7 @@ func FlagNotFound(flag string) error {
// LoggerInitFail 日志初始化失败
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 7:30 下午 2021/2/27
func LoggerInitFail(flag string, err error) error {
@ -29,7 +29,7 @@ func LoggerInitFail(flag string, err error) error {
// EmptyCmd 未设置要执行的命令
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:46 下午 2021/2/27
func EmptyCmd() error {
@ -38,7 +38,7 @@ func EmptyCmd() error {
// CommandExecuteFail 命令执行失败
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:58 下午 2021/2/27
func CommandExecuteFail(err error) error {
@ -47,7 +47,7 @@ func CommandExecuteFail(err error) error {
// ReceiverISNIL 数据接收者是空指针
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:05 下午 2021/2/27
func ReceiverISNIL() error {
@ -56,7 +56,7 @@ func ReceiverISNIL() error {
// ResultConvertFail 数据结果解析失败
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:07 下午 2021/2/27
func ResultConvertFail(err error) error {

View File

@ -2,19 +2,19 @@
//
// Description : redis...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-27 5:26 下午
package redis
import (
"github.com/go-developer/gopkg/logger"
"git.zhangdeman.cn/zhangdeman/gopkg/logger"
"go.uber.org/zap/zapcore"
)
// LoggerConfig 日志配置
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 5:26 下午 2021/2/27
type LoggerConfig struct {
@ -28,7 +28,7 @@ type LoggerConfig struct {
// LogFieldConfig 日志字段配置
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:20 下午 2021/2/27
type LogFieldConfig struct {

View File

@ -2,7 +2,7 @@
//
// Description : redis...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-27 10:14 下午
package redis
@ -18,7 +18,7 @@ import (
// TestCommandProxy ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:22 下午 2021/2/27
func TestCommandProxy(t *testing.T) {

View File

@ -2,7 +2,7 @@
//
// Description : 按需返回对外暴露的字段
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-10 6:38 下午
package safe
@ -15,7 +15,7 @@ import (
// Filter 按需输出数据
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 6:40 下午 2021/3/10
func Filter(source []byte, filter []string) ([]byte, error) {

View File

@ -2,7 +2,7 @@
//
// Description : safe...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-10 10:07 下午
package safe

View File

@ -2,26 +2,26 @@
//
// Description : 安全策略之,访问黑名单
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-07 11:34 下午
package safe
import (
"github.com/go-developer/gopkg/easymap"
"git.zhangdeman.cn/zhangdeman/gopkg/easymap"
"github.com/pkg/errors"
)
// IPBlack ip黑名单
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:35 下午 2021/3/7
var IPBlack *ipBlack
// InitIPBlack 初始化ip黑名单
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:36 下午 2021/3/7
func InitIPBlack(ipList []string) error {
@ -31,7 +31,7 @@ func InitIPBlack(ipList []string) error {
// InitIPBlackWithSeg ip黑名单分片存储
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:37 下午 2021/3/7
func InitIPBlackWithSeg(seg int, ipList []string) error {
@ -53,7 +53,7 @@ type ipBlack struct {
// Add 添加黑名单IP
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:05 上午 2021/3/8
func (ib *ipBlack) Add(ip string) {
@ -62,7 +62,7 @@ func (ib *ipBlack) Add(ip string) {
// Del 删除一个黑名单IP ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:06 上午 2021/3/8
func (ib *ipBlack) Del(ip string) {
@ -71,7 +71,7 @@ func (ib *ipBlack) Del(ip string) {
// IsBlack 判断ip是否存在于和名单之中
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:07 上午 2021/3/8
func (ib *ipBlack) IsBlack(ip string) bool {

90
try/catch.go Normal file
View File

@ -0,0 +1,90 @@
// Package try...
//
// Description : catch 的实现
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-07-24 10:10 下午
package try
import "reflect"
// CatchHandler catch的处理
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:55 下午 2021/7/24
type CatchHandler struct {
err error // 异常
hasDeal bool // 是否已处理
}
// NeedDeal 是否需要处理 : 存在异常切异常没有处理过
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:57 下午 2021/7/24
func (ch *CatchHandler) NeedDeal() bool {
return nil != ch.err && !ch.hasDeal
}
// HasError 判断是否有异常
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:00 下午 2021/7/24
func (ch *CatchHandler) HasError() bool {
return ch.err != nil
}
// ErrorHasDeal 异常已经处理
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:01 下午 2021/7/24
func (ch *CatchHandler) ErrorHasDeal() bool {
return ch.hasDeal
}
// Catch ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:29 下午 2021/7/24
func (ch *CatchHandler) Catch(err error, handler func(err2 error)) ICatchHandler {
if !ch.NeedDeal() {
return ch
}
//如果传入的error类型和发生异常的类型一致则执行异常处理器并将hasCatch修改为true代表已捕捉异常
if reflect.TypeOf(err) == reflect.TypeOf(ch.err) {
handler(ch.err)
ch.hasDeal = true
}
return ch
}
// CatchAll ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:29 下午 2021/7/24
func (ch *CatchHandler) CatchAll(handler func(err error)) FinalHandler {
if !ch.NeedDeal() {
return ch
}
handler(ch.err)
ch.hasDeal = true
return ch
}
func (ch *CatchHandler) Finally(handlers ...func()) {
// 遍历处理器并在Finally函数执行完毕之后执行
for _, handler := range handlers {
defer handler()
}
err := ch.err
//<7>如果异常不为空,且未捕捉异常,则抛出异常
if err != nil && !ch.hasDeal {
panic(err)
}
}

131
try/iTry.go Normal file
View File

@ -0,0 +1,131 @@
// Package try...
//
// Description : 各种接口定义
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-07-24 9:47 下午
package try
import (
"encoding/json"
"fmt"
"runtime"
"git.zhangdeman.cn/zhangdeman/gopkg/easymap"
"github.com/gin-gonic/gin"
"github.com/pkg/errors"
)
// ICatchHandler catch处理
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:12 下午 2021/7/24
type ICatchHandler interface {
Catch(e error, handler func(err error)) ICatchHandler
CatchAll(handler func(err error)) FinalHandler
FinalHandler
}
// SystemError 系统异常
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:35 下午 2021/7/24
type SystemError struct {
error
}
// FinalHandler final处理
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:12 下午 2021/7/24
type FinalHandler interface {
Finally(handlers ...func())
}
// WithNormal 入口try函数, 普通的逻辑
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:43 下午 2021/7/24
func WithNormal(f func()) ICatchHandler {
t := &CatchHandler{}
defer func() {
defer func() {
r := recover()
if r != nil {
switch r.(type) {
case runtime.Error:
t.err = r.(error)
case error:
t.err = r.(error)
case string, int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, float32, float64:
t.err = SystemError{SystemError{error: errors.New(fmt.Sprintf("%v", r))}}
default:
byteData, _ := json.Marshal(r)
t.err = SystemError{error: errors.New(string(byteData))}
}
}
}()
f()
}()
return t
}
// WithGin 带 gin context 的 try, 可集成gin框架
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:50 下午 2021/7/24
func WithGin(ctx *gin.Context, f func(ctx *gin.Context)) ICatchHandler {
t := &CatchHandler{}
defer func() {
defer func() {
r := recover()
t.err = r.(error)
}()
f(ctx)
}()
return t
}
// WithData 带数据的try
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:52 下午 2021/7/24
func WithData(data easymap.EasyMap, f func(data easymap.EasyMap)) ICatchHandler {
t := &CatchHandler{}
defer func() {
defer func() {
r := recover()
if r != nil {
t.err = r.(error)
}
}()
f(data)
}()
return t
}
// WithInterface 传入任意数据类型
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:53 下午 2021/7/24
func WithInterface(data interface{}, f func(data interface{})) ICatchHandler {
t := &CatchHandler{}
defer func() {
defer func() {
r := recover()
if r != nil {
t.err = r.(error)
}
}()
f(data)
}()
return t
}

31
try/iTry_test.go Normal file
View File

@ -0,0 +1,31 @@
// Package try...
//
// Description : try...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-07-24 11:15 下午
package try
import (
"fmt"
"net/url"
"testing"
)
// TestWithNormal ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:16 下午 2021/7/24
func TestWithNormal(t *testing.T) {
f := func() {
var m *url.URL
fmt.Println(m.RawQuery)
}
WithNormal(f).CatchAll(func(err error) {
fmt.Println("捕获异常 :" + err.Error())
}).Finally(func() {
fmt.Println("这里是final")
})
}

View File

@ -2,7 +2,7 @@
//
// Description : 文件相关工具
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-04-26 6:00 下午
package util
@ -18,7 +18,7 @@ import (
// GetProjectPath 获取项目路径(可执行文件所在目录)
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:32 下午 2021/4/26
func GetProjectPath() (string, error) {
@ -37,7 +37,7 @@ func GetProjectPath() (string, error) {
// ReadYmlConfig 读取yml配置问价,并解析到指定的结构体中
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:35 下午 2021/4/26
func ReadYmlConfig(filePath string, result interface{}) error {
@ -56,7 +56,7 @@ func ReadYmlConfig(filePath string, result interface{}) error {
// ReadFileContent 读取文件内容
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:37 下午 2021/4/26
func ReadFileContent(filePath string) ([]byte, error) {
@ -78,7 +78,7 @@ func ReadFileContent(filePath string) ([]byte, error) {
// IsFileExist 判断文件是否存在
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:37 下午 2021/4/26
func IsFileExist(filePath string) (bool, bool) {

View File

@ -2,7 +2,7 @@
//
// Description : util...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-02-24 11:04 下午
package util
@ -15,7 +15,7 @@ import (
// GetHashID ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:04 下午 2021/2/24
func GetHashID(key interface{}) uint64 {
@ -24,7 +24,7 @@ func GetHashID(key interface{}) uint64 {
// GetHashIDMod 获取hashID并取模
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:07 下午 2021/2/24
func GetHashIDMod(key interface{}, shard int) int {

View File

@ -2,7 +2,7 @@
//
// Description : util...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-09 5:56 下午
package util
@ -11,7 +11,7 @@ import "net"
// GetHostIP 获取本机IP地址
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 5:58 下午 2021/3/9
func GetHostIP() string {

View File

@ -2,7 +2,7 @@
//
// Description : 字符串相关的工具
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-09 6:00 下午
package util
@ -16,7 +16,7 @@ import (
// GenRandomString 获取随机长度的字符串
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 6:01 下午 2021/3/9
func GenRandomString(source string, length uint) string {
@ -38,7 +38,7 @@ func GenRandomString(source string, length uint) string {
// Md5 对字符串进行md5加密
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 6:01 下午 2021/3/9
func Md5(str string) string {

View File

@ -2,7 +2,7 @@
//
// Description : util ...
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-14 11:11 下午
package util
@ -11,7 +11,7 @@ import "encoding/json"
// StructToMap 结构体转为map
//
// Author : go_developer@163.com<张德满>
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:12 下午 2021/3/14
func StructToMap(data interface{}) (map[string]interface{}, error) {