From 5f00d720ea52ababeb10954da4d33ab6c46e93b7 Mon Sep 17 00:00:00 2001 From: wangpengfei <274878379@qq.com> Date: 星期五, 14 七月 2023 17:47:13 +0800 Subject: [PATCH] add --- service/menu.go | 17 router/menu.go | 16 api/v1/authority.go | 178 +++++ service/authority.go | 91 ++ go.mod | 39 + pkg/ecode/code.go | 9 docs/swagger.yaml | 89 ++ model/menu.go | 58 - model/authority.go | 67 + service/index.go | 3 api/v1/user.go | 70 + api/v1/index.go | 5 router/authority.go | 21 model/request/authority.go | 10 docs/docs.go | 146 ++++ docs/swagger.json | 146 ++++ model/response/response.go | 4 constvar/const.go | 6 /dev/null | 363 ---------- go.sum | 404 +++++++++++ middleware/casbin_rbac.go | 39 + middleware/jwt.go | 41 service/casbin.go | 135 +++ router/index.go | 6 model/request/jwt.go | 9 api/v1/menu.go | 35 + source/menu.go | 31 27 files changed, 1,541 insertions(+), 497 deletions(-) diff --git a/api/v1/authority.go b/api/v1/authority.go new file mode 100644 index 0000000..32a299d --- /dev/null +++ b/api/v1/authority.go @@ -0,0 +1,178 @@ +package v1 + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type AuthorityApi struct{} + +// CreateAuthority +// +// @Tags Authority +// @Summary 鍒涘缓瑙掕壊 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.AddAuthority true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/authority/add [post] +func (a *AuthorityApi) CreateAuthority(c *gin.Context) { + var params request.AddAuthority + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode, auth := checkAuthorityParams(¶ms) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + errCode = authorityService.CreateAuthority(auth) + if errCode != ecode.OK { + ctx.Fail(errCode) + } + + //_ = menuService.AddMenuAuthority(systemReq.DefaultMenu(), authority.AuthorityId) + //_ = casbinService.UpdateCasbin(authority.AuthorityId, systemReq.DefaultCasbin()) + + ctx.Ok() +} + +//DeleteAuthority +//@Tags Authority +//@Summary 鍒犻櫎瑙掕壊 +//@Security ApiKeyAuth +//@accept application/json +//@Produce application/json +//@Param data body request.AddAuthority true "鍒犻櫎瑙掕壊" +//@Router /authority/deleteAuthority [post] +//func (a *AuthorityApi) DeleteAuthority(c *gin.Context) { +// var authority system.SysAuthority +// err := c.ShouldBindJSON(&authority) +// if err != nil { +// response.FailWithMessage(err.Error(), c) +// return +// } +// err = utils.Verify(authority, utils.AuthorityIdVerify) +// if err != nil { +// response.FailWithMessage(err.Error(), c) +// return +// } +// err = authorityService.DeleteAuthority(&authority) +// if err != nil { // 鍒犻櫎瑙掕壊涔嬪墠闇�瑕佸垽鏂槸鍚︽湁鐢ㄦ埛姝e湪浣跨敤姝よ鑹� +// global.GVA_LOG.Error("鍒犻櫎澶辫触!", zap.Error(err)) +// response.FailWithMessage("鍒犻櫎澶辫触"+err.Error(), c) +// return +// } +// response.OkWithMessage("鍒犻櫎鎴愬姛", c) +//} + +// UpdateAuthority +// @Tags Authority +// @Summary 鏇存柊瑙掕壊淇℃伅 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.AddAuthority true "鏉冮檺id, 鏉冮檺鍚�, 鐖惰鑹瞚d" +// @Router /authority/updateAuthority [post] +//func (a *AuthorityApi) UpdateAuthority(c *gin.Context) { +// var auth system.SysAuthority +// err := c.ShouldBindJSON(&auth) +// if err != nil { +// response.FailWithMessage(err.Error(), c) +// return +// } +// err = utils.Verify(auth, utils.AuthorityVerify) +// if err != nil { +// response.FailWithMessage(err.Error(), c) +// return +// } +// authority, err := authorityService.UpdateAuthority(auth) +// if err != nil { +// global.GVA_LOG.Error("鏇存柊澶辫触!", zap.Error(err)) +// response.FailWithMessage("鏇存柊澶辫触"+err.Error(), c) +// return +// } +// response.OkWithDetailed(systemRes.SysAuthorityResponse{Authority: authority}, "鏇存柊鎴愬姛", c) +//} + +// GetAuthorityList +// @Tags Authority +// @Summary 鍒嗛〉鑾峰彇瑙掕壊鍒楄〃 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.AddAuthority true "椤电爜, 姣忛〉澶у皬" +// @Router /authority/getAuthorityList [post] +//func (a *AuthorityApi) GetAuthorityList(c *gin.Context) { +// var pageInfo request.PageInfo +// err := c.ShouldBindJSON(&pageInfo) +// if err != nil { +// response.FailWithMessage(err.Error(), c) +// return +// } +// err = utils.Verify(pageInfo, utils.PageInfoVerify) +// if err != nil { +// response.FailWithMessage(err.Error(), c) +// return +// } +// list, total, err := authorityService.GetAuthorityInfoList(pageInfo) +// if err != nil { +// global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err)) +// response.FailWithMessage("鑾峰彇澶辫触"+err.Error(), c) +// return +// } +// response.OkWithDetailed(response.PageResult{ +// List: list, +// Total: total, +// Page: pageInfo.Page, +// PageSize: pageInfo.PageSize, +// }, "鑾峰彇鎴愬姛", c) +//} + +// SetDataAuthority +// +// @Tags Authority +// @Summary 璁剧疆瑙掕壊璧勬簮鏉冮檺 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.AddAuthority true "璁剧疆瑙掕壊璧勬簮鏉冮檺" +// @Router /authority/setDataAuthority [post] +func (a *AuthorityApi) SetDataAuthority(c *gin.Context) { + var auth system.SysAuthority + err := c.ShouldBindJSON(&auth) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(auth, utils.AuthorityIdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = authorityService.SetDataAuthority(auth) + if err != nil { + global.GVA_LOG.Error("璁剧疆澶辫触!", zap.Error(err)) + response.FailWithMessage("璁剧疆澶辫触"+err.Error(), c) + return + } + response.OkWithMessage("璁剧疆鎴愬姛", c) +} + +func checkAuthorityParams(params *request.AddAuthority) (int, model.Authority) { + return ecode.OK, model.Authority{ + AuthorityName: params.AuthorityName, + } +} diff --git a/api/v1/index.go b/api/v1/index.go index f8911cf..c1f205a 100644 --- a/api/v1/index.go +++ b/api/v1/index.go @@ -44,6 +44,8 @@ ServiceFollowupApi CustomerServiceSheetApi ServiceFeeManageApi + AuthorityApi + MenuApi } var ApiGroup = new(Group) @@ -87,4 +89,7 @@ serviceFollowupService = service.ServiceGroup.FollowupService customerServiceSheetService = service.ServiceGroup.CustomerServiceSheetService serviceFeeManageService = service.ServiceGroup.FeeManageService + casbinService = service.ServiceGroup.CasbinService + authorityService = service.ServiceGroup.AuthorityService + menuService = service.ServiceGroup.MenuService ) diff --git a/api/v1/menu.go b/api/v1/menu.go new file mode 100644 index 0000000..8604bfa --- /dev/null +++ b/api/v1/menu.go @@ -0,0 +1,35 @@ +package v1 + +import ( + "aps_crm/model/response" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "github.com/gin-gonic/gin" +) + +type MenuApi struct{} + +// List +// +// @Tags Menu +// @Summary 鑾峰彇鑿滃崟鏍� +// @Security ApiKeyAuth +// @Produce application/json +// @Success 200 {object} contextx.Response{data=response.MenuTreeResponse} +// @Router /api/menu/getMenu [get] +func (m *MenuApi) List(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + list, errCode := menuService.GetMenuTree() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.MenuTreeResponse{ + List: list, + }) +} diff --git a/api/v1/user.go b/api/v1/user.go index 99534cf..baf9e7e 100644 --- a/api/v1/user.go +++ b/api/v1/user.go @@ -6,9 +6,7 @@ "aps_crm/model" "aps_crm/model/request" "aps_crm/model/response" - _ "aps_crm/model/response" "aps_crm/pkg/contextx" - "aps_crm/pkg/convertx" "aps_crm/pkg/ecode" "aps_crm/pkg/encrypt" "aps_crm/pkg/logx" @@ -18,7 +16,6 @@ "github.com/gin-gonic/gin" "github.com/go-redis/redis/v8" "github.com/mojocn/base64Captcha" - "time" ) // 褰撳紑鍚鏈嶅姟鍣ㄩ儴缃叉椂锛屾浛鎹笅闈㈢殑閰嶇疆锛屼娇鐢╮edis鍏变韩瀛樺偍楠岃瘉鐮� @@ -26,6 +23,7 @@ var store = base64Captcha.DefaultMemStore // Login +// // @Tags Base // @Summary 鐢ㄦ埛鐧诲綍 // @Produce application/json @@ -41,41 +39,41 @@ // 鍒ゆ柇楠岃瘉鐮佹槸鍚﹀紑鍚� key := c.ClientIP() - openCaptcha := conf.Conf.Captcha.OpenCaptcha // 鏄惁寮�鍚槻鐖嗘鏁� - openCaptchaTimeOut := conf.Conf.Captcha.OpenCaptchaTimeOut // 缂撳瓨瓒呮椂鏃堕棿 - v, ok := constvar.BlackCache.Get(key) - if !ok { - constvar.BlackCache.Set(key, 1, time.Second*time.Duration(openCaptchaTimeOut)) - } + //openCaptcha := conf.Conf.Captcha.OpenCaptcha // 鏄惁寮�鍚槻鏆存鏁� + //openCaptchaTimeOut := conf.Conf.Captcha.OpenCaptchaTimeOut // 缂撳瓨瓒呮椂鏃堕棿 + //v, ok := constvar.BlackCache.Get(key) + //if !ok { + // constvar.BlackCache.Set(key, 1, time.Second*time.Duration(openCaptchaTimeOut)) + //} - var oc bool = openCaptcha == 0 || convertx.InterfaceToInt(v) > openCaptcha // 0 琛ㄧず姣忔鐧诲綍閮介渶瑕侀獙璇佺爜 鎴栬�呭綋鍓嶆鏁板凡瓒呰繃闃茬垎娆℃暟 + //var oc = openCaptcha == 0 || convertx.InterfaceToInt(v) > openCaptcha // 0 琛ㄧず姣忔鐧诲綍閮介渶瑕侀獙璇佺爜 鎴栬�呭綋鍓嶆鏁板凡瓒呰繃闃叉毚娆℃暟 - if !oc || store.Verify(params.CaptchaId, params.Captcha, true) { - u := &model.User{Username: params.Username, Password: params.Password} - user, errCode := userService.Login(u) - if errCode != ecode.OK { - logx.Errorf("鐧婚檰澶辫触! 鐢ㄦ埛鍚嶄笉瀛樺湪鎴栬�呭瘑鐮侀敊璇�! errCode:%v", errCode) - // 楠岃瘉鐮佹鏁�+1 - _ = constvar.BlackCache.Increment(key, 1) - ctx.Fail(errCode) - return - } - if !user.Enable { - logx.Errorf("鐧婚檰澶辫触! 鐢ㄦ埛琚姝㈢櫥褰�!") - // 楠岃瘉鐮佹鏁�+1 - _ = constvar.BlackCache.Increment(key, 1) - ctx.Fail(ecode.UserForbidden) - return - } - // 璧嬪�艰彍鍗旾D鍒楄〃 - //user.MenuIds, _ = menuService.GetUserMenuIds(user.ID, user.UserType) - slf.TokenNext(ctx, *user) + //if !oc || store.Verify(params.CaptchaId, params.Captcha, true) { + u := &model.User{Username: params.Username, Password: params.Password} + user, errCode := userService.Login(u) + if errCode != ecode.OK { + logx.Errorf("鐧婚檰澶辫触! 鐢ㄦ埛鍚嶄笉瀛樺湪鎴栬�呭瘑鐮侀敊璇�! errCode:%v", errCode) + // 楠岃瘉鐮佹鏁�+1 + _ = constvar.BlackCache.Increment(key, 1) + ctx.Fail(errCode) return } + if !user.Enable { + logx.Errorf("鐧婚檰澶辫触! 鐢ㄦ埛琚姝㈢櫥褰�!") + // 楠岃瘉鐮佹鏁�+1 + _ = constvar.BlackCache.Increment(key, 1) + ctx.Fail(ecode.UserForbidden) + return + } + // 璧嬪�艰彍鍗旾D鍒楄〃 + //user.MenuIds, _ = menuService.GetUserMenuIds(user.ID, user.UserType) + slf.TokenNext(ctx, *user) + return + //} // 楠岃瘉鐮佹鏁�+1 - _ = constvar.BlackCache.Increment(key, 1) - ctx.Fail(ecode.CaptchaErr) + //_ = constvar.BlackCache.Increment(key, 1) + //ctx.Fail(ecode.CaptchaErr) } // TokenNext 鐧诲綍浠ュ悗绛惧彂jwt @@ -137,6 +135,7 @@ } // Register +// // @Tags User // @Summary 娉ㄥ唽璐﹀彿 // @Produce application/json @@ -204,6 +203,7 @@ } // ChangePassword +// // @Tags User // @Summary 鐢ㄦ埛淇敼瀵嗙爜 // @Produce application/json @@ -227,6 +227,7 @@ } // GetUserList +// // @Tags User // @Summary 鍒嗛〉鑾峰彇鐢ㄦ埛鍒楄〃(涓嶄紶鍒嗛〉鍙傛暟锛岃幏鍙栧叏閮�) // @Produce application/json @@ -253,6 +254,7 @@ } // DeleteUser +// // @Tags User // @Summary 鍒犻櫎鐢ㄦ埛 // @Produce application/json @@ -287,6 +289,7 @@ } // SetUserInfo +// // @Tags User // @Summary 璁剧疆鐢ㄦ埛淇℃伅 // @Produce application/json @@ -317,6 +320,7 @@ } // SetSelfInfo +// // @Tags User // @Summary 璁剧疆鐢ㄦ埛淇℃伅 // @Produce application/json @@ -348,6 +352,7 @@ } // GetUserInfo +// // @Tags User // @Summary 鑾峰彇鑷韩淇℃伅 // @Produce application/json @@ -372,6 +377,7 @@ } // ResetPassword +// // @Tags User // @Summary 閲嶇疆鐢ㄦ埛瀵嗙爜 // @Produce application/json diff --git a/constvar/const.go b/constvar/const.go index 7cdfaa5..c5420da 100644 --- a/constvar/const.go +++ b/constvar/const.go @@ -52,3 +52,9 @@ CurrencyTypeEUR // 娆у厓 CurrencyTypeGBP // 鑻遍晳 ) + +type MenuType string + +const ( + MenuTypeClient MenuType = "client" +) diff --git a/docs/docs.go b/docs/docs.go index 9ead6a7..63dbcf3 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -16,6 +16,44 @@ "host": "{{.Host}}", "basePath": "{{.BasePath}}", "paths": { + "/api/authority/add": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "鍒涘缓瑙掕壊", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddAuthority" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, "/api/base/captcha": { "post": { "produces": [ @@ -1920,6 +1958,37 @@ "description": "OK", "schema": { "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/menu/getMenu": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Menu" + ], + "summary": "鑾峰彇鑿滃崟鏍�", + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.MenuTreeResponse" + } + } + } + ] } } } @@ -4688,6 +4757,37 @@ } } } + }, + "/authority/setDataAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "璁剧疆瑙掕壊璧勬簮鏉冮檺", + "parameters": [ + { + "description": "璁剧疆瑙掕壊璧勬簮鏉冮檺", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddAuthority" + } + } + ], + "responses": {} + } } }, "definitions": { @@ -5258,6 +5358,33 @@ "type": "string" }, "start_time": { + "type": "string" + } + } + }, + "model.Menu": { + "type": "object", + "properties": { + "children": { + "type": "array", + "items": { + "$ref": "#/definitions/model.Menu" + } + }, + "id": { + "description": "涓婚敭ID", + "type": "integer" + }, + "name": { + "type": "string" + }, + "parentId": { + "type": "integer" + }, + "path": { + "type": "string" + }, + "title": { "type": "string" } } @@ -5967,6 +6094,14 @@ "$ref": "#/definitions/constvar.UserType" }, "username": { + "type": "string" + } + } + }, + "request.AddAuthority": { + "type": "object", + "properties": { + "authorityName": { "type": "string" } } @@ -8675,6 +8810,17 @@ } } }, + "response.MenuTreeResponse": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/model.Menu" + } + } + } + }, "response.PageResult": { "type": "object", "properties": { diff --git a/docs/swagger.json b/docs/swagger.json index 7ced27c..aa5e2c0 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -4,6 +4,44 @@ "contact": {} }, "paths": { + "/api/authority/add": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "鍒涘缓瑙掕壊", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddAuthority" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, "/api/base/captcha": { "post": { "produces": [ @@ -1908,6 +1946,37 @@ "description": "OK", "schema": { "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/menu/getMenu": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Menu" + ], + "summary": "鑾峰彇鑿滃崟鏍�", + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.MenuTreeResponse" + } + } + } + ] } } } @@ -4676,6 +4745,37 @@ } } } + }, + "/authority/setDataAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "璁剧疆瑙掕壊璧勬簮鏉冮檺", + "parameters": [ + { + "description": "璁剧疆瑙掕壊璧勬簮鏉冮檺", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddAuthority" + } + } + ], + "responses": {} + } } }, "definitions": { @@ -5246,6 +5346,33 @@ "type": "string" }, "start_time": { + "type": "string" + } + } + }, + "model.Menu": { + "type": "object", + "properties": { + "children": { + "type": "array", + "items": { + "$ref": "#/definitions/model.Menu" + } + }, + "id": { + "description": "涓婚敭ID", + "type": "integer" + }, + "name": { + "type": "string" + }, + "parentId": { + "type": "integer" + }, + "path": { + "type": "string" + }, + "title": { "type": "string" } } @@ -5955,6 +6082,14 @@ "$ref": "#/definitions/constvar.UserType" }, "username": { + "type": "string" + } + } + }, + "request.AddAuthority": { + "type": "object", + "properties": { + "authorityName": { "type": "string" } } @@ -8663,6 +8798,17 @@ } } }, + "response.MenuTreeResponse": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/model.Menu" + } + } + } + }, "response.PageResult": { "type": "object", "properties": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 1a9724c..5a70e9f 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -384,6 +384,24 @@ start_time: type: string type: object + model.Menu: + properties: + children: + items: + $ref: '#/definitions/model.Menu' + type: array + id: + description: 涓婚敭ID + type: integer + name: + type: string + parentId: + type: integer + path: + type: string + title: + type: string + type: object model.Plan: properties: clientId: @@ -849,6 +867,11 @@ userType: $ref: '#/definitions/constvar.UserType' username: + type: string + type: object + request.AddAuthority: + properties: + authorityName: type: string type: object request.AddCity: @@ -2673,6 +2696,13 @@ $ref: '#/definitions/model.MasterOrder' type: array type: object + response.MenuTreeResponse: + properties: + list: + items: + $ref: '#/definitions/model.Menu' + type: array + type: object response.PageResult: properties: list: {} @@ -2810,6 +2840,29 @@ info: contact: {} paths: + /api/authority/add: + post: + consumes: + - application/json + parameters: + - description: 鏌ヨ鍙傛暟 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.AddAuthority' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/contextx.Response' + security: + - ApiKeyAuth: [] + summary: 鍒涘缓瑙掕壊 + tags: + - Authority /api/base/captcha: post: produces: @@ -3978,6 +4031,23 @@ summary: 鏇存柊涓昏鍗� tags: - MasterOrder + /api/menu/getMenu: + get: + produces: + - application/json + responses: + "200": + description: OK + schema: + allOf: + - $ref: '#/definitions/contextx.Response' + - properties: + data: + $ref: '#/definitions/response.MenuTreeResponse' + type: object + summary: 鑾峰彇鑿滃崟鏍� + tags: + - Menu /api/orderManage/add: post: parameters: @@ -5684,4 +5754,23 @@ summary: 璁剧疆鐢ㄦ埛淇℃伅 tags: - User + /authority/setDataAuthority: + post: + consumes: + - application/json + parameters: + - description: 璁剧疆瑙掕壊璧勬簮鏉冮檺 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.AddAuthority' + produces: + - application/json + responses: {} + security: + - ApiKeyAuth: [] + summary: 璁剧疆瑙掕壊璧勬簮鏉冮檺 + tags: + - Authority swagger: "2.0" diff --git a/go.mod b/go.mod index 97c17fa..0abb619 100644 --- a/go.mod +++ b/go.mod @@ -3,9 +3,13 @@ go 1.20 require ( + github.com/casbin/casbin/v2 v2.68.0 + github.com/casbin/gorm-adapter/v3 v3.7.3 + github.com/flipped-aurora/gin-vue-admin/server v0.0.0-20230711142447-66d119bef3a6 github.com/gin-contrib/cors v1.4.0 github.com/gin-gonic/gin v1.9.1 github.com/go-redis/redis/v8 v8.11.5 + github.com/go-sql-driver/mysql v1.7.1 github.com/gofrs/uuid v4.4.0+incompatible github.com/golang-jwt/jwt/v4 v4.5.0 github.com/gorilla/websocket v1.5.0 @@ -30,6 +34,7 @@ ) require ( + github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible // indirect github.com/KyleBanks/depth v1.2.1 // indirect github.com/bytedance/sonic v1.9.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect @@ -38,57 +43,81 @@ github.com/coreos/go-systemd/v22 v22.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect + github.com/dustin/go-humanize v1.0.1 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/gabriel-vasile/mimetype v1.4.2 // indirect github.com/gin-contrib/sse v0.1.0 // indirect + github.com/glebarez/go-sqlite v1.21.1 // indirect + github.com/glebarez/sqlite v1.8.0 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect - github.com/go-openapi/jsonreference v0.20.1 // indirect - github.com/go-openapi/spec v0.20.4 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/spec v0.20.9 // indirect github.com/go-openapi/swag v0.22.3 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.14.0 // indirect - github.com/go-sql-driver/mysql v1.7.0 // indirect github.com/goccy/go-json v0.10.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect + github.com/golang-sql/sqlexp v0.1.0 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/protobuf v1.5.3 // indirect + github.com/google/uuid v1.3.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + github.com/jackc/pgx/v5 v5.3.1 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/leodido/go-urn v1.2.4 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-isatty v0.0.19 // indirect + github.com/microsoft/go-mssqldb v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/onsi/gomega v1.27.4 // indirect github.com/pelletier/go-toml/v2 v2.0.8 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rogpeppe/go-internal v1.10.0 // indirect + github.com/shirou/gopsutil/v3 v3.22.5 // indirect github.com/spf13/afero v1.9.5 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.4.2 // indirect + github.com/tklauser/go-sysconf v0.3.10 // indirect + github.com/tklauser/numcpus v0.4.0 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.11 // indirect + github.com/yusufpapurcu/wmi v1.2.2 // indirect go.etcd.io/etcd/api/v3 v3.5.9 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.8.0 // indirect golang.org/x/arch v0.3.0 // indirect - golang.org/x/image v0.0.0-20190802002840-cff245a6509b // indirect + golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb // indirect golang.org/x/net v0.10.0 // indirect golang.org/x/sys v0.9.0 // indirect golang.org/x/text v0.10.0 // indirect - golang.org/x/tools v0.7.0 // indirect + golang.org/x/tools v0.9.1 // indirect google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect google.golang.org/grpc v1.55.0 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + gorm.io/driver/postgres v1.5.2 // indirect + gorm.io/driver/sqlserver v1.5.1 // indirect + gorm.io/plugin/dbresolver v1.4.1 // indirect + modernc.org/libc v1.24.1 // indirect + modernc.org/mathutil v1.5.0 // indirect + modernc.org/memory v1.6.0 // indirect + modernc.org/sqlite v1.23.0 // indirect ) diff --git a/go.sum b/go.sum index 20b260c..78b302a 100644 --- a/go.sum +++ b/go.sum @@ -36,17 +36,30 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= +github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= +github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= +github.com/casbin/casbin/v2 v2.37.4/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= +github.com/casbin/casbin/v2 v2.68.0 h1:7L4kwNJJw/pzdSEhl4SkeHz+1JzYn8guO+Q422sxzLM= +github.com/casbin/casbin/v2 v2.68.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= +github.com/casbin/gorm-adapter/v3 v3.7.3 h1:tp3EL3vS31dF+GX0n3QwUytQlrFOPXtOKKZ7SZtLOA8= +github.com/casbin/gorm-adapter/v3 v3.7.3/go.mod h1:7mwHmC2phiw6N4gDWlzi+c4DUX7zaVmQC/hINsRgBDg= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -60,22 +73,34 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denisenkom/go-mssqldb v0.12.0/go.mod h1:iiK0YP1ZeepvmBQk/QpLEhhTNJgfzrpArPY/aFvc9yU= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/flipped-aurora/gin-vue-admin/server v0.0.0-20230711142447-66d119bef3a6 h1:XveeHLMjytjP3KnJLilyl3mAj1MA8rnhT7ZjHyvui9A= +github.com/flipped-aurora/gin-vue-admin/server v0.0.0-20230711142447-66d119bef3a6/go.mod h1:gBmLLECfwvX2SlVwtzeFuDF/2IUb/tr99lCsXxyuyBs= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= @@ -89,18 +114,28 @@ github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= +github.com/glebarez/go-sqlite v1.16.0/go.mod h1:i8/JtqoqzBAFkrUTxbQFkQ05odCOds3j7NlDaXjqiPY= +github.com/glebarez/go-sqlite v1.21.1 h1:7MZyUPh2XTrHS7xNEHQbrhfMZuPSzhkm2A1qgg0y5NY= +github.com/glebarez/go-sqlite v1.21.1/go.mod h1:ISs8MF6yk5cL4n/43rSOmVMGJJjHYr7L2MbZZ5Q4E2E= +github.com/glebarez/sqlite v1.4.3/go.mod h1:FcJlwP9scnxlQ5zxyl0+bn/qFjYcqG4eRvKYhs39QAQ= +github.com/glebarez/sqlite v1.8.0 h1:02X12E2I/4C1n+v90yTqrjRa8yuo7c3KeHI3FRznCvc= +github.com/glebarez/sqlite v1.8.0/go.mod h1:bpET16h1za2KOOMb8+jCp6UBP/iahDpfPQqSaYLTLx8= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= -github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= -github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M= -github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= +github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/spec v0.20.9 h1:xnlYNQAwKd2VQRRfwTEI0DcK+2cbuvI/0c7jx3gA8/8= +github.com/go-openapi/spec v0.20.9/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= @@ -118,18 +153,30 @@ github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= -github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA= github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188/go.mod h1:vXjM/+wXQnTPR4KqTKDgJukSZ6amVRtWMPEjE6sQoK8= +github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= +github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -142,6 +189,7 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -170,8 +218,11 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= @@ -187,21 +238,78 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= +github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= +github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= +github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= +github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= +github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= +github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.11.0/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= +github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= +github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= +github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.2.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= +github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= +github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= +github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= +github.com/jackc/pgtype v1.10.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= +github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= +github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= +github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= +github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= +github.com/jackc/pgx/v4 v4.15.0/go.mod h1:D/zyOyXiaM1TmVWnOM18p0xdDtdakRBa0RsVGI3U3bw= +github.com/jackc/pgx/v5 v5.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU= +github.com/jackc/pgx/v5 v5.3.1/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= +github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.2.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= +github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= +github.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo= +github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= +github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs= +github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= 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= +github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= @@ -211,23 +319,35 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8= +github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -235,9 +355,17 @@ github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/microsoft/go-mssqldb v1.1.0 h1:jsV+tpvcPTbNNKW0o3kiCD69kOHICsfjZ2VcVu2lKYc= +github.com/microsoft/go-mssqldb v1.1.0/go.mod h1:LzkFdl4z2Ck+Hi+ycGOTbL56VEfgoyA2DvYejrNGbRk= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -245,8 +373,10 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= github.com/mojocn/base64Captcha v1.3.5 h1:Qeilr7Ta6eDtG4S+tQuZ5+hO+QHbiGAJdi4PfoagaA0= github.com/mojocn/base64Captcha v1.3.5/go.mod h1:/tTTXn4WTpX9CfrmipqRytCpJ27Uw3G6I7NcP2WwcmY= +github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= @@ -255,6 +385,8 @@ github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= +github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -262,7 +394,12 @@ github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= 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/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -270,6 +407,16 @@ github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= +github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/shirou/gopsutil/v3 v3.22.5 h1:atX36I/IXgFiB81687vSiBI5zrMsxcIBkP9cQMJQoJA= +github.com/shirou/gopsutil/v3 v3.22.5/go.mod h1:so9G9VzeHt/hsd0YwqprnjHnfARAUktauykSbr+y2gA= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/songzhibin97/gkit v1.2.11 h1:O8+l6eLMrZ2yNbT6Vohc6ggWnH5zt4P8/3ZEkf8jUL4= github.com/songzhibin97/gkit v1.2.11/go.mod h1:axjYsiJWnn/kf/uGiUr9JPHRlt2CQrqfq/fPZ3xIY+M= github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= @@ -283,6 +430,8 @@ github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -306,6 +455,10 @@ github.com/swaggo/gin-swagger v1.6.0/go.mod h1:BG00cCEy294xtVpyIAHG6+e2Qzj/xKlRdOqDkvq0uzo= github.com/swaggo/swag v1.16.1 h1:fTNRhKstPKxcnoKsytm4sahr8FaYzUcT7i1/3nd/fBg= github.com/swaggo/swag v1.16.1/go.mod h1:9/LMvHycG3NFHfR6LwvikHv5iFvmPADQ359cKikGxto= +github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw= +github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk= +github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o= +github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= @@ -318,6 +471,9 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= +github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/etcd/api/v3 v3.5.9 h1:4wSsluwyTbGGmyjJktOf3wFQoTBIURXHnq9n/G/JQHs= go.etcd.io/etcd/api/v3 v3.5.9/go.mod h1:uyAal843mC8uUVSLWz6eHa/d971iDGnCRpmKd2Z+X8k= go.etcd.io/etcd/client/pkg/v3 v3.5.9 h1:oidDC4+YEuSIQbsR94rY9gur91UPL6DnxDCIYd2IGsE= @@ -330,15 +486,26 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= @@ -346,14 +513,23 @@ golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k= golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/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/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -368,8 +544,9 @@ golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190501045829-6d32002ffd75/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb h1:fqpd0EBDzlHRCjiphRR5Zo/RSWWQlWv34418dnEixWk= +golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -393,7 +570,8 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -406,6 +584,7 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -426,10 +605,12 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= +golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -453,21 +634,30 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -483,29 +673,40 @@ golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210902050250-f475640dd07b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220405052023-b1e9470b6e64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -515,6 +716,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -527,14 +730,18 @@ golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -542,6 +749,7 @@ golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -563,6 +771,7 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -571,8 +780,11 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -680,11 +892,15 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= @@ -694,11 +910,29 @@ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/mysql v1.0.3/go.mod h1:twGxftLBlFgNVNakL7F+P/x9oYqoymG3YYT8cAfI9oI= +gorm.io/driver/mysql v1.3.3/go.mod h1:ChK6AHbHgDCFZyJp0F+BmVGb06PSIoh9uVYKAlRbb2U= +gorm.io/driver/mysql v1.4.3/go.mod h1:sSIebwZAVPiT+27jK9HIwvsqOGKx3YMPmrA3mBJR10c= gorm.io/driver/mysql v1.5.1 h1:WUEH5VF9obL/lTtzjmML/5e6VfFR/788coz2uaVCAZw= gorm.io/driver/mysql v1.5.1/go.mod h1:Jo3Xu7mMhCyj8dlrb3WoCaRd1FhsVh+yMXb1jUInf5o= +gorm.io/driver/postgres v1.3.4/go.mod h1:y0vEuInFKJtijuSGu9e5bs5hzzSzPK+LancpKpvbRBw= +gorm.io/driver/postgres v1.5.2 h1:ytTDxxEv+MplXOfFe3Lzm7SjG09fcdb3Z/c056DTBx0= +gorm.io/driver/postgres v1.5.2/go.mod h1:fmpX0m2I1PKuR7mKZiEluwrP3hbs+ps7JIGMUBpCgl8= +gorm.io/driver/sqlserver v1.3.2/go.mod h1:w25Vrx2BG+CJNUu/xKbFhaKlGxT/nzRkhWCCoptX8tQ= +gorm.io/driver/sqlserver v1.5.1 h1:wpyW/pR26U94uaujltiFGXY7fd2Jw5hC9PB1ZF/Y5s4= +gorm.io/driver/sqlserver v1.5.1/go.mod h1:AYHzzte2msKTmYBYsSIq8ZUsznLJwBdkB2wpI+kt0nM= +gorm.io/gorm v1.20.4/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= +gorm.io/gorm v1.20.11/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= +gorm.io/gorm v1.23.1/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= +gorm.io/gorm v1.23.4/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= gorm.io/gorm v1.23.6/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= +gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= +gorm.io/gorm v1.24.3/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA= gorm.io/gorm v1.25.1 h1:nsSALe5Pr+cM3V1qwwQ7rOkw+6UeLrX5O4v3llhHa64= gorm.io/gorm v1.25.1/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= +gorm.io/plugin/dbresolver v1.1.0/go.mod h1:tpImigFAEejCALOttyhWqsy4vfa2Uh/vAUVnL5IRF7Y= +gorm.io/plugin/dbresolver v1.4.1 h1:Ug4LcoPhrvqq71UhxtF346f+skTYoCa/nEsdjvHwEzk= +gorm.io/plugin/dbresolver v1.4.1/go.mod h1:CTbCtMWhsjXSiJqiW2R8POvJ2cq18RVOl4WGyT5nhNc= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -706,6 +940,148 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.33.6/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.33.9/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.33.11/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.34.0/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.35.0/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.35.4/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.35.5/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.35.7/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.35.8/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.35.10/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.35.15/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.35.16/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.35.17/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.35.18/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.35.20/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.35.22/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= +modernc.org/cc/v3 v3.35.24/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.35.25/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.35.26/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/ccgo/v3 v3.9.5/go.mod h1:umuo2EP2oDSBnD3ckjaVUXMrmeAw8C8OSICVa0iFf60= +modernc.org/ccgo/v3 v3.10.0/go.mod h1:c0yBmkRFi7uW4J7fwx/JiijwOjeAeR2NoSaRVFPmjMw= +modernc.org/ccgo/v3 v3.11.0/go.mod h1:dGNposbDp9TOZ/1KBxghxtUp/bzErD0/0QW4hhSaBMI= +modernc.org/ccgo/v3 v3.11.1/go.mod h1:lWHxfsn13L3f7hgGsGlU28D9eUOf6y3ZYHKoPaKU0ag= +modernc.org/ccgo/v3 v3.11.3/go.mod h1:0oHunRBMBiXOKdaglfMlRPBALQqsfrCKXgw9okQ3GEw= +modernc.org/ccgo/v3 v3.12.4/go.mod h1:Bk+m6m2tsooJchP/Yk5ji56cClmN6R1cqc9o/YtbgBQ= +modernc.org/ccgo/v3 v3.12.6/go.mod h1:0Ji3ruvpFPpz+yu+1m0wk68pdr/LENABhTrDkMDWH6c= +modernc.org/ccgo/v3 v3.12.8/go.mod h1:Hq9keM4ZfjCDuDXxaHptpv9N24JhgBZmUG5q60iLgUo= +modernc.org/ccgo/v3 v3.12.11/go.mod h1:0jVcmyDwDKDGWbcrzQ+xwJjbhZruHtouiBEvDfoIsdg= +modernc.org/ccgo/v3 v3.12.14/go.mod h1:GhTu1k0YCpJSuWwtRAEHAol5W7g1/RRfS4/9hc9vF5I= +modernc.org/ccgo/v3 v3.12.18/go.mod h1:jvg/xVdWWmZACSgOiAhpWpwHWylbJaSzayCqNOJKIhs= +modernc.org/ccgo/v3 v3.12.20/go.mod h1:aKEdssiu7gVgSy/jjMastnv/q6wWGRbszbheXgWRHc8= +modernc.org/ccgo/v3 v3.12.21/go.mod h1:ydgg2tEprnyMn159ZO/N4pLBqpL7NOkJ88GT5zNU2dE= +modernc.org/ccgo/v3 v3.12.22/go.mod h1:nyDVFMmMWhMsgQw+5JH6B6o4MnZ+UQNw1pp52XYFPRk= +modernc.org/ccgo/v3 v3.12.25/go.mod h1:UaLyWI26TwyIT4+ZFNjkyTbsPsY3plAEB6E7L/vZV3w= +modernc.org/ccgo/v3 v3.12.29/go.mod h1:FXVjG7YLf9FetsS2OOYcwNhcdOLGt8S9bQ48+OP75cE= +modernc.org/ccgo/v3 v3.12.36/go.mod h1:uP3/Fiezp/Ga8onfvMLpREq+KUjUmYMxXPO8tETHtA8= +modernc.org/ccgo/v3 v3.12.38/go.mod h1:93O0G7baRST1vNj4wnZ49b1kLxt0xCW5Hsa2qRaZPqc= +modernc.org/ccgo/v3 v3.12.43/go.mod h1:k+DqGXd3o7W+inNujK15S5ZYuPoWYLpF5PYougCmthU= +modernc.org/ccgo/v3 v3.12.46/go.mod h1:UZe6EvMSqOxaJ4sznY7b23/k13R8XNlyWsO5bAmSgOE= +modernc.org/ccgo/v3 v3.12.47/go.mod h1:m8d6p0zNps187fhBwzY/ii6gxfjob1VxWb919Nk1HUk= +modernc.org/ccgo/v3 v3.12.50/go.mod h1:bu9YIwtg+HXQxBhsRDE+cJjQRuINuT9PUK4orOco/JI= +modernc.org/ccgo/v3 v3.12.51/go.mod h1:gaIIlx4YpmGO2bLye04/yeblmvWEmE4BBBls4aJXFiE= +modernc.org/ccgo/v3 v3.12.53/go.mod h1:8xWGGTFkdFEWBEsUmi+DBjwu/WLy3SSOrqEmKUjMeEg= +modernc.org/ccgo/v3 v3.12.54/go.mod h1:yANKFTm9llTFVX1FqNKHE0aMcQb1fuPJx6p8AcUx+74= +modernc.org/ccgo/v3 v3.12.55/go.mod h1:rsXiIyJi9psOwiBkplOaHye5L4MOOaCjHg1Fxkj7IeU= +modernc.org/ccgo/v3 v3.12.56/go.mod h1:ljeFks3faDseCkr60JMpeDb2GSO3TKAmrzm7q9YOcMU= +modernc.org/ccgo/v3 v3.12.57/go.mod h1:hNSF4DNVgBl8wYHpMvPqQWDQx8luqxDnNGCMM4NFNMc= +modernc.org/ccgo/v3 v3.12.60/go.mod h1:k/Nn0zdO1xHVWjPYVshDeWKqbRWIfif5dtsIOCUVMqM= +modernc.org/ccgo/v3 v3.12.66/go.mod h1:jUuxlCFZTUZLMV08s7B1ekHX5+LIAurKTTaugUr/EhQ= +modernc.org/ccgo/v3 v3.12.67/go.mod h1:Bll3KwKvGROizP2Xj17GEGOTrlvB1XcVaBrC90ORO84= +modernc.org/ccgo/v3 v3.12.73/go.mod h1:hngkB+nUUqzOf3iqsM48Gf1FZhY599qzVg1iX+BT3cQ= +modernc.org/ccgo/v3 v3.12.81/go.mod h1:p2A1duHoBBg1mFtYvnhAnQyI6vL0uw5PGYLSIgF6rYY= +modernc.org/ccgo/v3 v3.12.84/go.mod h1:ApbflUfa5BKadjHynCficldU1ghjen84tuM5jRynB7w= +modernc.org/ccgo/v3 v3.12.86/go.mod h1:dN7S26DLTgVSni1PVA3KxxHTcykyDurf3OgUzNqTSrU= +modernc.org/ccgo/v3 v3.12.90/go.mod h1:obhSc3CdivCRpYZmrvO88TXlW0NvoSVvdh/ccRjJYko= +modernc.org/ccgo/v3 v3.12.92/go.mod h1:5yDdN7ti9KWPi5bRVWPl8UNhpEAtCjuEE7ayQnzzqHA= +modernc.org/ccgo/v3 v3.13.1/go.mod h1:aBYVOUfIlcSnrsRVU8VRS35y2DIfpgkmVkYZ0tpIXi4= +modernc.org/ccgo/v3 v3.15.9/go.mod h1:md59wBwDT2LznX/OTCPoVS6KIsdRgY8xqQwBV+hkTH0= +modernc.org/ccgo/v3 v3.15.10/go.mod h1:wQKxoFn0ynxMuCLfFD09c8XPUCc8obfchoVR9Cn0fI8= +modernc.org/ccgo/v3 v3.15.12/go.mod h1:VFePOWoCd8uDGRJpq/zfJ29D0EVzMSyID8LCMWYbX6I= +modernc.org/ccgo/v3 v3.15.14/go.mod h1:144Sz2iBCKogb9OKwsu7hQEub3EVgOlyI8wMUPGKUXQ= +modernc.org/ccgo/v3 v3.15.15/go.mod h1:z5qltXjU4PJl0pE5nhYQCvA9DhPHiWsl5GWl89+NSYE= +modernc.org/ccgo/v3 v3.15.16/go.mod h1:XbKRMeMWMdq712Tr5ECgATYMrzJ+g9zAZEj2ktzBe24= +modernc.org/ccgo/v3 v3.15.17/go.mod h1:bofnFkpRFf5gLY+mBZIyTW6FEcp26xi2lgOFk2Rlvs0= +modernc.org/ccgo/v3 v3.15.18/go.mod h1:/2lv3WjHyanEr2sAPdGKRC38n6f0werut9BRXUjjX+A= +modernc.org/ccgo/v3 v3.15.19/go.mod h1:TDJj+DxR26pkDteH2E5WQDj/xlmtsX7JdzkJkaZhOVU= +modernc.org/ccgo/v3 v3.16.2/go.mod h1:w55kPTAqvRMAYS3Lwij6qhqIuBEYS3Z8QtDkjD8cnik= +modernc.org/ccorpus v1.11.1/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/libc v1.9.8/go.mod h1:U1eq8YWr/Kc1RWCMFUWEdkTg8OTcfLw2kY8EDwl039w= +modernc.org/libc v1.9.11/go.mod h1:NyF3tsA5ArIjJ83XB0JlqhjTabTCHm9aX4XMPHyQn0Q= +modernc.org/libc v1.11.0/go.mod h1:2lOfPmj7cz+g1MrPNmX65QCzVxgNq2C5o0jdLY2gAYg= +modernc.org/libc v1.11.2/go.mod h1:ioIyrl3ETkugDO3SGZ+6EOKvlP3zSOycUETe4XM4n8M= +modernc.org/libc v1.11.5/go.mod h1:k3HDCP95A6U111Q5TmG3nAyUcp3kR5YFZTeDS9v8vSU= +modernc.org/libc v1.11.6/go.mod h1:ddqmzR6p5i4jIGK1d/EiSw97LBcE3dK24QEwCFvgNgE= +modernc.org/libc v1.11.11/go.mod h1:lXEp9QOOk4qAYOtL3BmMve99S5Owz7Qyowzvg6LiZso= +modernc.org/libc v1.11.13/go.mod h1:ZYawJWlXIzXy2Pzghaf7YfM8OKacP3eZQI81PDLFdY8= +modernc.org/libc v1.11.16/go.mod h1:+DJquzYi+DMRUtWI1YNxrlQO6TcA5+dRRiq8HWBWRC8= +modernc.org/libc v1.11.19/go.mod h1:e0dgEame6mkydy19KKaVPBeEnyJB4LGNb0bBH1EtQ3I= +modernc.org/libc v1.11.24/go.mod h1:FOSzE0UwookyT1TtCJrRkvsOrX2k38HoInhw+cSCUGk= +modernc.org/libc v1.11.26/go.mod h1:SFjnYi9OSd2W7f4ct622o/PAYqk7KHv6GS8NZULIjKY= +modernc.org/libc v1.11.27/go.mod h1:zmWm6kcFXt/jpzeCgfvUNswM0qke8qVwxqZrnddlDiE= +modernc.org/libc v1.11.28/go.mod h1:Ii4V0fTFcbq3qrv3CNn+OGHAvzqMBvC7dBNyC4vHZlg= +modernc.org/libc v1.11.31/go.mod h1:FpBncUkEAtopRNJj8aRo29qUiyx5AvAlAxzlx9GNaVM= +modernc.org/libc v1.11.34/go.mod h1:+Tzc4hnb1iaX/SKAutJmfzES6awxfU1BPvrrJO0pYLg= +modernc.org/libc v1.11.37/go.mod h1:dCQebOwoO1046yTrfUE5nX1f3YpGZQKNcITUYWlrAWo= +modernc.org/libc v1.11.39/go.mod h1:mV8lJMo2S5A31uD0k1cMu7vrJbSA3J3waQJxpV4iqx8= +modernc.org/libc v1.11.42/go.mod h1:yzrLDU+sSjLE+D4bIhS7q1L5UwXDOw99PLSX0BlZvSQ= +modernc.org/libc v1.11.44/go.mod h1:KFq33jsma7F5WXiYelU8quMJasCCTnHK0mkri4yPHgA= +modernc.org/libc v1.11.45/go.mod h1:Y192orvfVQQYFzCNsn+Xt0Hxt4DiO4USpLNXBlXg/tM= +modernc.org/libc v1.11.47/go.mod h1:tPkE4PzCTW27E6AIKIR5IwHAQKCAtudEIeAV1/SiyBg= +modernc.org/libc v1.11.49/go.mod h1:9JrJuK5WTtoTWIFQ7QjX2Mb/bagYdZdscI3xrvHbXjE= +modernc.org/libc v1.11.51/go.mod h1:R9I8u9TS+meaWLdbfQhq2kFknTW0O3aw3kEMqDDxMaM= +modernc.org/libc v1.11.53/go.mod h1:5ip5vWYPAoMulkQ5XlSJTy12Sz5U6blOQiYasilVPsU= +modernc.org/libc v1.11.54/go.mod h1:S/FVnskbzVUrjfBqlGFIPA5m7UwB3n9fojHhCNfSsnw= +modernc.org/libc v1.11.55/go.mod h1:j2A5YBRm6HjNkoSs/fzZrSxCuwWqcMYTDPLNx0URn3M= +modernc.org/libc v1.11.56/go.mod h1:pakHkg5JdMLt2OgRadpPOTnyRXm/uzu+Yyg/LSLdi18= +modernc.org/libc v1.11.58/go.mod h1:ns94Rxv0OWyoQrDqMFfWwka2BcaF6/61CqJRK9LP7S8= +modernc.org/libc v1.11.71/go.mod h1:DUOmMYe+IvKi9n6Mycyx3DbjfzSKrdr/0Vgt3j7P5gw= +modernc.org/libc v1.11.75/go.mod h1:dGRVugT6edz361wmD9gk6ax1AbDSe0x5vji0dGJiPT0= +modernc.org/libc v1.11.82/go.mod h1:NF+Ek1BOl2jeC7lw3a7Jj5PWyHPwWD4aq3wVKxqV1fI= +modernc.org/libc v1.11.86/go.mod h1:ePuYgoQLmvxdNT06RpGnaDKJmDNEkV7ZPKI2jnsvZoE= +modernc.org/libc v1.11.87/go.mod h1:Qvd5iXTeLhI5PS0XSyqMY99282y+3euapQFxM7jYnpY= +modernc.org/libc v1.11.88/go.mod h1:h3oIVe8dxmTcchcFuCcJ4nAWaoiwzKCdv82MM0oiIdQ= +modernc.org/libc v1.11.98/go.mod h1:ynK5sbjsU77AP+nn61+k+wxUGRx9rOFcIqWYYMaDZ4c= +modernc.org/libc v1.11.101/go.mod h1:wLLYgEiY2D17NbBOEp+mIJJJBGSiy7fLL4ZrGGZ+8jI= +modernc.org/libc v1.12.0/go.mod h1:2MH3DaF/gCU8i/UBiVE1VFRos4o523M7zipmwH8SIgQ= +modernc.org/libc v1.14.1/go.mod h1:npFeGWjmZTjFeWALQLrvklVmAxv4m80jnG3+xI8FdJk= +modernc.org/libc v1.14.2/go.mod h1:MX1GBLnRLNdvmK9azU9LCxZ5lMyhrbEMK8rG3X/Fe34= +modernc.org/libc v1.14.3/go.mod h1:GPIvQVOVPizzlqyRX3l756/3ppsAgg1QgPxjr5Q4agQ= +modernc.org/libc v1.14.6/go.mod h1:2PJHINagVxO4QW/5OQdRrvMYo+bm5ClpUFfyXCYl9ak= +modernc.org/libc v1.14.7/go.mod h1:f8xfWXW8LW41qb4X5+huVQo5dcfPlq7Cbny2TDheMv0= +modernc.org/libc v1.14.8/go.mod h1:9+JCLb1MWSY23smyOpIPbd5ED+rSS/ieiDWUpdyO3mo= +modernc.org/libc v1.14.10/go.mod h1:y1MtIWhwpJFpLYm6grAThtuXJKEsY6xkdZmXbRngIdo= +modernc.org/libc v1.14.11/go.mod h1:l5/Mz/GrZwOqzwRHA3abgSCnSeJzzTl+Ify0bAwKbAw= +modernc.org/libc v1.14.12/go.mod h1:fJdoe23MHu2ruPQkFPPqCpToDi5cckzsbmkI6Ez0LqQ= +modernc.org/libc v1.15.0/go.mod h1:H1OKCu+NYa9+uQG8WsP7DndMBP61I4PWH8ivWhbdoWQ= +modernc.org/libc v1.15.1/go.mod h1:CoZ2riUhSNTAP4bADwpxkLCyJK9SbbMvle0YRzkRT/I= +modernc.org/libc v1.24.1 h1:uvJSeCKL/AgzBo2yYIPPTy82v21KgGnizcGYfBHaNuM= +modernc.org/libc v1.24.1/go.mod h1:FmfO1RLrU3MHJfyi9eYYmZBfi/R+tqZ6+hQ3yQQUkak= +modernc.org/mathutil v1.1.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.4.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.0.4/go.mod h1:nV2OApxradM3/OVbs2/0OsP6nPfakXpi50C7dcoHXlc= +modernc.org/memory v1.0.5/go.mod h1:B7OYswTRnfGg+4tDH1t1OeUNnsy2viGTdME4tzd+IjM= +modernc.org/memory v1.0.6/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.0.7/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.6.0 h1:i6mzavxrE9a30whzMfwf7XWVODx2r5OYXvU46cirX7o= +modernc.org/memory v1.6.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.16.0/go.mod h1:Jwe13ItpESZ+78K5WS6+AjXsUg+JvirsjN3iIDO4C8k= +modernc.org/sqlite v1.23.0 h1:MWTFBI5H1WLnXpNBh/BTruBVqzzoh28DA0iOnlkkRaM= +modernc.org/sqlite v1.23.0/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk= +modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= +modernc.org/tcl v1.11.2/go.mod h1:BRzgpajcGdS2qTxniOx9c/dcxjlbA7p12eJNmiriQYo= +modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.3.2/go.mod h1:PEU2oK2OEA1CfzDTd+8E908qEXhC9s0MfyKp5LZsd+k= moul.io/zapgorm2 v1.3.0 h1:+CzUTMIcnafd0d/BvBce8T4uPn6DQnpIrz64cyixlkk= moul.io/zapgorm2 v1.3.0/go.mod h1:nPVy6U9goFKHR4s+zfSo1xVFaoU7Qgd5DoCdOfzoCqs= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/logs/aps-admin.err.log b/logs/aps-admin.err.log deleted file mode 100644 index 8baf3e6..0000000 --- a/logs/aps-admin.err.log +++ /dev/null @@ -1,363 +0,0 @@ -[2023-05-30 18:00:10] [error] [main.main:46] listen tcp :8001: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted. -[2023-05-30 18:03:20] [error] [main.main:46] 1111listen tcp :8001: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted. -[2023-05-30 18:15:02] [error] [aps_admin/model.(*UserSearch).First:196] trace {"error": "record not found", "elapsed": 0.0005063, "rows": 0, "sql": "SELECT * FROM `user` WHERE username = '鐢ㄦ埛鍚�' ORDER BY `user`.`id` LIMIT 1"} -[2023-05-30 18:31:12] [error] [aps_admin/model.(*DeviceSearch).First:50] trace {"error": "record not found", "elapsed": 0.0005965, "rows": 0, "sql": "SELECT * FROM `device` ORDER BY `device`.`id` LIMIT 1"} -[2023-05-30 18:31:12] [error] [aps_admin/model.(*DeviceSearch).Create:84] trace {"error": "Error 1364 (HY000): Field 'id' doesn't have a default value", "elapsed": 0.0010052, "rows": 0, "sql": "INSERT INTO `device` (`name`,`ip`,`account`,`password`) VALUES ('璁惧鍚嶇О','璁惧IP','root璐﹀彿','$2a$10$MszYytZoKVX6tP1.Rbq6TeY2zTXsIhOEu/U/Cf6CC4XMegsGbmqlS')"} -[2023-05-30 18:33:16] [error] [aps_admin/model.(*DeviceSearch).First:50] trace {"error": "record not found", "elapsed": 0.0020821, "rows": 0, "sql": "SELECT * FROM `device` ORDER BY `device`.`id` LIMIT 1"} -[2023-05-31 14:22:53] [error] [aps_admin/api/v1.(*DeviceApi).Add:36] device! err:&{0 189test 192.168.20.189 basic 123} -[2023-05-31 14:22:53] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 189test 192.168.20.189 basic 123} -[2023-05-31 14:27:39] [error] [aps_admin/api/v1.(*DeviceApi).Add:36] device! err:&{0 璁惧鍚嶇О 璁惧IP root璐﹀彿 root瀵嗙爜} -[2023-05-31 14:27:39] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 璁惧鍚嶇О 璁惧IP root璐﹀彿 root瀵嗙爜} -[2023-05-31 14:33:34] [error] [aps_admin/api/v1.(*DeviceApi).Add:36] device! err:&{0 189test 192.168.20.189 basic 123} -[2023-05-31 14:33:34] [error] [aps_admin/model.(*DeviceSearch).First:54] trace {"error": "record not found", "elapsed": 0.0005033, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '189test' ORDER BY `device`.`id` LIMIT 1"} -[2023-05-31 14:33:34] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 189test 192.168.20.189 basic 123} -[2023-05-31 17:22:08] [error] [aps_admin/model.(*DeviceSearch).First:54] trace {"error": "record not found", "elapsed": 0.0052562, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '璁惧鍚嶇О' ORDER BY `device`.`id` LIMIT 1"} -[2023-05-31 17:22:08] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 璁惧鍚嶇О 璁惧IP root璐﹀彿 root瀵嗙爜} -[2023-05-31 17:22:14] [error] [aps_admin/model.(*DeviceSearch).First:54] trace {"error": "record not found", "elapsed": 0.0010507, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '璁惧鍚嶇О' ORDER BY `device`.`id` LIMIT 1"} -[2023-05-31 17:22:14] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 璁惧鍚嶇О 璁惧IP root璐﹀彿 root瀵嗙爜} -[2023-05-31 17:23:29] [error] [aps_admin/model.(*DeviceSearch).First:54] trace {"error": "record not found", "elapsed": 0.0005704, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '璁惧鍚嶇О' ORDER BY `device`.`id` LIMIT 1"} -[2023-05-31 17:23:29] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 璁惧鍚嶇О 璁惧IP root璐﹀彿 root瀵嗙爜} -[2023-05-31 17:23:39] [error] [aps_admin/model.(*DeviceSearch).First:54] trace {"error": "record not found", "elapsed": 0.000556, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '璁惧鍚嶇О' ORDER BY `device`.`id` LIMIT 1"} -[2023-05-31 17:23:39] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 璁惧鍚嶇О 璁惧IP root璐﹀彿 root瀵嗙爜} -[2023-05-31 17:23:50] [error] [aps_admin/model.(*DeviceSearch).First:54] trace {"error": "record not found", "elapsed": 0.0005385, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '璁惧鍚嶇О' ORDER BY `device`.`id` LIMIT 1"} -[2023-05-31 17:23:50] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 璁惧鍚嶇О 璁惧IP root璐﹀彿 root11} -[2023-05-31 17:24:00] [error] [aps_admin/model.(*DeviceSearch).First:54] trace {"error": "record not found", "elapsed": 0.0010769, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '111' ORDER BY `device`.`id` LIMIT 1"} -[2023-05-31 17:24:00] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 111 璁惧IP root璐﹀彿 root11} -[2023-05-31 17:26:19] [error] [aps_admin/model.(*DeviceSearch).First:54] trace {"error": "record not found", "elapsed": 0.0041733, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '111' ORDER BY `device`.`id` LIMIT 1"} -[2023-05-31 17:26:19] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 111 璁惧IP root璐﹀彿 root11} -[2023-05-31 20:01:57] [error] [aps_admin/api/v1.(*ClusterApi).GetClusters:59] 鑾峰彇澶辫触! err:failed to get cluster list request: parse "192.168.20.189:8443/v3/clusters": first path segment in URL cannot contain colon -[2023-05-31 20:03:45] [error] [aps_admin/service.(*ClusterService).GetClusterList:37] 11111111 [ c-lbrzv local] -[2023-06-01 15:01:28] [error] [aps_admin/api/v1.(*ClusterApi).GetClusters:59] 鑾峰彇澶辫触! err:failed to get cluster list: unexpected status code 405 -[2023-06-01 15:03:40] [error] [aps_admin/api/v1.(*ClusterApi).GetClusters:59] 鑾峰彇澶辫触! err:failed to get cluster list: unexpected status code 404 -[2023-06-01 15:58:29] [error] [aps_admin/api/v1.(*ClusterApi).GetClusters:59] 鑾峰彇澶辫触! err:failed to get cluster list: unexpected status code 405 -[2023-06-01 17:11:34] [error] [aps_admin/api/v1.(*ClusterApi).Examine:81] port: 31835 -[2023-06-01 18:11:53] [error] [aps_admin/api/v1.(*ClusterApi).Examine:81] port: 30397 -[2023-06-01 18:12:25] [error] [aps_admin/api/v1.(*ClusterApi).GetClusters:59] 鑾峰彇澶辫触! err:failed to get cluster list: unexpected status code 404 -[2023-06-01 18:14:02] [error] [aps_admin/api/v1.(*ClusterApi).Examine:81] port: 31681 -[2023-06-01 18:26:21] [error] [aps_admin/api/v1.(*ClusterApi).Examine:81] port: 0 -[2023-06-01 18:30:40] [error] [aps_admin/api/v1.(*ClusterApi).Examine:81] port: 30246 -[2023-06-01 18:47:03] [error] [aps_admin/api/v1.(*BaseApi).Examine:359] port: 0 -[2023-06-01 19:51:41] [error] [aps_admin/api/v1.(*BaseApi).Examine:359] port: 30272 -[2023-06-01 19:53:22] [error] [aps_admin/api/v1.(*BaseApi).Examine:359] port: 0 -[2023-06-02 10:07:46] [error] [aps_admin/model.(*DeviceSearch).First:54] trace {"error": "record not found", "elapsed": 0.0050154, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '璁惧鍚嶇О' ORDER BY `device`.`id` LIMIT 1"} -[2023-06-02 10:07:46] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 璁惧鍚嶇О 璁惧IP root璐﹀彿 root瀵嗙爜} -[2023-06-02 11:02:58] [error] [aps_admin/model.(*DeviceSearch).First:54] trace {"error": "record not found", "elapsed": 0.0054478, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '璁惧鍚嶇О' ORDER BY `device`.`id` LIMIT 1"} -[2023-06-02 11:02:58] [error] [aps_admin/service.(*DeviceService).AddDevice:17] device! err:&{0 璁惧鍚嶇О 璁惧IP root璐﹀彿 root瀵嗙爜} -[2023-06-04 19:00:47] [error] [aps_admin/api/v1.(*BaseApi).Examine:359] port: 0 -[2023-06-04 19:00:47] [error] [aps_admin/api/v1.(*BaseApi).Examine:362] 瀹℃牳澶辫触! err:no ETCD pods found -[2023-06-04 19:44:29] [error] [aps_admin/api/v1.(*BaseApi).Examine:359] port: 32287 -[2023-06-05 10:21:35] [error] [aps_admin/model.(*DeviceSearch).First:54] trace {"error": "record not found", "elapsed": 0.0071569, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '璁惧鍚嶇О' ORDER BY `device`.`id` LIMIT 1"} -[2023-06-05 10:21:35] [error] [aps_admin/service.(*DeviceService).AddDevice:17] device! err:&{0 璁惧鍚嶇О 璁惧IP root璐﹀彿 root瀵嗙爜} -[2023-06-05 11:53:23] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 32622 -[2023-06-05 12:04:02] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 31192 -[2023-06-05 13:39:12] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 0 -[2023-06-05 13:39:12] [error] [aps_admin/api/v1.(*BaseApi).Examine:364] 瀹℃牳澶辫触! err:failed to create Deployment: deployments.apps "wpf" is forbidden: unable to create new content in namespace wpf because it is being terminated -[2023-06-05 13:39:47] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 30745 -[2023-06-05 14:27:03] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 31372 -[2023-06-05 14:30:53] [error] [aps_admin/model.(*DeviceSearch).First:54] trace {"error": "record not found", "elapsed": 0.0010616, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '2' ORDER BY `device`.`id` LIMIT 1"} -[2023-06-05 14:30:53] [error] [aps_admin/service.(*DeviceService).AddDevice:17] device! err:&{0 2 2 2 2} -[2023-06-05 14:49:56] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 31867 -[2023-06-05 15:22:27] [error] [aps_admin/model.(*DeviceSearch).First:54] trace {"error": "record not found", "elapsed": 0.0005096, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '璁惧鍚嶇О' ORDER BY `device`.`id` LIMIT 1"} -[2023-06-05 15:22:27] [error] [aps_admin/service.(*DeviceService).AddDevice:17] device! err:&{0 璁惧鍚嶇О 192.168.20.119 root璐﹀彿 $2a$10$SeKKQpa6BfBL49Q3GmFGIe1MWBPZGCFayUTiT2GAibKxCs4/Lxbr.} -[2023-06-05 16:32:07] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 31587 -[2023-06-05 16:46:24] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 32571 -[2023-06-05 17:25:46] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 0 -[2023-06-05 17:25:46] [error] [aps_admin/api/v1.(*BaseApi).Examine:364] 瀹℃牳澶辫触! err:no ports defined for Service wangpengfei -[2023-06-05 17:26:37] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 0 -[2023-06-05 17:26:37] [error] [aps_admin/api/v1.(*BaseApi).Examine:364] 瀹℃牳澶辫触! err:no ports defined for Service wangpengfei -[2023-06-05 17:32:36] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 0 -[2023-06-05 17:32:36] [error] [aps_admin/api/v1.(*BaseApi).Examine:364] 瀹℃牳澶辫触! err:no ports defined for Service wangpengfei -[2023-06-05 17:36:49] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 0 -[2023-06-05 17:36:49] [error] [aps_admin/api/v1.(*BaseApi).Examine:364] 瀹℃牳澶辫触! err:no ports defined for Service wangpengfei -[2023-06-05 17:41:42] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 0 -[2023-06-05 17:41:42] [error] [aps_admin/api/v1.(*BaseApi).Examine:364] 瀹℃牳澶辫触! err:no ports defined for Service wangpengfei -[2023-06-05 17:50:41] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 0 -[2023-06-05 17:50:41] [error] [aps_admin/api/v1.(*BaseApi).Examine:364] 瀹℃牳澶辫触! err:no ports defined for Service wangpengfei -[2023-06-05 18:05:57] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 32187 -[2023-06-05 18:14:13] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 31374 -[2023-06-05 18:27:36] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 0 -[2023-06-05 18:29:05] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 30343 -[2023-06-05 18:46:10] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 31900 -[2023-06-05 19:23:39] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 30128 -[2023-06-05 20:30:49] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 30404 -[2023-06-05 20:38:00] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 32274 -[2023-06-05 20:49:32] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 31106 -[2023-06-05 20:59:19] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 31546 -[2023-06-05 21:10:01] [error] [aps_admin/api/v1.(*BaseApi).Examine:361] port: 32594 -[2023-06-07 11:22:53] [error] [aps_admin/service.pass:119] etcd.NewServiceRegister err:context deadline exceeded -[2023-06-07 11:22:53] [error] [aps_admin/api/v1.(*BaseApi).Examine:382] port: 0 -[2023-06-07 11:22:53] [error] [aps_admin/api/v1.(*BaseApi).Examine:385] 瀹℃牳澶辫触! err:context deadline exceeded -[2023-06-07 15:51:42] [error] [aps_admin/api/v1.(*BaseApi).Examine:382] port: 0 -[2023-06-07 15:51:42] [error] [aps_admin/api/v1.(*BaseApi).Examine:385] 瀹℃牳澶辫触! err:failed to create Deployment: Deployment.apps "wpf1" is invalid: spec.template.spec.containers[0].image: Required value -[2023-06-07 15:57:18] [error] [aps_admin/api/v1.(*BaseApi).Examine:382] port: 30577 -[2023-06-07 18:25:41] [error] [aps_admin/api/v1.(*BaseApi).Examine:383] 123123123123123123123123: 192.168.20.118 -[2023-06-08 11:33:25] [error] [aps_admin/api/v1.(*ClusterApi).GetClusters:67] 鑾峰彇澶辫触! err:failed to get cluster list request: parse "192.168.20.119:8443/v3/clusters": first path segment in URL cannot contain colon -[2023-06-08 11:33:27] [error] [aps_admin/api/v1.(*ClusterApi).GetClusters:67] 鑾峰彇澶辫触! err:failed to get cluster list request: parse "192.168.20.119:8443/v3/clusters": first path segment in URL cannot contain colon -[2023-06-08 11:35:12] [error] [aps_admin/api/v1.(*ClusterApi).GetClusters:67] 鑾峰彇澶辫触! err:failed to get cluster list request: parse "192.168.20.119:8443/v3/clusters": first path segment in URL cannot contain colon -[2023-06-08 11:41:27] [error] [aps_admin/api/v1.(*ClusterApi).GetClusters:67] 鑾峰彇澶辫触! err:failed to get cluster list request: parse "192.168.20.119:8443/v3/clusters": first path segment in URL cannot contain colon -[2023-06-08 14:38:44] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 30587 -[2023-06-08 14:53:32] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-08 14:54:08] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-08 16:03:57] [warn] [gorm.io/driver/mysql.Migrator.AlterColumn.func1:58] trace {"elapsed": 0.2194591, "rows": 14, "sql": "ALTER TABLE `device` MODIFY COLUMN `port` varchar(255) COMMENT '绔彛鍙�'"} -[2023-06-08 16:04:59] [error] [aps_admin/model.(*DeviceSearch).First:55] trace {"error": "record not found", "elapsed": 0.0015733, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = 'aly91' ORDER BY `device`.`id` LIMIT 1"} -[2023-06-08 16:04:59] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 aly91 116.62.20.91 root Feiai123~ } -[2023-06-08 16:07:26] [error] [aps_admin/model.(*DeviceSearch).First:55] trace {"error": "record not found", "elapsed": 0.0006222, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = 'aly21' ORDER BY `device`.`id` LIMIT 1"} -[2023-06-08 16:07:26] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 aly21 121.196.212.21 root Feiai123~ } -[2023-06-08 16:09:43] [error] [aps_admin/model.(*DeviceSearch).First:55] trace {"error": "record not found", "elapsed": 0.0005294, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = 'aly94' ORDER BY `device`.`id` LIMIT 1"} -[2023-06-08 16:09:43] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 aly94 116.62.232.94 root Feiai123~ 22} -[2023-06-08 16:48:11] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 16:49:29] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 16:52:37] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 16:53:31] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 16:55:51] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 16:56:23] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 16:57:42] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 16:58:38] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 17:07:54] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 17:22:00] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 17:24:59] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 17:26:31] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 17:27:36] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 18:05:59] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 18:30:55] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 18:32:11] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 18:33:42] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 18:37:37] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 19:39:43] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-08 19:41:11] [error] [aps_admin/service.(*ClusterService).CreateCluster:79] get node command err:failed to get node command: unexpected status code 404 -[2023-06-08 20:31:38] [warn] [gorm.io/driver/mysql.Migrator.ColumnTypes.func1:204] trace {"elapsed": 0.1552878, "rows": -1, "sql": "SELECT * FROM `user` LIMIT 1"} -[2023-06-08 20:38:35] [error] [aps_admin/service.(*ClusterService).CreateCluster:108] deploy kubernetes roles err:failed to deploy Kubernetes roles on the remote server: command execution failed: sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run registry.cn-hangzhou.aliyuncs.com/rancher/rancher-agent:v2.5.17 --server https://192.168.20.119:8443 --token f44d79ctncdl6h6c7mbdckl85rvnq9cmxlrxkmkdx62bt2rv64x8pf --ca-checksum 3044e5cd6846cbc8bc2c8221122d84b0e82770766875f288dc81ce2c72f2378e --worker err锛歅rocess exited with status 125 -[2023-06-08 20:39:54] [error] [aps_admin/service.(*ClusterService).CreateCluster:108] deploy kubernetes roles err:failed to deploy Kubernetes roles on the remote server: command execution failed: sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run registry.cn-hangzhou.aliyuncs.com/rancher/rancher-agent:v2.5.17 --server https://192.168.20.119:8443 --token ljzdrm8vhvnbd564qxzpsdhkm494kbljz4kx49x2h4zwz8qs8m2nkd --ca-checksum 3044e5cd6846cbc8bc2c8221122d84b0e82770766875f288dc81ce2c72f2378e --worker err锛歅rocess exited with status 125 -[2023-06-08 20:59:54] [error] [aps_admin/service.(*ClusterService).CreateCluster:92] install docker err:failed to install Docker on the remote server:116.62.232.94 failed to connect to node 116.62.232.94: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password], no supported methods remain -[2023-06-09 09:48:47] [error] [aps_admin/service.(*ClusterService).CreateCluster:108] deploy kubernetes roles err:failed to deploy Kubernetes roles on the remote server: command execution failed: sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run registry.cn-hangzhou.aliyuncs.com/rancher/rancher-agent:v2.5.17 --server https://192.168.20.119:8443 --token lrr5ffjz84bn6vpcww2l6q8xprv5p5pktvbchfnz52x6gc5hvsksrv --ca-checksum 3044e5cd6846cbc8bc2c8221122d84b0e82770766875f288dc81ce2c72f2378e --worker err锛歅rocess exited with status 125 -[2023-06-09 09:49:14] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-09 09:50:35] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create cluster, status code: 422 -[2023-06-09 09:51:34] [error] [aps_admin/service.(*ClusterService).CreateCluster:108] deploy kubernetes roles err:failed to deploy Kubernetes roles on the remote server: command execution failed: sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run registry.cn-hangzhou.aliyuncs.com/rancher/rancher-agent:v2.5.17 --server https://192.168.20.119:8443 --token rwbbfgjgm2vbdmpjl66g7kwjn25hzkxskndv5nwk4n4dkm9jc4v82b --ca-checksum 3044e5cd6846cbc8bc2c8221122d84b0e82770766875f288dc81ce2c72f2378e --worker err锛歅rocess exited with status 125 -[2023-06-09 10:42:07] [error] [aps_admin/model.(*DeviceSearch).First:55] trace {"error": "record not found", "elapsed": 0.0041885, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '鍐呯綉116' ORDER BY `device`.`id` LIMIT 1"} -[2023-06-09 10:42:07] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 鍐呯綉116 192.168.20.116 basic 123 100} -[2023-06-09 10:42:35] [error] [aps_admin/model.(*DeviceSearch).First:55] trace {"error": "record not found", "elapsed": 0, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '鍐呯綉117' ORDER BY `device`.`id` LIMIT 1"} -[2023-06-09 10:42:35] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 鍐呯綉117 192.168.20.117 basic 123 22} -[2023-06-09 10:43:10] [error] [aps_admin/model.(*DeviceSearch).First:55] trace {"error": "record not found", "elapsed": 0.0005351, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '鍐呯綉119' ORDER BY `device`.`id` LIMIT 1"} -[2023-06-09 10:43:10] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 鍐呯綉119 192.168.20.119 basic 123 22} -[2023-06-13 10:02:25] [error] [aps_admin/model.Init:10] failed to initialize database, got error dial tcp 172.20.11.128:3306: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. -[2023-06-13 10:02:25] [error] [main.main:29] model Init err:dial tcp 172.20.11.128:3306: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. -[2023-06-13 10:20:07] [error] [aps_admin/model.(*MenuSearch).First:200] trace {"error": "record not found", "elapsed": 0.000506, "rows": 0, "sql": "SELECT * FROM `menu` WHERE id = 22 ORDER BY `menu`.`id` LIMIT 1"} -[2023-06-13 10:20:07] [error] [aps_admin/model.(*MenuSearch).CreateBatch:143] trace {"error": "Error 1062 (23000): Duplicate entry '1' for key 'menu.PRIMARY'", "elapsed": 0.0099959, "rows": 0, "sql": "INSERT INTO `menu` (`parent_id`,`path`,`name`,`title`,`sort`,`icon`,`hidden`,`type`,`create_time`,`update_time`,`id`) VALUES (0,'','','杞﹂棿绠$悊',1,'home',false,0,1686622807,1686622807,1),(1,'/facilty','','璁惧绠$悊',2,'object-ungroup',false,1,1686622807,1686622807,2),(1,'/faciltyResource','','璁惧璧勬簮',3,'object-group',false,1,1686622807,1686622807,3),(1,'/oricedureDiagram','','璁惧宸ュ簭鍥�',4,'object-group',false,1,1686622807,1686622807,4),(0,'','','鐢熶骇璁″垝',5,'paper-plane',false,0,1686622807,1686622807,5),(5,'/orderManagement','','璁㈠崟绠$悊',6,'files-o',false,1,1686622807,1686622807,6),(5,'/plannedProduction','','璁″垝鐢熶骇',7,'',false,1,1686622807,1686622807,7),(5,'/Scheduling','','鐢熶骇鎺掔▼',8,'delicious',false,1,1686622807,1686622807,8),(5,'/productionProcess','','鐢熶骇宸ュ簭琛�',9,'',false,1,1686622807,1686622807,9),(0,'','','鍩虹鏁版嵁',10,'database',false,0,1686622807,1686622807,10),(10,'/inventory','','BOM绠$悊',11,'film',false,1,1686622807,1686622807,11),(10,'/bomCraft','','浜у搧/宸ュ簭',12,'sliders',false,1,1686622807,1686622807,12),(10,'/humanResource','','鏁版嵁閰嶇疆',13,'',false,1,1686622807,1686622807,13),(10,'/calendar','','鐢熶骇鏃ュ巻',14,'user',false,1,1686622807,1686622807,14),(10,'/abilityModel','','妯℃澘绠$悊',15,'connectdevelop',false,1,1686622807,1686622807,15),(10,'/mouldManagement','','妯″叿绠$悊',16,'',false,1,1686622807,1686622807,16),(10,'/gauge','','妫�鍏风鐞�',17,'',false,1,1686622807,1686622807,17),(10,'/transportation','','瑙勮寖绠$悊',18,'',false,1,1686622807,1686622807,18),(10,'/proccessModel','','宸ヨ壓妯″瀷',19,'',false,1,1686622807,1686622807,19),(10,'/dictionary','','鏁版嵁閰嶇疆',20,'',false,1,1686622807,1686622807,20),(0,'','','绯荤粺璁剧疆',21,'database',false,0,1686622807,1686622807,21),(21,'/system/userManage','','绠$悊鍛樼鐞�',22,'film',false,1,1686622807,1686622807,22)"} -[2023-06-13 10:20:07] [error] [aps_admin/service.(*InitDBService).InitDB:72] InitDB InitData err:menu琛ㄦ暟鎹垵濮嬪寲澶辫触!: create batch err: Error 1062 (23000): Duplicate entry '1' for key 'menu.PRIMARY', records: [0xc0009bc630 0xc0009bc6e0 0xc0009bc790 0xc0009bc840 0xc0009bc8f0 0xc0009bc9a0 0xc0009bca50 0xc0009bcb00 0xc0009bcbb0 0xc0009bcc60 0xc0009bcd10 0xc0009bcdc0 0xc0009bce70 0xc0009bcf20 0xc0009bcfd0 0xc0009bd080 0xc0009bd130 0xc0009bd1e0 0xc0009bd290 0xc0009bd340 0xc0009bd3f0 0xc0009bd4a0] -[2023-06-13 10:20:07] [error] [aps_admin/initialize.Init:38] initDB err:menu琛ㄦ暟鎹垵濮嬪寲澶辫触!: create batch err: Error 1062 (23000): Duplicate entry '1' for key 'menu.PRIMARY', records: [0xc0009bc630 0xc0009bc6e0 0xc0009bc790 0xc0009bc840 0xc0009bc8f0 0xc0009bc9a0 0xc0009bca50 0xc0009bcb00 0xc0009bcbb0 0xc0009bcc60 0xc0009bcd10 0xc0009bcdc0 0xc0009bce70 0xc0009bcf20 0xc0009bcfd0 0xc0009bd080 0xc0009bd130 0xc0009bd1e0 0xc0009bd290 0xc0009bd340 0xc0009bd3f0 0xc0009bd4a0] -[2023-06-13 10:20:07] [error] [main.main:34] initialize Init err:menu琛ㄦ暟鎹垵濮嬪寲澶辫触!: create batch err: Error 1062 (23000): Duplicate entry '1' for key 'menu.PRIMARY', records: [0xc0009bc630 0xc0009bc6e0 0xc0009bc790 0xc0009bc840 0xc0009bc8f0 0xc0009bc9a0 0xc0009bca50 0xc0009bcb00 0xc0009bcbb0 0xc0009bcc60 0xc0009bcd10 0xc0009bcdc0 0xc0009bce70 0xc0009bcf20 0xc0009bcfd0 0xc0009bd080 0xc0009bd130 0xc0009bd1e0 0xc0009bd290 0xc0009bd340 0xc0009bd3f0 0xc0009bd4a0] -[2023-06-13 10:35:43] [error] [aps_admin/service.getClusters:150] get cluster err:failed to get cluster list request: parse "192.168.20.119:8443/v3/clusters": first path segment in URL cannot contain colon -[2023-06-13 10:40:59] [error] [aps_admin/model.(*DeviceSearch).First:55] trace {"error": "record not found", "elapsed": 0.0045216, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '119' ORDER BY `device`.`id` LIMIT 1"} -[2023-06-13 10:40:59] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 119 192.168.20.119 basic 123 22} -[2023-06-13 10:43:28] [error] [aps_admin/model.(*DeviceSearch).First:55] trace {"error": "record not found", "elapsed": 0.0030381, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '116' ORDER BY `device`.`id` LIMIT 1"} -[2023-06-13 10:43:28] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 116 192.168.20.116 basic 123 22} -[2023-06-13 10:43:38] [error] [aps_admin/model.(*DeviceSearch).First:55] trace {"error": "record not found", "elapsed": 0.0005551, "rows": 0, "sql": "SELECT * FROM `device` WHERE ip = '117' ORDER BY `device`.`id` LIMIT 1"} -[2023-06-13 10:43:38] [error] [aps_admin/service.(*DeviceService).AddDevice:16] device! err:&{0 117 192.168.20.117 basic 123 22} -[2023-06-13 10:44:56] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create HTTP request: parse "192.168.20.119:8443/v3/clusters": first path segment in URL cannot contain colon -[2023-06-13 10:56:34] [error] [aps_admin/service.(*ClusterService).CreateCluster:72] create cluster err:Failed to create HTTP request: parse "192.168.20.119:8443/v3/clusters": first path segment in URL cannot contain colon -[2023-06-13 11:03:39] [error] [aps_admin/utils.GetClaims:14] 浠嶨in鐨凜ontext涓幏鍙栦粠jwt瑙f瀽淇℃伅澶辫触, 璇锋鏌ヨ姹傚ご鏄惁瀛樺湪x-token涓攃laims鏄惁涓鸿瀹氱粨鏋� -[2023-06-13 11:03:39] [error] [aps_admin/model.(*UserSearch).First:210] trace {"error": "record not found", "elapsed": 0.004199, "rows": 0, "sql": "SELECT * FROM `user` WHERE username = 'fly-test' ORDER BY `user`.`id` LIMIT 1"} -[2023-06-13 11:03:39] [error] [aps_admin/model.(*Mysql).CreateUser.func1:24] trace {"error": "Error 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-test@'%' identified by 'fly-test@Basic2023'' at line 1", "elapsed": 0, "rows": 0, "sql": "create user if not exists fly-test@'%' identified by 'fly-test@Basic2023'"} -[2023-06-13 11:03:39] [error] [aps_admin/model.(*Mysql).CreateUser.func1:26] create mysql-user err:Error 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-test@'%' identified by 'fly-test@Basic2023'' at line 1 -[2023-06-13 11:25:56] [error] [aps_admin/service.pass:226] etcd.NewServiceRegister err:context deadline exceeded -[2023-06-13 11:25:56] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-13 11:25:56] [error] [aps_admin/api/v1.(*BaseApi).Examine:387] 瀹℃牳澶辫触! err:context deadline exceeded -[2023-06-13 11:28:41] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 32032 -[2023-06-13 11:31:02] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 30220 -[2023-06-13 11:36:10] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 31263 -[2023-06-13 11:37:41] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 31789 -[2023-06-13 11:54:00] [error] [aps_admin/utils.GetClaims:14] 浠嶨in鐨凜ontext涓幏鍙栦粠jwt瑙f瀽淇℃伅澶辫触, 璇锋鏌ヨ姹傚ご鏄惁瀛樺湪x-token涓攃laims鏄惁涓鸿瀹氱粨鏋� -[2023-06-13 11:54:00] [error] [aps_admin/model.(*UserSearch).First:212] trace {"error": "record not found", "elapsed": 0.0007172, "rows": 0, "sql": "SELECT * FROM `user` WHERE id = 'wenze3' ORDER BY `user`.`id` LIMIT 1"} -[2023-06-13 11:54:46] [error] [aps_admin/utils.GetClaims:14] 浠嶨in鐨凜ontext涓幏鍙栦粠jwt瑙f瀽淇℃伅澶辫触, 璇锋鏌ヨ姹傚ご鏄惁瀛樺湪x-token涓攃laims鏄惁涓鸿瀹氱粨鏋� -[2023-06-13 11:54:46] [error] [aps_admin/api/v1.(*BaseApi).DeleteUser:254] 鍒犻櫎澶辫触! err:璇ョ敤鎴峰凡缁忕櫥褰曪紝鏃犳硶鍒犻櫎 -[2023-06-13 13:33:50] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-14 15:24:39] [error] [aps_admin/service.pass:226] etcd.NewServiceRegister err:context deadline exceeded -[2023-06-14 15:24:39] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-14 15:24:39] [error] [aps_admin/api/v1.(*BaseApi).Examine:387] 瀹℃牳澶辫触! err:context deadline exceeded -[2023-06-14 15:33:00] [error] [aps_admin/service.pass:226] etcd.NewServiceRegister err:context deadline exceeded -[2023-06-14 15:33:00] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-14 15:33:00] [error] [aps_admin/api/v1.(*BaseApi).Examine:387] 瀹℃牳澶辫触! err:context deadline exceeded -[2023-06-14 15:33:55] [error] [aps_admin/service.pass:226] etcd.NewServiceRegister err:context deadline exceeded -[2023-06-14 15:33:55] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-14 15:33:55] [error] [aps_admin/api/v1.(*BaseApi).Examine:387] 瀹℃牳澶辫触! err:context deadline exceeded -[2023-06-14 15:41:16] [error] [aps_admin/service.pass:226] etcd.NewServiceRegister err:context deadline exceeded -[2023-06-14 15:41:16] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-14 15:41:16] [error] [aps_admin/api/v1.(*BaseApi).Examine:387] 瀹℃牳澶辫触! err:context deadline exceeded -[2023-06-14 15:47:35] [error] [aps_admin/service.pass:226] etcd.NewServiceRegister err:context deadline exceeded -[2023-06-14 15:47:35] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-14 15:47:35] [error] [aps_admin/api/v1.(*BaseApi).Examine:387] 瀹℃牳澶辫触! err:context deadline exceeded -[2023-06-14 15:53:03] [error] [aps_admin/service.pass:226] etcd.NewServiceRegister err:context deadline exceeded -[2023-06-14 15:53:03] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-14 15:53:03] [error] [aps_admin/api/v1.(*BaseApi).Examine:387] 瀹℃牳澶辫触! err:context deadline exceeded -[2023-06-14 16:03:17] [error] [aps_admin/service.pass:226] etcd.NewServiceRegister err:context deadline exceeded -[2023-06-14 16:03:17] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-14 16:03:17] [error] [aps_admin/api/v1.(*BaseApi).Examine:387] 瀹℃牳澶辫触! err:context deadline exceeded -[2023-06-15 16:01:18] [error] [aps_admin/service.pass:226] etcd.NewServiceRegister err:context deadline exceeded -[2023-06-15 16:01:18] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-15 16:01:18] [error] [aps_admin/api/v1.(*BaseApi).Examine:387] 瀹℃牳澶辫触! err:context deadline exceeded -[2023-06-15 16:04:44] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 31298 -[2023-06-15 16:29:32] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-15 16:29:32] [error] [aps_admin/api/v1.(*BaseApi).Examine:387] 瀹℃牳澶辫触! err:failed to create Service: Service "wenze3" is invalid: [spec.ports[2].name: Invalid value: "nsqTcp": a lowercase RFC 1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name', or '123-abc', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?'), spec.ports[2].nodePort: Duplicate value: 31300] -[2023-06-15 16:31:28] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-15 16:31:28] [error] [aps_admin/api/v1.(*BaseApi).Examine:387] 瀹℃牳澶辫触! err:failed to create Service: Service "wenze3" is invalid: [spec.ports[2].name: Invalid value: "nsqTcp": a lowercase RFC 1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name', or '123-abc', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?'), spec.ports[2].nodePort: Duplicate value: 30306] -[2023-06-15 16:34:17] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-15 16:34:17] [error] [aps_admin/api/v1.(*BaseApi).Examine:387] 瀹℃牳澶辫触! err:failed to create Service: Service "wenze3" is invalid: spec.ports[2].nodePort: Duplicate value: 31989 -[2023-06-15 16:35:30] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 0 -[2023-06-15 16:35:30] [error] [aps_admin/api/v1.(*BaseApi).Examine:387] 瀹℃牳澶辫触! err:failed to create Service: Service "wenze3" is invalid: spec.ports[2].nodePort: Duplicate value: 31920 -[2023-06-15 16:37:48] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 31273 -[2023-06-15 16:53:39] [error] [aps_admin/api/v1.(*BaseApi).Examine:384] port: 31822 -[2023-06-19 19:34:53] [error] [aps_admin/service.getClusters:150] get cluster err:failed to get cluster list: Get "https://121.31.232.83:8443:8443/v3/clusters": dial tcp: lookup 121.31.232.83:8443: no such host -[2023-06-19 20:31:06] [error] [aps_admin/api/v1.(*BaseApi).Examine:405] port: 0 -[2023-06-19 20:31:06] [error] [aps_admin/api/v1.(*BaseApi).Examine:408] 瀹℃牳澶辫触! err:Operation cannot be fulfilled on pods "wenze3-5589fd8fb6-nwvts": the object has been modified; please apply your changes to the latest version and try again -[2023-06-19 20:39:16] [error] [aps_admin/service.pass:226] etcd.NewServiceRegister err:context deadline exceeded -[2023-06-19 20:39:16] [error] [aps_admin/api/v1.(*BaseApi).Examine:405] port: 0 -[2023-06-19 20:39:16] [error] [aps_admin/api/v1.(*BaseApi).Examine:408] 瀹℃牳澶辫触! err:context deadline exceeded -[2023-06-19 20:42:14] [error] [aps_admin/api/v1.(*BaseApi).Examine:405] port: 32710 -[2023-06-21 15:06:16] [error] [aps_crm/model.(*MenuSearch).First:200] trace {"error": "record not found", "elapsed": 0.0007204, "rows": 0, "sql": "SELECT * FROM `menu` WHERE id = 22 ORDER BY `menu`.`id` LIMIT 1"} -[2023-06-21 15:06:16] [error] [aps_crm/model.(*UserSearch).First:220] trace {"error": "record not found", "elapsed": 0.0008966, "rows": 0, "sql": "SELECT * FROM `user` WHERE username = 'admin' ORDER BY `user`.`id` LIMIT 1"} -[2023-06-21 15:36:44] [error] [aps_crm/model.(*CountrySearch).Create:51] trace {"error": "Error 1062 (23000): Duplicate entry '涓浗' for key 'name'", "elapsed": 0.0017341, "rows": 0, "sql": "INSERT INTO `country` (`name`) VALUES ('涓浗')"} -[2023-06-21 15:38:49] [error] [aps_crm/model.(*CountrySearch).Create:51] trace {"error": "Error 1062 (23000): Duplicate entry '涓浗' for key 'name'", "elapsed": 0.0020244, "rows": 0, "sql": "INSERT INTO `country` (`name`) VALUES ('涓浗')"} -[2023-06-21 15:38:56] [error] [aps_crm/model.(*CountrySearch).Create:51] trace {"error": "Error 1062 (23000): Duplicate entry '涓浗' for key 'name'", "elapsed": 0.002863, "rows": 0, "sql": "INSERT INTO `country` (`name`) VALUES ('涓浗')"} -[2023-06-21 15:38:56] [error] [aps_crm/model.(*CountrySearch).Create:51] trace {"error": "Error 1062 (23000): Duplicate entry '涓浗' for key 'name'", "elapsed": 0.0024232, "rows": 0, "sql": "INSERT INTO `country` (`name`) VALUES ('涓浗')"} -[2023-06-21 15:38:57] [error] [aps_crm/model.(*CountrySearch).Create:51] trace {"error": "Error 1062 (23000): Duplicate entry '涓浗' for key 'name'", "elapsed": 0.0029844, "rows": 0, "sql": "INSERT INTO `country` (`name`) VALUES ('涓浗')"} -[2023-06-21 15:38:57] [error] [aps_crm/model.(*CountrySearch).Create:51] trace {"error": "Error 1062 (23000): Duplicate entry '涓浗' for key 'name'", "elapsed": 0.0022299, "rows": 0, "sql": "INSERT INTO `country` (`name`) VALUES ('涓浗')"} -[2023-06-21 15:38:57] [error] [aps_crm/model.(*CountrySearch).Create:51] trace {"error": "Error 1062 (23000): Duplicate entry '涓浗' for key 'name'", "elapsed": 0.0030413, "rows": 0, "sql": "INSERT INTO `country` (`name`) VALUES ('涓浗')"} -[2023-06-21 15:38:57] [error] [aps_crm/model.(*CountrySearch).Create:51] trace {"error": "Error 1062 (23000): Duplicate entry '涓浗' for key 'name'", "elapsed": 0.0024366, "rows": 0, "sql": "INSERT INTO `country` (`name`) VALUES ('涓浗')"} -[2023-06-21 15:53:35] [error] [aps_crm/model.(*CountrySearch).First:122] trace {"error": "record not found", "elapsed": 0.0012382, "rows": 0, "sql": "SELECT * FROM `country` WHERE id = 1 ORDER BY `country`.`id` LIMIT 1"} -[2023-06-21 15:53:46] [error] [aps_crm/model.(*CountrySearch).First:122] trace {"error": "record not found", "elapsed": 0.0010364, "rows": 0, "sql": "SELECT * FROM `country` WHERE id = 1 ORDER BY `country`.`id` LIMIT 1"} -[2023-06-21 15:54:58] [error] [aps_crm/model.(*CountrySearch).First:122] trace {"error": "record not found", "elapsed": 0.0009974, "rows": 0, "sql": "SELECT * FROM `country` WHERE id = 1 ORDER BY `country`.`id` LIMIT 1"} -[2023-06-21 15:56:58] [error] [aps_crm/model.(*CountrySearch).First:122] trace {"error": "record not found", "elapsed": 0.0026063, "rows": 0, "sql": "SELECT * FROM `country` WHERE id = 1 ORDER BY `country`.`id` LIMIT 1"} -[2023-06-21 15:57:13] [error] [aps_crm/model.(*CountrySearch).First:122] trace {"error": "record not found", "elapsed": 0.0005088, "rows": 0, "sql": "SELECT * FROM `country` WHERE id = 1 ORDER BY `country`.`id` LIMIT 1"} -[2023-06-25 10:31:02] [error] [aps_crm/model.(*ProvinceSearch).UpdateList:89] trace {"error": "WHERE conditions required", "elapsed": 0.0005567, "rows": 0, "sql": "UPDATE `province` SET `country_id`=3"} -[2023-06-25 10:52:26] [error] [aps_crm/model.(*CountrySearch).FindAll:74] trace {"error": "province: unsupported relations for schema Country", "elapsed": 0.0008028, "rows": 2, "sql": "SELECT * FROM `country`"} -[2023-06-25 11:29:09] [error] [aps_crm/model.(*CitySearch).Create:46] trace {"error": "Error 1054 (42S22): Unknown column 'province_id' in 'field list'", "elapsed": 0.0015733, "rows": 0, "sql": "INSERT INTO `city` (`name`,`province_id`) VALUES ('鍖椾含',0)"} -[2023-06-25 11:30:56] [error] [aps_crm/model.(*CitySearch).Create:46] trace {"error": "Error 1054 (42S22): Unknown column 'province_id' in 'field list'", "elapsed": 0.0015465, "rows": 0, "sql": "INSERT INTO `city` (`name`,`province_id`) VALUES ('鍖椾含',0)"} -[2023-06-25 11:43:30] [error] [aps_crm/model.(*ProvinceSearch).First:95] trace {"error": "record not found", "elapsed": 0.0010742, "rows": 0, "sql": "SELECT * FROM `province` WHERE id = 100 ORDER BY `province`.`id` LIMIT 1"} -[2023-06-25 11:45:04] [error] [aps_crm/model.(*CountrySearch).FindAll:75] trace {"error": "City: unsupported relations for schema Country", "elapsed": 0.0025641, "rows": 2, "sql": "SELECT * FROM `country`"} -[2023-06-25 17:33:14] [error] [aps_crm/model.(*ContactSearch).Create:58] trace {"error": "Error 1146 (42S02): Table 'aps_crm.contact' doesn't exist", "elapsed": 0.0012363, "rows": 0, "sql": "INSERT INTO `contact` (`name`,`number`,`company_id`,`position`,`phone`,`member_id`,`is_first`,`wechat`,`birthday`,`email`,`desc`,`country_id`,`province_id`,`city_id`,`region_id`) VALUES ('string','',0,'string','string',0,true,'string','string','string','string',3,1,1,20)"} -[2023-06-25 17:34:24] [error] [aps_crm/model.(*ContactSearch).Create:58] trace {"error": "Error 1146 (42S02): Table 'aps_crm.contact' doesn't exist", "elapsed": 0.00114, "rows": 0, "sql": "INSERT INTO `contact` (`name`,`number`,`company_id`,`position`,`phone`,`member_id`,`is_first`,`wechat`,`birthday`,`email`,`desc`,`country_id`,`province_id`,`city_id`,`region_id`) VALUES ('test','',0,'string','string',1,true,'string','string','string','string',3,1,1,20)"} -[2023-06-25 17:36:30] [error] [aps_crm/model.(*ContactSearch).Create:58] trace {"error": "Error 1146 (42S02): Table 'aps_crm.contact' doesn't exist", "elapsed": 0.0016653, "rows": 0, "sql": "INSERT INTO `contact` (`name`,`number`,`company_id`,`position`,`phone`,`member_id`,`is_first`,`wechat`,`birthday`,`email`,`desc`,`country_id`,`province_id`,`city_id`,`region_id`) VALUES ('test','',0,'string','string',1,true,'string','string','string','string',3,1,1,20)"} -[2023-06-25 17:37:41] [error] [aps_crm/model.(*ContactSearch).Create:58] trace {"error": "Error 1054 (42S22): Unknown column 'is_first' in 'field list'", "elapsed": 0.0017984, "rows": 0, "sql": "INSERT INTO `contact` (`name`,`number`,`company_id`,`position`,`phone`,`member_id`,`is_first`,`wechat`,`birthday`,`email`,`desc`,`country_id`,`province_id`,`city_id`,`region_id`) VALUES ('test','',0,'string','string',1,true,'string','string','string','string',3,1,1,20)"} -[2023-06-25 17:38:08] [error] [aps_crm/model.(*ContactSearch).Create:58] trace {"error": "Error 1054 (42S22): Unknown column 'is_first' in 'field list'", "elapsed": 0.0016086, "rows": 0, "sql": "INSERT INTO `contact` (`name`,`number`,`company_id`,`position`,`phone`,`member_id`,`is_first`,`wechat`,`birthday`,`email`,`desc`,`country_id`,`province_id`,`city_id`,`region_id`) VALUES ('test','',0,'string','string',1,true,'string','string','string','string',3,1,1,20)"} -[2023-06-25 17:39:00] [error] [aps_crm/model.(*ContactSearch).Create:58] trace {"error": "Error 1054 (42S22): Unknown column 'is_first' in 'field list'", "elapsed": 0.0016683, "rows": 0, "sql": "INSERT INTO `contact` (`name`,`number`,`company_id`,`position`,`phone`,`member_id`,`is_first`,`wechat`,`birthday`,`email`,`desc`,`country_id`,`province_id`,`city_id`,`region_id`) VALUES ('test','',0,'string','string',1,true,'string','string','string','string',3,1,1,20)"} -[2023-06-25 17:41:33] [error] [aps_crm/model.(*ContactSearch).Create:58] trace {"error": "Error 1292 (22007): Incorrect datetime value: 'string' for column 'birthday' at row 1", "elapsed": 0.0026264, "rows": 0, "sql": "INSERT INTO `contact` (`name`,`number`,`company_id`,`position`,`phone`,`member_id`,`is_first`,`wechat`,`birthday`,`email`,`desc`,`country_id`,`province_id`,`city_id`,`region_id`) VALUES ('test','',0,'string','string',1,true,'string','string','string','string',3,1,1,20)"} -[2023-06-25 17:42:36] [error] [aps_crm/model.(*ContactSearch).Create:58] trace {"error": "Error 1292 (22007): Incorrect datetime value: '' for column 'birthday' at row 1", "elapsed": 0.0026709, "rows": 0, "sql": "INSERT INTO `contact` (`name`,`number`,`company_id`,`position`,`phone`,`member_id`,`is_first`,`wechat`,`birthday`,`email`,`desc`,`country_id`,`province_id`,`city_id`,`region_id`) VALUES ('test','',0,'string','string',1,true,'string','','string','string',3,1,1,20)"} -[2023-06-26 15:31:23] [error] [aps_crm/model.(*CitySearch).Updates:81] trace {"error": "WHERE conditions required", "elapsed": 0.0005428, "rows": 0, "sql": "UPDATE `city` SET `color`='123',`turn`=11"} -[2023-06-26 15:33:18] [error] [aps_crm/model.(*CitySearch).Updates:81] trace {"error": "WHERE conditions required", "elapsed": 0.0010696, "rows": 0, "sql": "UPDATE `city` SET `color`='123',`turn`=11"} -[2023-06-26 15:35:23] [error] [aps_crm/model.(*CitySearch).Updates:82] trace {"error": "WHERE conditions required", "elapsed": 0.0005346, "rows": 0, "sql": "UPDATE `city` SET `color`='123',`turn`=11"} -[2023-06-26 15:36:00] [error] [aps_crm/model.(*CitySearch).Updates:82] trace {"error": "WHERE conditions required", "elapsed": 0.0005087, "rows": 0, "sql": "UPDATE `city` SET `color`='123',`turn`=11"} -[2023-06-27 11:06:58] [error] [aps_crm/model.(*CitySearch).Delete:54] trace {"error": "WHERE conditions required", "elapsed": 0.000531, "rows": 0, "sql": "DELETE FROM `city`"} -[2023-06-27 11:10:26] [error] [aps_crm/model.(*CitySearch).Delete:54] trace {"error": "WHERE conditions required", "elapsed": 0.0005344, "rows": 0, "sql": "DELETE FROM `city`"} -[2023-06-27 11:22:43] [error] [aps_crm/model.(*CitySearch).Delete:54] trace {"error": "WHERE conditions required", "elapsed": 0, "rows": 0, "sql": "DELETE FROM `city`"} -[2023-06-27 11:24:39] [error] [aps_crm/model.(*CitySearch).Delete:54] trace {"error": "WHERE conditions required", "elapsed": 0.0005072, "rows": 0, "sql": "DELETE FROM `city`"} -[2023-06-27 11:27:27] [error] [aps_crm/model.(*CitySearch).Delete:54] trace {"error": "WHERE conditions required", "elapsed": 0.0005447, "rows": 0, "sql": "DELETE FROM `city`"} -[2023-06-27 11:28:04] [error] [aps_crm/model.(*CitySearch).Delete:54] trace {"error": "WHERE conditions required", "elapsed": 0.000532, "rows": 0, "sql": "DELETE FROM `city`"} -[2023-06-27 11:29:47] [error] [aps_crm/model.(*CitySearch).Delete:54] trace {"error": "WHERE conditions required", "elapsed": 0.0005419, "rows": 0, "sql": "DELETE FROM `city`"} -[2023-06-27 11:30:26] [error] [aps_crm/model.(*CitySearch).Delete:54] trace {"error": "WHERE conditions required", "elapsed": 0.0005273, "rows": 0, "sql": "DELETE FROM `city`"} -[2023-06-27 11:34:08] [error] [aps_crm/model.(*CitySearch).Delete:54] trace {"error": "WHERE conditions required", "elapsed": 0.0021733, "rows": 0, "sql": "DELETE FROM `city`"} -[2023-06-27 15:00:52] [error] [aps_crm/model.(*ContactSearch).First:100] trace {"error": "record not found", "elapsed": 0.0015938, "rows": 0, "sql": "SELECT * FROM `contact` WHERE id = 12 AND `contact`.`deleted_at` IS NULL ORDER BY `contact`.`id` LIMIT 1"} -[2023-06-27 15:01:01] [error] [aps_crm/model.(*ContactSearch).Delete:70] trace {"error": "WHERE conditions required", "elapsed": 0.0005284, "rows": 0, "sql": "UPDATE `contact` SET `deleted_at`='2023-06-27 15:01:01.78' WHERE `contact`.`deleted_at` IS NULL"} -[2023-06-27 15:10:12] [error] [aps_crm/model.(*ContactSearch).First:100] trace {"error": "record not found", "elapsed": 0.001272, "rows": 0, "sql": "SELECT * FROM `contact` WHERE id = 1 AND `contact`.`deleted_at` IS NULL ORDER BY `contact`.`id` LIMIT 1"} -[2023-06-27 16:35:34] [error] [aps_crm/model.(*ContactSearch).First:100] trace {"error": "record not found", "elapsed": 0.0009159, "rows": 0, "sql": "SELECT * FROM `contact` WHERE id = 1 AND `contact`.`deleted_at` IS NULL ORDER BY `contact`.`id` LIMIT 1"} -[2023-06-28 10:42:18] [error] [aps_crm/model.(*ClientSearch).Create:60] trace {"error": "Error 1146 (42S02): Table 'aps_crm.client' doesn't exist", "elapsed": 0.0025819, "rows": 0, "sql": "INSERT INTO `client` (`name`,`number`,`client_status_id`,`client_type_id`,`client_origin_id`,`client_level_id`,`member_id`,`service_member_id`,`detail_address`,`remark`,`next_visit_time`,`latest_service_time`,`country_id`,`province_id`,`city_id`,`region_id`,`representative`,`registration_time`,`registered_capital_id`,`industry_id`,`enterprise_nature_id`,`enterprise_scale_id`,`business_scope`,`created_at`,`updated_at`,`deleted_at`) VALUES ('string','string',1,0,0,1,12,0,'string','string','1970-01-01 08:00:00','1970-01-01 08:00:00',0,0,0,0,'','0000-00-00 00:00:00',0,0,0,0,'','2023-06-28 10:42:18.885','2023-06-28 10:42:18.885',NULL)"} -[2023-06-28 10:43:37] [error] [aps_crm/model.(*ClientSearch).Create:60] trace {"error": "Error 1146 (42S02): Table 'aps_crm.client' doesn't exist", "elapsed": 0.0027251, "rows": 0, "sql": "INSERT INTO `client` (`name`,`number`,`client_status_id`,`client_type_id`,`client_origin_id`,`client_level_id`,`member_id`,`service_member_id`,`detail_address`,`remark`,`next_visit_time`,`latest_service_time`,`country_id`,`province_id`,`city_id`,`region_id`,`representative`,`registration_time`,`registered_capital_id`,`industry_id`,`enterprise_nature_id`,`enterprise_scale_id`,`business_scope`,`created_at`,`updated_at`,`deleted_at`) VALUES ('string','string',1,0,0,1,12,0,'string','string','1970-01-01 08:00:00','1970-01-01 08:00:00',0,0,0,0,'','0000-00-00 00:00:00',0,0,0,0,'','2023-06-28 10:43:37.11','2023-06-28 10:43:37.11',NULL)"} -[2023-06-28 10:44:12] [error] [aps_crm/model.(*ClientSearch).Create:60] trace {"error": "Error 1292 (22007): Incorrect datetime value: '0000-00-00' for column 'registration_time' at row 1", "elapsed": 0.003669, "rows": 0, "sql": "INSERT INTO `clients` (`name`,`number`,`client_status_id`,`client_type_id`,`client_origin_id`,`client_level_id`,`member_id`,`service_member_id`,`detail_address`,`remark`,`next_visit_time`,`latest_service_time`,`country_id`,`province_id`,`city_id`,`region_id`,`representative`,`registration_time`,`registered_capital_id`,`industry_id`,`enterprise_nature_id`,`enterprise_scale_id`,`business_scope`,`created_at`,`updated_at`,`deleted_at`) VALUES ('string','string',1,0,0,1,12,0,'string','string','1970-01-01 08:00:00','1970-01-01 08:00:00',0,0,0,0,'','0000-00-00 00:00:00',0,0,0,0,'','2023-06-28 10:44:12.577','2023-06-28 10:44:12.577',NULL)"} -[2023-06-28 14:16:00] [error] [aps_crm/model.(*ClientSearch).Create:60] trace {"error": "Error 1062 (23000): Duplicate entry '杩欎粎浠呮槸涓�涓祴璇�' for key 'name'", "elapsed": 0.0040316, "rows": 0, "sql": "INSERT INTO `clients` (`name`,`number`,`client_status_id`,`client_type_id`,`client_origin_id`,`client_level_id`,`member_id`,`service_member_id`,`detail_address`,`remark`,`next_visit_time`,`latest_service_time`,`country_id`,`province_id`,`city_id`,`region_id`,`representative`,`registration_time`,`registered_capital_id`,`industry_id`,`enterprise_nature_id`,`enterprise_scale_id`,`business_scope`,`created_at`,`updated_at`,`deleted_at`) VALUES ('杩欎粎浠呮槸涓�涓祴璇�','string',1,0,0,0,12,0,'string','string','1970-01-01 08:00:00','1970-01-01 08:00:00',0,0,0,0,'','1970-01-01 08:00:00',0,0,0,0,'','2023-06-28 14:16:00.318','2023-06-28 14:16:00.318',NULL)"} -[2023-06-28 14:25:31] [error] [aps_crm/model.(*ClientSearch).First:91] trace {"error": "record not found", "elapsed": 0.0016111, "rows": 0, "sql": "SELECT * FROM `clients` WHERE id = 12 AND `clients`.`deleted_at` IS NULL ORDER BY `clients`.`id` LIMIT 1"} -[2023-06-28 14:36:34] [error] [aps_crm/model.(*ClientSearch).Create:60] trace {"error": "Error 1062 (23000): Duplicate entry '杩欎粎浠呮槸涓�涓祴璇�' for key 'name'", "elapsed": 0.0049793, "rows": 0, "sql": "INSERT INTO `clients` (`name`,`number`,`client_status_id`,`client_type_id`,`client_origin_id`,`client_level_id`,`member_id`,`service_member_id`,`detail_address`,`remark`,`next_visit_time`,`latest_service_time`,`country_id`,`province_id`,`city_id`,`region_id`,`representative`,`registration_time`,`registered_capital_id`,`industry_id`,`enterprise_nature_id`,`enterprise_scale_id`,`business_scope`,`created_at`,`updated_at`,`deleted_at`) VALUES ('杩欎粎浠呮槸涓�涓祴璇�','string',1,0,0,0,12,0,'string','string','1970-01-01 08:00:00','1970-01-01 08:00:00',0,0,0,0,'','1970-01-01 08:00:00',0,0,0,0,'','2023-06-28 14:36:34.816','2023-06-28 14:36:34.816',NULL)"} -[2023-06-28 14:37:21] [error] [aps_crm/model.(*ClientSearch).Find:98] trace {"error": "contact: unsupported relations for schema Client", "elapsed": 0.0018183, "rows": 3, "sql": "SELECT * FROM `clients` WHERE `clients`.`deleted_at` IS NULL"} -[2023-06-28 14:38:31] [error] [aps_crm/model.(*ClientSearch).Find:98] trace {"error": "contacts: unsupported relations for schema Client", "elapsed": 0.0028328, "rows": 3, "sql": "SELECT * FROM `clients` WHERE `clients`.`deleted_at` IS NULL"} -[2023-06-28 14:39:23] [error] [aps_crm/model.(*ClientSearch).Find:98] trace {"error": "contacts: unsupported relations for schema Client", "elapsed": 0.0036906, "rows": 3, "sql": "SELECT * FROM `clients` WHERE `clients`.`deleted_at` IS NULL"} -[2023-06-28 14:44:06] [error] [aps_crm/model.(*ClientSearch).Find:98] trace {"error": "contacts: unsupported relations for schema Client", "elapsed": 0.00205, "rows": 3, "sql": "SELECT * FROM `clients` WHERE `clients`.`deleted_at` IS NULL"} -[2023-06-28 14:44:41] [error] [aps_crm/model.(*ClientSearch).Find:98] trace {"error": "contact: unsupported relations for schema Client", "elapsed": 0.0025056, "rows": 3, "sql": "SELECT * FROM `clients` WHERE `clients`.`deleted_at` IS NULL"} -[2023-06-28 14:46:21] [error] [aps_crm/model.(*ClientSearch).Find:98] trace {"error": "contact: unsupported relations for schema Client", "elapsed": 0.0026419, "rows": 3, "sql": "SELECT * FROM `clients` WHERE `clients`.`deleted_at` IS NULL"} -[2023-06-28 14:46:42] [error] [aps_crm/model.(*ClientSearch).Find:98] trace {"error": "contacts: unsupported relations for schema Client", "elapsed": 0.0026226, "rows": 3, "sql": "SELECT * FROM `clients` WHERE `clients`.`deleted_at` IS NULL"} -[2023-06-28 15:43:57] [error] [aps_crm/model.(*ContactSearch).FindAll:80] trace {"error": "Country: unsupported relations for schema Contact", "elapsed": 0.0027306, "rows": 14, "sql": "SELECT * FROM `contacts` WHERE `contacts`.`deleted_at` IS NULL"} -[2023-06-28 15:44:15] [error] [aps_crm/model.(*ContactSearch).FindAll:80] trace {"error": "Country: unsupported relations for schema Contact", "elapsed": 0.0018499, "rows": 14, "sql": "SELECT * FROM `contacts` WHERE `contacts`.`deleted_at` IS NULL"} -[2023-06-28 15:48:57] [error] [aps_crm/model.(*ContactSearch).FindAll:80] trace {"error": "CountryId: unsupported relations for schema Contact", "elapsed": 0.0018594, "rows": 14, "sql": "SELECT * FROM `contacts` WHERE `contacts`.`deleted_at` IS NULL"} -[2023-06-28 17:09:18] [error] [aps_crm/model.(*ContactSearch).Create:58] trace {"error": "Error 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`aps_crm`.`contacts`, CONSTRAINT `fk_clients_contacts` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`))", "elapsed": 0.0024561, "rows": 0, "sql": "INSERT INTO `contacts` (`name`,`number`,`client_id`,`position`,`phone`,`member_id`,`is_first`,`wechat`,`birthday`,`email`,`desc`,`country_id`,`province_id`,`city_id`,`region_id`,`created_at`,`updated_at`,`deleted_at`) VALUES ('杩欒繕鏄竴涓祴璇�','string',0,'string','string',12,true,'string','1970-01-01 16:00:00','string','string',0,0,0,0,'2023-06-28 17:09:18.959','2023-06-28 17:09:18.959',NULL)"} -[2023-06-28 17:10:04] [error] [aps_crm/model.(*ContactSearch).Create:58] trace {"error": "Error 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`aps_crm`.`contacts`, CONSTRAINT `fk_clients_contacts` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`))", "elapsed": 0.0032324, "rows": 0, "sql": "INSERT INTO `contacts` (`name`,`number`,`client_id`,`position`,`phone`,`member_id`,`is_first`,`wechat`,`birthday`,`email`,`desc`,`country_id`,`province_id`,`city_id`,`region_id`,`created_at`,`updated_at`,`deleted_at`) VALUES ('杩欒繕鏄竴涓祴璇�','string',0,'string','string',12,true,'string','1970-01-01 16:00:00','string','string',0,0,0,0,'2023-06-28 17:10:04.461','2023-06-28 17:10:04.461',NULL)"} -[2023-06-28 17:11:43] [error] [aps_crm/model.(*ContactSearch).UpdateByMap:109] trace {"error": "WHERE conditions required", "elapsed": 0.0005544, "rows": 0, "sql": "UPDATE `contacts` SET `isFirst`=false,`updated_at`='2023-06-28 17:11:43.889' WHERE `contacts`.`deleted_at` IS NULL"} -[2023-06-28 17:11:59] [error] [aps_crm/model.(*ContactSearch).UpdateByMap:109] trace {"error": "WHERE conditions required", "elapsed": 0.0010541, "rows": 0, "sql": "UPDATE `contacts` SET `isFirst`=false,`updated_at`='2023-06-28 17:11:59.912' WHERE `contacts`.`deleted_at` IS NULL"} -[2023-06-28 17:13:00] [error] [aps_crm/model.(*ContactSearch).UpdateByMap:109] trace {"error": "WHERE conditions required", "elapsed": 0.001093, "rows": 0, "sql": "UPDATE `contacts` SET `isFirst`=false,`updated_at`='2023-06-28 17:13:00.291' WHERE `contacts`.`deleted_at` IS NULL"} -[2023-06-28 17:14:09] [error] [aps_crm/model.(*ContactSearch).UpdateByMap:109] trace {"error": "WHERE conditions required", "elapsed": 0, "rows": 0, "sql": "UPDATE `contacts` SET `isFirst`=false,`updated_at`='2023-06-28 17:14:09.657' WHERE `contacts`.`deleted_at` IS NULL"} -[2023-06-28 17:14:56] [error] [aps_crm/model.(*ContactSearch).UpdateByMap:113] trace {"error": "Error 1054 (42S22): Unknown column 'isFirst' in 'field list'", "elapsed": 0.0012111, "rows": 0, "sql": "UPDATE `contacts` SET `isFirst`=false,`updated_at`='2023-06-28 17:14:56.118' WHERE client_id = 5 AND `contacts`.`deleted_at` IS NULL"} -[2023-06-28 17:23:27] [error] [aps_crm/model.(*ContactSearch).Create:62] trace {"error": "Error 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`aps_crm`.`contacts`, CONSTRAINT `fk_clients_contacts` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`))", "elapsed": 0.0027926, "rows": 0, "sql": "INSERT INTO `contacts` (`name`,`number`,`client_id`,`position`,`phone`,`member_id`,`is_first`,`wechat`,`birthday`,`email`,`desc`,`country_id`,`province_id`,`city_id`,`region_id`,`created_at`,`updated_at`,`deleted_at`) VALUES ('杩欒繕鏄竴涓祴璇�','string',0,'string','string',12,true,'string','1970-01-01 16:00:00','string','string',0,0,0,0,'2023-06-28 17:23:27.45','2023-06-28 17:23:27.45',NULL)"} -[2023-06-28 17:24:00] [error] [aps_crm/model.(*ContactSearch).Create:62] trace {"error": "Error 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`aps_crm`.`contacts`, CONSTRAINT `fk_clients_contacts` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`))", "elapsed": 0.0061602, "rows": 0, "sql": "INSERT INTO `contacts` (`name`,`number`,`client_id`,`position`,`phone`,`member_id`,`is_first`,`wechat`,`birthday`,`email`,`desc`,`country_id`,`province_id`,`city_id`,`region_id`,`created_at`,`updated_at`,`deleted_at`) VALUES ('杩欒繕鏄竴涓祴璇�','string',0,'string','string',12,true,'string','1970-01-01 16:00:00','string','string',0,0,0,0,'2023-06-28 17:24:00.185','2023-06-28 17:24:00.185',NULL)"} -[2023-06-28 17:37:42] [error] [aps_crm/model.(*ContactSearch).Update:67] trace {"error": "WHERE conditions required", "elapsed": 0.0005442, "rows": 0, "sql": "UPDATE `contacts` SET `name`='杩欒繕鏄竴涓祴璇�',`number`='string',`client_id`=5,`position`='string',`phone`='string',`member_id`=12,`is_first`=true,`wechat`='string',`birthday`='1970-01-01 16:00:00',`email`='string',`desc`='string',`updated_at`='2023-06-28 17:37:42.529' WHERE `contacts`.`deleted_at` IS NULL"} -[2023-06-28 17:38:43] [error] [aps_crm/model.(*ContactSearch).Update:67] trace {"error": "WHERE conditions required", "elapsed": 0.0010533, "rows": 0, "sql": "UPDATE `contacts` SET `name`='杩欒繕鏄竴涓祴璇�',`number`='string',`client_id`=5,`position`='string',`phone`='string',`member_id`=12,`is_first`=true,`wechat`='string',`birthday`='1970-01-01 16:00:00',`email`='string',`desc`='string',`updated_at`='2023-06-28 17:38:43.585' WHERE `contacts`.`deleted_at` IS NULL"} -[2023-06-28 17:39:57] [error] [aps_crm/model.(*ContactSearch).Update:67] trace {"error": "WHERE conditions required", "elapsed": 0.0009104, "rows": 0, "sql": "UPDATE `contacts` SET `name`='杩欒繕鏄竴涓祴璇�',`number`='string',`client_id`=5,`position`='string',`phone`='string',`member_id`=12,`is_first`=true,`wechat`='string',`birthday`='1970-01-01 16:00:00',`email`='string',`desc`='string',`updated_at`='2023-06-28 17:39:57.729' WHERE `contacts`.`deleted_at` IS NULL"} -[2023-06-28 17:40:37] [error] [aps_crm/model.(*ContactSearch).Update:67] trace {"error": "WHERE conditions required", "elapsed": 0.0009064, "rows": 0, "sql": "UPDATE `contacts` SET `name`='杩欒繕鏄竴涓祴璇�',`number`='string',`client_id`=5,`position`='string',`phone`='string',`member_id`=12,`is_first`=true,`wechat`='string',`birthday`='1970-01-01 16:00:00',`email`='string',`desc`='string',`updated_at`='2023-06-28 17:40:37.561' WHERE `contacts`.`deleted_at` IS NULL"} -[2023-06-28 17:44:13] [error] [aps_crm/model.(*ContactSearch).Update:67] trace {"error": "WHERE conditions required", "elapsed": 0.000541, "rows": 0, "sql": "UPDATE `contacts` SET `name`='杩欒繕鏄竴涓祴璇�',`number`='string',`client_id`=5,`position`='string',`phone`='string',`member_id`=12,`is_first`=true,`wechat`='string',`birthday`='1970-01-01 16:00:00',`email`='string',`desc`='string',`updated_at`='2023-06-28 17:44:13.628' WHERE `contacts`.`deleted_at` IS NULL"} -[2023-06-28 17:47:39] [error] [aps_crm/model.(*ClientSearch).Create:60] trace {"error": "Error 1062 (23000): Duplicate entry 'string' for key 'name'", "elapsed": 0.0048814, "rows": 0, "sql": "INSERT INTO `clients` (`name`,`number`,`client_status_id`,`client_type_id`,`client_origin_id`,`client_level_id`,`member_id`,`service_member_id`,`detail_address`,`remark`,`next_visit_time`,`latest_service_time`,`country_id`,`province_id`,`city_id`,`region_id`,`representative`,`registration_time`,`registered_capital_id`,`industry_id`,`enterprise_nature_id`,`enterprise_scale_id`,`business_scope`,`created_at`,`updated_at`,`deleted_at`) VALUES ('string','string',12,0,0,0,12,0,'string','string','1970-01-01 08:00:00','1970-01-01 08:00:00',0,0,0,0,'','1970-01-01 08:00:00',0,0,0,0,'','2023-06-28 17:47:39.901','2023-06-28 17:47:39.901',NULL)"} -[2023-06-29 11:40:31] [error] [aps_crm/model.(*ClientStatusSearch).Create:46] trace {"error": "Error 1062 (23000): Duplicate entry '浠�涔堝鎴�' for key 'name'", "elapsed": 0.0034817, "rows": 0, "sql": "INSERT INTO `client_status` (`name`) VALUES ('浠�涔堝鎴�')"} -[2023-06-29 11:40:32] [error] [aps_crm/model.(*ClientStatusSearch).Create:46] trace {"error": "Error 1062 (23000): Duplicate entry '浠�涔堝鎴�' for key 'name'", "elapsed": 0.0031771, "rows": 0, "sql": "INSERT INTO `client_status` (`name`) VALUES ('浠�涔堝鎴�')"} -[2023-06-29 11:40:32] [error] [aps_crm/model.(*ClientStatusSearch).Create:46] trace {"error": "Error 1062 (23000): Duplicate entry '浠�涔堝鎴�' for key 'name'", "elapsed": 0.0030861, "rows": 0, "sql": "INSERT INTO `client_status` (`name`) VALUES ('浠�涔堝鎴�')"} -[2023-06-29 11:40:33] [error] [aps_crm/model.(*ClientStatusSearch).Create:46] trace {"error": "Error 1062 (23000): Duplicate entry '浠�涔堝鎴�' for key 'name'", "elapsed": 0.0034967, "rows": 0, "sql": "INSERT INTO `client_status` (`name`) VALUES ('浠�涔堝鎴�')"} -[2023-06-29 11:40:33] [error] [aps_crm/model.(*ClientStatusSearch).Create:46] trace {"error": "Error 1062 (23000): Duplicate entry '浠�涔堝鎴�' for key 'name'", "elapsed": 0.0025038, "rows": 0, "sql": "INSERT INTO `client_status` (`name`) VALUES ('浠�涔堝鎴�')"} -[2023-06-29 11:40:33] [error] [aps_crm/model.(*ClientStatusSearch).Create:46] trace {"error": "Error 1062 (23000): Duplicate entry '浠�涔堝鎴�' for key 'name'", "elapsed": 0.0024172, "rows": 0, "sql": "INSERT INTO `client_status` (`name`) VALUES ('浠�涔堝鎴�')"} -[2023-06-29 15:19:13] [error] [aps_crm/model.(*ClientStatusSearch).First:86] trace {"error": "record not found", "elapsed": 0.0005073, "rows": 0, "sql": "SELECT * FROM `client_status` WHERE id = 14 ORDER BY `client_status`.`id` LIMIT 1"} -[2023-06-29 15:24:23] [error] [aps_crm/model.(*ClientTypeSearch).First:86] trace {"error": "record not found", "elapsed": 0.0005318, "rows": 0, "sql": "SELECT * FROM `client_type` WHERE id = 110 ORDER BY `client_type`.`id` LIMIT 1"} -[2023-06-29 16:17:34] [error] [aps_crm/model.(*ClientOriginSearch).Create:44] trace {"error": "Error 1062 (23000): Duplicate entry '锜硅�佹澘' for key 'name'", "elapsed": 0.0029311, "rows": 0, "sql": "INSERT INTO `client_origin` (`name`) VALUES ('锜硅�佹澘')"} -[2023-06-29 16:17:34] [error] [aps_crm/model.(*ClientOriginSearch).Create:44] trace {"error": "Error 1062 (23000): Duplicate entry '锜硅�佹澘' for key 'name'", "elapsed": 0.0032711, "rows": 0, "sql": "INSERT INTO `client_origin` (`name`) VALUES ('锜硅�佹澘')"} -[2023-06-29 20:09:48] [error] [aps_crm/model.(*ClientTypeSearch).First:86] trace {"error": "record not found", "elapsed": 0.0011122, "rows": 0, "sql": "SELECT * FROM `client_type` WHERE id = 5 ORDER BY `client_type`.`id` LIMIT 1"} -[2023-06-30 11:44:26] [error] [aps_crm/model.(*IndustrySearch).Create:46] trace {"error": "Error 1062 (23000): Duplicate entry '娴嬭瘯' for key 'name'", "elapsed": 0.002451, "rows": 0, "sql": "INSERT INTO `industry` (`name`) VALUES ('娴嬭瘯')"} -[2023-06-30 14:55:56] [error] [aps_crm/model.(*EnterpriseNatureSearch).Create:46] trace {"error": "Error 1062 (23000): Duplicate entry '娴嬭瘯浼佷笟' for key 'name'", "elapsed": 0.0028795, "rows": 0, "sql": "INSERT INTO `enterprise_nature` (`name`) VALUES ('娴嬭瘯浼佷笟')"} -[2023-06-30 16:50:42] [error] [aps_crm/model.(*RegisteredCapitalSearch).Updates:73] trace {"error": "Error 1062 (23000): Duplicate entry 'string2' for key 'name'", "elapsed": 0.0017808, "rows": 0, "sql": "UPDATE `registered_capital` SET `name`='string2' WHERE id = 7"} -[2023-07-03 11:09:17] [error] [aps_crm/model.(*EnterpriseScaleSearch).Find:63] trace {"error": "record not found", "elapsed": 0.0011696, "rows": 0, "sql": "SELECT * FROM `enterprise_scale` WHERE id = 10 ORDER BY `enterprise_scale`.`id` LIMIT 1"} -[2023-07-03 11:09:19] [error] [aps_crm/model.(*EnterpriseScaleSearch).Find:63] trace {"error": "record not found", "elapsed": 0.0005372, "rows": 0, "sql": "SELECT * FROM `enterprise_scale` WHERE id = 11 ORDER BY `enterprise_scale`.`id` LIMIT 1"} -[2023-07-03 11:09:22] [error] [aps_crm/model.(*EnterpriseScaleSearch).Find:63] trace {"error": "record not found", "elapsed": 0.0005098, "rows": 0, "sql": "SELECT * FROM `enterprise_scale` WHERE id = 12 ORDER BY `enterprise_scale`.`id` LIMIT 1"} -[2023-07-03 11:19:14] [error] [aps_crm/model.(*EnterpriseScaleSearch).Create:46] trace {"error": "Error 1062 (23000): Duplicate entry '鍌婚��' for key 'name'", "elapsed": 0.0020095, "rows": 0, "sql": "INSERT INTO `enterprise_scale` (`name`) VALUES ('鍌婚��')"} -[2023-07-03 11:20:04] [error] [aps_crm/model.(*EnterpriseScaleSearch).Find:63] trace {"error": "record not found", "elapsed": 0.0005126, "rows": 0, "sql": "SELECT * FROM `enterprise_scale` WHERE id = 4 ORDER BY `enterprise_scale`.`id` LIMIT 1"} -[2023-07-04 10:59:56] [error] [aps_crm/model.(*SalesLeadsSearch).Create:79] trace {"error": "Error 1146 (42S02): Table 'aps_crm.sales_leads' doesn't exist", "elapsed": 0.0034692, "rows": 0, "sql": "INSERT INTO `sales_leads` (`name`,`number`,`contact_name`,`contact_phone`,`contact_position`,`sales_sources_id`,`member_id`,`sales_status`,`desc`,`country_id`,`province_id`,`city_id`,`region_id`,`created_at`,`updated_at`,`deleted_at`) VALUES ('杩欐槸涓�涓鎴�','LEA50','string','string','string',110,112,'1','string',0,0,0,0,'2023-07-04 10:59:56.539','2023-07-04 10:59:56.539',NULL)"} -[2023-07-04 11:04:41] [error] [aps_crm/model.(*SalesLeadsSearch).Update:84] trace {"error": "WHERE conditions required", "elapsed": 0.0022112, "rows": 0, "sql": "UPDATE `sales_leads` SET `name`='杩欐槸涓�涓鎴�',`number`='LEA50',`contact_name`='string',`contact_phone`='string',`contact_position`='string',`sales_sources_id`=110,`member_id`=120,`sales_status`='1',`desc`='123123123',`updated_at`='2023-07-04 11:04:41.981' WHERE `sales_leads`.`deleted_at` IS NULL"} -[2023-07-04 11:05:21] [error] [aps_crm/model.(*SalesLeadsSearch).Update:84] trace {"error": "WHERE conditions required", "elapsed": 0.0007035, "rows": 0, "sql": "UPDATE `sales_leads` SET `name`='杩欐槸涓�涓鎴�',`number`='LEA50',`contact_name`='string',`contact_phone`='string',`contact_position`='string',`sales_sources_id`=110,`member_id`=120,`sales_status`='1',`desc`='123123123',`updated_at`='2023-07-04 11:05:21.227' WHERE `sales_leads`.`deleted_at` IS NULL"} -[2023-07-04 11:06:05] [error] [aps_crm/model.(*SalesLeadsSearch).Update:84] trace {"error": "WHERE conditions required", "elapsed": 0.0009636, "rows": 0, "sql": "UPDATE `sales_leads` SET `name`='杩欐槸涓�涓鎴�',`number`='LEA50',`contact_name`='string',`contact_phone`='string',`contact_position`='string',`sales_sources_id`=110,`member_id`=120,`sales_status`='1',`desc`='123123123',`updated_at`='2023-07-04 11:06:05.259' WHERE `sales_leads`.`deleted_at` IS NULL"} -[2023-07-04 11:12:32] [error] [gorm.io/driver/mysql.Migrator.AlterColumn.func1:59] trace {"error": "Error 1062 (23000): Duplicate entry '杩欐槸涓�涓鎴�' for key 'name'", "elapsed": 0.0045154, "rows": 0, "sql": "ALTER TABLE `sales_leads` MODIFY COLUMN `name` varchar(255) UNIQUE COMMENT '鍏徃鍚嶇О'"} -[2023-07-04 11:12:32] [error] [main.main:29] model Init err:Error 1062 (23000): Duplicate entry '杩欐槸涓�涓鎴�' for key 'name' -[2023-07-04 11:13:13] [error] [aps_crm/model.(*SalesLeadsSearch).Create:79] trace {"error": "Error 1062 (23000): Duplicate entry '杩欐槸涓�涓鎴�' for key 'name'", "elapsed": 0.003706, "rows": 0, "sql": "INSERT INTO `sales_leads` (`name`,`number`,`contact_name`,`contact_phone`,`contact_position`,`sales_sources_id`,`member_id`,`sales_status`,`desc`,`country_id`,`province_id`,`city_id`,`region_id`,`created_at`,`updated_at`,`deleted_at`) VALUES ('杩欐槸涓�涓鎴�','LEA50','string','string','string',110,112,'1','string',0,0,0,0,'2023-07-04 11:13:13.402','2023-07-04 11:13:13.402',NULL)"} -[2023-07-04 13:46:36] [error] [aps_crm/model.(*SalesSourcesSearch).Create:46] trace {"error": "Error 1146 (42S02): Table 'aps_crm.sales_sources' doesn't exist", "elapsed": 0.0014411, "rows": 0, "sql": "INSERT INTO `sales_sources` (`name`) VALUES ('鐢佃瘽鏉ヨ')"} -[2023-07-04 16:19:59] [error] [aps_crm/model.(*ClientSearch).First:91] trace {"error": "record not found", "elapsed": 0.0036884, "rows": 0, "sql": "SELECT * FROM `clients` WHERE id = 110 AND `clients`.`deleted_at` IS NULL ORDER BY `clients`.`id` LIMIT 1"} -[2023-07-04 16:20:29] [error] [aps_crm/model.(*ClientSearch).First:91] trace {"error": "record not found", "elapsed": 0.0012979, "rows": 0, "sql": "SELECT * FROM `clients` WHERE id = 110 AND `clients`.`deleted_at` IS NULL ORDER BY `clients`.`id` LIMIT 1"} -[2023-07-04 16:50:20] [error] [aps_crm/model.(*ClientSearch).First:91] trace {"error": "record not found", "elapsed": 0.0011865, "rows": 0, "sql": "SELECT * FROM `clients` WHERE id = 8 AND `clients`.`deleted_at` IS NULL ORDER BY `clients`.`id` LIMIT 1"} -[2023-07-04 16:57:58] [error] [aps_crm/model.(*ClientSearch).First:91] trace {"error": "record not found", "elapsed": 0.0031332, "rows": 0, "sql": "SELECT * FROM `clients` WHERE id = 8 AND `clients`.`deleted_at` IS NULL ORDER BY `clients`.`id` LIMIT 1"} -[2023-07-04 16:58:50] [error] [aps_crm/model.(*FollowRecordSearch).Update:132] trace {"error": "WHERE conditions required", "elapsed": 0.0009061, "rows": 0, "sql": "UPDATE `follow_records` SET `client_id`=3,`member_id`=110,`number`='LXJL371',`contact_id`=32,`topic`='string',`sales_leads_id`=3,`follow_time`='1970-01-01 08:00:00',`next_follow_time`='1970-01-01 08:00:00',`purpose`='string',`content`='string',`updated_at`='2023-07-04 16:58:50.977' WHERE `follow_records`.`deleted_at` IS NULL"} -[2023-07-04 17:00:53] [error] [aps_crm/model.(*FollowRecordSearch).Update:132] trace {"error": "WHERE conditions required", "elapsed": 0.0009347, "rows": 0, "sql": "UPDATE `follow_records` SET `client_id`=3,`member_id`=110,`number`='LXJL371',`contact_id`=32,`topic`='string',`sales_leads_id`=3,`follow_time`='1970-01-01 08:00:00',`next_follow_time`='1970-01-01 08:00:00',`purpose`='string',`content`='string',`updated_at`='2023-07-04 17:00:53.907' WHERE `follow_records`.`deleted_at` IS NULL"} -[2023-07-04 17:01:37] [error] [aps_crm/model.(*FollowRecordSearch).Update:132] trace {"error": "WHERE conditions required", "elapsed": 0.0005444, "rows": 0, "sql": "UPDATE `follow_records` SET `client_id`=3,`member_id`=110,`number`='LXJL371',`contact_id`=32,`topic`='string',`sales_leads_id`=3,`follow_time`='1970-01-01 08:00:00',`next_follow_time`='1970-01-01 08:00:00',`purpose`='string',`content`='string',`updated_at`='2023-07-04 17:01:37.026' WHERE `follow_records`.`deleted_at` IS NULL"} -[2023-07-04 17:04:51] [error] [aps_crm/model.(*FollowRecordSearch).Update:132] trace {"error": "WHERE conditions required", "elapsed": 0.0005238, "rows": 0, "sql": "UPDATE `follow_records` SET `client_id`=3,`member_id`=110,`number`='LXJL371',`contact_id`=32,`topic`='string',`sales_leads_id`=3,`follow_time`='1970-01-01 08:00:00',`next_follow_time`='1970-01-01 08:00:00',`purpose`='string',`content`='string',`updated_at`='2023-07-04 17:04:51.636' WHERE `follow_records`.`deleted_at` IS NULL"} -[2023-07-06 13:52:06] [error] [gorm.io/driver/mysql.Migrator.AlterColumn.func1:59] trace {"error": "Error 1170 (42000): BLOB/TEXT column 'name' used in key specification without a key length", "elapsed": 0.0005897, "rows": 0, "sql": "ALTER TABLE `client_origin` MODIFY COLUMN `name` longtext"} -[2023-07-06 13:52:06] [error] [main.main:29] model Init err:Error 1170 (42000): BLOB/TEXT column 'name' used in key specification without a key length -[2023-07-06 13:52:52] [error] [gorm.io/driver/mysql.Migrator.AlterColumn.func1:59] trace {"error": "Error 1170 (42000): BLOB/TEXT column 'name' used in key specification without a key length", "elapsed": 0.0007521, "rows": 0, "sql": "ALTER TABLE `client_origin` MODIFY COLUMN `name` longtext"} -[2023-07-06 13:52:52] [error] [main.main:29] model Init err:Error 1170 (42000): BLOB/TEXT column 'name' used in key specification without a key length -[2023-07-06 13:55:26] [error] [gorm.io/driver/mysql.Migrator.AlterColumn.func1:59] trace {"error": "Error 1170 (42000): BLOB/TEXT column 'name' used in key specification without a key length", "elapsed": 0.0007354, "rows": 0, "sql": "ALTER TABLE `client_level` MODIFY COLUMN `name` longtext"} -[2023-07-06 13:55:26] [error] [main.main:29] model Init err:Error 1170 (42000): BLOB/TEXT column 'name' used in key specification without a key length -[2023-07-10 11:06:33] [error] [aps_crm/model.(*PossibilitySearch).Create:46] trace {"error": "Error 1146 (42S02): Table 'aps_crm.possibility' doesn't exist", "elapsed": 0.0032687, "rows": 0, "sql": "INSERT INTO `possibility` (`name`) VALUES ('10')"} -[2023-07-10 20:54:43] [error] [aps_crm/model.(*SubOrderSearch).Create:45] trace {"error": "Error 1146 (42S02): Table 'aps_crm.sub_order' doesn't exist", "elapsed": 0.001705, "rows": 0, "sql": "INSERT INTO `sub_order` (`client_id`,`member_id`,`master_order_id`,`number`,`created_at`,`updated_at`,`deleted_at`) VALUES (11,110,1,'AC6521','2023-07-10 20:54:43.768','2023-07-10 20:54:43.768',NULL)"} -[2023-07-11 10:43:59] [error] [gorm.io/gorm/migrator.Migrator.AutoMigrate:104] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", Products:[]model.Product(nil), Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field Products: define a valid foreign key for relations or implement the Valuer/Scanner interface -[2023-07-11 10:43:59] [error] [gorm.io/gorm/migrator.Migrator.CreateTable:198] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", Products:[]model.Product(nil), Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field Products: define a valid foreign key for relations or implement the Valuer/Scanner interface -[2023-07-11 10:43:59] [error] [main.main:29] model Init err:invalid field found for struct aps_crm/model.SubOrder's field Products: define a valid foreign key for relations or implement the Valuer/Scanner interface -[2023-07-11 11:31:58] [error] [gorm.io/gorm/migrator.Migrator.AutoMigrate:104] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", ProductOrder:model.ProductOrder{Id:0, Products:[]model.Product(nil)}, Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface -[2023-07-11 11:31:58] [error] [gorm.io/gorm/migrator.Migrator.CreateTable:198] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", ProductOrder:model.ProductOrder{Id:0, Products:[]model.Product(nil)}, Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface -[2023-07-11 11:31:58] [error] [main.main:29] model Init err:invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface -[2023-07-11 11:32:32] [error] [gorm.io/gorm/migrator.Migrator.AutoMigrate:104] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", ProductOrder:model.ProductOrder{Id:0, Products:[]model.Product(nil)}, Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface -[2023-07-11 11:32:32] [error] [gorm.io/gorm/migrator.Migrator.CreateTable:198] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", ProductOrder:model.ProductOrder{Id:0, Products:[]model.Product(nil)}, Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface -[2023-07-11 11:32:32] [error] [main.main:29] model Init err:invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface -[2023-07-11 11:33:55] [error] [gorm.io/gorm/migrator.Migrator.AutoMigrate:104] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", ProductOrder:model.ProductOrder{Id:0, Products:[]model.Product(nil)}, Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface -[2023-07-11 11:33:55] [error] [gorm.io/gorm/migrator.Migrator.CreateTable:198] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", ProductOrder:model.ProductOrder{Id:0, Products:[]model.Product(nil)}, Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface -[2023-07-11 11:33:55] [error] [main.main:29] model Init err:invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface -[2023-07-12 15:23:10] [error] [aps_crm/model.(*ContractSearch).Create:46] trace {"error": "Error 1146 (42S02): Table 'aps_crm.contract' doesn't exist", "elapsed": 0.003547, "rows": 0, "sql": "INSERT INTO `contract` (`client_id`,`member_id`,`number`,`quotation_id`,`status_id`,`file`) VALUES (11,11,'ZDYB02-2',0,0,'string')"} -[2023-07-13 10:55:49] [error] [aps_crm/model.(*ServiceContractSearch).FindAll:80] trace {"error": ": unsupported relations for schema ServiceContract", "elapsed": 0.001442, "rows": 2, "sql": "SELECT * FROM `service_contract`"} -[2023-07-13 10:57:45] [error] [aps_crm/model.(*ServiceContractSearch).FindAll:80] trace {"error": ": unsupported relations for schema ServiceContract", "elapsed": 0.0011591, "rows": 2, "sql": "SELECT * FROM `service_contract`"} -[2023-07-13 14:11:03] [error] [aps_crm/model.(*ServiceFollowupSearch).Create:53] trace {"error": "Error 1146 (42S02): Table 'aps_crm.service_followup' doesn't exist", "elapsed": 0.0024191, "rows": 0, "sql": "INSERT INTO `service_followup` (`client_id`,`number`,`contact_id`,`service_id`,`member_id`,`plan_id`,`satisfaction`,`timely_rate`,`solve_rate`,`is_visit`,`old_member_id`,`remark`,`file`) VALUES (0,'HF21',0,0,110,0,0,0,0,0,0,'string','string')"} -[2023-07-13 15:00:16] [error] [aps_crm/model.(*CustomerServiceSheetSearch).Create:46] trace {"error": "Error 1146 (42S02): Table 'aps_crm.customer_service_sheet' doesn't exist", "elapsed": 0.0020622, "rows": 0, "sql": "INSERT INTO `customer_service_sheet` (`member_id`,`number`,`service_mode`,`priority`,`handle_status`,`created_at`,`updated_at`,`deleted_at`) VALUES (110,'HF30',0,0,0,'2023-07-13 15:00:16.507','2023-07-13 15:00:16.507',NULL)"} -[2023-07-13 16:51:08] [error] [aps_crm/model.(*ServiceFeeManageSearch).Create:51] trace {"error": "Error 1146 (42S02): Table 'aps_crm.service_fee_manage' doesn't exist", "elapsed": 0.0153005, "rows": 0, "sql": "INSERT INTO `service_fee_manage` (`client_id`,`member_id`,`latest_date`,`remark`,`file`,`created_at`,`updated_at`,`deleted_at`) VALUES (11,11,'1970-01-01 08:00:00','string','string','2023-07-13 16:51:08.533','2023-07-13 16:51:08.533',NULL)"} -[2023-07-13 17:00:44] [error] [aps_crm/model.(*ServiceFeeManageSearch).Update:56] trace {"error": "Error 1292 (22007): Incorrect datetime value: '0000-00-00' for column 'created_at' at row 1", "elapsed": 0.0027936, "rows": 0, "sql": "UPDATE `service_fee_manage` SET `id`=1,`client_id`=11,`member_id`=11,`latest_date`='1970-01-01 08:00:00',`remark`='string',`file`='string',`created_at`='0000-00-00 00:00:00',`updated_at`='2023-07-13 17:00:44.246',`deleted_at`=NULL WHERE id = 1 AND `service_fee_manage`.`deleted_at` IS NULL"} -[2023-07-13 17:01:15] [error] [aps_crm/model.(*ServiceFeeManageSearch).Update:56] trace {"error": "Error 1292 (22007): Incorrect datetime value: '0000-00-00' for column 'created_at' at row 1", "elapsed": 0.0022256, "rows": 0, "sql": "UPDATE `service_fee_manage` SET `id`=1,`client_id`=11,`member_id`=11,`latest_date`='1970-01-01 08:00:00',`remark`='string',`file`='string',`created_at`='0000-00-00 00:00:00',`updated_at`='2023-07-13 17:01:15.183',`deleted_at`=NULL WHERE id = 1 AND `service_fee_manage`.`deleted_at` IS NULL"} -[2023-07-13 17:08:23] [error] [aps_crm/model.(*ServiceFeeManageSearch).Update:56] trace {"error": "Error 1292 (22007): Incorrect datetime value: '0000-00-00' for column 'created_at' at row 1", "elapsed": 0.0017581, "rows": 0, "sql": "UPDATE `service_fee_manage` SET `id`=1,`client_id`=11,`member_id`=11,`latest_date`='1970-01-01 08:00:00',`remark`='string',`file`='string',`created_at`='0000-00-00 00:00:00',`updated_at`='2023-07-13 17:08:23.099',`deleted_at`=NULL WHERE id = 1 AND `service_fee_manage`.`deleted_at` IS NULL"} -[2023-07-13 17:48:17] [error] [aps_crm/model.(*ClientSearch).Update:70] trace {"error": "Error 1292 (22007): Incorrect datetime value: '0000-00-00' for column 'registration_time' at row 1", "elapsed": 0.0058166, "rows": 0, "sql": "UPDATE `clients` SET `id`=11,`name`='string',`number`='string',`client_status_id`=1,`client_type_id`=0,`client_origin_id`=0,`client_level_id`=0,`member_id`=11,`service_member_id`=0,`detail_address`='string',`remark`='string',`next_visit_time`='1970-01-01 08:00:00',`latest_service_time`='1970-01-01 08:00:00',`country_id`=0,`province_id`=0,`city_id`=0,`region_id`=0,`representative`='',`registration_time`='0000-00-00 00:00:00',`registered_capital_id`=0,`industry_id`=0,`enterprise_nature_id`=0,`enterprise_scale_id`=0,`business_scope`='',`created_at`='0000-00-00 00:00:00',`updated_at`='2023-07-13 17:48:17.558',`deleted_at`=NULL WHERE id = 11 AND `clients`.`deleted_at` IS NULL"} -[2023-07-13 17:51:09] [error] [aps_crm/model.(*ClientSearch).Update:70] trace {"error": "Error 1292 (22007): Incorrect datetime value: '0000-00-00' for column 'registration_time' at row 1", "elapsed": 0.0012249, "rows": 0, "sql": "UPDATE `clients` SET `id`=11,`name`='string',`number`='string',`client_status_id`=1,`client_type_id`=0,`client_origin_id`=0,`client_level_id`=0,`member_id`=11,`service_member_id`=0,`detail_address`='string',`remark`='string',`next_visit_time`='1970-01-01 08:00:00',`latest_service_time`='1970-01-01 08:00:00',`country_id`=0,`province_id`=0,`city_id`=0,`region_id`=0,`representative`='',`registration_time`='0000-00-00 00:00:00',`registered_capital_id`=0,`industry_id`=0,`enterprise_nature_id`=0,`enterprise_scale_id`=0,`business_scope`='',`created_at`='0000-00-00 00:00:00',`updated_at`='2023-07-13 17:51:09.321',`deleted_at`=NULL WHERE id = 11 AND `clients`.`deleted_at` IS NULL"} -[2023-07-13 17:53:30] [error] [aps_crm/model.(*ClientSearch).Update:70] trace {"error": "Error 1292 (22007): Incorrect datetime value: '0000-00-00' for column 'registration_time' at row 1", "elapsed": 0.0027763, "rows": 0, "sql": "UPDATE `clients` SET `id`=11,`name`='string',`number`='string',`client_status_id`=1,`client_type_id`=0,`client_origin_id`=0,`client_level_id`=0,`member_id`=11,`service_member_id`=0,`detail_address`='string',`remark`='string',`next_visit_time`='1970-01-01 08:00:00',`latest_service_time`='1970-01-01 08:00:00',`country_id`=0,`province_id`=0,`city_id`=0,`region_id`=0,`representative`='',`registration_time`='0000-00-00 00:00:00',`registered_capital_id`=0,`industry_id`=0,`enterprise_nature_id`=0,`enterprise_scale_id`=0,`business_scope`='',`created_at`='0000-00-00 00:00:00',`updated_at`='2023-07-13 17:53:30.214',`deleted_at`=NULL WHERE id = 11 AND `clients`.`deleted_at` IS NULL"} -[2023-07-13 17:58:57] [error] [aps_crm/model.(*ClientSearch).Update:70] trace {"error": "Error 1292 (22007): Incorrect datetime value: '0000-00-00' for column 'created_at' at row 1", "elapsed": 0.0033448, "rows": 0, "sql": "UPDATE `clients` SET `id`=11,`name`='string',`number`='string',`client_status_id`=1,`client_type_id`=0,`client_origin_id`=0,`client_level_id`=0,`member_id`=11,`service_member_id`=0,`detail_address`='string',`remark`='string',`next_visit_time`='1970-01-01 08:00:00',`latest_service_time`='1970-01-01 08:00:00',`country_id`=0,`province_id`=0,`city_id`=1,`region_id`=0,`representative`='string',`registration_time`='1970-01-01 08:00:00',`registered_capital_id`=0,`industry_id`=0,`enterprise_nature_id`=0,`enterprise_scale_id`=0,`business_scope`='string',`created_at`='0000-00-00 00:00:00',`updated_at`='2023-07-13 17:58:57.549',`deleted_at`=NULL WHERE id = 11 AND `clients`.`deleted_at` IS NULL"} -[2023-07-13 17:59:36] [error] [aps_crm/model.(*ClientSearch).Update:70] trace {"error": "Error 1292 (22007): Incorrect datetime value: '0000-00-00' for column 'created_at' at row 1", "elapsed": 0.0011543, "rows": 0, "sql": "UPDATE `clients` SET `id`=11,`name`='string',`number`='string',`client_status_id`=1,`client_type_id`=0,`client_origin_id`=0,`client_level_id`=0,`member_id`=11,`service_member_id`=0,`detail_address`='string',`remark`='string',`next_visit_time`='1970-01-01 08:00:00',`latest_service_time`='1970-01-01 08:00:00',`country_id`=0,`province_id`=0,`city_id`=1,`region_id`=0,`representative`='string',`registration_time`='1970-01-01 08:00:00',`registered_capital_id`=0,`industry_id`=0,`enterprise_nature_id`=0,`enterprise_scale_id`=0,`business_scope`='string',`created_at`='0000-00-00 00:00:00',`updated_at`='2023-07-13 17:59:36.66',`deleted_at`=NULL WHERE id = 11 AND `clients`.`deleted_at` IS NULL"} -[2023-07-13 18:01:19] [error] [aps_crm/model.(*ClientSearch).Update:70] trace {"error": "Error 1292 (22007): Incorrect datetime value: '0000-00-00' for column 'created_at' at row 1", "elapsed": 0.0013602, "rows": 0, "sql": "UPDATE `clients` SET `id`=11,`name`='string',`number`='string',`client_status_id`=1,`client_type_id`=0,`client_origin_id`=0,`client_level_id`=0,`member_id`=11,`service_member_id`=0,`detail_address`='string',`remark`='string',`next_visit_time`='1970-01-01 08:00:00',`latest_service_time`='1970-01-01 08:00:00',`country_id`=0,`province_id`=0,`city_id`=1,`region_id`=0,`representative`='string',`registration_time`='1970-01-01 08:00:00',`registered_capital_id`=0,`industry_id`=0,`enterprise_nature_id`=0,`enterprise_scale_id`=0,`business_scope`='string',`created_at`='0000-00-00 00:00:00',`updated_at`='2023-07-13 18:01:19.088',`deleted_at`=NULL WHERE id = 11 AND `clients`.`deleted_at` IS NULL"} -[2023-07-13 18:01:58] [error] [aps_crm/model.(*ClientSearch).Update:70] trace {"error": "Error 1062 (23000): Duplicate entry 'string' for key 'name'", "elapsed": 0.0014261, "rows": 0, "sql": "UPDATE `clients` SET `id`=11,`name`='string',`number`='string',`client_status_id`=1,`member_id`=11,`detail_address`='string',`remark`='string',`next_visit_time`='1970-01-01 08:00:00',`latest_service_time`='1970-01-01 08:00:00',`city_id`=1,`representative`='string',`registration_time`='1970-01-01 08:00:00',`business_scope`='string',`updated_at`='2023-07-13 18:01:58.989' WHERE id = 11 AND `clients`.`deleted_at` IS NULL"} diff --git a/middleware/casbin_rbac.go b/middleware/casbin_rbac.go new file mode 100644 index 0000000..db77b33 --- /dev/null +++ b/middleware/casbin_rbac.go @@ -0,0 +1,39 @@ +package middleware + +import ( + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "aps_crm/service" + "aps_crm/utils" + "strconv" + "strings" + + "github.com/gin-gonic/gin" +) + +var casbinService = service.ServiceGroup.CasbinService + +// CasbinHandler 鎷︽埅鍣� +func CasbinHandler() gin.HandlerFunc { + return func(c *gin.Context) { + waitUse, _ := utils.GetClaims(c) + ctx := new(contextx.Context).SetCtx(c) + //鑾峰彇璇锋眰鐨凱ATH + path := c.Request.URL.Path + //obj := strings.TrimPrefix(path, global.GVA_CONFIG.System.RouterPrefix) + obj := strings.TrimPrefix(path, "") + // 鑾峰彇璇锋眰鏂规硶 + act := c.Request.Method + // 鑾峰彇鐢ㄦ埛鐨勮鑹� + sub := strconv.Itoa(int(waitUse.AuthorityId)) + e := casbinService.Casbin() // 鍒ゆ柇绛栫暐涓槸鍚﹀瓨鍦� + success, _ := e.Enforce(sub, obj, act) + if !success { + // response.FailWithDetailed(gin.H{}, "鏉冮檺涓嶈冻", c) + c.Abort() + ctx.Fail(ecode.NoPowerErr) + return + } + c.Next() + } +} diff --git a/middleware/jwt.go b/middleware/jwt.go index d1f97b7..9ca981c 100644 --- a/middleware/jwt.go +++ b/middleware/jwt.go @@ -1,12 +1,17 @@ package middleware import ( + "aps_crm/conf" + "aps_crm/model" "aps_crm/pkg/contextx" "aps_crm/pkg/ecode" + "aps_crm/pkg/logx" "aps_crm/service" "aps_crm/utils" "github.com/gin-gonic/gin" + "strconv" "strings" + "time" ) var jwtService = service.ServiceGroup.JwtService @@ -52,24 +57,24 @@ // response.FailWithDetailed(gin.H{"reload": true}, err.Error(), c) // c.Abort() //} - //if claims.ExpiresAt-time.Now().Unix() < claims.BufferTime { - // dr, _ := utils.ParseDuration(conf.Conf.JWT.ExpiresTime) - // claims.ExpiresAt = time.Now().Add(dr).Unix() - // newToken, _ := j.CreateTokenByOldToken(token, *claims) - // newClaims, _ := j.ParseToken(newToken) - // c.Header("new-token", newToken) - // c.Header("new-expires-at", strconv.FormatInt(newClaims.ExpiresAt, 10)) - // if conf.Conf.System.UseMultipoint { - // RedisJwtToken, err := jwtService.GetRedisJWT(newClaims.Username) - // if err != nil { - // logx.Errorf("get redis jwt failed err:%v", err) - // } else { // 褰撲箣鍓嶇殑鍙栨垚鍔熸椂鎵嶈繘琛屾媺榛戞搷浣� - // _ = jwtService.JsonInBlacklist(model.JwtBlacklist{Jwt: RedisJwtToken}) - // } - // // 鏃犺濡備綍閮借璁板綍褰撳墠鐨勬椿璺冪姸鎬� - // _ = jwtService.SetRedisJWT(newToken, newClaims.Username) - // } - //} + if claims.ExpiresAt-time.Now().Unix() < claims.BufferTime { + dr, _ := utils.ParseDuration(conf.Conf.JWT.ExpiresTime) + claims.ExpiresAt = time.Now().Add(dr).Unix() + newToken, _ := j.CreateTokenByOldToken(token, *claims) + newClaims, _ := j.ParseToken(newToken) + c.Header("new-token", newToken) + c.Header("new-expires-at", strconv.FormatInt(newClaims.ExpiresAt, 10)) + if conf.Conf.System.UseMultipoint { + RedisJwtToken, err := jwtService.GetRedisJWT(newClaims.Username) + if err != nil { + logx.Errorf("get redis jwt failed err:%v", err) + } else { // 褰撲箣鍓嶇殑鍙栨垚鍔熸椂鎵嶈繘琛屾媺榛戞搷浣� + _ = jwtService.JsonInBlacklist(model.JwtBlacklist{Jwt: RedisJwtToken}) + } + // 鏃犺濡備綍閮借璁板綍褰撳墠鐨勬椿璺冪姸鎬� + _ = jwtService.SetRedisJWT(newToken, newClaims.Username) + } + } c.Set("claims", claims) c.Next() } diff --git a/model/authority.go b/model/authority.go new file mode 100644 index 0000000..b05889b --- /dev/null +++ b/model/authority.go @@ -0,0 +1,67 @@ +package model + +import ( + "aps_crm/pkg/mysqlx" + "gorm.io/gorm" +) + +type ( + Authority struct { + AuthorityId uint `json:"authorityId" gorm:"not null;unique;primary_key;comment:瑙掕壊ID;size:90"` // 瑙掕壊ID + AuthorityName string `json:"authorityName" gorm:"comment:瑙掕壊鍚�"` // 瑙掕壊鍚� + Users []User `json:"-" gorm:"many2many:user_authority;"` + Menus []Menu `json:"menus" gorm:"many2many:authority_menus;"` + DefaultRouter string `json:"defaultRouter" gorm:"comment:榛樿鑿滃崟;default:dashboard"` // 榛樿鑿滃崟(榛樿dashboard) + gorm.Model `json:"-"` + } + + SysAuthoritySearch struct { + Authority + Orm *gorm.DB + } +) + +func (Authority) TableName() string { + return "sys_authorities" +} + +func NewSysAuthoritySearch() *SysAuthoritySearch { + return &SysAuthoritySearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *SysAuthoritySearch) build() *gorm.DB { + var db = slf.Orm.Model(&Authority{}) + if slf.AuthorityId != 0 { + db = db.Where("authority_id = ?", slf.AuthorityId) + } + + return db +} + +func (slf *SysAuthoritySearch) Create(record *Authority) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *SysAuthoritySearch) Delete() error { + var db = slf.build() + return db.Delete(&Authority{}).Error +} + +func (slf *SysAuthoritySearch) Update(record *Authority) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *SysAuthoritySearch) Find() (result Authority, err error) { + var db = slf.build() + err = db.First(&result).Error + return +} + +func (slf *SysAuthoritySearch) SetAuthorityId(id uint) *SysAuthoritySearch { + slf.AuthorityId = id + return slf +} diff --git a/model/menu.go b/model/menu.go index b74a46f..715f476 100644 --- a/model/menu.go +++ b/model/menu.go @@ -4,25 +4,16 @@ "aps_crm/pkg/mysqlx" "fmt" "gorm.io/gorm" - "time" ) type ( Menu struct { - ID uint `json:"id" gorm:"type:bigint(20);primaryKey"` // 涓婚敭ID - ParentId uint `json:"parentId" gorm:"index;type:bigint(20);comment:鐖惰彍鍗旾D"` - Path string `json:"path" gorm:"type:varchar(255);comment:璺敱path"` - Name string `json:"name" gorm:"type:varchar(255);comment:name"` - Title string `json:"title" gorm:"type:varchar(255);comment:鏍囬"` - Sort int `json:"sort" gorm:"type:int(11);comment:鎺掑簭鏍囪"` - Icon string `json:"icon" gorm:"type:varchar(512);comment:鑿滃崟鍥炬爣"` - Hidden bool `json:"hidden" gorm:"type:tinyint(1);comment:鏄惁闅愯棌"` - Type int `json:"type" gorm:"type:int(11);comment:绫诲瀷 0-鐩綍 1-鑿滃崟 2-鎸夐挳"` - CreateTime int64 `json:"-" gorm:"type:bigint(20);comment:鍒涘缓鏃堕棿"` - UpdateTime int64 `json:"-" gorm:"type:bigint(20);comment:鏇存柊鏃堕棿"` - Children []*Menu `json:"children" gorm:"-"` - CreateAt string `json:"createAt" gorm:"-"` // 鍒涘缓鏃堕棿 - UpdateAt string `json:"updateAt" gorm:"-"` // 鏇存柊鏃堕棿 + ID uint `json:"id" gorm:"type:bigint(20);primaryKey"` // 涓婚敭ID + ParentId uint `json:"parentId" gorm:"index;type:bigint(20);comment:鐖惰彍鍗旾D"` + Path string `json:"path" gorm:"type:varchar(255);comment:璺敱path"` + Name string `json:"name" gorm:"type:varchar(255);comment:name"` + Title string `json:"title" gorm:"type:varchar(255);comment:鏍囬"` + Children []*Menu `json:"children" gorm:"-"` } MenuSearch struct { @@ -37,28 +28,6 @@ func (slf Menu) TableName() string { return "menu" -} - -func (slf *Menu) BeforeCreate(tx *gorm.DB) error { - slf.CreateTime = time.Now().Unix() - slf.UpdateTime = slf.CreateTime - return nil -} - -func (slf *Menu) BeforeSave(tx *gorm.DB) error { - slf.UpdateTime = time.Now().Unix() - return nil -} - -func (slf *Menu) BeforeUpdate(tx *gorm.DB) error { - slf.UpdateTime = time.Now().Unix() - return nil -} - -func (slf *Menu) AfterFind(tx *gorm.DB) error { - slf.CreateAt = time.Unix(slf.CreateTime, 0).Format("2006-01-02 15:04:05") - slf.UpdateAt = time.Unix(slf.UpdateTime, 0).Format("2006-01-02 15:04:05") - return nil } func NewMenuSearch(db *gorm.DB) *MenuSearch { @@ -140,7 +109,7 @@ func (slf *MenuSearch) CreateBatch(records []*Menu) error { var db = slf.build() - if err := db.Create(&records).Error; err != nil { + if err := db.Save(&records).Error; err != nil { return fmt.Errorf("create batch err: %v, records: %+v", err, records) } @@ -277,3 +246,16 @@ return records, nil } + +func (slf *MenuSearch) FindAll() ([]*Menu, error) { + var ( + records = make([]*Menu, 0) + db = slf.build() + ) + + if err := db.Find(&records).Error; err != nil { + return records, fmt.Errorf("find all err: %v", err) + } + + return records, nil +} diff --git a/model/request/authority.go b/model/request/authority.go new file mode 100644 index 0000000..287f7b6 --- /dev/null +++ b/model/request/authority.go @@ -0,0 +1,10 @@ +package request + +type AddAuthority struct { + AuthorityName string `json:"authorityName"` +} + +type SetAuthorityMenu struct { + AuthorityId uint `json:"authorityId"` + Menus []uint `json:"menus"` +} diff --git a/model/request/jwt.go b/model/request/jwt.go index 7f1efa1..1b2f444 100644 --- a/model/request/jwt.go +++ b/model/request/jwt.go @@ -13,8 +13,9 @@ } type BaseClaims struct { - UserId string - Username string - ParentId string - UserType constvar.UserType + UserId string + Username string + ParentId string + UserType constvar.UserType + AuthorityId uint } diff --git a/model/response/response.go b/model/response/response.go index b22ccdf..08d86e3 100644 --- a/model/response/response.go +++ b/model/response/response.go @@ -173,4 +173,8 @@ ServiceFeeManageResponse struct { List []*model.ServiceFeeManage `json:"list"` } + + MenuTreeResponse struct { + List []*model.Menu `json:"list"` + } ) diff --git a/pkg/ecode/code.go b/pkg/ecode/code.go index f6ebb8a..cc8acc3 100644 --- a/pkg/ecode/code.go +++ b/pkg/ecode/code.go @@ -268,4 +268,13 @@ ServiceFeeManageUpdateErr = 3700005 // 鏇存柊鏈嶅姟璐圭鐞嗗け璐� ServiceFeeManageDeleteErr = 3700006 // 鍒犻櫎鏈嶅姟璐圭鐞嗗け璐� + RoleExist = 3800001 // 瑙掕壊宸插瓨鍦� + RoleNotExist = 3800002 // 瑙掕壊涓嶅瓨鍦� + RoleListErr = 3800003 // 鑾峰彇瑙掕壊鍒楄〃澶辫触 + RoleSetErr = 3800004 // 璁剧疆瑙掕壊澶辫触 + RoleUpdateErr = 3800005 // 鏇存柊瑙掕壊澶辫触 + RoleDeleteErr = 3800006 // 鍒犻櫎瑙掕壊澶辫触 + RoleDeleteErr1 = 3800007 // 璇ヨ鑹蹭笅瀛樺湪鐢ㄦ埛锛屾棤娉曞垹闄� + + MenuListErr = 3900001 // 鑾峰彇鑿滃崟鍒楄〃澶辫触 ) diff --git a/router/authority.go b/router/authority.go new file mode 100644 index 0000000..64f8160 --- /dev/null +++ b/router/authority.go @@ -0,0 +1,21 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +type AuthorityRouter struct{} + +func (s *AuthorityRouter) InitAuthorityRouter(router *gin.RouterGroup) { + authorityRouter := router.Group("authority") + authorityApi := v1.ApiGroup.AuthorityApi + { + authorityRouter.POST("add", authorityApi.CreateAuthority) // 鏂板瑙掕壊 + //authorityRouter.DELETE("delete", authorityApi.Delete) // 鍒犻櫎瑙掕壊 + //authorityRouter.PUT("update", authorityApi.Update) // 鏇存柊瑙掕壊 + //authorityRouter.POST("getAuthorityList", authorityApi.GetAuthorityList) // 鑾峰彇瑙掕壊鍒楄〃 + authorityRouter.POST("setDataAuthority", authorityApi.SetDataAuthority) // 璁剧疆瑙掕壊璧勬簮鏉冮檺 + //authorityRouter.POST("getAuthorityId", authorityApi.GetAuthorityId) // 鑾峰彇鎸囧畾瑙掕壊鏉冮檺 + } +} diff --git a/router/index.go b/router/index.go index f4bf5a5..86e30e3 100644 --- a/router/index.go +++ b/router/index.go @@ -50,6 +50,8 @@ ServiceFollowupRouter CustomerServiceSheetRouter ServiceFeeManageRouter + AuthorityRouter + MenuRouter } func InitRouter() *gin.Engine { @@ -77,7 +79,7 @@ } PrivateGroup := Router.Group("api") - //PrivateGroup.Use(middleware.JWTAuth()) + //PrivateGroup.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler()) { routerGroup.InitJwtRouter(PrivateGroup) // jwt鐩稿叧璺敱 routerGroup.InitUserRouter(PrivateGroup) // 娉ㄥ唽鐢ㄦ埛璺敱 @@ -117,6 +119,8 @@ routerGroup.InitServiceFollowupRouter(PrivateGroup) // 娉ㄥ唽serviceFollowup璺敱 routerGroup.InitCustomerServiceSheetRouter(PrivateGroup) // 娉ㄥ唽customerServiceSheet璺敱 routerGroup.InitServiceFeeManageRouter(PrivateGroup) // 娉ㄥ唽serviceFeeManage璺敱 + routerGroup.InitAuthorityRouter(PrivateGroup) // 娉ㄥ唽authority璺敱 + routerGroup.InitMenuRouter(PrivateGroup) // 娉ㄥ唽menu璺敱 } return Router } diff --git a/router/menu.go b/router/menu.go new file mode 100644 index 0000000..5f8a141 --- /dev/null +++ b/router/menu.go @@ -0,0 +1,16 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +type MenuRouter struct{} + +func (m *MenuRouter) InitMenuRouter(router *gin.RouterGroup) { + menuRouter := router.Group("menu") + menuApi := v1.ApiGroup.MenuApi + { + menuRouter.GET("getMenu", menuApi.List) // 鑾峰彇鑿滃崟鏍� + } +} diff --git a/service/authority.go b/service/authority.go new file mode 100644 index 0000000..b2aefb2 --- /dev/null +++ b/service/authority.go @@ -0,0 +1,91 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/pkg/ecode" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "gorm.io/gorm" + "strconv" +) + +type AuthorityService struct{} + +var AuthorityServiceApp = new(AuthorityService) + +func (authorityService *AuthorityService) CreateAuthority(auth model.Authority) int { + _, err := model.NewSysAuthoritySearch().SetAuthorityId(auth.AuthorityId).Find() + if err != gorm.ErrRecordNotFound { + return ecode.RoleExist + } + + err = model.NewSysAuthoritySearch().Create(&auth) + if err != nil { + return ecode.SubOrderExist + } + + return ecode.OK +} + +func (authorityService *AuthorityService) UpdateAuthority(auth model.Authority) int { + _, err := model.NewSysAuthoritySearch().SetAuthorityId(auth.AuthorityId).Find() + if err != nil { + return ecode.RoleNotExist + } + + err = model.NewSysAuthoritySearch().SetAuthorityId(auth.AuthorityId).Update(&auth) + + return ecode.OK +} + +func (authorityService *AuthorityService) DeleteAuthority(auth *model.Authority) int { + _, err := model.NewSysAuthoritySearch().SetAuthorityId(auth.AuthorityId).Find() + if err != nil { + return ecode.RoleNotExist + } + + if len(auth.Users) != 0 { + return ecode.RoleDeleteErr1 + } + + authorityId := strconv.Itoa(int(auth.AuthorityId)) + CasbinServiceApp.ClearCasbin(0, authorityId) + return ecode.OK +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetAuthorityInfo +//@description: 鑾峰彇鎵�鏈夎鑹蹭俊鎭� +//@param: auth model.Authority +//@return: sa system.Authority, err error + +func (authorityService *AuthorityService) GetAuthorityInfo(auth system.SysAuthority) (sa system.SysAuthority, err error) { + err = global.GVA_DB.Preload("DataAuthorityId").Where("authority_id = ?", auth.AuthorityId).First(&sa).Error + return sa, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: SetDataAuthority +//@description: 璁剧疆瑙掕壊璧勬簮鏉冮檺 +//@param: auth model.Authority +//@return: error + +func (authorityService *AuthorityService) SetDataAuthority(auth system.SysAuthority) error { + var s system.SysAuthority + global.GVA_DB.Preload("DataAuthorityId").First(&s, "authority_id = ?", auth.AuthorityId) + err := global.GVA_DB.Model(&s).Association("DataAuthorityId").Replace(&auth.DataAuthorityId) + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: SetMenuAuthority +//@description: 鑿滃崟涓庤鑹茬粦瀹� +//@param: auth *model.Authority +//@return: error + +func (authorityService *AuthorityService) SetMenuAuthority(auth *system.SysAuthority) error { + var s system.SysAuthority + global.GVA_DB.Preload("SysBaseMenus").First(&s, "authority_id = ?", auth.AuthorityId) + err := global.GVA_DB.Model(&s).Association("SysBaseMenus").Replace(&auth.SysBaseMenus) + return err +} diff --git a/service/casbin.go b/service/casbin.go new file mode 100644 index 0000000..38ec1d0 --- /dev/null +++ b/service/casbin.go @@ -0,0 +1,135 @@ +package service + +import ( + "errors" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "strconv" + "sync" + + "github.com/casbin/casbin/v2" + "github.com/casbin/casbin/v2/model" + gormadapter "github.com/casbin/gorm-adapter/v3" + _ "github.com/go-sql-driver/mysql" + "go.uber.org/zap" +) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: UpdateCasbin +//@description: 鏇存柊casbin鏉冮檺 +//@param: authorityId string, casbinInfos []request.CasbinInfo +//@return: error + +type CasbinService struct{} + +var CasbinServiceApp = new(CasbinService) + +func (casbinService *CasbinService) UpdateCasbin(AuthorityID uint, casbinInfos []request.CasbinInfo) error { + authorityId := strconv.Itoa(int(AuthorityID)) + casbinService.ClearCasbin(0, authorityId) + rules := [][]string{} + for _, v := range casbinInfos { + rules = append(rules, []string{authorityId, v.Path, v.Method}) + } + e := casbinService.Casbin() + success, _ := e.AddPolicies(rules) + if !success { + return errors.New("瀛樺湪鐩稿悓api,娣诲姞澶辫触,璇疯仈绯荤鐞嗗憳") + } + return nil +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: UpdateCasbinApi +//@description: API鏇存柊闅忓姩 +//@param: oldPath string, newPath string, oldMethod string, newMethod string +//@return: error + +func (casbinService *CasbinService) UpdateCasbinApi(oldPath string, newPath string, oldMethod string, newMethod string) error { + err := global.GVA_DB.Model(&gormadapter.CasbinRule{}).Where("v1 = ? AND v2 = ?", oldPath, oldMethod).Updates(map[string]interface{}{ + "v1": newPath, + "v2": newMethod, + }).Error + e := casbinService.Casbin() + err = e.LoadPolicy() + if err != nil { + return err + } + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetPolicyPathByAuthorityId +//@description: 鑾峰彇鏉冮檺鍒楄〃 +//@param: authorityId string +//@return: pathMaps []request.CasbinInfo + +func (casbinService *CasbinService) GetPolicyPathByAuthorityId(AuthorityID uint) (pathMaps []request.CasbinInfo) { + e := casbinService.Casbin() + authorityId := strconv.Itoa(int(AuthorityID)) + list := e.GetFilteredPolicy(0, authorityId) + for _, v := range list { + pathMaps = append(pathMaps, request.CasbinInfo{ + Path: v[1], + Method: v[2], + }) + } + return pathMaps +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: ClearCasbin +//@description: 娓呴櫎鍖归厤鐨勬潈闄� +//@param: v int, p ...string +//@return: bool + +func (casbinService *CasbinService) ClearCasbin(v int, p ...string) bool { + e := casbinService.Casbin() + success, _ := e.RemoveFilteredPolicy(v, p...) + return success +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: Casbin +//@description: 鎸佷箙鍖栧埌鏁版嵁搴� 寮曞叆鑷畾涔夎鍒� +//@return: *casbin.Enforcer + +var ( + syncedCachedEnforcer *casbin.SyncedCachedEnforcer + once sync.Once +) + +func (casbinService *CasbinService) Casbin() *casbin.SyncedCachedEnforcer { + once.Do(func() { + a, err := gormadapter.NewAdapterByDB(global.GVA_DB) + if err != nil { + zap.L().Error("閫傞厤鏁版嵁搴撳け璐ヨ妫�鏌asbin琛ㄦ槸鍚︿负InnoDB寮曟搸!", zap.Error(err)) + return + } + text := ` + [request_definition] + r = sub, obj, act + + [policy_definition] + p = sub, obj, act + + [role_definition] + g = _, _ + + [policy_effect] + e = some(where (p.eft == allow)) + + [matchers] + m = r.sub == p.sub && keyMatch2(r.obj,p.obj) && r.act == p.act + ` + m, err := model.NewModelFromString(text) + if err != nil { + zap.L().Error("瀛楃涓插姞杞芥ā鍨嬪け璐�!", zap.Error(err)) + return + } + syncedCachedEnforcer, _ = casbin.NewSyncedCachedEnforcer(m, a) + syncedCachedEnforcer.SetExpireTime(60 * 60) + _ = syncedCachedEnforcer.LoadPolicy() + }) + return syncedCachedEnforcer +} diff --git a/service/index.go b/service/index.go index bd133db..9ee20bc 100644 --- a/service/index.go +++ b/service/index.go @@ -39,6 +39,9 @@ FollowupService CustomerServiceSheetService FeeManageService + CasbinService + AuthorityService + MenuService } var ServiceGroup = new(Group) diff --git a/service/menu.go b/service/menu.go new file mode 100644 index 0000000..3f11055 --- /dev/null +++ b/service/menu.go @@ -0,0 +1,17 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/pkg/ecode" +) + +type MenuService struct{} + +func (MenuService) GetMenuTree() ([]*model.Menu, int) { + list, err := model.NewMenuSearch(nil).FindAll() + if err != nil { + return nil, ecode.MenuListErr + } + + return list, ecode.OK +} diff --git a/source/menu.go b/source/menu.go index fa71fd3..18ed3aa 100644 --- a/source/menu.go +++ b/source/menu.go @@ -22,31 +22,18 @@ func (i *initMenu) InitializeData(ctx context.Context) (next context.Context, err error) { entities := []*model.Menu{ - {ID: 1, Hidden: false, ParentId: 0, Path: "", Name: "", Title: "杞﹂棿绠$悊", Sort: 1, Icon: "home", Type: 0}, - {ID: 2, Hidden: false, ParentId: 1, Path: "/facilty", Name: "", Title: "璁惧绠$悊", Sort: 2, Icon: "object-ungroup", Type: 1}, - {ID: 3, Hidden: false, ParentId: 1, Path: "/faciltyResource", Name: "", Title: "璁惧璧勬簮", Sort: 3, Icon: "object-group", Type: 1}, - {ID: 4, Hidden: false, ParentId: 1, Path: "/oricedureDiagram", Name: "", Title: "璁惧宸ュ簭鍥�", Sort: 4, Icon: "object-group", Type: 1}, + {ID: 1, ParentId: 0, Path: "", Name: "", Title: "瀹㈡埛绠$悊"}, + {ID: 2, ParentId: 1, Path: "/client", Name: "", Title: "瀹㈡埛绠$悊"}, - {ID: 5, Hidden: false, ParentId: 0, Path: "", Name: "", Title: "鐢熶骇璁″垝", Sort: 5, Icon: "paper-plane", Type: 0}, - {ID: 6, Hidden: false, ParentId: 5, Path: "/orderManagement", Name: "", Title: "璁㈠崟绠$悊", Sort: 6, Icon: "files-o", Type: 1}, - {ID: 7, Hidden: false, ParentId: 5, Path: "/plannedProduction", Name: "", Title: "璁″垝鐢熶骇", Sort: 7, Icon: "", Type: 1}, - {ID: 8, Hidden: false, ParentId: 5, Path: "/Scheduling", Name: "", Title: "鐢熶骇鎺掔▼", Sort: 8, Icon: "delicious", Type: 1}, - {ID: 9, Hidden: false, ParentId: 5, Path: "/productionProcess", Name: "", Title: "鐢熶骇宸ュ簭琛�", Sort: 9, Icon: "", Type: 1}, + {ID: 3, ParentId: 0, Path: "", Name: "", Title: "閿�鍞鐞�"}, + {ID: 4, ParentId: 3, Path: "/saleChance", Name: "", Title: "閿�鍞満浼�"}, - {ID: 10, Hidden: false, ParentId: 0, Path: "", Name: "", Title: "鍩虹鏁版嵁", Sort: 10, Icon: "database", Type: 0}, - {ID: 11, Hidden: false, ParentId: 10, Path: "/inventory", Name: "", Title: "BOM绠$悊", Sort: 11, Icon: "film", Type: 1}, - {ID: 12, Hidden: false, ParentId: 10, Path: "/bomCraft", Name: "", Title: "浜у搧/宸ュ簭", Sort: 12, Icon: "sliders", Type: 1}, - {ID: 13, Hidden: false, ParentId: 10, Path: "/humanResource", Name: "", Title: "浜哄姏璧勬簮", Sort: 13, Icon: "", Type: 1}, - {ID: 14, Hidden: false, ParentId: 10, Path: "/calendar", Name: "", Title: "鐢熶骇鏃ュ巻", Sort: 14, Icon: "user", Type: 1}, - {ID: 15, Hidden: false, ParentId: 10, Path: "/abilityModel", Name: "", Title: "妯℃澘绠$悊", Sort: 15, Icon: "connectdevelop", Type: 1}, - {ID: 16, Hidden: false, ParentId: 10, Path: "/mouldManagement", Name: "", Title: "妯″叿绠$悊", Sort: 16, Icon: "", Type: 1}, - {ID: 17, Hidden: false, ParentId: 10, Path: "/gauge", Name: "", Title: "妫�鍏风鐞�", Sort: 17, Icon: "", Type: 1}, - {ID: 18, Hidden: false, ParentId: 10, Path: "/transportation", Name: "", Title: "瑙勮寖绠$悊", Sort: 18, Icon: "", Type: 1}, - {ID: 19, Hidden: false, ParentId: 10, Path: "/proccessModel", Name: "", Title: "宸ヨ壓妯″瀷", Sort: 19, Icon: "", Type: 1}, - {ID: 20, Hidden: false, ParentId: 10, Path: "/dictionary", Name: "", Title: "鏁版嵁閰嶇疆", Sort: 20, Icon: "", Type: 1}, + {ID: 5, ParentId: 0, Path: "", Name: "", Title: "鏈嶅姟绠$悊"}, + {ID: 6, ParentId: 5, Path: "/serviceContract", Name: "", Title: "鏈嶅姟鍚堝悓"}, - {ID: 21, Hidden: false, ParentId: 0, Path: "", Name: "", Title: "绯荤粺璁剧疆", Sort: 21, Icon: "database", Type: 0}, - {ID: 22, Hidden: false, ParentId: 21, Path: "/system/userManage", Name: "", Title: "绠$悊鍛樼鐞�", Sort: 22, Icon: "film", Type: 1}, + {ID: 7, ParentId: 0, Path: "", Name: "", Title: "鍚庡彴璁剧疆"}, + {ID: 8, ParentId: 7, Path: "/member", Name: "", Title: "鎴愬憳绠$悊"}, + {ID: 9, ParentId: 7, Path: "/role", Name: "", Title: "瑙掕壊绠$悊"}, } if err = model.NewMenuSearch(nil).CreateBatch(entities); err != nil { return ctx, errors.Wrap(err, i.InitializerName()+"琛ㄦ暟鎹垵濮嬪寲澶辫触!") -- Gitblit v1.8.0