From 6b012033623d53a65dc63371cb83fb4f93600978 Mon Sep 17 00:00:00 2001 From: ch3nnn Date: Sun, 21 May 2023 13:08:40 +0800 Subject: [PATCH 1/4] feat: multiple add site url --- assets/templates/site/site_add.html | 4 +-- go.mod | 6 ++-- go.sum | 14 +++++---- internal/api/site/func_create.go | 32 +++++++++++--------- internal/api/site/func_list.go | 23 +++++++------- internal/api/site/func_updateused.go | 5 +-- internal/repository/mysql/site/gen_model.go | 9 +++++- internal/services/site/service.go | 4 +-- internal/services/site/service_create.go | 30 ++++++++++-------- internal/services/site/service_updateused.go | 2 +- 10 files changed, 73 insertions(+), 56 deletions(-) diff --git a/assets/templates/site/site_add.html b/assets/templates/site/site_add.html index 0da84f7..b23655c 100755 --- a/assets/templates/site/site_add.html +++ b/assets/templates/site/site_add.html @@ -33,7 +33,7 @@
- +
@@ -118,7 +118,7 @@ title: '操作成功', icon: 'mdi mdi-check-decagram', type: 'green', - content: '编号:' + data.id + ' 创建完成。', + content: '成功创建:' + data.successCount + '条。失败创建:' + data.failCount + '条。', buttons: { okay: { text: '关闭', diff --git a/go.mod b/go.mod index 0927b49..6b912b4 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/gin-gonic/gin v1.9.0 github.com/go-playground/locales v0.14.1 github.com/go-playground/universal-translator v0.18.1 - github.com/go-playground/validator/v10 v10.11.2 + github.com/go-playground/validator/v10 v10.13.0 github.com/go-redis/redis/v7 v7.4.1 github.com/gocolly/colly v1.2.0 github.com/gorilla/websocket v1.4.2 @@ -67,7 +67,7 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/kennygrant/sanitize v1.2.4 // indirect github.com/klauspost/cpuid/v2 v2.0.9 // indirect - github.com/leodido/go-urn v1.2.1 // indirect + github.com/leodido/go-urn v1.2.3 // indirect github.com/magiconair/properties v1.8.5 // indirect github.com/mailru/easyjson v0.7.6 // indirect github.com/mattn/go-isatty v0.0.17 // indirect @@ -93,7 +93,7 @@ require ( github.com/ugorji/go/codec v1.2.9 // indirect go.uber.org/atomic v1.7.0 // indirect golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect - golang.org/x/crypto v0.5.0 // indirect + golang.org/x/crypto v0.7.0 // indirect golang.org/x/image v0.5.0 // indirect golang.org/x/mod v0.9.0 // indirect golang.org/x/net v0.8.0 // indirect diff --git a/go.sum b/go.sum index 0d6a767..7c32abe 100644 --- a/go.sum +++ b/go.sum @@ -189,8 +189,8 @@ github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91 github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-playground/validator/v10 v10.9.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= -github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU= -github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s= +github.com/go-playground/validator/v10 v10.13.0 h1:cFRQdfaSMCOSfGCCLB20MHvuoHb/s5G8L5pu2ppK5AQ= +github.com/go-playground/validator/v10 v10.13.0/go.mod h1:dwu7+CG8/CtBiJFZDz4e+5Upb6OLw04gtBYw0mcG/z4= github.com/go-redis/redis/v7 v7.4.1 h1:PASvf36gyUpr2zdOUS/9Zqc80GbM+9BDyiJSJDDOrTI= github.com/go-redis/redis/v7 v7.4.1/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= @@ -357,8 +357,9 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/leodido/go-urn v1.2.3 h1:6BE2vPT0lqoz3fmOesHZiaiFh7889ssCo2GMvLCfiuA= +github.com/leodido/go-urn v1.2.3/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= @@ -498,8 +499,9 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/swaggo/files v0.0.0-20190704085106-630677cd5c14/go.mod h1:gxQT6pBGRuIGunNf/+tSOB5OHvguWi8Tbt82WOkf35E= @@ -571,8 +573,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/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.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= -golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= diff --git a/internal/api/site/func_create.go b/internal/api/site/func_create.go index cb6641d..a8b89e8 100755 --- a/internal/api/site/func_create.go +++ b/internal/api/site/func_create.go @@ -4,7 +4,9 @@ import ( "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/services/site" + "github.com/go-playground/validator/v10" "net/http" + "strings" ) type createRequest struct { @@ -13,7 +15,8 @@ type createRequest struct { } type createResponse struct { - Id int32 `json:"id"` + SuccessCount int32 `json:"successCount"` + FailCount int32 `json:"failCount"` } // Create 创建网站 @@ -38,22 +41,21 @@ func (h *handler) Create() core.HandlerFunc { ) return } - - createData := new(site.CreateSiteData) - createData.CategoryId = req.CategoryId - createData.Url = req.Url - - id, err := h.siteService.Create(c, createData) - if err != nil { - c.AbortWithError(core.Error( - http.StatusBadRequest, - code.SiteCreateError, - code.Text(code.SiteCreateError)).WithError(err), - ) - return + sites := make([]*site.CreateSiteData, 0, 10) + for _, url := range strings.Split(req.Url, "\n") { + // 校验网址格式 + if err := validator.New().Var(url, "http_url"); err != nil { + c.AbortWithError(core.Error( + http.StatusBadRequest, + code.ParamBindError, + code.Text(code.ParamBindError)).WithError(err), + ) + return + } + sites = append(sites, &site.CreateSiteData{CategoryId: req.CategoryId, Url: url}) } + res.SuccessCount, res.FailCount = h.siteService.Create(c, sites) - res.Id = id c.Payload(res) } } diff --git a/internal/api/site/func_list.go b/internal/api/site/func_list.go index 8823611..28a38c8 100755 --- a/internal/api/site/func_list.go +++ b/internal/api/site/func_list.go @@ -3,6 +3,7 @@ package site import ( "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" + siteMd "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" "github.com/ch3nnn/webstack-go/internal/services/site" "github.com/spf13/cast" "net/http" @@ -18,16 +19,16 @@ type listRequest struct { Remark string `form:"remark"` // 备注 } type listData struct { - Id int `json:"id"` // ID - Thumb string `json:"thumb"` // 网站 logo - Title string `json:"title"` // 名称简介 - Url string `json:"url"` // 链接 - Category string `json:"category"` // 分类 - CategoryId int32 `json:"category_id"` // 分类id - Description string `json:"description"` // 描述 - IsUsed int `json:"is_used"` // 是否启用 - CreatedAt string `json:"created_at"` // 创建时间 - UpdatedAt string `json:"updated_at"` // 更新时间 + Id int `json:"id"` // ID + Thumb string `json:"thumb"` // 网站 logo + Title string `json:"title"` // 名称简介 + Url string `json:"url"` // 链接 + Category string `json:"category"` // 分类 + CategoryId int32 `json:"category_id"` // 分类id + Description string `json:"description"` // 描述 + IsUsed siteMd.IsUsedStatus `json:"is_used"` // 是否启用 + CreatedAt string `json:"created_at"` // 创建时间 + UpdatedAt string `json:"updated_at"` // 更新时间 } type listResponse struct { @@ -123,7 +124,7 @@ func (h *handler) List() core.HandlerFunc { Category: v.Category.Title, CategoryId: v.Category.Id, Description: v.Description, - IsUsed: int(v.IsUsed), + IsUsed: v.IsUsed, CreatedAt: v.CreatedAt.Format("2006-01-02 15:04:05"), UpdatedAt: v.UpdatedAt.Format("2006-01-02 15:04:05"), } diff --git a/internal/api/site/func_updateused.go b/internal/api/site/func_updateused.go index c910ec6..129eea8 100755 --- a/internal/api/site/func_updateused.go +++ b/internal/api/site/func_updateused.go @@ -3,12 +3,13 @@ package site import ( "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" "net/http" ) type updateUsedRequest struct { - Id int32 `form:"id"` // 主键ID - Used int32 `form:"used"` // 是否启用 1:是 -1:否 + Id int32 `form:"id"` // 主键ID + Used site.IsUsedStatus `form:"used"` // 是否启用 1:是 -1:否 } type updateUsedResponse struct { diff --git a/internal/repository/mysql/site/gen_model.go b/internal/repository/mysql/site/gen_model.go index f02ffb0..d97bbd0 100755 --- a/internal/repository/mysql/site/gen_model.go +++ b/internal/repository/mysql/site/gen_model.go @@ -5,13 +5,15 @@ import ( "time" ) +type IsUsedStatus int32 + // Site 网站信息 //go:generate gormgen -structs Site -input . type Site struct { Id int32 // CategoryId int32 // 网站分类id Category category.Category // 网站分类 - IsUsed int32 // 是否启用 1:是 -1:否 + IsUsed IsUsedStatus // 是否启用 1:是 -1:否 Title string // 网站标题 Thumb string // 网站 logo Description string // 网站描述 @@ -19,3 +21,8 @@ type Site struct { CreatedAt time.Time `gorm:"time"` // 创建时间 UpdatedAt time.Time `gorm:"time"` // 更新时间 } + +const ( + Off IsUsedStatus = -1 + Open IsUsedStatus = 1 +) diff --git a/internal/services/site/service.go b/internal/services/site/service.go index f93c256..93a23fa 100755 --- a/internal/services/site/service.go +++ b/internal/services/site/service.go @@ -17,9 +17,9 @@ type Service interface { CategoryList(ctx core.Context) (listData []*category.Category, err error) PageList(ctx core.Context, searchData *SearchData) (listData []*site.Site, err error) PageListCount(ctx core.Context, searchData *SearchData) (total int64, err error) - UpdateUsed(ctx core.Context, id int32, used int32) (err error) + UpdateUsed(ctx core.Context, id int32, used site.IsUsedStatus) (err error) Delete(ctx core.Context, id int32) (err error) - Create(ctx core.Context, siteData *CreateSiteData) (id int32, err error) + Create(ctx core.Context, sitesData []*CreateSiteData) (successCount, failCount int32) CategorySite(ctx core.Context) (categorySites []*CategorySite, err error) UpdateSite(ctx core.Context, updateSite *UpdateSiteRequest) (err error) } diff --git a/internal/services/site/service_create.go b/internal/services/site/service_create.go index 1e86eb4..04b871c 100755 --- a/internal/services/site/service_create.go +++ b/internal/services/site/service_create.go @@ -17,7 +17,7 @@ import ( type CreateSiteData struct { CategoryId int32 `json:"category_id"` - Url string `json:"Url"` + Url string `json:"Url" validate:"url, http_url"` } // 获取网站 logo @@ -93,19 +93,23 @@ func getWebDescription(site *site.Site) string { return description } -func (s *service) Create(ctx core.Context, siteData *CreateSiteData) (id int32, err error) { +func (s *service) Create(ctx core.Context, sitesData []*CreateSiteData) (successCount, failCount int32) { - model := site.NewModel() - model.IsUsed = -1 - model.CategoryId = siteData.CategoryId - model.Url = siteData.Url - model.Title = getWebTitle(model) - model.Description = getWebDescription(model) - model.Thumb = getWebLogoIconUrlByUrl(model) - - id, err = model.Create(s.db.GetDbW().WithContext(ctx.RequestContext())) - if err != nil { - return 0, err + for _, siteData := range sitesData { + model := site.NewModel() + model.IsUsed = site.Off + model.Url = siteData.Url + model.CategoryId = siteData.CategoryId + model.Title = getWebTitle(model) + model.Description = getWebDescription(model) + model.Thumb = getWebLogoIconUrlByUrl(model) + // 统计成功失败次数 + if _, err := model.Create(s.db.GetDbW().WithContext(ctx.RequestContext())); err != nil { + failCount++ + } else { + successCount++ + } } + return } diff --git a/internal/services/site/service_updateused.go b/internal/services/site/service_updateused.go index b9a98c8..67575d3 100755 --- a/internal/services/site/service_updateused.go +++ b/internal/services/site/service_updateused.go @@ -6,7 +6,7 @@ import ( "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" ) -func (s *service) UpdateUsed(ctx core.Context, id int32, used int32) (err error) { +func (s *service) UpdateUsed(ctx core.Context, id int32, used site.IsUsedStatus) (err error) { qb := site.NewQueryBuilder() qb.WhereId(mysql.EqualPredicate, id) data := map[string]any{"IsUsed": used} From 37eab0aa4901fa597f6953c72d1cd80c42973563 Mon Sep 17 00:00:00 2001 From: ch3nnn Date: Tue, 30 May 2023 14:32:50 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20gen=20=E8=87=AA=E5=8A=A8=E7=94=9F?= =?UTF-8?q?=E6=88=90=20gorm=20=E6=A8=A1=E5=9E=8B=20-=20site=20category?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/templates/index/index.html | 2 +- go.mod | 15 ++- go.sum | 48 +++++++++- internal/api/category/func_create.go | 34 +++---- internal/api/category/func_delete.go | 18 +--- internal/api/category/func_detail.go | 36 +++---- internal/api/category/func_list.go | 40 ++++---- internal/api/category/func_updatesort.go | 19 ++-- internal/api/category/func_updateused.go | 20 ++-- internal/api/site/func_categorylist.go | 34 +++---- internal/api/site/func_create.go | 6 +- internal/api/site/func_delete.go | 4 +- internal/api/site/func_list.go | 96 ++++++++----------- internal/api/site/func_updatesite.go | 6 +- internal/api/site/func_updateused.go | 7 +- internal/pkg/core/context.go | 13 +++ internal/repository/mysql/mysql.go | 2 + internal/services/category/service.go | 16 ++-- internal/services/category/service_create.go | 26 ++--- internal/services/category/service_detail.go | 23 ++--- internal/services/category/service_list.go | 13 ++- internal/services/category/service_modify.go | 26 ++--- .../services/category/service_updatesort.go | 17 ++-- .../services/category/service_updateused.go | 16 +--- internal/services/category/servier_delete.go | 22 ++--- internal/services/site/service.go | 14 ++- .../services/site/service_categorylist.go | 55 +++++++---- .../services/site/service_categorysite.go | 34 ++++--- internal/services/site/service_create.go | 38 ++++---- internal/services/site/service_delete.go | 23 ++--- internal/services/site/service_list.go | 17 ---- internal/services/site/service_pagelist.go | 33 ++----- .../services/site/service_pagelistcount.go | 14 +-- internal/services/site/service_updatesite.go | 26 +++-- internal/services/site/service_updateused.go | 13 +-- 35 files changed, 384 insertions(+), 442 deletions(-) delete mode 100755 internal/services/site/service_list.go diff --git a/assets/templates/index/index.html b/assets/templates/index/index.html index 1f043bb..ceeab0b 100755 --- a/assets/templates/index/index.html +++ b/assets/templates/index/index.html @@ -175,7 +175,7 @@

{{ range .SiteList }}
-
diff --git a/go.mod b/go.mod index 6b912b4..3429fe1 100644 --- a/go.mod +++ b/go.mod @@ -15,6 +15,7 @@ require ( github.com/gocolly/colly v1.2.0 github.com/gorilla/websocket v1.4.2 github.com/jakecoffman/cron v0.0.0-20190106200828-7e2009c226a5 + github.com/jinzhu/gorm v1.9.16 github.com/mat/besticon v0.0.0-20230308222644-ee1fe52e97c1 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.11.1 @@ -29,8 +30,10 @@ require ( go.uber.org/multierr v1.7.0 go.uber.org/zap v1.19.1 golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11 - gorm.io/driver/mysql v1.2.0 - gorm.io/gorm v1.22.3 + golang.org/x/tools v0.7.0 + gorm.io/driver/mysql v1.4.4 + gorm.io/gen v0.3.22 + gorm.io/gorm v1.24.2 ) require ( @@ -54,7 +57,7 @@ require ( github.com/go-openapi/jsonreference v0.19.5 // indirect github.com/go-openapi/spec v0.20.3 // indirect github.com/go-openapi/swag v0.19.14 // indirect - github.com/go-sql-driver/mysql v1.6.0 // indirect + github.com/go-sql-driver/mysql v1.7.0 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/goccy/go-json v0.10.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect @@ -62,7 +65,7 @@ require ( github.com/hashicorp/golang-lru v0.5.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/jinzhu/inflection v1.0.0 // indirect - github.com/jinzhu/now v1.1.2 // 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/kennygrant/sanitize v1.2.4 // indirect @@ -99,7 +102,6 @@ require ( golang.org/x/net v0.8.0 // indirect golang.org/x/sys v0.6.0 // indirect golang.org/x/text v0.8.0 // indirect - golang.org/x/tools v0.7.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect @@ -108,4 +110,7 @@ require ( gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + gorm.io/datatypes v1.1.1-0.20230130040222-c43177d3cf8c // indirect + gorm.io/hints v1.1.0 // indirect + gorm.io/plugin/dbresolver v1.3.0 // indirect ) diff --git a/go.sum b/go.sum index 7c32abe..053e03a 100644 --- a/go.sum +++ b/go.sum @@ -124,6 +124,7 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs 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.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/denisenkom/go-mssqldb v0.12.0 h1:VtrkII767ttSPNRfFekePK3sctr+joXgO58stqQbtUA= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -134,6 +135,7 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= @@ -194,8 +196,9 @@ github.com/go-playground/validator/v10 v10.13.0/go.mod h1:dwu7+CG8/CtBiJFZDz4e+5 github.com/go-redis/redis/v7 v7.4.1 h1:PASvf36gyUpr2zdOUS/9Zqc80GbM+9BDyiJSJDDOrTI= github.com/go-redis/redis/v7 v7.4.1/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= +github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= @@ -208,6 +211,8 @@ github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= 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/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -314,14 +319,25 @@ github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= 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/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= +github.com/jackc/pgconn v1.13.0 h1:3L1XMNV2Zvca/8BYhzcRFS70Lr0WlDg16Di6SFGAbys= +github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgproto3/v2 v2.3.1 h1:nwj7qwf0S+Q7ISFfBndqeLwSwxs+4DPsbRFjECT1Y4Y= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= +github.com/jackc/pgtype v1.12.0 h1:Dlq8Qvcch7kiehm8wPGIW0W3KsCCHJnRacKW0UM8n5w= +github.com/jackc/pgx/v4 v4.17.2 h1:0Ut0rpeKwvIVbMQ1KbMBU4h6wxehBI535LK6Flheh8E= github.com/jakecoffman/cron v0.0.0-20190106200828-7e2009c226a5 h1:kCvm3G3u+eTRbjfLPyfsfznJtraYEfZer/UvQ6CaQhI= github.com/jakecoffman/cron v0.0.0-20190106200828-7e2009c226a5/go.mod h1:6DM2KNNK69jRu0lAHmYK9LYxmqpNjYHOaNp/ZxttD4U= +github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o= github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs= 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.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jinzhu/now v1.1.2 h1:eVKgfIdy9b6zbWBMgFpfDPoAMifwSZagU9HmEU6zgiI= github.com/jinzhu/now v1.1.2/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= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= @@ -360,6 +376,7 @@ github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgx github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/leodido/go-urn v1.2.3 h1:6BE2vPT0lqoz3fmOesHZiaiFh7889ssCo2GMvLCfiuA= github.com/leodido/go-urn v1.2.3/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= +github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= @@ -383,8 +400,11 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus= +github.com/mattn/go-sqlite3 v1.14.8/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/microsoft/go-mssqldb v0.17.0 h1:Fto83dMZPnYv1Zwx5vHHxpNraeEaUlQ/hhHLgZiaenE= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= @@ -1018,10 +1038,30 @@ gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C 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.2.0 h1:l8+9VwjjyzEkw0PNPBOr2JHhLOGVk7XEnl5hk42bcvs= +gorm.io/datatypes v1.1.1-0.20230130040222-c43177d3cf8c h1:jWdr7cHgl8c/ua5vYbR2WhSp+NQmzhsj0xoY3foTzW8= +gorm.io/datatypes v1.1.1-0.20230130040222-c43177d3cf8c/go.mod h1:SH2K9R+2RMjuX1CkCONrPwoe9JzVv2hkQvEu4bXGojE= gorm.io/driver/mysql v1.2.0/go.mod h1:4RQmTg4okPghdt+kbe6e1bTXIQp7Ny1NnBn/3Z6ghjk= -gorm.io/gorm v1.22.3 h1:/JS6z+GStEQvJNW3t1FTwJwG/gZ+A7crFdRqtvG5ehA= +gorm.io/driver/mysql v1.3.2/go.mod h1:ChK6AHbHgDCFZyJp0F+BmVGb06PSIoh9uVYKAlRbb2U= +gorm.io/driver/mysql v1.4.4 h1:MX0K9Qvy0Na4o7qSC/YI7XxqUw5KDw01umqgID+svdQ= +gorm.io/driver/mysql v1.4.4/go.mod h1:BCg8cKI+R0j/rZRQxeKis/forqRwRSYOR8OM3Wo6hOM= +gorm.io/driver/postgres v1.4.5 h1:mTeXTTtHAgnS9PgmhN2YeUbazYpLhUI1doLnw42XUZc= +gorm.io/driver/sqlite v1.1.6/go.mod h1:W8LmC/6UvVbHKah0+QOC7Ja66EaZXHwUTjgXY8YNWX8= +gorm.io/driver/sqlite v1.4.3 h1:HBBcZSDnWi5BW3B3rwvVTc510KGkBkexlOg0QrmLUuU= +gorm.io/driver/sqlserver v1.4.1 h1:t4r4r6Jam5E6ejqP7N82qAJIJAht27EGT41HyPfXRw0= +gorm.io/gen v0.3.22 h1:K7u5tCyaZfe1cbQFD8N2xrTqUuqximNFSRl7zOFPq+M= +gorm.io/gen v0.3.22/go.mod h1:dQcELeF/7Kf82M6AQF+O/rKT5r1sjv49TlGz0cerPn4= +gorm.io/gorm v1.21.15/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0= +gorm.io/gorm v1.22.2/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0= gorm.io/gorm v1.22.3/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0= +gorm.io/gorm v1.23.1/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.0/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA= +gorm.io/gorm v1.24.2 h1:9wR6CFD+G8nOusLdvkZelOEhpJVwwHzpQOUM+REd6U0= +gorm.io/gorm v1.24.2/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA= +gorm.io/hints v1.1.0 h1:Lp4z3rxREufSdxn4qmkK3TLDltrM10FLTHiuqwDPvXw= +gorm.io/hints v1.1.0/go.mod h1:lKQ0JjySsPBj3uslFzY3JhYDtqEwzm+G1hv8rWujB6Y= +gorm.io/plugin/dbresolver v1.3.0 h1:uFDX3bIuH9Lhj5LY2oyqR/bU6pqWuDgas35NAPF4X3M= +gorm.io/plugin/dbresolver v1.3.0/go.mod h1:Pr7p5+JFlgDaiM6sOrli5olekJD16YRunMyA2S7ZfKk= 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= diff --git a/internal/api/category/func_create.go b/internal/api/category/func_create.go index 2f5a02f..58b44a5 100755 --- a/internal/api/category/func_create.go +++ b/internal/api/category/func_create.go @@ -4,21 +4,19 @@ import ( "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/services/category" - "github.com/spf13/cast" "net/http" - "strconv" ) type createRequest struct { - Id string `form:"id"` // ID - Pid int32 `form:"pid"` // 父类ID + Id int64 `form:"id"` // ID + Pid int64 `form:"pid"` // 父类ID Name string `form:"name"` // 分类名称 Icon string `form:"icon"` // 图标 - Level int32 `form:"level"` // 分类等级 + Level int64 `form:"level"` // 分类等级 } type createResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // Create 创建/编辑分类 @@ -45,18 +43,13 @@ func (h *handler) Create() core.HandlerFunc { return } - if req.Id != "" { // 编辑功能 - id, err := strconv.Atoi(req.Id) - if err != nil { - return - } + if req.Id != 0 { // 编辑功能 - updateData := new(category.UpdateCategoryData) - updateData.Name = req.Name - updateData.Icon = req.Icon + updateCategory := new(category.UpdateCategory) + updateCategory.Name = req.Name + updateCategory.Icon = req.Icon - err = h.categoryService.Modify(c, int32(id), updateData) - if err != nil { + if err := h.categoryService.Modify(c, req.Id, updateCategory); err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, code.CategoryUpdateError, @@ -65,11 +58,10 @@ func (h *handler) Create() core.HandlerFunc { return } - res.Id = int32(id) + res.Id = req.Id c.Payload(res) } else { // 新增功能 - pid := req.Level level := 2 @@ -82,10 +74,9 @@ func (h *handler) Create() core.HandlerFunc { createData.Pid = pid createData.Name = req.Name createData.Icon = req.Icon - createData.Level = cast.ToInt32(level) + createData.Level = int64(level) - id, err := h.categoryService.Create(c, createData) - if err != nil { + if err := h.categoryService.Create(c, createData); err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, code.CategoryCreateError, @@ -94,7 +85,6 @@ func (h *handler) Create() core.HandlerFunc { return } - res.Id = id c.Payload(res) } } diff --git a/internal/api/category/func_delete.go b/internal/api/category/func_delete.go index fa2b78f..1a75e92 100755 --- a/internal/api/category/func_delete.go +++ b/internal/api/category/func_delete.go @@ -1,19 +1,17 @@ package category import ( - "net/http" - "strconv" - "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" + "net/http" ) type deleteRequest struct { - Id string `uri:"id"` // 主键 id + Id int64 `uri:"id"` // 主键 id } type deleteResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // Delete 删除分类 @@ -40,13 +38,7 @@ func (h *handler) Delete() core.HandlerFunc { return } - id, err := strconv.Atoi(req.Id) - if err != nil { - return - } - - err = h.categoryService.Delete(c, int32(id)) - if err != nil { + if err := h.categoryService.Delete(c, req.Id); err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, code.CategoryDeleteError, @@ -55,7 +47,7 @@ func (h *handler) Delete() core.HandlerFunc { return } - res.Id = int32(id) + res.Id = req.Id c.Payload(res) } } diff --git a/internal/api/category/func_detail.go b/internal/api/category/func_detail.go index 75565cf..2587211 100755 --- a/internal/api/category/func_detail.go +++ b/internal/api/category/func_detail.go @@ -1,21 +1,18 @@ package category import ( - "github.com/ch3nnn/webstack-go/internal/services/category" - "net/http" - "strconv" - "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" + "net/http" ) type detailRequest struct { - Id string `uri:"id"` // 主键 id + Id int64 `uri:"id"` // 主键 id } type detailResponse struct { - Id int32 `json:"id"` // 主键ID - Pid int32 `json:"pid"` // 父类ID + Id int64 `json:"id"` // 主键ID + Pid int64 `json:"pid"` // 父类ID Name string `json:"name"` // 分类名称 Icon string `json:"icon"` // 图标 } @@ -34,7 +31,6 @@ type detailResponse struct { func (h *handler) Detail() core.HandlerFunc { return func(c core.Context) { req := new(detailRequest) - if err := c.ShouldBindURI(req); err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -44,15 +40,7 @@ func (h *handler) Detail() core.HandlerFunc { return } - id, err := strconv.Atoi(req.Id) - if err != nil { - return - } - - searchOneData := new(category.SearchOneData) - searchOneData.Id = int32(id) - - info, err := h.categoryService.Detail(c, searchOneData) + cat, err := h.categoryService.Detail(c, req.Id) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -62,13 +50,11 @@ func (h *handler) Detail() core.HandlerFunc { return } - res := detailResponse{ - Id: info.Id, - Pid: info.ParentId, - Name: info.Title, - Icon: info.Icon, - } - - c.Payload(res) + c.Payload(detailResponse{ + Id: cat.ID, + Pid: cat.ParentID, + Name: cat.Title, + Icon: cat.Icon, + }) } } diff --git a/internal/api/category/func_list.go b/internal/api/category/func_list.go index 0e41dd0..25f2960 100755 --- a/internal/api/category/func_list.go +++ b/internal/api/category/func_list.go @@ -5,25 +5,21 @@ import ( "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/services/category" - "github.com/spf13/cast" ) type listData struct { - Id int32 `json:"id"` // ID + Id int64 `json:"id"` // ID HashID string `json:"hashid"` // hashid - Pid int32 `json:"pid"` // 父类ID + Pid int64 `json:"pid"` // 父类ID Name string `json:"name"` // 菜单名称 Link string `json:"link"` // 链接地址 Icon string `json:"icon"` // 图标 - IsUsed int32 `json:"is_used"` // 是否启用 1=启用 -1=禁用 - Sort int32 `json:"sort"` // 排序 - Level int32 `json:"level"` // 分类等级 1 一级分类 2 二级分类 + IsUsed int64 `json:"is_used"` // 是否启用 1=启用 -1=禁用 + Sort int64 `json:"sort"` // 排序 + Level int64 `json:"level"` // 分类等级 1 一级分类 2 二级分类 } -type listRequest struct{} - type listResponse struct { List []listData `json:"list"` } @@ -41,7 +37,7 @@ type listResponse struct { func (h *handler) List() core.HandlerFunc { return func(c core.Context) { res := new(listResponse) - resListData, err := h.categoryService.List(c, new(category.SearchData)) + categories, err := h.categoryService.List(c) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -51,10 +47,10 @@ func (h *handler) List() core.HandlerFunc { return } - res.List = make([]listData, len(resListData)) + res.List = make([]listData, len(categories)) - for k, v := range resListData { - hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(v.Id)}) + for i, cat := range categories { + hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(cat.ID)}) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -64,18 +60,16 @@ func (h *handler) List() core.HandlerFunc { return } - data := listData{ - Id: v.Id, + res.List[i] = listData{ + Id: cat.ID, HashID: hashId, - Pid: v.ParentId, - Name: v.Title, - Icon: v.Icon, - IsUsed: v.IsUsed, - Sort: v.Sort, - Level: v.Level, + Pid: cat.ParentID, + Name: cat.Title, + Icon: cat.Icon, + IsUsed: cat.IsUsed, + Sort: cat.Sort, + Level: cat.Level, } - - res.List[k] = data } c.Payload(res) diff --git a/internal/api/category/func_updatesort.go b/internal/api/category/func_updatesort.go index b0b4268..f3b0022 100755 --- a/internal/api/category/func_updatesort.go +++ b/internal/api/category/func_updatesort.go @@ -1,20 +1,18 @@ package category import ( - "net/http" - "strconv" - "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" + "net/http" ) type updateSortRequest struct { - Id string `form:"id"` // 主键 id - Sort int32 `form:"sort"` // 排序 + Id int64 `form:"id"` // 主键 id + Sort int64 `form:"sort"` // 排序 } type updateSortResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // UpdateSort 更新分类排序 @@ -41,13 +39,8 @@ func (h *handler) UpdateSort() core.HandlerFunc { ) return } - id, err := strconv.Atoi(req.Id) - if err != nil { - return - } - err = h.categoryService.UpdateSort(c, int32(id), req.Sort) - if err != nil { + if err := h.categoryService.UpdateSort(c, req.Id, req.Sort); err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, code.CategoryUpdateError, @@ -56,7 +49,7 @@ func (h *handler) UpdateSort() core.HandlerFunc { return } - res.Id = int32(id) + res.Id = req.Id c.Payload(res) } } diff --git a/internal/api/category/func_updateused.go b/internal/api/category/func_updateused.go index c8197bf..c345db8 100755 --- a/internal/api/category/func_updateused.go +++ b/internal/api/category/func_updateused.go @@ -1,20 +1,18 @@ package category import ( - "net/http" - "strconv" - "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" + "net/http" ) type updateUsedRequest struct { - Id string `form:"id"` // 主键ID - Used int32 `form:"used"` // 是否启用 1:是 -1:否 + Id int64 `form:"id"` // 主键ID + Used int64 `form:"used"` // 是否启用 1:是 -1:否 } type updateUsedResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // UpdateUsed 更新分类为启用/禁用 @@ -42,13 +40,7 @@ func (h *handler) UpdateUsed() core.HandlerFunc { return } - id, err := strconv.Atoi(req.Id) - if err != nil { - return - } - - err = h.categoryService.UpdateUsed(c, int32(id), req.Used) - if err != nil { + if err := h.categoryService.UpdateUsed(c, req.Id, req.Used); err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, code.CategoryUpdateError, @@ -57,7 +49,7 @@ func (h *handler) UpdateUsed() core.HandlerFunc { return } - res.Id = int32(id) + res.Id = req.Id c.Payload(res) } } diff --git a/internal/api/site/func_categorylist.go b/internal/api/site/func_categorylist.go index a9c8dd8..69725f9 100644 --- a/internal/api/site/func_categorylist.go +++ b/internal/api/site/func_categorylist.go @@ -8,15 +8,15 @@ import ( ) type categoryListData struct { - Id int32 `json:"id"` // ID + Id int64 `json:"id"` // ID HashID string `json:"hashid"` // hashid - Pid int32 `json:"pid"` // 父类ID + Pid int64 `json:"pid"` // 父类ID Name string `json:"name"` // 分类名称 Link string `json:"link"` // 链接地址 Icon string `json:"icon"` // 图标 - IsUsed int32 `json:"is_used"` // 是否启用 1=启用 -1=禁用 - Sort int32 `json:"sort"` // 排序 - Level int32 `json:"level"` // 分类等级 1 一级分类 2 二级分类 + IsUsed int64 `json:"is_used"` // 是否启用 1=启用 -1=禁用 + Sort int64 `json:"sort"` // 排序 + Level int64 `json:"level"` // 分类等级 1 一级分类 2 二级分类 } @@ -37,7 +37,7 @@ type categoryListResponse struct { func (h *handler) CategoryList() core.HandlerFunc { return func(c core.Context) { res := new(categoryListResponse) - resListData, err := h.siteService.CategoryList(c) + categories, err := h.siteService.CategoryList(c) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -47,10 +47,10 @@ func (h *handler) CategoryList() core.HandlerFunc { return } - res.List = make([]categoryListData, len(resListData)) + res.List = make([]categoryListData, len(categories)) - for k, v := range resListData { - hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(v.Id)}) + for i, cat := range categories { + hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(cat.ID)}) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -61,17 +61,17 @@ func (h *handler) CategoryList() core.HandlerFunc { } data := categoryListData{ - Id: v.Id, + Id: cat.ID, HashID: hashId, - Pid: v.ParentId, - Name: v.Title, - Icon: v.Icon, - IsUsed: v.IsUsed, - Sort: v.Sort, - Level: v.Level, + Pid: cat.ParentID, + Name: cat.Title, + Icon: cat.Icon, + IsUsed: cat.IsUsed, + Sort: cat.Sort, + Level: cat.Level, } - res.List[k] = data + res.List[i] = data } c.Payload(res) diff --git a/internal/api/site/func_create.go b/internal/api/site/func_create.go index a8b89e8..bc5c712 100755 --- a/internal/api/site/func_create.go +++ b/internal/api/site/func_create.go @@ -10,13 +10,13 @@ import ( ) type createRequest struct { - CategoryId int32 `form:"category_id"` + CategoryId int64 `form:"category_id"` Url string `form:"url"` } type createResponse struct { - SuccessCount int32 `json:"successCount"` - FailCount int32 `json:"failCount"` + SuccessCount int64 `json:"successCount"` + FailCount int64 `json:"failCount"` } // Create 创建网站 diff --git a/internal/api/site/func_delete.go b/internal/api/site/func_delete.go index 2727649..c1cc0fc 100755 --- a/internal/api/site/func_delete.go +++ b/internal/api/site/func_delete.go @@ -7,11 +7,11 @@ import ( ) type deleteRequest struct { - Id int32 `uri:"id"` // 主键ID + Id int64 `uri:"id"` // 主键ID } type deleteResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // Delete 删除网站信息 diff --git a/internal/api/site/func_list.go b/internal/api/site/func_list.go index 28a38c8..e2ce885 100755 --- a/internal/api/site/func_list.go +++ b/internal/api/site/func_list.go @@ -3,7 +3,6 @@ package site import ( "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" - siteMd "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" "github.com/ch3nnn/webstack-go/internal/services/site" "github.com/spf13/cast" "net/http" @@ -11,32 +10,32 @@ import ( ) type listRequest struct { - Page int `form:"page"` // 第几页 - PageSize int `form:"page_size"` // 每页显示条数 - BusinessKey string `form:"business_key"` // 调用方key - BusinessSecret string `form:"business_secret"` // 调用方secret - BusinessDeveloper string `form:"business_developer"` // 调用方对接人 - Remark string `form:"remark"` // 备注 + Page int64 `form:"page,default=1"` // 第几页 + PageSize int64 `form:"page_size,default=10" ` // 每页显示条数 + BusinessKey string `form:"business_key"` // 调用方key + BusinessSecret string `form:"business_secret"` // 调用方secret + BusinessDeveloper string `form:"business_developer"` // 调用方对接人 + Remark string `form:"remark"` // 备注 } type listData struct { - Id int `json:"id"` // ID - Thumb string `json:"thumb"` // 网站 logo - Title string `json:"title"` // 名称简介 - Url string `json:"url"` // 链接 - Category string `json:"category"` // 分类 - CategoryId int32 `json:"category_id"` // 分类id - Description string `json:"description"` // 描述 - IsUsed siteMd.IsUsedStatus `json:"is_used"` // 是否启用 - CreatedAt string `json:"created_at"` // 创建时间 - UpdatedAt string `json:"updated_at"` // 更新时间 + Id int `json:"id"` // ID + Thumb string `json:"thumb"` // 网站 logo + Title string `json:"title"` // 名称简介 + Url string `json:"url"` // 链接 + Category string `json:"category"` // 分类 + CategoryId int64 `json:"category_id"` // 分类id + Description string `json:"description"` // 描述 + IsUsed int64 `json:"is_used"` // 是否启用 + CreatedAt string `json:"created_at"` // 创建时间 + UpdatedAt string `json:"updated_at"` // 更新时间 } type listResponse struct { List []listData `json:"list"` Pagination struct { - Total int `json:"total"` - CurrentPage int `json:"current_page"` - PerPageCount int `json:"per_page_count"` + Total int64 `json:"total"` + CurrentPage int64 `json:"current_page"` + PerPageCount int64 `json:"per_page_count"` } `json:"pagination"` } @@ -54,7 +53,7 @@ func (h *handler) List() core.HandlerFunc { return func(c core.Context) { req := new(listRequest) res := new(listResponse) - if err := c.ShouldBindForm(req); err != nil { + if err := c.ShouldBind(req); err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, code.ParamBindError, @@ -63,25 +62,15 @@ func (h *handler) List() core.HandlerFunc { return } - page := req.Page - if page == 0 { - page = 1 - } - - pageSize := req.PageSize - if pageSize == 0 { - pageSize = 10 - } - searchData := new(site.SearchData) - searchData.Page = page - searchData.PageSize = pageSize + searchData.Page = req.Page + searchData.PageSize = req.PageSize searchData.BusinessKey = req.BusinessKey searchData.BusinessSecret = req.BusinessSecret searchData.Remark = req.Remark searchData.Search = strings.TrimSpace(c.Query("search")) - resListData, err := h.siteService.PageList(c, searchData) + sites, err := h.siteService.PageList(c, searchData) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -91,7 +80,7 @@ func (h *handler) List() core.HandlerFunc { return } - resCountData, err := h.siteService.PageListCount(c, searchData) + total, err := h.siteService.PageListCount(c, searchData) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -100,13 +89,10 @@ func (h *handler) List() core.HandlerFunc { ) return } - res.Pagination.Total = cast.ToInt(resCountData) - res.Pagination.PerPageCount = pageSize - res.Pagination.CurrentPage = page - res.List = make([]listData, len(resListData)) - for k, v := range resListData { - _, err := h.hashids.HashidsEncode([]int{cast.ToInt(v.Id)}) + res.List = make([]listData, len(sites)) + for i, sit := range sites { + _, err := h.hashids.HashidsEncode([]int{cast.ToInt(sit.ID)}) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -116,22 +102,24 @@ func (h *handler) List() core.HandlerFunc { return } - data := listData{ - Id: cast.ToInt(v.Id), - Thumb: v.Thumb, - Title: v.Title, - Url: v.Url, - Category: v.Category.Title, - CategoryId: v.Category.Id, - Description: v.Description, - IsUsed: v.IsUsed, - CreatedAt: v.CreatedAt.Format("2006-01-02 15:04:05"), - UpdatedAt: v.UpdatedAt.Format("2006-01-02 15:04:05"), + res.List[i] = listData{ + Id: cast.ToInt(sit.ID), + Thumb: sit.Thumb, + Title: sit.Title, + Url: sit.URL, + Category: sit.Category.Title, + CategoryId: sit.Category.ID, + Description: sit.Description, + IsUsed: sit.IsUsed, + CreatedAt: sit.CreatedAt.Format("2006-01-02 15:04:05"), + UpdatedAt: sit.UpdatedAt.Format("2006-01-02 15:04:05"), } - - res.List[k] = data } + res.Pagination.Total = total + res.Pagination.PerPageCount = req.PageSize + res.Pagination.CurrentPage = req.Page + c.Payload(res) } } diff --git a/internal/api/site/func_updatesite.go b/internal/api/site/func_updatesite.go index acb4799..efc5d25 100644 --- a/internal/api/site/func_updatesite.go +++ b/internal/api/site/func_updatesite.go @@ -9,8 +9,8 @@ import ( ) type updateSiteRequest struct { - Id int32 `form:"id,omitempty"` - CategoryId int32 `form:"category_id,omitempty"` // 网站分类id + Id int64 `form:"id,omitempty"` + CategoryId int64 `form:"category_id,omitempty"` // 网站分类id Title string `form:"title,omitempty"` // 网站标题 Thumb string `form:"thumb,omitempty"` // 网站 logo Description string `form:"description,omitempty"` // 网站描述 @@ -19,7 +19,7 @@ type updateSiteRequest struct { } type updateSiteResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // UpdateSite 编辑网站 diff --git a/internal/api/site/func_updateused.go b/internal/api/site/func_updateused.go index 129eea8..8e85933 100755 --- a/internal/api/site/func_updateused.go +++ b/internal/api/site/func_updateused.go @@ -3,17 +3,16 @@ package site import ( "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" "net/http" ) type updateUsedRequest struct { - Id int32 `form:"id"` // 主键ID - Used site.IsUsedStatus `form:"used"` // 是否启用 1:是 -1:否 + Id int64 `form:"id"` // 主键ID + Used int64 `form:"used"` // 是否启用 1:是 -1:否 } type updateUsedResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // UpdateUsed 更新网站为启用/禁用 diff --git a/internal/pkg/core/context.go b/internal/pkg/core/context.go index aa7ceb1..0c569a2 100755 --- a/internal/pkg/core/context.go +++ b/internal/pkg/core/context.go @@ -74,6 +74,10 @@ type Context interface { GetQueryArray(key string) (values []string, ok bool) + ShouldBind(obj any) error + + ShouldBindWith(obj any, b binding.Binding) error + // ShouldBindQuery 反序列化 querystring // tag: `form:"xxx"` (注:不要写成 query) ShouldBindQuery(obj interface{}) error @@ -238,6 +242,15 @@ func (c *context) initQueryCache() url.Values { } +func (c *context) ShouldBind(obj any) error { + b := binding.Default(c.ctx.Request.Method, c.ctx.ContentType()) + return c.ShouldBindWith(obj, b) +} + +func (c *context) ShouldBindWith(obj any, b binding.Binding) error { + return b.Bind(c.ctx.Request, obj) +} + // ShouldBindQuery 反序列化querystring // tag: `form:"xxx"` (注:不要写成query) func (c *context) ShouldBindQuery(obj interface{}) error { diff --git a/internal/repository/mysql/mysql.go b/internal/repository/mysql/mysql.go index a247523..bd21d54 100755 --- a/internal/repository/mysql/mysql.go +++ b/internal/repository/mysql/mysql.go @@ -2,6 +2,7 @@ package mysql import ( "fmt" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "time" "github.com/ch3nnn/webstack-go/configs" @@ -52,6 +53,7 @@ func New() (Repo, error) { return nil, err } + query.SetDefault(dbr) return &dbRepo{ DbR: dbr, DbW: dbw, diff --git a/internal/services/category/service.go b/internal/services/category/service.go index b73d126..01f6f15 100755 --- a/internal/services/category/service.go +++ b/internal/services/category/service.go @@ -3,7 +3,7 @@ package category import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/category" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" "github.com/ch3nnn/webstack-go/internal/repository/redis" ) @@ -12,14 +12,14 @@ var _ Service = (*service)(nil) type Service interface { i() - List(ctx core.Context, searchData *SearchData) (listData []*category.Category, err error) + List(ctx core.Context) (categories []*model.Category, err error) Tree(ctx core.Context) (nodes []*TreeNode, err error) - Create(ctx core.Context, siteData *CreateCategoryData) (id int32, err error) - Modify(ctx core.Context, id int32, menuData *UpdateCategoryData) (err error) - Delete(ctx core.Context, id int32) error - Detail(ctx core.Context, searchOneData *SearchOneData) (info *category.Category, err error) - UpdateUsed(ctx core.Context, id int32, used int32) (err error) - UpdateSort(ctx core.Context, id int32, sort int32) (err error) + Create(ctx core.Context, siteData *CreateCategoryData) (err error) + Modify(ctx core.Context, id int64, updateCategory *UpdateCategory) (err error) + Delete(ctx core.Context, id int64) error + Detail(ctx core.Context, id int64) (category *model.Category, err error) + UpdateUsed(ctx core.Context, id, used int64) (err error) + UpdateSort(ctx core.Context, id, sort int64) (err error) } type service struct { diff --git a/internal/services/category/service_create.go b/internal/services/category/service_create.go index 2207879..4087b0a 100755 --- a/internal/services/category/service_create.go +++ b/internal/services/category/service_create.go @@ -2,26 +2,26 @@ package category import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/category" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type CreateCategoryData struct { - Pid int32 // 父类ID + Pid int64 // 父类ID Name string // 分类名称 Icon string // 图标库 https://lineicons.com/icons/ - Level int32 + Level int64 } -func (s *service) Create(ctx core.Context, siteData *CreateCategoryData) (id int32, err error) { - model := category.NewModel() - model.ParentId = siteData.Pid - model.Title = siteData.Name - model.Icon = siteData.Icon - model.Level = siteData.Level - - id, err = model.Create(s.db.GetDbW().WithContext(ctx.RequestContext())) - if err != nil { - return 0, err +func (s *service) Create(ctx core.Context, siteData *CreateCategoryData) (err error) { + if err = query.Category.WithContext(ctx.RequestContext()). + Create(&model.Category{ + ParentID: siteData.Pid, + Title: siteData.Name, + Icon: siteData.Icon, + Level: siteData.Level, + }); err != nil { + return } return } diff --git a/internal/services/category/service_detail.go b/internal/services/category/service_detail.go index 19a0379..d084b4d 100755 --- a/internal/services/category/service_detail.go +++ b/internal/services/category/service_detail.go @@ -2,25 +2,14 @@ package category import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/category" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) -type SearchOneData struct { - Id int32 // 用户ID - IsUsed int32 // 是否启用 1:是 -1:否 -} - -func (s *service) Detail(ctx core.Context, searchOneData *SearchOneData) (info *category.Category, err error) { - - qb := category.NewQueryBuilder() - - if searchOneData.Id != 0 { - qb.WhereId(mysql.EqualPredicate, searchOneData.Id) - } - - info, err = qb.QueryOne(s.db.GetDbR().WithContext(ctx.RequestContext())) - if err != nil { +func (s *service) Detail(ctx core.Context, id int64) (category *model.Category, err error) { + if category, err = query.Category.WithContext(ctx.RequestContext()). + Where(query.Category.ID.Eq(id)). + First(); err != nil { return nil, err } diff --git a/internal/services/category/service_list.go b/internal/services/category/service_list.go index 59d7198..0dc313f 100755 --- a/internal/services/category/service_list.go +++ b/internal/services/category/service_list.go @@ -2,19 +2,18 @@ package category import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/category" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type SearchData struct { Pid int32 // 父类ID } -func (s *service) List(ctx core.Context, searchData *SearchData) (listData []*category.Category, err error) { - - qb := category.NewQueryBuilder() - listData, err = qb. - OrderBySort(true). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) +func (s *service) List(ctx core.Context) (categories []*model.Category, err error) { + categories, err = query.Category.WithContext(ctx.RequestContext()). + Order(query.Category.Sort). + Find() if err != nil { return nil, err } diff --git a/internal/services/category/service_modify.go b/internal/services/category/service_modify.go index 1e4d240..9b84ed0 100755 --- a/internal/services/category/service_modify.go +++ b/internal/services/category/service_modify.go @@ -2,26 +2,20 @@ package category import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/category" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) -type UpdateCategoryData struct { - Name string // 菜单名称 - Icon string // 图标 +type UpdateCategory struct { + Name string `json:"name"` // 菜单名称 + Icon string `json:"icon"` // 图标 } -func (s *service) Modify(ctx core.Context, id int32, categoryData *UpdateCategoryData) (err error) { - data := map[string]interface{}{ - "title": categoryData.Name, - "icon": categoryData.Icon, - } - - qb := category.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) - if err != nil { - return err +func (s *service) Modify(ctx core.Context, id int64, updateCategory *UpdateCategory) (err error) { + if _, err = query.Category.WithContext(ctx.RequestContext()). + Where(query.Category.ID.Eq(id)). + Updates(model.Category{Title: updateCategory.Name, Icon: updateCategory.Icon}); err != nil { + return } return diff --git a/internal/services/category/service_updatesort.go b/internal/services/category/service_updatesort.go index 0721516..34223f2 100755 --- a/internal/services/category/service_updatesort.go +++ b/internal/services/category/service_updatesort.go @@ -2,21 +2,16 @@ package category import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/category" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) -func (s *service) UpdateSort(ctx core.Context, id int32, sort int32) (err error) { - data := map[string]interface{}{ - "sort": sort, - } - - qb := category.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) - if err != nil { +func (s *service) UpdateSort(ctx core.Context, id, sort int64) (err error) { + if _, err = query.Category.WithContext(ctx.RequestContext()). + Where(query.Category.ID.Eq(id)). + Update(query.Category.Sort, sort); err != nil { return err } return + } diff --git a/internal/services/category/service_updateused.go b/internal/services/category/service_updateused.go index 5d79ca9..4d6ad30 100755 --- a/internal/services/category/service_updateused.go +++ b/internal/services/category/service_updateused.go @@ -2,19 +2,13 @@ package category import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/category" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) -func (s *service) UpdateUsed(ctx core.Context, id int32, used int32) (err error) { - data := map[string]interface{}{ - "is_used": used, - } - - qb := category.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) - if err != nil { +func (s *service) UpdateUsed(ctx core.Context, id, used int64) (err error) { + if _, err = query.Category.WithContext(ctx.RequestContext()). + Where(query.Category.ID.Eq(id)). + Update(query.Category.IsUsed, used); err != nil { return err } diff --git a/internal/services/category/servier_delete.go b/internal/services/category/servier_delete.go index 8141971..f361fce 100644 --- a/internal/services/category/servier_delete.go +++ b/internal/services/category/servier_delete.go @@ -2,24 +2,22 @@ package category import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - - "github.com/ch3nnn/webstack-go/internal/repository/mysql/category" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) -func (s *service) Delete(ctx core.Context, id int32) (err error) { +func (s *service) Delete(ctx core.Context, id int64) (err error) { - qb1 := category.NewQueryBuilder().WhereId(mysql.EqualPredicate, id) - err = qb1.Delete(s.db.GetDbW().WithContext(ctx.RequestContext())) - if err != nil { - return err + if _, err = query.Category.WithContext(ctx.RequestContext()). + Where(query.Category.ID.Eq(id)). + Delete(); err != nil { + return } // 删除一级目录 id 需要删除二级分类 - qb2 := category.NewQueryBuilder().WhereParentId(mysql.EqualPredicate, id) - err = qb2.Delete(s.db.GetDbW().WithContext(ctx.RequestContext())) - if err != nil { - return err + if _, err = query.Category.WithContext(ctx.RequestContext()). + Where(query.Category.ParentID.Eq(id)). + Delete(); err != nil { + return } return diff --git a/internal/services/site/service.go b/internal/services/site/service.go index 93a23fa..32ef93c 100755 --- a/internal/services/site/service.go +++ b/internal/services/site/service.go @@ -3,8 +3,7 @@ package site import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/category" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" "github.com/ch3nnn/webstack-go/internal/repository/redis" ) @@ -13,13 +12,12 @@ var _ Service = (*service)(nil) type Service interface { i() - List(ctx core.Context) (listData []*site.Site, err error) - CategoryList(ctx core.Context) (listData []*category.Category, err error) - PageList(ctx core.Context, searchData *SearchData) (listData []*site.Site, err error) + CategoryList(ctx core.Context) (categories []*model.Category, err error) + PageList(ctx core.Context, searchData *SearchData) (sites []*model.Site, err error) PageListCount(ctx core.Context, searchData *SearchData) (total int64, err error) - UpdateUsed(ctx core.Context, id int32, used site.IsUsedStatus) (err error) - Delete(ctx core.Context, id int32) (err error) - Create(ctx core.Context, sitesData []*CreateSiteData) (successCount, failCount int32) + UpdateUsed(ctx core.Context, id, used int64) (err error) + Delete(ctx core.Context, id int64) (err error) + Create(ctx core.Context, sitesData []*CreateSiteData) (successCount, failCount int64) CategorySite(ctx core.Context) (categorySites []*CategorySite, err error) UpdateSite(ctx core.Context, updateSite *UpdateSiteRequest) (err error) } diff --git a/internal/services/site/service_categorylist.go b/internal/services/site/service_categorylist.go index 1cd576f..5e8cb30 100755 --- a/internal/services/site/service_categorylist.go +++ b/internal/services/site/service_categorylist.go @@ -2,37 +2,56 @@ package site import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/category" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "sort" + "strconv" + "strings" ) -func (s *service) CategoryList(ctx core.Context) (listData []*category.Category, err error) { - qb := category.NewQueryBuilder() - parentIds := qb.GroupByParentId(s.db.GetDbR().WithContext(ctx.RequestContext())) +func stringSliceToInt64Slice(stringSlice []string) (int64Slice []int64, err error) { + for _, str := range stringSlice { + if i, err := strconv.ParseInt(str, 10, 64); err != nil { + return nil, err + } else { + int64Slice = append(int64Slice, i) + } + } + return int64Slice, nil +} + +func (s *service) CategoryList(ctx core.Context) (categories []*model.Category, err error) { + // 查询父 id + result, err := query.Category.WithContext(ctx.RequestContext()).GetParentIdsByGroupParentId() + if err != nil { + return nil, err + } + stringSlice := strings.Split(result["parent_ids"].(string), ",") + parentIds, err := stringSliceToInt64Slice(stringSlice) + if err != nil { + return nil, err + } // 一级分类 - qb1 := category.NewQueryBuilder() - categories01, err := qb1. - WhereParentIdIn(parentIds). - WhereParentId(mysql.NotEqualPredicate, 0). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + categories01, err := query.Category.WithContext(ctx.RequestContext()). + Where(query.Category.ParentID.In(parentIds...)). + Not(query.Category.ParentID.Eq(0)). + Find() if err != nil { return nil, err } // 二级分类 - qb2 := category.NewQueryBuilder() - categories02, err := qb2. - WhereIdNotIn(parentIds). - WhereParentId(mysql.EqualPredicate, 0). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + categories02, err := query.Category.WithContext(ctx.RequestContext()). + Where(query.Category.ParentID.Eq(0)). + Not(query.Category.ID.In(parentIds...)). + Find() if err != nil { return nil, err } - listData = append(categories01, categories02...) + categories = append(categories01, categories02...) // 按分类升序 - sort.Slice(listData, func(i, j int) bool { - return listData[i].Sort < listData[j].Sort + sort.Slice(categories, func(i, j int) bool { + return categories[i].Sort < categories[j].Sort }) return } diff --git a/internal/services/site/service_categorysite.go b/internal/services/site/service_categorysite.go index 619803c..9eaf82e 100644 --- a/internal/services/site/service_categorysite.go +++ b/internal/services/site/service_categorysite.go @@ -2,45 +2,43 @@ package site import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/category" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type CategorySite struct { Category string - SiteList []site.Site + SiteList []model.Site } func (s *service) CategorySite(ctx core.Context) (categorySites []*CategorySite, err error) { // 获取分类 - categoryQueryBuilder := category.NewQueryBuilder() - categories, err := categoryQueryBuilder. - OrderBySort(true). - OrderById(true). - WhereIsUsed(mysql.EqualPredicate, 1). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + categories, err := query.Category.WithContext(ctx.RequestContext()). + Where(query.Category.IsUsed.Eq(1)). + Order(query.Category.Sort). + Order(query.Category.ID). + Find() + if err != nil { return nil, err } // 获取网站信息 - siteQueryBuilder := site.NewQueryBuilder() - sites, err := siteQueryBuilder. - WhereIsUsed(mysql.EqualPredicate, 1). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + sites, err := query.Site.WithContext(ctx.RequestContext()). + Where(query.Site.IsUsed.Eq(1)). + Find() if err != nil { return nil, err } // 拼接数据 - for _, ctg := range categories { - var siteList []site.Site + for _, cat := range categories { + var siteList []model.Site for _, st := range sites { - if ctg.Id == st.CategoryId { + if cat.ID == st.CategoryID { siteList = append(siteList, *st) } } categorySites = append(categorySites, &CategorySite{ - Category: ctg.Title, + Category: cat.Title, SiteList: siteList, }) } diff --git a/internal/services/site/service_create.go b/internal/services/site/service_create.go index 04b871c..39eb558 100755 --- a/internal/services/site/service_create.go +++ b/internal/services/site/service_create.go @@ -2,9 +2,11 @@ package site import ( "crypto/tls" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" + "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/pkg/tools" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" "github.com/gocolly/colly" "github.com/mat/besticon/besticon" "io" @@ -16,12 +18,12 @@ import ( ) type CreateSiteData struct { - CategoryId int32 `json:"category_id"` + CategoryId int64 `json:"category_id"` Url string `json:"Url" validate:"url, http_url"` } // 获取网站 logo -func getWebLogoIconUrlByUrl(site *site.Site) string { +func getWebLogoIconUrlByUrl(site *model.Site) string { // https 不安全跳过验证 client := &http.Client{ @@ -33,7 +35,7 @@ func getWebLogoIconUrlByUrl(site *site.Site) string { besticon.WithLogger(besticon.NewDefaultLogger(ioutil.Discard)), // 禁用详细日志记录 besticon.WithHTTPClient(client), // 设置用于请求的http客户端 ) - icons, err := b.NewIconFinder().FetchIcons(site.Url) + icons, err := b.NewIconFinder().FetchIcons(site.URL) if err != nil || len(icons) == 0 { return "" } @@ -65,13 +67,13 @@ func getWebLogoIconUrlByUrl(site *site.Site) string { } // getWebTitle 获取网站标题 -func getWebTitle(site *site.Site) string { +func getWebTitle(site *model.Site) string { var title string c := tools.NewColly() c.OnHTML("title", func(e *colly.HTMLElement) { title += e.Text }) - if err := c.Visit(site.Url); err != nil { + if err := c.Visit(site.URL); err != nil { return "" } return title @@ -79,7 +81,7 @@ func getWebTitle(site *site.Site) string { } // getWebDescription 获取网站描述 -func getWebDescription(site *site.Site) string { +func getWebDescription(site *model.Site) string { var description string c := tools.NewColly() c.OnXML("//meta[@name='description']/@content|//meta[@name='Description']/@content|//meta[@name='DESCRIPTION']", @@ -87,24 +89,24 @@ func getWebDescription(site *site.Site) string { description += e.Text }, ) - if err := c.Visit(site.Url); err != nil { + if err := c.Visit(site.URL); err != nil { return "" } return description } -func (s *service) Create(ctx core.Context, sitesData []*CreateSiteData) (successCount, failCount int32) { +func (s *service) Create(ctx core.Context, sitesData []*CreateSiteData) (successCount, failCount int64) { for _, siteData := range sitesData { - model := site.NewModel() - model.IsUsed = site.Off - model.Url = siteData.Url - model.CategoryId = siteData.CategoryId - model.Title = getWebTitle(model) - model.Description = getWebDescription(model) - model.Thumb = getWebLogoIconUrlByUrl(model) - // 统计成功失败次数 - if _, err := model.Create(s.db.GetDbW().WithContext(ctx.RequestContext())); err != nil { + siteModel := new(model.Site) + siteModel.IsUsed = -1 + siteModel.URL = siteData.Url + siteModel.CategoryID = siteData.CategoryId + siteModel.Title = getWebTitle(siteModel) + siteModel.Description = getWebDescription(siteModel) + siteModel.Thumb = getWebLogoIconUrlByUrl(siteModel) + + if err := query.Site.WithContext(ctx.RequestContext()).Create(siteModel); err != nil { failCount++ } else { successCount++ diff --git a/internal/services/site/service_delete.go b/internal/services/site/service_delete.go index 43c235a..a1d240c 100755 --- a/internal/services/site/service_delete.go +++ b/internal/services/site/service_delete.go @@ -2,25 +2,22 @@ package site import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "gorm.io/gorm" ) -func (s *service) Delete(ctx core.Context, id int32) (err error) { +func (s *service) Delete(ctx core.Context, id int64) (err error) { // 先查询 id 是否存在 - _, err = site.NewQueryBuilder(). - WhereId(mysql.EqualPredicate, id). - First(s.db.GetDbR().WithContext(ctx.RequestContext())) - - if err == gorm.ErrRecordNotFound { + if _, err = query.Site.WithContext(ctx.RequestContext()). + Where(query.Site.ID.Eq(id)). + First(); err == gorm.ErrRecordNotFound { return nil } - - qb := site.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - if err = qb.Delete(s.db.GetDbW().WithContext(ctx.RequestContext())); err != nil { - return err + // 根据 id 删除 + if _, err = query.Site.WithContext(ctx.RequestContext()). + Where(query.Site.ID.Eq(id)). + Delete(); err != nil { + return } return diff --git a/internal/services/site/service_list.go b/internal/services/site/service_list.go deleted file mode 100755 index 766d936..0000000 --- a/internal/services/site/service_list.go +++ /dev/null @@ -1,17 +0,0 @@ -package site - -import ( - "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" -) - -func (s *service) List(ctx core.Context) (listData []*site.Site, err error) { - - qb := site.NewQueryBuilder() - listData, err = qb.QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) - if err != nil { - return nil, err - } - - return -} diff --git a/internal/services/site/service_pagelist.go b/internal/services/site/service_pagelist.go index ca0e5b0..124049f 100755 --- a/internal/services/site/service_pagelist.go +++ b/internal/services/site/service_pagelist.go @@ -2,12 +2,13 @@ package site import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type SearchData struct { - Page int `json:"page"` // 第几页 - PageSize int `json:"page_size"` // 每页显示条数 + Page int64 `json:"page"` // 第几页 + PageSize int64 `json:"page_size"` // 每页显示条数 BusinessKey string `json:"business_key"` // 调用方key BusinessSecret string `json:"business_secret"` // 调用方secret BusinessDeveloper string `json:"business_developer"` // 调用方对接人 @@ -15,29 +16,15 @@ type SearchData struct { Search string `json:"search"` // 搜索关键字 } -func (s *service) PageList(ctx core.Context, searchData *SearchData) (listData []*site.Site, err error) { +func (s *service) PageList(ctx core.Context, searchData *SearchData) (sites []*model.Site, err error) { - page := searchData.Page - if page == 0 { - page = 1 - } - - pageSize := searchData.PageSize - if pageSize == 0 { - pageSize = 10 - } - - offset := (page - 1) * pageSize - - qb := site.NewQueryBuilder() + iSiteDo := query.Site.WithContext(ctx.RequestContext()) if searchData.Search != "" { - qb = qb.WhereTitleLike(searchData.Search) + iSiteDo = iSiteDo.Where(query.Site.Title.Like("%" + searchData.Search + "%")) } - listData, err = qb. - Limit(pageSize). - Offset(offset). - OrderById(false). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + sites, _, err = iSiteDo.Preload(query.Site.Category). + Order(query.Site.ID.Desc()). + FindByPage(int((searchData.Page-1)*searchData.PageSize), int(searchData.PageSize)) if err != nil { return nil, err } diff --git a/internal/services/site/service_pagelistcount.go b/internal/services/site/service_pagelistcount.go index 6e2572a..cc7020b 100755 --- a/internal/services/site/service_pagelistcount.go +++ b/internal/services/site/service_pagelistcount.go @@ -2,18 +2,18 @@ package site import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) func (s *service) PageListCount(ctx core.Context, searchData *SearchData) (total int64, err error) { - qb := site.NewQueryBuilder() + + iSiteDo := query.Site.WithContext(ctx.RequestContext()) if searchData.Search != "" { - qb = qb.WhereTitleLike(searchData.Search) + iSiteDo = iSiteDo.Where(query.Site.Title.Like("%" + searchData.Search + "%")) } - total, err = qb.Count(s.db.GetDbR().WithContext(ctx.RequestContext())) - if err != nil { + if total, err = iSiteDo.Count(); err != nil { return 0, err + } else { + return } - - return } diff --git a/internal/services/site/service_updatesite.go b/internal/services/site/service_updatesite.go index 51e2a63..0021322 100644 --- a/internal/services/site/service_updatesite.go +++ b/internal/services/site/service_updatesite.go @@ -2,15 +2,14 @@ package site import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "mime/multipart" "path" ) type UpdateSiteRequest struct { - Id int32 `json:"id"` - CategoryId int32 `json:"category_id"` // 网站分类id + Id int64 `json:"id"` + CategoryId int64 `json:"category_id"` // 网站分类id Title string `json:"title"` // 网站标题 Thumb string `json:"thumb"` // 网站 logo Description string `json:"description"` // 网站描述 @@ -36,16 +35,15 @@ func getWebLogoIconUrlByUploadImg(ctx core.Context) string { } func (s *service) UpdateSite(ctx core.Context, updateSite *UpdateSiteRequest) (err error) { - qb := site.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, updateSite.Id) - data := map[string]any{ - "CategoryId": updateSite.CategoryId, - "Title": updateSite.Title, - "Thumb": getWebThumb(ctx, updateSite), - "Description": updateSite.Description, - "Url": updateSite.Url, - } - if err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data); err != nil { + if _, err = query.Site.WithContext(ctx.RequestContext()). + Where(query.Site.ID.Eq(updateSite.Id)). + Updates(map[string]any{ + "CategoryID": updateSite.CategoryId, + "Title": updateSite.Title, + "Thumb": getWebThumb(ctx, updateSite), + "Description": updateSite.Description, + "Url": updateSite.Url, + }); err != nil { return err } return diff --git a/internal/services/site/service_updateused.go b/internal/services/site/service_updateused.go index 67575d3..b81d55b 100755 --- a/internal/services/site/service_updateused.go +++ b/internal/services/site/service_updateused.go @@ -2,16 +2,13 @@ package site import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) -func (s *service) UpdateUsed(ctx core.Context, id int32, used site.IsUsedStatus) (err error) { - qb := site.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - data := map[string]any{"IsUsed": used} - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) - if err != nil { +func (s *service) UpdateUsed(ctx core.Context, id, used int64) (err error) { + if _, err = query.Site.WithContext(ctx.RequestContext()). + Where(query.Site.ID.Eq(id)). + Update(query.Site.IsUsed, used); err != nil { return err } From 20978a894fa6ed11a165753b42677e87fd2b1abe Mon Sep 17 00:00:00 2001 From: ch3nnn Date: Sun, 4 Jun 2023 21:35:21 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20gen=20=E8=87=AA=E5=8A=A8=E7=94=9F?= =?UTF-8?q?=E6=88=90=20gorm=20=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/gormgen/generate_table.go | 91 ++ internal/api/admin/func_create.go | 2 +- internal/api/admin/func_createadminmenu.go | 6 +- internal/api/admin/func_delete.go | 4 +- internal/api/admin/func_list.go | 62 +- internal/api/admin/func_listadminmenu.go | 4 +- internal/api/admin/func_login.go | 8 +- internal/api/admin/func_offline.go | 4 +- internal/api/admin/func_resetpassword.go | 4 +- internal/api/admin/func_updateused.go | 6 +- internal/api/authorized/func_create.go | 2 +- internal/api/authorized/func_createapi.go | 4 +- internal/api/authorized/func_delete.go | 4 +- internal/api/authorized/func_deleteapi.go | 4 +- internal/api/authorized/func_list.go | 52 +- internal/api/authorized/func_listapi.go | 6 +- internal/api/authorized/func_updateused.go | 6 +- internal/api/cron/func_create.go | 18 +- internal/api/cron/func_detail.go | 22 +- internal/api/cron/func_execute.go | 8 +- internal/api/cron/func_list.go | 84 +- internal/api/cron/func_modify.go | 20 +- internal/api/cron/func_updateused.go | 6 +- internal/api/menu/func_create.go | 12 +- internal/api/menu/func_createaction.go | 10 +- internal/api/menu/func_delete.go | 8 +- internal/api/menu/func_deleteaction.go | 4 +- internal/api/menu/func_detail.go | 10 +- internal/api/menu/func_list.go | 34 +- internal/api/menu/func_listaction.go | 14 +- internal/api/menu/func_updatesort.go | 6 +- internal/api/menu/func_updateused.go | 6 +- internal/api/site/func_list.go | 5 +- internal/pkg/password/password.go | 2 +- internal/proposal/session.go | 2 +- internal/render/generator/gorm_execute.go | 44 +- internal/repository/cron/cron.go | 8 +- internal/repository/cron/cron_add_job.go | 7 +- internal/repository/cron/cron_add_task.go | 7 +- internal/repository/cron/cron_remove_task.go | 2 +- internal/repository/cron/cron_start.go | 21 +- internal/repository/mysql/admin/gen_admin.go | 593 ----------- internal/repository/mysql/admin/gen_model.go | 19 - internal/repository/mysql/admin/gen_table.md | 16 - .../mysql/admin_menu/gen_admin_menu.go | 335 ------- .../repository/mysql/admin_menu/gen_model.go | 13 - .../repository/mysql/admin_menu/gen_table.md | 10 - .../mysql/authorized/gen_authorized.go | 593 ----------- .../repository/mysql/authorized/gen_model.go | 19 - .../repository/mysql/authorized/gen_table.md | 16 - internal/repository/mysql/authorized/model.go | 6 - .../authorized_api/gen_authorized_api.go | 507 ---------- .../mysql/authorized_api/gen_model.go | 17 - .../mysql/authorized_api/gen_table.md | 14 - .../repository/mysql/category/gen_category.go | 476 --------- .../repository/mysql/category/gen_model.go | 17 - .../repository/mysql/category/gen_table.md | 13 - .../{cron_task/model.go => constant/cron.go} | 12 +- .../mysql/cron_task/gen_cron_task.go | 937 ------------------ .../repository/mysql/cron_task/gen_model.go | 27 - .../repository/mysql/cron_task/gen_table.md | 24 - internal/repository/mysql/menu/gen_menu.go | 679 ------------- internal/repository/mysql/menu/gen_model.go | 21 - internal/repository/mysql/menu/gen_table.md | 18 - .../mysql/menu_action/gen_menu_action.go | 507 ---------- .../repository/mysql/menu_action/gen_model.go | 17 - .../repository/mysql/menu_action/gen_table.md | 14 - internal/repository/mysql/model/admin.gen.go | 31 + .../repository/mysql/model/admin_menu.gen.go | 25 + .../repository/mysql/model/authorized.gen.go | 31 + .../mysql/model/authorized_api.gen.go | 29 + .../repository/mysql/model/category.gen.go | 29 + .../repository/mysql/model/cron_task.gen.go | 39 + internal/repository/mysql/model/menu.gen.go | 33 + .../repository/mysql/model/menu_action.gen.go | 29 + internal/repository/mysql/model/site.gen.go | 30 + internal/repository/mysql/query/admin.gen.go | 424 ++++++++ .../repository/mysql/query/admin_menu.gen.go | 400 ++++++++ .../repository/mysql/query/authorized.gen.go | 424 ++++++++ .../mysql/query/authorized_api.gen.go | 416 ++++++++ .../repository/mysql/query/category.gen.go | 433 ++++++++ .../repository/mysql/query/cron_task.gen.go | 456 +++++++++ internal/repository/mysql/query/gen.go | 167 ++++ internal/repository/mysql/query/menu.gen.go | 432 ++++++++ .../repository/mysql/query/menu_action.gen.go | 416 ++++++++ internal/repository/mysql/query/site.gen.go | 494 +++++++++ internal/repository/mysql/site/gen_model.go | 28 - internal/repository/mysql/site/gen_site.go | 487 --------- internal/repository/mysql/site/gen_table.md | 14 - .../router/interceptor/check_signature.go | 4 +- internal/router/router_api.go | 4 +- internal/services/admin/service.go | 18 +- internal/services/admin/service_create.go | 24 +- internal/services/admin/service_createmenu.go | 39 +- internal/services/admin/service_delete.go | 19 +- internal/services/admin/service_detail.go | 29 +- internal/services/admin/service_listmenu.go | 48 +- .../services/admin/service_modifypassword.go | 19 +- .../admin/service_modifypersonalinfo.go | 21 +- internal/services/admin/service_myaction.go | 53 +- internal/services/admin/service_mymenu.go | 54 +- internal/services/admin/service_pagelist.go | 42 +- .../services/admin/service_pagelistcount.go | 16 +- .../services/admin/service_resetpassword.go | 20 +- internal/services/admin/service_updateused.go | 20 +- internal/services/authorized/service.go | 21 +- .../services/authorized/service_create.go | 26 +- .../services/authorized/service_createapi.go | 20 +- .../services/authorized/service_delete.go | 28 +- .../services/authorized/service_deleteapi.go | 30 +- .../services/authorized/service_detail.go | 15 +- .../authorized/service_detailbykey.go | 35 +- internal/services/authorized/service_list.go | 22 +- .../services/authorized/service_listapi.go | 18 +- .../services/authorized/service_pagelist.go | 43 +- .../authorized/service_pagelistcount.go | 16 +- .../services/authorized/service_updateused.go | 27 +- internal/services/category/service_tree.go | 51 +- internal/services/cron/service.go | 14 +- internal/services/cron/service_create.go | 60 +- internal/services/cron/service_detail.go | 15 +- internal/services/cron/service_execute.go | 14 +- internal/services/cron/service_modify.go | 42 +- internal/services/cron/service_pagelist.go | 44 +- .../services/cron/service_pagelistcount.go | 17 +- internal/services/cron/service_updateused.go | 35 +- internal/services/index/service.go | 4 +- internal/services/index/service_index.go | 12 +- internal/services/menu/service.go | 21 +- internal/services/menu/service_create.go | 33 +- .../services/menu/service_createaction.go | 25 +- internal/services/menu/service_delete.go | 20 +- .../services/menu/service_deleteaction.go | 29 +- internal/services/menu/service_detail.go | 24 +- internal/services/menu/service_list.go | 20 +- internal/services/menu/service_listaction.go | 21 +- internal/services/menu/service_modify.go | 23 +- internal/services/menu/service_updatesort.go | 20 +- internal/services/menu/service_updateused.go | 20 +- 139 files changed, 5219 insertions(+), 6492 deletions(-) create mode 100644 cmd/gormgen/generate_table.go delete mode 100755 internal/repository/mysql/admin/gen_admin.go delete mode 100755 internal/repository/mysql/admin/gen_model.go delete mode 100755 internal/repository/mysql/admin/gen_table.md delete mode 100755 internal/repository/mysql/admin_menu/gen_admin_menu.go delete mode 100755 internal/repository/mysql/admin_menu/gen_model.go delete mode 100755 internal/repository/mysql/admin_menu/gen_table.md delete mode 100755 internal/repository/mysql/authorized/gen_authorized.go delete mode 100755 internal/repository/mysql/authorized/gen_model.go delete mode 100755 internal/repository/mysql/authorized/gen_table.md delete mode 100755 internal/repository/mysql/authorized/model.go delete mode 100755 internal/repository/mysql/authorized_api/gen_authorized_api.go delete mode 100755 internal/repository/mysql/authorized_api/gen_model.go delete mode 100755 internal/repository/mysql/authorized_api/gen_table.md delete mode 100755 internal/repository/mysql/category/gen_category.go delete mode 100755 internal/repository/mysql/category/gen_model.go delete mode 100755 internal/repository/mysql/category/gen_table.md rename internal/repository/mysql/{cron_task/model.go => constant/cron.go} (75%) mode change 100755 => 100644 delete mode 100755 internal/repository/mysql/cron_task/gen_cron_task.go delete mode 100755 internal/repository/mysql/cron_task/gen_model.go delete mode 100755 internal/repository/mysql/cron_task/gen_table.md delete mode 100755 internal/repository/mysql/menu/gen_menu.go delete mode 100755 internal/repository/mysql/menu/gen_model.go delete mode 100755 internal/repository/mysql/menu/gen_table.md delete mode 100755 internal/repository/mysql/menu_action/gen_menu_action.go delete mode 100755 internal/repository/mysql/menu_action/gen_model.go delete mode 100755 internal/repository/mysql/menu_action/gen_table.md create mode 100644 internal/repository/mysql/model/admin.gen.go create mode 100644 internal/repository/mysql/model/admin_menu.gen.go create mode 100644 internal/repository/mysql/model/authorized.gen.go create mode 100644 internal/repository/mysql/model/authorized_api.gen.go create mode 100644 internal/repository/mysql/model/category.gen.go create mode 100644 internal/repository/mysql/model/cron_task.gen.go create mode 100644 internal/repository/mysql/model/menu.gen.go create mode 100644 internal/repository/mysql/model/menu_action.gen.go create mode 100644 internal/repository/mysql/model/site.gen.go create mode 100644 internal/repository/mysql/query/admin.gen.go create mode 100644 internal/repository/mysql/query/admin_menu.gen.go create mode 100644 internal/repository/mysql/query/authorized.gen.go create mode 100644 internal/repository/mysql/query/authorized_api.gen.go create mode 100644 internal/repository/mysql/query/category.gen.go create mode 100644 internal/repository/mysql/query/cron_task.gen.go create mode 100644 internal/repository/mysql/query/gen.go create mode 100644 internal/repository/mysql/query/menu.gen.go create mode 100644 internal/repository/mysql/query/menu_action.gen.go create mode 100644 internal/repository/mysql/query/site.gen.go delete mode 100755 internal/repository/mysql/site/gen_model.go delete mode 100755 internal/repository/mysql/site/gen_site.go delete mode 100755 internal/repository/mysql/site/gen_table.md diff --git a/cmd/gormgen/generate_table.go b/cmd/gormgen/generate_table.go new file mode 100644 index 0000000..148ceae --- /dev/null +++ b/cmd/gormgen/generate_table.go @@ -0,0 +1,91 @@ +package gormgen + +import ( + "github.com/ch3nnn/webstack-go/internal/repository/mysql" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "gorm.io/gen" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +// Method 根据动态 sql 生成 orm +type Method interface { + // GetParentIdsByGroupParentId + // SELECT GROUP_CONCAT(a.parent_id) AS parent_ids from (SELECT parent_id FROM category GROUP BY parent_id) as a + GetParentIdsByGroupParentId() (gen.M, error) +} + +func GenerateTable(tables []string) { + + g := gen.NewGenerator(gen.Config{ + OutPath: "./internal/repository/mysql/query", + Mode: gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface, // generate mode + }) + + // reuse your gorm db + repo, _ := mysql.New() + g.UseDB(repo.GetDbW()) + + // 自定义字段的数据类型 + // 统一数字类型为int64,兼容protobuf (columnType gorm.ColumnType) (dataType string) + dataMap := map[string]func(columnType gorm.ColumnType) (dataType string){ + "tinyint": func(columnType gorm.ColumnType) (dataType string) { return "int64" }, + "smallint": func(columnType gorm.ColumnType) (dataType string) { return "int64" }, + "mediumint": func(columnType gorm.ColumnType) (dataType string) { return "int64" }, + "bigint": func(columnType gorm.ColumnType) (dataType string) { return "int64" }, + "int": func(columnType gorm.ColumnType) (dataType string) { return "int64" }, + "integer": func(columnType gorm.ColumnType) (dataType string) { return "int64" }, + } + // 要先于`ApplyBasic`执行 + g.WithDataTypeMap(dataMap) + + // 将非默认字段名的字段定义为自动时间戳和软删除字段; + // 自动时间戳默认字段名为:`updated_at`、`created_at, 表字段数据类型为: INT 或 DATETIME + // 软删除默认字段名为:`deleted_at`, 表字段数据类型为: DATETIME + //autoUpdateTimeField := gen.FieldGORMTag("update_time", func(tag field.GormTag) field.GormTag {return }) + //autoCreateTimeField := gen.FieldGORMTag("create_time", "column:create_time;type:int unsigned;autoCreateTime") + + // 模型自定义选项组 + //fieldOpts := []gen.ModelOpt{autoCreateTimeField, autoUpdateTimeField} + + // 分类 + category := g.GenerateModel("category") + g.ApplyInterface(func(Method) {}, model.Category{}) + // 网址 + site := g.GenerateModel("site", gen.FieldRelate(field.BelongsTo, "Category", category, &field.RelateConfig{ + GORMTag: map[string]string{"foreignKey": "CategoryID"}, + }), + ) + // 菜单 + menu := g.GenerateModel("menu") + // 菜单动作 + menuAction := g.GenerateModel("menu_action") + // 管理员菜单栏表 + adminMenu := g.GenerateModel("admin_menu") + // 管理员表 + admin := g.GenerateModel("admin") + // 定时任务表 + cronTask := g.GenerateModel("cron_task") + // 已授权接口地址表 + authorizedApi := g.GenerateModel("authorized_api") + // 已授权的调用方表 + authorized := g.GenerateModel("authorized") + // 自定义表结构生成 + for _, table := range tables { + g.ApplyBasic(g.GenerateModel(table)) + } + + // 创建全部模型文件, 并覆盖前面创建的同名模型 + //allModel := g.GenerateAllTable(fieldOpts...) + + // Generate basic type-safe DAO API for struct `model.User` following conventions + g.ApplyBasic(site, menu, menuAction, adminMenu, admin, cronTask, authorizedApi, authorized) + //g.ApplyBasic(allModel) + + // Generate the code + g.Execute() +} + +//func main() { +// GenerateTable(nil) +//} diff --git a/internal/api/admin/func_create.go b/internal/api/admin/func_create.go index db202b5..fc0574d 100755 --- a/internal/api/admin/func_create.go +++ b/internal/api/admin/func_create.go @@ -17,7 +17,7 @@ type createRequest struct { } type createResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // Create 新增管理员 diff --git a/internal/api/admin/func_createadminmenu.go b/internal/api/admin/func_createadminmenu.go index 694d91f..e5be6ed 100755 --- a/internal/api/admin/func_createadminmenu.go +++ b/internal/api/admin/func_createadminmenu.go @@ -14,7 +14,7 @@ type createAdminMenuRequest struct { } type createAdminMenuResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // CreateAdminMenu 提交菜单授权 @@ -53,7 +53,7 @@ func (h *handler) CreateAdminMenu() core.HandlerFunc { } createData := new(admin.CreateMenuData) - createData.AdminId = int32(ids[0]) + createData.AdminId = int64(ids[0]) createData.Actions = req.Actions err = h.adminService.CreateMenu(c, createData) @@ -66,7 +66,7 @@ func (h *handler) CreateAdminMenu() core.HandlerFunc { return } - res.Id = int32(ids[0]) + res.Id = int64(ids[0]) c.Payload(res) } } diff --git a/internal/api/admin/func_delete.go b/internal/api/admin/func_delete.go index ffdb347..033faca 100755 --- a/internal/api/admin/func_delete.go +++ b/internal/api/admin/func_delete.go @@ -12,7 +12,7 @@ type deleteRequest struct { } type deleteResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // Delete 删除管理员 @@ -49,7 +49,7 @@ func (h *handler) Delete() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) err = h.adminService.Delete(c, id) if err != nil { diff --git a/internal/api/admin/func_list.go b/internal/api/admin/func_list.go index 779a7e5..e8c7cba 100755 --- a/internal/api/admin/func_list.go +++ b/internal/api/admin/func_list.go @@ -14,21 +14,21 @@ import ( ) type listRequest struct { - Page int `form:"page"` // 第几页 - PageSize int `form:"page_size"` // 每页显示条数 - Username string `form:"username"` // 用户名 - Nickname string `form:"nickname"` // 昵称 - Mobile string `form:"mobile"` // 手机号 + Page int64 `form:"page,default=1"` // 第几页 + PageSize int64 `form:"page_size,default=10"` // 每页显示条数 + Username string `form:"username"` // 用户名 + Nickname string `form:"nickname"` // 昵称 + Mobile string `form:"mobile"` // 手机号 } type listData struct { - Id int `json:"id"` // ID + Id int64 `json:"id"` // ID HashID string `json:"hashid"` // hashid Username string `json:"username"` // 用户名 Nickname string `json:"nickname"` // 昵称 Mobile string `json:"mobile"` // 手机号 - IsUsed int `json:"is_used"` // 是否启用 1:是 -1:否 - IsOnline int `json:"is_online"` // 是否在线 1:是 -1:否 + IsUsed int64 `json:"is_used"` // 是否启用 1:是 -1:否 + IsOnline int64 `json:"is_online"` // 是否在线 1:是 -1:否 CreatedAt string `json:"created_at"` // 创建时间 CreatedUser string `json:"created_user"` // 创建人 UpdatedAt string `json:"updated_at"` // 更新时间 @@ -38,9 +38,9 @@ type listData struct { type listResponse struct { List []listData `json:"list"` Pagination struct { - Total int `json:"total"` - CurrentPage int `json:"current_page"` - PerPageCount int `json:"per_page_count"` + Total int64 `json:"total"` + CurrentPage int64 `json:"current_page"` + PerPageCount int64 `json:"per_page_count"` } `json:"pagination"` } @@ -72,24 +72,14 @@ func (h *handler) List() core.HandlerFunc { return } - page := req.Page - if page == 0 { - page = 1 - } - - pageSize := req.PageSize - if pageSize == 0 { - pageSize = 10 - } - searchData := new(admin.SearchData) - searchData.Page = page - searchData.PageSize = pageSize + searchData.Page = req.Page + searchData.PageSize = req.PageSize searchData.Username = req.Username searchData.Nickname = req.Nickname searchData.Mobile = req.Mobile - resListData, err := h.adminService.PageList(c, searchData) + admins, err := h.adminService.PageList(c, searchData) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -108,13 +98,13 @@ func (h *handler) List() core.HandlerFunc { ) return } - res.Pagination.Total = cast.ToInt(resCountData) - res.Pagination.PerPageCount = pageSize - res.Pagination.CurrentPage = page - res.List = make([]listData, len(resListData)) + res.Pagination.Total = resCountData + res.Pagination.PerPageCount = req.PageSize + res.Pagination.CurrentPage = req.Page + res.List = make([]listData, len(admins)) - for k, v := range resListData { - hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(v.Id)}) + for k, v := range admins { + hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(v.ID)}) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -125,25 +115,23 @@ func (h *handler) List() core.HandlerFunc { } isOnline := -1 - if h.cache.Exists(configs.RedisKeyPrefixLoginUser + password.GenerateLoginToken(v.Id)) { + if h.cache.Exists(configs.RedisKeyPrefixLoginUser + password.GenerateLoginToken(v.ID)) { isOnline = 1 } - data := listData{ - Id: cast.ToInt(v.Id), + res.List[k] = listData{ + Id: v.ID, HashID: hashId, Username: v.Username, Nickname: v.Nickname, Mobile: v.Mobile, - IsUsed: cast.ToInt(v.IsUsed), - IsOnline: isOnline, + IsUsed: v.IsUsed, + IsOnline: int64(isOnline), CreatedAt: v.CreatedAt.Format(timeutil.CSTLayout), CreatedUser: v.CreatedUser, UpdatedAt: v.UpdatedAt.Format(timeutil.CSTLayout), UpdatedUser: v.UpdatedUser, } - - res.List[k] = data } c.Payload(res) diff --git a/internal/api/admin/func_listadminmenu.go b/internal/api/admin/func_listadminmenu.go index 788efdd..bda9458 100755 --- a/internal/api/admin/func_listadminmenu.go +++ b/internal/api/admin/func_listadminmenu.go @@ -52,7 +52,7 @@ func (h *handler) ListAdminMenu() core.HandlerFunc { } searchOneData := new(admin.SearchOneData) - searchOneData.Id = int32(ids[0]) + searchOneData.Id = int64(ids[0]) searchOneData.IsUsed = 1 info, err := h.adminService.Detail(c, searchOneData) @@ -68,7 +68,7 @@ func (h *handler) ListAdminMenu() core.HandlerFunc { res.UserName = info.Username searchData := new(admin.SearchListMenuData) - searchData.AdminId = int32(ids[0]) + searchData.AdminId = int64(ids[0]) listData, err := h.adminService.ListMenu(c, searchData) if err != nil { diff --git a/internal/api/admin/func_login.go b/internal/api/admin/func_login.go index 4536bcb..b36622b 100755 --- a/internal/api/admin/func_login.go +++ b/internal/api/admin/func_login.go @@ -72,11 +72,11 @@ func (h *handler) Login() core.HandlerFunc { return } - token := password.GenerateLoginToken(info.Id) + token := password.GenerateLoginToken(info.ID) // 用户信息 sessionUserInfo := &proposal.SessionUserInfo{ - UserID: info.Id, + UserID: info.ID, UserName: info.Username, } @@ -92,7 +92,7 @@ func (h *handler) Login() core.HandlerFunc { } searchMenuData := new(admin.SearchMyMenuData) - searchMenuData.AdminId = info.Id + searchMenuData.AdminId = info.ID menu, err := h.adminService.MyMenu(c, searchMenuData) if err != nil { c.AbortWithError(core.Error( @@ -118,7 +118,7 @@ func (h *handler) Login() core.HandlerFunc { } searchActionData := new(admin.SearchMyActionData) - searchActionData.AdminId = info.Id + searchActionData.AdminId = info.ID action, err := h.adminService.MyAction(c, searchActionData) if err != nil { c.AbortWithError(core.Error( diff --git a/internal/api/admin/func_offline.go b/internal/api/admin/func_offline.go index bfe4309..f3f8ea1 100755 --- a/internal/api/admin/func_offline.go +++ b/internal/api/admin/func_offline.go @@ -15,7 +15,7 @@ type offlineRequest struct { } type offlineResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // Offline 下线管理员 @@ -52,7 +52,7 @@ func (h *handler) Offline() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) b := h.cache.Del(configs.RedisKeyPrefixLoginUser+password.GenerateLoginToken(id), redis.WithTrace(c.Trace())) if !b { diff --git a/internal/api/admin/func_resetpassword.go b/internal/api/admin/func_resetpassword.go index 811663a..9a52ad2 100755 --- a/internal/api/admin/func_resetpassword.go +++ b/internal/api/admin/func_resetpassword.go @@ -12,7 +12,7 @@ type resetPasswordRequest struct { } type resetPasswordResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // ResetPassword 重置密码 @@ -49,7 +49,7 @@ func (h *handler) ResetPassword() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) err = h.adminService.ResetPassword(c, id) if err != nil { diff --git a/internal/api/admin/func_updateused.go b/internal/api/admin/func_updateused.go index 30a975f..72d29ef 100755 --- a/internal/api/admin/func_updateused.go +++ b/internal/api/admin/func_updateused.go @@ -9,11 +9,11 @@ import ( type updateUsedRequest struct { Id string `form:"id"` // 主键ID - Used int32 `form:"used"` // 是否启用 1:是 -1:否 + Used int64 `form:"used"` // 是否启用 1:是 -1:否 } type updateUsedResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // UpdateUsed 更新管理员为启用/禁用 @@ -51,7 +51,7 @@ func (h *handler) UpdateUsed() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) err = h.adminService.UpdateUsed(c, id, req.Used) if err != nil { diff --git a/internal/api/authorized/func_create.go b/internal/api/authorized/func_create.go index 0b3d60a..17d048f 100755 --- a/internal/api/authorized/func_create.go +++ b/internal/api/authorized/func_create.go @@ -15,7 +15,7 @@ type createRequest struct { } type createResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // Create 新增调用方 diff --git a/internal/api/authorized/func_createapi.go b/internal/api/authorized/func_createapi.go index 586627b..d4ba625 100755 --- a/internal/api/authorized/func_createapi.go +++ b/internal/api/authorized/func_createapi.go @@ -15,7 +15,7 @@ type createAPIRequest struct { } type createAPIResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // CreateAPI 授权调用方接口地址 @@ -54,7 +54,7 @@ func (h *handler) CreateAPI() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) // 通过 id 查询出 business_key authorizedInfo, err := h.authorizedService.Detail(c, id) diff --git a/internal/api/authorized/func_delete.go b/internal/api/authorized/func_delete.go index 8bcb149..dc27be5 100755 --- a/internal/api/authorized/func_delete.go +++ b/internal/api/authorized/func_delete.go @@ -12,7 +12,7 @@ type deleteRequest struct { } type deleteResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // Delete 删除调用方 @@ -49,7 +49,7 @@ func (h *handler) Delete() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) err = h.authorizedService.Delete(c, id) if err != nil { diff --git a/internal/api/authorized/func_deleteapi.go b/internal/api/authorized/func_deleteapi.go index abcb2b4..7dfb08e 100755 --- a/internal/api/authorized/func_deleteapi.go +++ b/internal/api/authorized/func_deleteapi.go @@ -12,7 +12,7 @@ type deleteAPIRequest struct { } type deleteAPIResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // DeleteAPI 删除调用方接口地址 @@ -49,7 +49,7 @@ func (h *handler) DeleteAPI() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) err = h.authorizedService.DeleteAPI(c, id) if err != nil { diff --git a/internal/api/authorized/func_list.go b/internal/api/authorized/func_list.go index 6a49742..7a925f4 100755 --- a/internal/api/authorized/func_list.go +++ b/internal/api/authorized/func_list.go @@ -12,22 +12,22 @@ import ( ) type listRequest struct { - Page int `form:"page"` // 第几页 - PageSize int `form:"page_size"` // 每页显示条数 - BusinessKey string `form:"business_key"` // 调用方key - BusinessSecret string `form:"business_secret"` // 调用方secret - BusinessDeveloper string `form:"business_developer"` // 调用方对接人 - Remark string `form:"remark"` // 备注 + Page int64 `form:"page,default=1"` // 第几页 + PageSize int64 `form:"page_size,default=10"` // 每页显示条数 + BusinessKey string `form:"business_key"` // 调用方key + BusinessSecret string `form:"business_secret"` // 调用方secret + BusinessDeveloper string `form:"business_developer"` // 调用方对接人 + Remark string `form:"remark"` // 备注 } type listData struct { - Id int `json:"id"` // ID + Id int64 `json:"id"` // ID HashID string `json:"hashid"` // hashid BusinessKey string `json:"business_key"` // 调用方key BusinessSecret string `json:"business_secret"` // 调用方secret BusinessDeveloper string `json:"business_developer"` // 调用方对接人 Remark string `json:"remark"` // 备注 - IsUsed int `json:"is_used"` // 是否启用 1:是 -1:否 + IsUsed int64 `json:"is_used"` // 是否启用 1:是 -1:否 CreatedAt string `json:"created_at"` // 创建时间 CreatedUser string `json:"created_user"` // 创建人 UpdatedAt string `json:"updated_at"` // 更新时间 @@ -37,9 +37,9 @@ type listData struct { type listResponse struct { List []listData `json:"list"` Pagination struct { - Total int `json:"total"` - CurrentPage int `json:"current_page"` - PerPageCount int `json:"per_page_count"` + Total int64 `json:"total"` + CurrentPage int64 `json:"current_page"` + PerPageCount int64 `json:"per_page_count"` } `json:"pagination"` } @@ -72,19 +72,9 @@ func (h *handler) List() core.HandlerFunc { return } - page := req.Page - if page == 0 { - page = 1 - } - - pageSize := req.PageSize - if pageSize == 0 { - pageSize = 10 - } - searchData := new(authorized.SearchData) - searchData.Page = page - searchData.PageSize = pageSize + searchData.Page = req.Page + searchData.PageSize = req.PageSize searchData.BusinessKey = req.BusinessKey searchData.BusinessSecret = req.BusinessSecret searchData.Remark = req.Remark @@ -108,13 +98,13 @@ func (h *handler) List() core.HandlerFunc { ) return } - res.Pagination.Total = cast.ToInt(resCountData) - res.Pagination.PerPageCount = pageSize - res.Pagination.CurrentPage = page + res.Pagination.Total = resCountData + res.Pagination.PerPageCount = req.PageSize + res.Pagination.CurrentPage = req.Page res.List = make([]listData, len(resListData)) for k, v := range resListData { - hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(v.Id)}) + hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(v.ID)}) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -124,21 +114,19 @@ func (h *handler) List() core.HandlerFunc { return } - data := listData{ - Id: cast.ToInt(v.Id), + res.List[k] = listData{ + Id: v.ID, HashID: hashId, BusinessKey: v.BusinessKey, BusinessSecret: v.BusinessSecret, BusinessDeveloper: v.BusinessDeveloper, Remark: v.Remark, - IsUsed: cast.ToInt(v.IsUsed), + IsUsed: v.IsUsed, CreatedAt: v.CreatedAt.Format(timeutil.CSTLayout), CreatedUser: v.CreatedUser, UpdatedAt: v.UpdatedAt.Format(timeutil.CSTLayout), UpdatedUser: v.UpdatedUser, } - - res.List[k] = data } c.Payload(res) diff --git a/internal/api/authorized/func_listapi.go b/internal/api/authorized/func_listapi.go index 4891f72..3a8cd47 100755 --- a/internal/api/authorized/func_listapi.go +++ b/internal/api/authorized/func_listapi.go @@ -60,7 +60,7 @@ func (h *handler) ListAPI() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) // 通过 id 查询出 business_key authorizedInfo, err := h.authorizedService.Detail(c, id) @@ -91,7 +91,7 @@ func (h *handler) ListAPI() core.HandlerFunc { res.List = make([]listAPIData, len(resListData)) for k, v := range resListData { - hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(v.Id)}) + hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(v.ID)}) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -105,7 +105,7 @@ func (h *handler) ListAPI() core.HandlerFunc { HashId: hashId, BusinessKey: v.BusinessKey, Method: v.Method, - API: v.Api, + API: v.API, } res.List[k] = data diff --git a/internal/api/authorized/func_updateused.go b/internal/api/authorized/func_updateused.go index 485f73e..5e12a9a 100755 --- a/internal/api/authorized/func_updateused.go +++ b/internal/api/authorized/func_updateused.go @@ -9,11 +9,11 @@ import ( type updateUsedRequest struct { Id string `form:"id"` // 主键ID - Used int32 `form:"used"` // 是否启用 1:是 -1:否 + Used int64 `form:"used"` // 是否启用 1:是 -1:否 } type updateUsedResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // UpdateUsed 更新调用方为启用/禁用 @@ -51,7 +51,7 @@ func (h *handler) UpdateUsed() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) err = h.authorizedService.UpdateUsed(c, id, req.Used) if err != nil { diff --git a/internal/api/cron/func_create.go b/internal/api/cron/func_create.go index 92b64b6..509c353 100755 --- a/internal/api/cron/func_create.go +++ b/internal/api/cron/func_create.go @@ -13,21 +13,21 @@ type createRequest struct { Name string `form:"name" binding:"required"` // 任务名称 Spec string `form:"spec" binding:"required"` // crontab 表达式 Command string `form:"command" binding:"required"` // 执行命令 - Protocol int32 `form:"protocol" binding:"required"` // 执行方式 1:shell 2:http - HttpMethod int32 `form:"http_method"` // http 请求方式 1:get 2:post - Timeout int32 `form:"timeout" binding:"required"` // 超时时间(单位:秒) - RetryTimes int32 `form:"retry_times" binding:"required"` // 重试次数 - RetryInterval int32 `form:"retry_interval" binding:"required"` // 重试间隔(单位:秒) - NotifyStatus int32 `form:"notify_status" binding:"required"` // 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 - NotifyType int32 `form:"notify_type"` // 通知类型 1:邮件 2:webhook + Protocol int64 `form:"protocol" binding:"required"` // 执行方式 1:shell 2:http + HttpMethod int64 `form:"http_method"` // http 请求方式 1:get 2:post + Timeout int64 `form:"timeout" binding:"required"` // 超时时间(单位:秒) + RetryTimes int64 `form:"retry_times" binding:"required"` // 重试次数 + RetryInterval int64 `form:"retry_interval" binding:"required"` // 重试间隔(单位:秒) + NotifyStatus int64 `form:"notify_status" binding:"required"` // 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 + NotifyType int64 `form:"notify_type"` // 通知类型 1:邮件 2:webhook NotifyReceiverEmail string `form:"notify_receiver_email"` // 通知者邮箱地址(多个用,分割) NotifyKeyword string `form:"notify_keyword"` // 通知匹配关键字(多个用,分割) Remark string `form:"remark"` // 备注 - IsUsed int32 `form:"is_used" binding:"required"` // 是否启用 1:是 -1:否 + IsUsed int64 `form:"is_used" binding:"required"` // 是否启用 1:是 -1:否 } type createResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // Create 创建任务 diff --git a/internal/api/cron/func_detail.go b/internal/api/cron/func_detail.go index d92aa1d..598dd99 100755 --- a/internal/api/cron/func_detail.go +++ b/internal/api/cron/func_detail.go @@ -7,8 +7,6 @@ import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/pkg/validation" "github.com/ch3nnn/webstack-go/internal/services/cron" - - "github.com/spf13/cast" ) type detailRequest struct { @@ -19,17 +17,17 @@ type detailResponse struct { Name string `json:"name"` // 任务名称 Spec string `json:"spec"` // crontab 表达式 Command string `json:"command"` // 执行命令 - Protocol int32 `json:"protocol"` // 执行方式 1:shell 2:http - HttpMethod int32 `json:"http_method"` // http 请求方式 1:get 2:post - Timeout int32 `json:"timeout"` // 超时时间(单位:秒) - RetryTimes int32 `json:"retry_times"` // 重试次数 - RetryInterval int32 `json:"retry_interval"` // 重试间隔(单位:秒) - NotifyStatus int32 `json:"notify_status"` // 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 - NotifyType int32 `json:"notify_type"` // 通知类型 1:邮件 2:webhook + Protocol int64 `json:"protocol"` // 执行方式 1:shell 2:http + HttpMethod int64 `json:"http_method"` // http 请求方式 1:get 2:post + Timeout int64 `json:"timeout"` // 超时时间(单位:秒) + RetryTimes int64 `json:"retry_times"` // 重试次数 + RetryInterval int64 `json:"retry_interval"` // 重试间隔(单位:秒) + NotifyStatus int64 `json:"notify_status"` // 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 + NotifyType int64 `json:"notify_type"` // 通知类型 1:邮件 2:webhook NotifyReceiverEmail string `json:"notify_receiver_email"` // 通知者邮箱地址(多个用,分割) NotifyKeyword string `json:"notify_keyword"` // 通知匹配关键字(多个用,分割) Remark string `json:"remark"` // 备注 - IsUsed int32 `json:"is_used"` // 是否启用 1:是 -1:否 + IsUsed int64 `json:"is_used"` // 是否启用 1:是 -1:否 } // Detail 获取单条任务详情 @@ -67,7 +65,7 @@ func (h *handler) Detail() core.HandlerFunc { } searchOneData := new(cron.SearchOneData) - searchOneData.Id = cast.ToInt32(ids[0]) + searchOneData.Id = int64(ids[0]) info, err := h.cronService.Detail(ctx, searchOneData) if err != nil { @@ -83,7 +81,7 @@ func (h *handler) Detail() core.HandlerFunc { res.Spec = info.Spec res.Command = info.Command res.Protocol = info.Protocol - res.HttpMethod = info.HttpMethod + res.HttpMethod = info.HTTPMethod res.Timeout = info.Timeout res.RetryTimes = info.RetryTimes res.RetryInterval = info.RetryInterval diff --git a/internal/api/cron/func_execute.go b/internal/api/cron/func_execute.go index 6eeefcb..5ec4033 100755 --- a/internal/api/cron/func_execute.go +++ b/internal/api/cron/func_execute.go @@ -6,8 +6,6 @@ import ( "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/pkg/validation" - - "github.com/spf13/cast" ) type executeRequest struct { @@ -15,7 +13,7 @@ type executeRequest struct { } type executeResponse struct { - Id int `json:"id"` // ID + Id int64 `json:"id"` // ID } // Execute 手动执行单条任务 @@ -52,7 +50,7 @@ func (h *handler) Execute() core.HandlerFunc { return } - err = h.cronService.Execute(ctx, cast.ToInt32(ids[0])) + err = h.cronService.Execute(ctx, int64(ids[0])) if err != nil { ctx.AbortWithError(core.Error( http.StatusBadRequest, @@ -62,7 +60,7 @@ func (h *handler) Execute() core.HandlerFunc { return } - res.Id = ids[0] + res.Id = int64(ids[0]) ctx.Payload(res) } } diff --git a/internal/api/cron/func_list.go b/internal/api/cron/func_list.go index 0a6fadf..de4537c 100755 --- a/internal/api/cron/func_list.go +++ b/internal/api/cron/func_list.go @@ -1,12 +1,12 @@ package cron import ( + "github.com/ch3nnn/webstack-go/internal/repository/mysql/constant" "net/http" "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/pkg/validation" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/cron_task" "github.com/ch3nnn/webstack-go/internal/services/cron" "github.com/xinliangnote/go-gin-api/pkg/timeutil" @@ -14,29 +14,29 @@ import ( ) type listRequest struct { - Page int `form:"page"` // 第几页 - PageSize int `form:"page_size"` // 每页显示条数 - Name string `form:"name"` // 任务名称 - Protocol int `form:"protocol"` // 执行方式 1:shell 2:http - IsUsed int `form:"is_used"` // 是否启用 1:是 -1:否 + Page int64 `form:"page,default=1"` // 第几页 + PageSize int64 `form:"page_size,default=10"` // 每页显示条数 + Name string `form:"name"` // 任务名称 + Protocol int64 `form:"protocol"` // 执行方式 1:shell 2:http + IsUsed int64 `form:"is_used"` // 是否启用 1:是 -1:否 } type listData struct { - Id int `json:"id"` // ID + Id int64 `json:"id"` // ID HashID string `json:"hashid"` // hashid Name string `json:"name"` // 任务名称 - Protocol int `json:"protocol"` // 执行方式 1:shell 2:http + Protocol int64 `json:"protocol"` // 执行方式 1:shell 2:http ProtocolText string `json:"protocol_text"` // 执行方式 Spec string `json:"spec"` // crontab 表达式 Command string `json:"command"` // 执行命令 - HttpMethod int `json:"http_method"` // http 请求方式 1:get 2:post + HttpMethod int64 `json:"http_method"` // http 请求方式 1:get 2:post HttpMethodText string `json:"http_method_text"` // http 请求方式 - Timeout int `json:"timeout"` // 超时时间(单位:秒) - RetryTimes int `json:"retry_times"` // 重试次数 - RetryInterval int `json:"retry_interval"` // 重试间隔(单位:秒) - NotifyStatus int `json:"notify_status"` // 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 + Timeout int64 `json:"timeout"` // 超时时间(单位:秒) + RetryTimes int64 `json:"retry_times"` // 重试次数 + RetryInterval int64 `json:"retry_interval"` // 重试间隔(单位:秒) + NotifyStatus int64 `json:"notify_status"` // 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 NotifyStatusText string `json:"notify_status_text"` // 执行结束是否通知 - IsUsed int `json:"is_used"` // 是否启用 1=启用 2=禁用 + IsUsed int64 `json:"is_used"` // 是否启用 1=启用 2=禁用 IsUsedText string `json:"is_used_text"` // 是否启用 CreatedAt string `json:"created_at"` // 创建时间 CreatedUser string `json:"created_user"` // 创建人 @@ -47,9 +47,9 @@ type listData struct { type listResponse struct { List []listData `json:"list"` Pagination struct { - Total int `json:"total"` - CurrentPage int `json:"current_page"` - PerPageCount int `json:"per_page_count"` + Total int64 `json:"total"` + CurrentPage int64 `json:"current_page"` + PerPageCount int64 `json:"per_page_count"` } `json:"pagination"` } @@ -81,22 +81,12 @@ func (h *handler) List() core.HandlerFunc { return } - page := req.Page - if page == 0 { - page = 1 - } - - pageSize := req.PageSize - if pageSize == 0 { - pageSize = 10 - } - searchData := new(cron.SearchData) searchData.Page = req.Page searchData.PageSize = req.PageSize searchData.Name = req.Name - searchData.Protocol = cast.ToInt32(req.Protocol) - searchData.IsUsed = cast.ToInt32(req.IsUsed) + searchData.Protocol = req.Protocol + searchData.IsUsed = req.IsUsed resListData, err := h.cronService.PageList(ctx, searchData) if err != nil { @@ -118,13 +108,13 @@ func (h *handler) List() core.HandlerFunc { return } - res.Pagination.Total = cast.ToInt(resCountData) - res.Pagination.PerPageCount = pageSize - res.Pagination.CurrentPage = page + res.Pagination.Total = resCountData + res.Pagination.PerPageCount = req.PageSize + res.Pagination.CurrentPage = req.Page res.List = make([]listData, len(resListData)) for k, v := range resListData { - hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(v.Id)}) + hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(v.ID)}) if err != nil { ctx.AbortWithError(core.Error( http.StatusBadRequest, @@ -134,30 +124,28 @@ func (h *handler) List() core.HandlerFunc { return } - data := listData{ - Id: cast.ToInt(v.Id), + res.List[k] = listData{ + Id: v.ID, HashID: hashId, Name: v.Name, - Protocol: cast.ToInt(v.Protocol), - ProtocolText: cron_task.ProtocolText[v.Protocol], + Protocol: v.Protocol, + ProtocolText: constant.ProtocolText[v.Protocol], Spec: v.Spec, Command: v.Command, - HttpMethod: cast.ToInt(v.HttpMethod), - HttpMethodText: cron_task.HttpMethodText[v.HttpMethod], - Timeout: cast.ToInt(v.Timeout), - RetryTimes: cast.ToInt(v.RetryTimes), - RetryInterval: cast.ToInt(v.RetryInterval), - NotifyStatus: cast.ToInt(v.NotifyStatus), - NotifyStatusText: cron_task.NotifyStatusText[v.NotifyStatus], - IsUsed: cast.ToInt(v.IsUsed), - IsUsedText: cron_task.IsUsedText[v.IsUsed], + HttpMethod: v.HTTPMethod, + HttpMethodText: constant.HttpMethodText[v.HTTPMethod], + Timeout: v.Timeout, + RetryTimes: v.RetryTimes, + RetryInterval: v.RetryInterval, + NotifyStatus: v.NotifyStatus, + NotifyStatusText: constant.NotifyStatusText[v.NotifyStatus], + IsUsed: v.IsUsed, + IsUsedText: constant.IsUsedText[v.IsUsed], CreatedAt: v.CreatedAt.Format(timeutil.CSTLayout), CreatedUser: v.CreatedUser, UpdatedAt: v.UpdatedAt.Format(timeutil.CSTLayout), UpdatedUser: v.UpdatedUser, } - - res.List[k] = data } ctx.Payload(res) diff --git a/internal/api/cron/func_modify.go b/internal/api/cron/func_modify.go index e7b864a..f9b43d6 100755 --- a/internal/api/cron/func_modify.go +++ b/internal/api/cron/func_modify.go @@ -14,21 +14,21 @@ type modifyRequest struct { Name string `form:"name" binding:"required"` // 任务名称 Spec string `form:"spec" binding:"required"` // crontab 表达式 Command string `form:"command" binding:"required"` // 执行命令 - Protocol int32 `form:"protocol" binding:"required"` // 执行方式 1:shell 2:http - HttpMethod int32 `form:"http_method"` // http 请求方式 1:get 2:post - Timeout int32 `form:"timeout" binding:"required"` // 超时时间(单位:秒) - RetryTimes int32 `form:"retry_times" binding:"required"` // 重试次数 - RetryInterval int32 `form:"retry_interval" binding:"required"` // 重试间隔(单位:秒) - NotifyStatus int32 `form:"notify_status" binding:"required"` // 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 - NotifyType int32 `form:"notify_type"` // 通知类型 1:邮件 2:webhook + Protocol int64 `form:"protocol" binding:"required"` // 执行方式 1:shell 2:http + HttpMethod int64 `form:"http_method"` // http 请求方式 1:get 2:post + Timeout int64 `form:"timeout" binding:"required"` // 超时时间(单位:秒) + RetryTimes int64 `form:"retry_times" binding:"required"` // 重试次数 + RetryInterval int64 `form:"retry_interval" binding:"required"` // 重试间隔(单位:秒) + NotifyStatus int64 `form:"notify_status" binding:"required"` // 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 + NotifyType int64 `form:"notify_type"` // 通知类型 1:邮件 2:webhook NotifyReceiverEmail string `form:"notify_receiver_email"` // 通知者邮箱地址(多个用,分割) NotifyKeyword string `form:"notify_keyword"` // 通知匹配关键字(多个用,分割) Remark string `form:"remark"` // 备注 - IsUsed int32 `form:"is_used" binding:"required"` // 是否启用 1:是 -1:否 + IsUsed int64 `form:"is_used" binding:"required"` // 是否启用 1:是 -1:否 } type modifyResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // Modify 编辑任务 @@ -79,7 +79,7 @@ func (h *handler) Modify() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) modifyData := new(cron.ModifyCronTaskData) modifyData.Name = req.Name diff --git a/internal/api/cron/func_updateused.go b/internal/api/cron/func_updateused.go index a66a235..ec688bb 100755 --- a/internal/api/cron/func_updateused.go +++ b/internal/api/cron/func_updateused.go @@ -10,11 +10,11 @@ import ( type updateUsedRequest struct { Id string `form:"id"` // 主键ID - Used int32 `form:"used"` // 是否启用 1:是 -1:否 + Used int64 `form:"used"` // 是否启用 1:是 -1:否 } type updateUsedResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // UpdateUsed 更新任务为启用/禁用 @@ -52,7 +52,7 @@ func (h *handler) UpdateUsed() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) err = h.cronService.UpdateUsed(ctx, id, req.Used) if err != nil { diff --git a/internal/api/menu/func_create.go b/internal/api/menu/func_create.go index 075876e..83ee3a5 100755 --- a/internal/api/menu/func_create.go +++ b/internal/api/menu/func_create.go @@ -6,21 +6,19 @@ import ( "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/services/menu" - - "github.com/spf13/cast" ) type createRequest struct { Id string `form:"id"` // ID - Pid int32 `form:"pid"` // 父类ID + Pid int64 `form:"pid"` // 父类ID Name string `form:"name"` // 菜单名称 Link string `form:"link"` // 链接地址 Icon string `form:"icon"` // 图标 - Level int32 `form:"level"` // 菜单类型 1:一级菜单 2:二级菜单 + Level int64 `form:"level"` // 菜单类型 1:一级菜单 2:二级菜单 } type createResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // Create 创建/编辑菜单 @@ -58,7 +56,7 @@ func (h *handler) Create() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) updateData := new(menu.UpdateMenuData) updateData.Name = req.Name @@ -93,7 +91,7 @@ func (h *handler) Create() core.HandlerFunc { createData.Name = req.Name createData.Icon = req.Icon createData.Link = req.Link - createData.Level = cast.ToInt32(level) + createData.Level = int64(level) id, err := h.menuService.Create(c, createData) if err != nil { diff --git a/internal/api/menu/func_createaction.go b/internal/api/menu/func_createaction.go index 8660512..9b16d95 100755 --- a/internal/api/menu/func_createaction.go +++ b/internal/api/menu/func_createaction.go @@ -15,7 +15,7 @@ type createActionRequest struct { } type createActionResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // CreateAction 创建功能权限 @@ -54,10 +54,8 @@ func (h *handler) CreateAction() core.HandlerFunc { return } - id := int32(ids[0]) - searchOneData := new(menu.SearchOneData) - searchOneData.Id = id + searchOneData.Id = int64(ids[0]) menuInfo, err := h.menuService.Detail(c, searchOneData) if err != nil { c.AbortWithError(core.Error( @@ -69,7 +67,7 @@ func (h *handler) CreateAction() core.HandlerFunc { } createActionData := new(menu.CreateMenuActionData) - createActionData.MenuId = menuInfo.Id + createActionData.MenuId = menuInfo.ID createActionData.Method = req.Method createActionData.API = req.API @@ -83,7 +81,7 @@ func (h *handler) CreateAction() core.HandlerFunc { return } - res.Id = createId + res.Id = int64(createId) c.Payload(res) } } diff --git a/internal/api/menu/func_delete.go b/internal/api/menu/func_delete.go index 7fd942e..6099e0b 100755 --- a/internal/api/menu/func_delete.go +++ b/internal/api/menu/func_delete.go @@ -12,7 +12,7 @@ type deleteRequest struct { } type deleteResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // Delete 删除菜单 @@ -49,9 +49,7 @@ func (h *handler) Delete() core.HandlerFunc { return } - id := int32(ids[0]) - - err = h.menuService.Delete(c, id) + err = h.menuService.Delete(c, int64(ids[0])) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -61,7 +59,7 @@ func (h *handler) Delete() core.HandlerFunc { return } - res.Id = id + res.Id = int64(ids[0]) c.Payload(res) } } diff --git a/internal/api/menu/func_deleteaction.go b/internal/api/menu/func_deleteaction.go index 1da0a46..c615d7b 100755 --- a/internal/api/menu/func_deleteaction.go +++ b/internal/api/menu/func_deleteaction.go @@ -12,7 +12,7 @@ type deleteActionRequest struct { } type deleteActionResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // DeleteAction 删除功能权限 @@ -49,7 +49,7 @@ func (h *handler) DeleteAction() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) err = h.menuService.DeleteAction(c, id) if err != nil { diff --git a/internal/api/menu/func_detail.go b/internal/api/menu/func_detail.go index 0241337..f5fc68f 100755 --- a/internal/api/menu/func_detail.go +++ b/internal/api/menu/func_detail.go @@ -13,8 +13,8 @@ type detailRequest struct { } type detailResponse struct { - Id int32 `json:"id"` // 主键ID - Pid int32 `json:"pid"` // 父类ID + Id int64 `json:"id"` // 主键ID + Pid int64 `json:"pid"` // 父类ID Name string `json:"name"` // 菜单名称 Link string `json:"link"` // 链接地址 Icon string `json:"icon"` // 图标 @@ -54,10 +54,8 @@ func (h *handler) Detail() core.HandlerFunc { return } - id := int32(ids[0]) - searchOneData := new(menu.SearchOneData) - searchOneData.Id = id + searchOneData.Id = int64(ids[0]) info, err := h.menuService.Detail(c, searchOneData) if err != nil { @@ -69,7 +67,7 @@ func (h *handler) Detail() core.HandlerFunc { return } - res.Id = info.Id + res.Id = info.ID res.Pid = info.Pid res.Name = info.Name res.Link = info.Link diff --git a/internal/api/menu/func_list.go b/internal/api/menu/func_list.go index 366c0f9..8819039 100755 --- a/internal/api/menu/func_list.go +++ b/internal/api/menu/func_list.go @@ -11,14 +11,14 @@ import ( ) type listData struct { - Id int32 `json:"id"` // ID + Id int64 `json:"id"` // ID HashID string `json:"hashid"` // hashid - Pid int32 `json:"pid"` // 父类ID + Pid int64 `json:"pid"` // 父类ID Name string `json:"name"` // 菜单名称 Link string `json:"link"` // 链接地址 Icon string `json:"icon"` // 图标 - IsUsed int32 `json:"is_used"` // 是否启用 1=启用 -1=禁用 - Sort int32 `json:"sort"` // 排序 + IsUsed int64 `json:"is_used"` // 是否启用 1=启用 -1=禁用 + Sort int64 `json:"sort"` // 排序 } type listResponse struct { @@ -38,7 +38,7 @@ type listResponse struct { func (h *handler) List() core.HandlerFunc { return func(c core.Context) { res := new(listResponse) - resListData, err := h.menuService.List(c, new(menu.SearchData)) + menus, err := h.menuService.List(c, new(menu.SearchData)) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -48,10 +48,10 @@ func (h *handler) List() core.HandlerFunc { return } - res.List = make([]listData, len(resListData)) + res.List = make([]listData, len(menus)) - for k, v := range resListData { - hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(v.Id)}) + for i, m := range menus { + hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(m.ID)}) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -61,18 +61,16 @@ func (h *handler) List() core.HandlerFunc { return } - data := listData{ - Id: v.Id, + res.List[i] = listData{ + Id: m.ID, HashID: hashId, - Pid: v.Pid, - Name: v.Name, - Link: v.Link, - Icon: v.Icon, - IsUsed: v.IsUsed, - Sort: v.Sort, + Pid: m.Pid, + Name: m.Name, + Link: m.Link, + Icon: m.Icon, + IsUsed: m.IsUsed, + Sort: m.Sort, } - - res.List[k] = data } c.Payload(res) diff --git a/internal/api/menu/func_listaction.go b/internal/api/menu/func_listaction.go index 68ab3b7..b154b25 100755 --- a/internal/api/menu/func_listaction.go +++ b/internal/api/menu/func_listaction.go @@ -16,7 +16,7 @@ type listActionRequest struct { type listActionData struct { HashId string `json:"hash_id"` // hashID - MenuId int32 `json:"menu_id"` // 菜单栏ID + MenuId int64 `json:"menu_id"` // 菜单栏ID Method string `json:"method"` // 调用方secret API string `json:"api"` // 调用方对接人 } @@ -60,10 +60,8 @@ func (h *handler) ListAction() core.HandlerFunc { return } - id := int32(ids[0]) - searchOneData := new(menu.SearchOneData) - searchOneData.Id = id + searchOneData.Id = int64(ids[0]) menuInfo, err := h.menuService.Detail(c, searchOneData) if err != nil { @@ -78,7 +76,7 @@ func (h *handler) ListAction() core.HandlerFunc { res.MenuName = menuInfo.Name searchListData := new(menu.SearchListActionData) - searchListData.MenuId = menuInfo.Id + searchListData.MenuId = menuInfo.ID resListData, err := h.menuService.ListAction(c, searchListData) if err != nil { @@ -93,7 +91,7 @@ func (h *handler) ListAction() core.HandlerFunc { res.List = make([]listActionData, len(resListData)) for k, v := range resListData { - hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(v.Id)}) + hashId, err := h.hashids.HashidsEncode([]int{cast.ToInt(v.ID)}) if err != nil { c.AbortWithError(core.Error( http.StatusBadRequest, @@ -105,9 +103,9 @@ func (h *handler) ListAction() core.HandlerFunc { data := listActionData{ HashId: hashId, - MenuId: v.MenuId, + MenuId: v.MenuID, Method: v.Method, - API: v.Api, + API: v.API, } res.List[k] = data diff --git a/internal/api/menu/func_updatesort.go b/internal/api/menu/func_updatesort.go index 78cf3f9..add5e5b 100755 --- a/internal/api/menu/func_updatesort.go +++ b/internal/api/menu/func_updatesort.go @@ -9,11 +9,11 @@ import ( type updateSortRequest struct { Id string `form:"id"` // HashId - Sort int32 `form:"sort"` // 排序 + Sort int64 `form:"sort"` // 排序 } type updateSortResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // UpdateSort 更新菜单排序 @@ -51,7 +51,7 @@ func (h *handler) UpdateSort() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) err = h.menuService.UpdateSort(c, id, req.Sort) if err != nil { diff --git a/internal/api/menu/func_updateused.go b/internal/api/menu/func_updateused.go index ecd8d00..fe5ee56 100755 --- a/internal/api/menu/func_updateused.go +++ b/internal/api/menu/func_updateused.go @@ -9,11 +9,11 @@ import ( type updateUsedRequest struct { Id string `form:"id"` // 主键ID - Used int32 `form:"used"` // 是否启用 1:是 -1:否 + Used int64 `form:"used"` // 是否启用 1:是 -1:否 } type updateUsedResponse struct { - Id int32 `json:"id"` // 主键ID + Id int64 `json:"id"` // 主键ID } // UpdateUsed 更新菜单为启用/禁用 @@ -51,7 +51,7 @@ func (h *handler) UpdateUsed() core.HandlerFunc { return } - id := int32(ids[0]) + id := int64(ids[0]) err = h.menuService.UpdateUsed(c, id, req.Used) if err != nil { diff --git a/internal/api/site/func_list.go b/internal/api/site/func_list.go index e2ce885..ae7aaca 100755 --- a/internal/api/site/func_list.go +++ b/internal/api/site/func_list.go @@ -5,6 +5,7 @@ import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/services/site" "github.com/spf13/cast" + "github.com/xinliangnote/go-gin-api/pkg/timeutil" "net/http" "strings" ) @@ -111,8 +112,8 @@ func (h *handler) List() core.HandlerFunc { CategoryId: sit.Category.ID, Description: sit.Description, IsUsed: sit.IsUsed, - CreatedAt: sit.CreatedAt.Format("2006-01-02 15:04:05"), - UpdatedAt: sit.UpdatedAt.Format("2006-01-02 15:04:05"), + CreatedAt: sit.CreatedAt.Format(timeutil.CSTLayout), + UpdatedAt: sit.UpdatedAt.Format(timeutil.CSTLayout), } } diff --git a/internal/pkg/password/password.go b/internal/pkg/password/password.go index f52c23e..b9b8b36 100755 --- a/internal/pkg/password/password.go +++ b/internal/pkg/password/password.go @@ -37,7 +37,7 @@ func ResetPassword() (password string) { return } -func GenerateLoginToken(id int32) (token string) { +func GenerateLoginToken(id int64) (token string) { m := md5.New() m.Write([]byte(fmt.Sprintf("%d%s", id, saltPassword))) token = hex.EncodeToString(m.Sum(nil)) diff --git a/internal/proposal/session.go b/internal/proposal/session.go index dc43c43..94713b3 100755 --- a/internal/proposal/session.go +++ b/internal/proposal/session.go @@ -4,7 +4,7 @@ import "encoding/json" // SessionUserInfo 当前用户会话信息 type SessionUserInfo struct { - UserID int32 `json:"user_id"` // 用户ID + UserID int64 `json:"user_id"` // 用户ID UserName string `json:"user_name"` // 用户名 } diff --git a/internal/render/generator/gorm_execute.go b/internal/render/generator/gorm_execute.go index ffe07b9..b572427 100755 --- a/internal/render/generator/gorm_execute.go +++ b/internal/render/generator/gorm_execute.go @@ -1,15 +1,10 @@ package generator_handler import ( - "bytes" "fmt" - "os" - "os/exec" - "runtime" - "strings" - - "github.com/ch3nnn/webstack-go/configs" + "github.com/ch3nnn/webstack-go/cmd/gormgen" "github.com/ch3nnn/webstack-go/internal/pkg/core" + "strings" ) type gormExecuteRequest struct { @@ -17,40 +12,19 @@ type gormExecuteRequest struct { } func (h *handler) GormExecute() core.HandlerFunc { - dir, _ := os.Getwd() - projectPath := strings.Replace(dir, "\\", "/", -1) - gormgenSh := projectPath + "/scripts/gormgen.sh" - gormgenBat := projectPath + "/scripts/gormgen.bat" return func(c core.Context) { + defer func() { + if err := recover(); err != nil { + c.Payload(fmt.Sprintf("创建失败! %s", err)) + } + }() req := new(gormExecuteRequest) if err := c.ShouldBindPostForm(req); err != nil { c.Payload("参数传递有误") return } - - mysqlConf := configs.Get().MySQL.Read - shellPath := fmt.Sprintf("%s %s %s %s %s %s", gormgenSh, mysqlConf.Addr, mysqlConf.User, mysqlConf.Pass, mysqlConf.Name, req.Tables) - batPath := fmt.Sprintf("%s %s %s %s %s %s", gormgenBat, mysqlConf.Addr, mysqlConf.User, mysqlConf.Pass, mysqlConf.Name, req.Tables) - - command := new(exec.Cmd) - - if runtime.GOOS == "windows" { - command = exec.Command("cmd", "/C", batPath) - } else { - // runtime.GOOS = linux or darwin - command = exec.Command("/bin/bash", "-c", shellPath) - } - - var stderr bytes.Buffer - command.Stderr = &stderr - - output, err := command.Output() - if err != nil { - c.Payload(stderr.String()) - return - } - - c.Payload(string(output)) + gormgen.GenerateTable(strings.Split(req.Tables, ",")) + c.Payload("创建成功!") } } diff --git a/internal/repository/cron/cron.go b/internal/repository/cron/cron.go index 22df288..9398847 100755 --- a/internal/repository/cron/cron.go +++ b/internal/repository/cron/cron.go @@ -1,10 +1,10 @@ package cron import ( + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" "sync" "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/cron_task" "github.com/ch3nnn/webstack-go/internal/repository/redis" "github.com/xinliangnote/go-gin-api/pkg/errors" @@ -58,13 +58,13 @@ type Server interface { Stop() // AddTask 增加定时任务 - AddTask(task *cron_task.CronTask) + AddTask(task *model.CronTask) // RemoveTask 删除定时任务 - RemoveTask(taskId int) + RemoveTask(taskId int64) // AddJob 增加定时任务执行的工作内容 - AddJob(task *cron_task.CronTask) cron.FuncJob + AddJob(task *model.CronTask) cron.FuncJob } func New(logger *zap.Logger, db mysql.Repo, cache redis.Repo) (Server, error) { diff --git a/internal/repository/cron/cron_add_job.go b/internal/repository/cron/cron_add_job.go index 5bc929a..1ba613a 100755 --- a/internal/repository/cron/cron_add_job.go +++ b/internal/repository/cron/cron_add_job.go @@ -2,13 +2,12 @@ package cron import ( "fmt" - - "github.com/ch3nnn/webstack-go/internal/repository/mysql/cron_task" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" "github.com/jakecoffman/cron" ) -func (s *server) AddJob(task *cron_task.CronTask) cron.FuncJob { +func (s *server) AddJob(task *model.CronTask) cron.FuncJob { return func() { s.taskCount.Add() defer s.taskCount.Done() @@ -16,7 +15,7 @@ func (s *server) AddJob(task *cron_task.CronTask) cron.FuncJob { // 将 task 信息写入到 Kafka Topic 中,任务执行器订阅 Topic 如果为符合条件的任务并进行执行,反之不执行 // 为了便于演示,不写入到 Kafka 中,仅记录日志 - msg := fmt.Sprintf("执行任务:(%d)%s [%s]", task.Id, task.Name, task.Spec) + msg := fmt.Sprintf("执行任务:(%d)%s [%s]", task.ID, task.Name, task.Spec) s.logger.Info(msg) } } diff --git a/internal/repository/cron/cron_add_task.go b/internal/repository/cron/cron_add_task.go index 2896236..bda61f7 100755 --- a/internal/repository/cron/cron_add_task.go +++ b/internal/repository/cron/cron_add_task.go @@ -1,16 +1,15 @@ package cron import ( + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" "strings" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/cron_task" - "github.com/spf13/cast" ) -func (s *server) AddTask(task *cron_task.CronTask) { +func (s *server) AddTask(task *model.CronTask) { spec := "0 " + strings.TrimSpace(task.Spec) - name := cast.ToString(task.Id) + name := cast.ToString(task.ID) s.cron.AddFunc(spec, s.AddJob(task), name) } diff --git a/internal/repository/cron/cron_remove_task.go b/internal/repository/cron/cron_remove_task.go index ec705e3..20c4f4c 100755 --- a/internal/repository/cron/cron_remove_task.go +++ b/internal/repository/cron/cron_remove_task.go @@ -2,7 +2,7 @@ package cron import "github.com/spf13/cast" -func (s *server) RemoveTask(taskId int) { +func (s *server) RemoveTask(taskId int64) { name := cast.ToString(taskId) s.cron.RemoveJob(name) } diff --git a/internal/repository/cron/cron_start.go b/internal/repository/cron/cron_start.go index bc277c3..d0b9e49 100755 --- a/internal/repository/cron/cron_start.go +++ b/internal/repository/cron/cron_start.go @@ -2,11 +2,9 @@ package cron import ( "fmt" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "math" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/cron_task" - "go.uber.org/zap" ) @@ -14,9 +12,7 @@ func (s *server) Start() { s.cron.Start() go s.taskCount.Wait() - qb := cron_task.NewQueryBuilder() - qb.WhereIsUsed(mysql.EqualPredicate, cron_task.IsUsedYES) - totalNum, err := qb.Count(s.db.GetDbR()) + totalNum, err := query.CronTask.Where(query.CronTask.IsUsed.Eq(1)).Count() if err != nil { s.logger.Fatal("cron initialize tasks count err", zap.Error(err)) } @@ -28,19 +24,18 @@ func (s *server) Start() { s.logger.Info("开始初始化后台任务") for page := 1; page <= maxPage; page++ { - qb = cron_task.NewQueryBuilder() - qb.WhereIsUsed(mysql.EqualPredicate, cron_task.IsUsedYES) - listData, err := qb. + cronTasks, err := query.CronTask.Where(query.CronTask.IsUsed.Eq(1)). Limit(pageSize). Offset((page - 1) * pageSize). - OrderById(false). - QueryAll(s.db.GetDbR()) + Order(query.CronTask.ID). + Find() + if err != nil { s.logger.Fatal("cron initialize tasks list err", zap.Error(err)) } - for _, item := range listData { - s.AddTask(item) + for _, cronTask := range cronTasks { + s.AddTask(cronTask) taskNum++ } } diff --git a/internal/repository/mysql/admin/gen_admin.go b/internal/repository/mysql/admin/gen_admin.go deleted file mode 100755 index 065ab7f..0000000 --- a/internal/repository/mysql/admin/gen_admin.go +++ /dev/null @@ -1,593 +0,0 @@ -/////////////////////////////////////////////////////////// -// THIS FILE IS AUTO GENERATED by gormgen, DON'T EDIT IT // -// ANY CHANGES DONE HERE WILL BE LOST // -/////////////////////////////////////////////////////////// - -package admin - -import ( - "fmt" - "time" - - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - - "github.com/pkg/errors" - "gorm.io/gorm" -) - -func NewModel() *Admin { - return new(Admin) -} - -func NewQueryBuilder() *adminQueryBuilder { - return new(adminQueryBuilder) -} - -func (t *Admin) Create(db *gorm.DB) (id int32, err error) { - if err = db.Create(t).Error; err != nil { - return 0, errors.Wrap(err, "create err") - } - return t.Id, nil -} - -type adminQueryBuilder struct { - order []string - where []struct { - prefix string - value interface{} - } - limit int - offset int -} - -func (qb *adminQueryBuilder) buildQuery(db *gorm.DB) *gorm.DB { - ret := db - for _, where := range qb.where { - ret = ret.Where(where.prefix, where.value) - } - for _, order := range qb.order { - ret = ret.Order(order) - } - ret = ret.Limit(qb.limit).Offset(qb.offset) - return ret -} - -func (qb *adminQueryBuilder) Updates(db *gorm.DB, m map[string]interface{}) (err error) { - db = db.Model(&Admin{}) - - for _, where := range qb.where { - db.Where(where.prefix, where.value) - } - - if err = db.Updates(m).Error; err != nil { - return errors.Wrap(err, "updates err") - } - return nil -} - -func (qb *adminQueryBuilder) Delete(db *gorm.DB) (err error) { - for _, where := range qb.where { - db = db.Where(where.prefix, where.value) - } - - if err = db.Delete(&Admin{}).Error; err != nil { - return errors.Wrap(err, "delete err") - } - return nil -} - -func (qb *adminQueryBuilder) Count(db *gorm.DB) (int64, error) { - var c int64 - res := qb.buildQuery(db).Model(&Admin{}).Count(&c) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - c = 0 - } - return c, res.Error -} - -func (qb *adminQueryBuilder) First(db *gorm.DB) (*Admin, error) { - ret := &Admin{} - res := qb.buildQuery(db).First(ret) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - ret = nil - } - return ret, res.Error -} - -func (qb *adminQueryBuilder) QueryOne(db *gorm.DB) (*Admin, error) { - qb.limit = 1 - ret, err := qb.QueryAll(db) - if len(ret) > 0 { - return ret[0], err - } - return nil, err -} - -func (qb *adminQueryBuilder) QueryAll(db *gorm.DB) ([]*Admin, error) { - var ret []*Admin - err := qb.buildQuery(db).Find(&ret).Error - return ret, err -} - -func (qb *adminQueryBuilder) Limit(limit int) *adminQueryBuilder { - qb.limit = limit - return qb -} - -func (qb *adminQueryBuilder) Offset(offset int) *adminQueryBuilder { - qb.offset = offset - return qb -} - -func (qb *adminQueryBuilder) WhereId(p mysql.Predicate, value int32) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", p), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereIdIn(value []int32) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereIdNotIn(value []int32) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) OrderById(asc bool) *adminQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "id "+order) - return qb -} - -func (qb *adminQueryBuilder) WhereUsername(p mysql.Predicate, value string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "username", p), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereUsernameIn(value []string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "username", "IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereUsernameNotIn(value []string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "username", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) OrderByUsername(asc bool) *adminQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "username "+order) - return qb -} - -func (qb *adminQueryBuilder) WherePassword(p mysql.Predicate, value string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "password", p), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WherePasswordIn(value []string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "password", "IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WherePasswordNotIn(value []string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "password", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) OrderByPassword(asc bool) *adminQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "password "+order) - return qb -} - -func (qb *adminQueryBuilder) WhereNickname(p mysql.Predicate, value string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "nickname", p), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereNicknameIn(value []string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "nickname", "IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereNicknameNotIn(value []string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "nickname", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) OrderByNickname(asc bool) *adminQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "nickname "+order) - return qb -} - -func (qb *adminQueryBuilder) WhereMobile(p mysql.Predicate, value string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "mobile", p), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereMobileIn(value []string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "mobile", "IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereMobileNotIn(value []string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "mobile", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) OrderByMobile(asc bool) *adminQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "mobile "+order) - return qb -} - -func (qb *adminQueryBuilder) WhereIsUsed(p mysql.Predicate, value int32) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", p), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereIsUsedIn(value []int32) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", "IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereIsUsedNotIn(value []int32) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) OrderByIsUsed(asc bool) *adminQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "is_used "+order) - return qb -} - -func (qb *adminQueryBuilder) WhereIsDeleted(p mysql.Predicate, value int32) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", p), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereIsDeletedIn(value []int32) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", "IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereIsDeletedNotIn(value []int32) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) OrderByIsDeleted(asc bool) *adminQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "is_deleted "+order) - return qb -} - -func (qb *adminQueryBuilder) WhereCreatedAt(p mysql.Predicate, value time.Time) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", p), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereCreatedAtIn(value []time.Time) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereCreatedAtNotIn(value []time.Time) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) OrderByCreatedAt(asc bool) *adminQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created_at "+order) - return qb -} - -func (qb *adminQueryBuilder) WhereCreatedUser(p mysql.Predicate, value string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", p), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereCreatedUserIn(value []string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", "IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereCreatedUserNotIn(value []string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) OrderByCreatedUser(asc bool) *adminQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created_user "+order) - return qb -} - -func (qb *adminQueryBuilder) WhereUpdatedAt(p mysql.Predicate, value time.Time) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", p), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereUpdatedAtIn(value []time.Time) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereUpdatedAtNotIn(value []time.Time) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) OrderByUpdatedAt(asc bool) *adminQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "updated_at "+order) - return qb -} - -func (qb *adminQueryBuilder) WhereUpdatedUser(p mysql.Predicate, value string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", p), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereUpdatedUserIn(value []string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", "IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) WhereUpdatedUserNotIn(value []string) *adminQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminQueryBuilder) OrderByUpdatedUser(asc bool) *adminQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "updated_user "+order) - return qb -} diff --git a/internal/repository/mysql/admin/gen_model.go b/internal/repository/mysql/admin/gen_model.go deleted file mode 100755 index 0379f2e..0000000 --- a/internal/repository/mysql/admin/gen_model.go +++ /dev/null @@ -1,19 +0,0 @@ -package admin - -import "time" - -// Admin 管理员表 -//go:generate gormgen -structs Admin -input . -type Admin struct { - Id int32 // 主键 - Username string // 用户名 - Password string // 密码 - Nickname string // 昵称 - Mobile string // 手机号 - IsUsed int32 // 是否启用 1:是 -1:否 - IsDeleted int32 // 是否删除 1:是 -1:否 - CreatedAt time.Time `gorm:"time"` // 创建时间 - CreatedUser string // 创建人 - UpdatedAt time.Time `gorm:"time"` // 更新时间 - UpdatedUser string // 更新人 -} diff --git a/internal/repository/mysql/admin/gen_table.md b/internal/repository/mysql/admin/gen_table.md deleted file mode 100755 index 2235851..0000000 --- a/internal/repository/mysql/admin/gen_table.md +++ /dev/null @@ -1,16 +0,0 @@ -#### go_gin_api.admin -管理员表 - -| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | -| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | -| 1 | id | 主键 | int(11) unsigned | PRI | NO | auto_increment | | -| 2 | username | 用户名 | varchar(32) | UNI | NO | | | -| 3 | password | 密码 | varchar(100) | | NO | | | -| 4 | nickname | 昵称 | varchar(60) | | NO | | | -| 5 | mobile | 手机号 | varchar(20) | | NO | | | -| 6 | is_used | 是否启用 1:是 -1:否 | tinyint(1) | | NO | | 1 | -| 7 | is_deleted | 是否删除 1:是 -1:否 | tinyint(1) | | NO | | -1 | -| 8 | created_at | 创建时间 | timestamp | | NO | | CURRENT_TIMESTAMP | -| 9 | created_user | 创建人 | varchar(60) | | NO | | | -| 10 | updated_at | 更新时间 | timestamp | | NO | on update CURRENT_TIMESTAMP | CURRENT_TIMESTAMP | -| 11 | updated_user | 更新人 | varchar(60) | | NO | | | diff --git a/internal/repository/mysql/admin_menu/gen_admin_menu.go b/internal/repository/mysql/admin_menu/gen_admin_menu.go deleted file mode 100755 index f539f0c..0000000 --- a/internal/repository/mysql/admin_menu/gen_admin_menu.go +++ /dev/null @@ -1,335 +0,0 @@ -/////////////////////////////////////////////////////////// -// THIS FILE IS AUTO GENERATED by gormgen, DON'T EDIT IT // -// ANY CHANGES DONE HERE WILL BE LOST // -/////////////////////////////////////////////////////////// - -package admin_menu - -import ( - "fmt" - "time" - - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - - "github.com/pkg/errors" - "gorm.io/gorm" -) - -func NewModel() *AdminMenu { - return new(AdminMenu) -} - -func NewQueryBuilder() *adminMenuQueryBuilder { - return new(adminMenuQueryBuilder) -} - -func (t *AdminMenu) Create(db *gorm.DB) (id int32, err error) { - if err = db.Create(t).Error; err != nil { - return 0, errors.Wrap(err, "create err") - } - return t.Id, nil -} - -type adminMenuQueryBuilder struct { - order []string - where []struct { - prefix string - value interface{} - } - limit int - offset int -} - -func (qb *adminMenuQueryBuilder) buildQuery(db *gorm.DB) *gorm.DB { - ret := db - for _, where := range qb.where { - ret = ret.Where(where.prefix, where.value) - } - for _, order := range qb.order { - ret = ret.Order(order) - } - ret = ret.Limit(qb.limit).Offset(qb.offset) - return ret -} - -func (qb *adminMenuQueryBuilder) Updates(db *gorm.DB, m map[string]interface{}) (err error) { - db = db.Model(&AdminMenu{}) - - for _, where := range qb.where { - db.Where(where.prefix, where.value) - } - - if err = db.Updates(m).Error; err != nil { - return errors.Wrap(err, "updates err") - } - return nil -} - -func (qb *adminMenuQueryBuilder) Delete(db *gorm.DB) (err error) { - for _, where := range qb.where { - db = db.Where(where.prefix, where.value) - } - - if err = db.Delete(&AdminMenu{}).Error; err != nil { - return errors.Wrap(err, "delete err") - } - return nil -} - -func (qb *adminMenuQueryBuilder) Count(db *gorm.DB) (int64, error) { - var c int64 - res := qb.buildQuery(db).Model(&AdminMenu{}).Count(&c) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - c = 0 - } - return c, res.Error -} - -func (qb *adminMenuQueryBuilder) First(db *gorm.DB) (*AdminMenu, error) { - ret := &AdminMenu{} - res := qb.buildQuery(db).First(ret) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - ret = nil - } - return ret, res.Error -} - -func (qb *adminMenuQueryBuilder) QueryOne(db *gorm.DB) (*AdminMenu, error) { - qb.limit = 1 - ret, err := qb.QueryAll(db) - if len(ret) > 0 { - return ret[0], err - } - return nil, err -} - -func (qb *adminMenuQueryBuilder) QueryAll(db *gorm.DB) ([]*AdminMenu, error) { - var ret []*AdminMenu - err := qb.buildQuery(db).Find(&ret).Error - return ret, err -} - -func (qb *adminMenuQueryBuilder) Limit(limit int) *adminMenuQueryBuilder { - qb.limit = limit - return qb -} - -func (qb *adminMenuQueryBuilder) Offset(offset int) *adminMenuQueryBuilder { - qb.offset = offset - return qb -} - -func (qb *adminMenuQueryBuilder) WhereId(p mysql.Predicate, value int32) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", p), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) WhereIdIn(value []int32) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "IN"), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) WhereIdNotIn(value []int32) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) OrderById(asc bool) *adminMenuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "id "+order) - return qb -} - -func (qb *adminMenuQueryBuilder) WhereAdminId(p mysql.Predicate, value int32) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "admin_id", p), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) WhereAdminIdIn(value []int32) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "admin_id", "IN"), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) WhereAdminIdNotIn(value []int32) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "admin_id", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) OrderByAdminId(asc bool) *adminMenuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "admin_id "+order) - return qb -} - -func (qb *adminMenuQueryBuilder) WhereMenuId(p mysql.Predicate, value int32) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "menu_id", p), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) WhereMenuIdIn(value []int32) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "menu_id", "IN"), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) WhereMenuIdNotIn(value []int32) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "menu_id", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) OrderByMenuId(asc bool) *adminMenuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "menu_id "+order) - return qb -} - -func (qb *adminMenuQueryBuilder) WhereCreatedAt(p mysql.Predicate, value time.Time) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", p), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) WhereCreatedAtIn(value []time.Time) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "IN"), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) WhereCreatedAtNotIn(value []time.Time) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) OrderByCreatedAt(asc bool) *adminMenuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created_at "+order) - return qb -} - -func (qb *adminMenuQueryBuilder) WhereCreatedUser(p mysql.Predicate, value string) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", p), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) WhereCreatedUserIn(value []string) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", "IN"), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) WhereCreatedUserNotIn(value []string) *adminMenuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", "NOT IN"), - value, - }) - return qb -} - -func (qb *adminMenuQueryBuilder) OrderByCreatedUser(asc bool) *adminMenuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created_user "+order) - return qb -} diff --git a/internal/repository/mysql/admin_menu/gen_model.go b/internal/repository/mysql/admin_menu/gen_model.go deleted file mode 100755 index 3209132..0000000 --- a/internal/repository/mysql/admin_menu/gen_model.go +++ /dev/null @@ -1,13 +0,0 @@ -package admin_menu - -import "time" - -// AdminMenu 管理员菜单栏表 -//go:generate gormgen -structs AdminMenu -input . -type AdminMenu struct { - Id int32 // 主键 - AdminId int32 // 管理员ID - MenuId int32 // 菜单栏ID - CreatedAt time.Time `gorm:"time"` // 创建时间 - CreatedUser string // 创建人 -} diff --git a/internal/repository/mysql/admin_menu/gen_table.md b/internal/repository/mysql/admin_menu/gen_table.md deleted file mode 100755 index d3a70d8..0000000 --- a/internal/repository/mysql/admin_menu/gen_table.md +++ /dev/null @@ -1,10 +0,0 @@ -#### go_gin_api.admin_menu -管理员菜单栏表 - -| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | -| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | -| 1 | id | 主键 | int unsigned | PRI | NO | auto_increment | | -| 2 | admin_id | 管理员ID | int unsigned | MUL | NO | | 0 | -| 3 | menu_id | 菜单栏ID | int unsigned | | NO | | 0 | -| 4 | created_at | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP | -| 5 | created_user | 创建人 | varchar(60) | | NO | | | diff --git a/internal/repository/mysql/authorized/gen_authorized.go b/internal/repository/mysql/authorized/gen_authorized.go deleted file mode 100755 index 77d4c61..0000000 --- a/internal/repository/mysql/authorized/gen_authorized.go +++ /dev/null @@ -1,593 +0,0 @@ -/////////////////////////////////////////////////////////// -// THIS FILE IS AUTO GENERATED by gormgen, DON'T EDIT IT // -// ANY CHANGES DONE HERE WILL BE LOST // -/////////////////////////////////////////////////////////// - -package authorized - -import ( - "fmt" - "time" - - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - - "github.com/pkg/errors" - "gorm.io/gorm" -) - -func NewModel() *Authorized { - return new(Authorized) -} - -func NewQueryBuilder() *authorizedQueryBuilder { - return new(authorizedQueryBuilder) -} - -func (t *Authorized) Create(db *gorm.DB) (id int32, err error) { - if err = db.Create(t).Error; err != nil { - return 0, errors.Wrap(err, "create err") - } - return t.Id, nil -} - -type authorizedQueryBuilder struct { - order []string - where []struct { - prefix string - value interface{} - } - limit int - offset int -} - -func (qb *authorizedQueryBuilder) buildQuery(db *gorm.DB) *gorm.DB { - ret := db - for _, where := range qb.where { - ret = ret.Where(where.prefix, where.value) - } - for _, order := range qb.order { - ret = ret.Order(order) - } - ret = ret.Limit(qb.limit).Offset(qb.offset) - return ret -} - -func (qb *authorizedQueryBuilder) Updates(db *gorm.DB, m map[string]interface{}) (err error) { - db = db.Model(&Authorized{}) - - for _, where := range qb.where { - db.Where(where.prefix, where.value) - } - - if err = db.Updates(m).Error; err != nil { - return errors.Wrap(err, "updates err") - } - return nil -} - -func (qb *authorizedQueryBuilder) Delete(db *gorm.DB) (err error) { - for _, where := range qb.where { - db = db.Where(where.prefix, where.value) - } - - if err = db.Delete(&Authorized{}).Error; err != nil { - return errors.Wrap(err, "delete err") - } - return nil -} - -func (qb *authorizedQueryBuilder) Count(db *gorm.DB) (int64, error) { - var c int64 - res := qb.buildQuery(db).Model(&Authorized{}).Count(&c) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - c = 0 - } - return c, res.Error -} - -func (qb *authorizedQueryBuilder) First(db *gorm.DB) (*Authorized, error) { - ret := &Authorized{} - res := qb.buildQuery(db).First(ret) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - ret = nil - } - return ret, res.Error -} - -func (qb *authorizedQueryBuilder) QueryOne(db *gorm.DB) (*Authorized, error) { - qb.limit = 1 - ret, err := qb.QueryAll(db) - if len(ret) > 0 { - return ret[0], err - } - return nil, err -} - -func (qb *authorizedQueryBuilder) QueryAll(db *gorm.DB) ([]*Authorized, error) { - var ret []*Authorized - err := qb.buildQuery(db).Find(&ret).Error - return ret, err -} - -func (qb *authorizedQueryBuilder) Limit(limit int) *authorizedQueryBuilder { - qb.limit = limit - return qb -} - -func (qb *authorizedQueryBuilder) Offset(offset int) *authorizedQueryBuilder { - qb.offset = offset - return qb -} - -func (qb *authorizedQueryBuilder) WhereId(p mysql.Predicate, value int32) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", p), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereIdIn(value []int32) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereIdNotIn(value []int32) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) OrderById(asc bool) *authorizedQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "id "+order) - return qb -} - -func (qb *authorizedQueryBuilder) WhereBusinessKey(p mysql.Predicate, value string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "business_key", p), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereBusinessKeyIn(value []string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "business_key", "IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereBusinessKeyNotIn(value []string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "business_key", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) OrderByBusinessKey(asc bool) *authorizedQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "business_key "+order) - return qb -} - -func (qb *authorizedQueryBuilder) WhereBusinessSecret(p mysql.Predicate, value string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "business_secret", p), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereBusinessSecretIn(value []string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "business_secret", "IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereBusinessSecretNotIn(value []string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "business_secret", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) OrderByBusinessSecret(asc bool) *authorizedQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "business_secret "+order) - return qb -} - -func (qb *authorizedQueryBuilder) WhereBusinessDeveloper(p mysql.Predicate, value string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "business_developer", p), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereBusinessDeveloperIn(value []string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "business_developer", "IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereBusinessDeveloperNotIn(value []string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "business_developer", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) OrderByBusinessDeveloper(asc bool) *authorizedQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "business_developer "+order) - return qb -} - -func (qb *authorizedQueryBuilder) WhereRemark(p mysql.Predicate, value string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "remark", p), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereRemarkIn(value []string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "remark", "IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereRemarkNotIn(value []string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "remark", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) OrderByRemark(asc bool) *authorizedQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "remark "+order) - return qb -} - -func (qb *authorizedQueryBuilder) WhereIsUsed(p mysql.Predicate, value int32) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", p), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereIsUsedIn(value []int32) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", "IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereIsUsedNotIn(value []int32) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) OrderByIsUsed(asc bool) *authorizedQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "is_used "+order) - return qb -} - -func (qb *authorizedQueryBuilder) WhereIsDeleted(p mysql.Predicate, value int32) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", p), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereIsDeletedIn(value []int32) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", "IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereIsDeletedNotIn(value []int32) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) OrderByIsDeleted(asc bool) *authorizedQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "is_deleted "+order) - return qb -} - -func (qb *authorizedQueryBuilder) WhereCreatedAt(p mysql.Predicate, value time.Time) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", p), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereCreatedAtIn(value []time.Time) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereCreatedAtNotIn(value []time.Time) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) OrderByCreatedAt(asc bool) *authorizedQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created_at "+order) - return qb -} - -func (qb *authorizedQueryBuilder) WhereCreatedUser(p mysql.Predicate, value string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", p), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereCreatedUserIn(value []string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", "IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereCreatedUserNotIn(value []string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) OrderByCreatedUser(asc bool) *authorizedQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created_user "+order) - return qb -} - -func (qb *authorizedQueryBuilder) WhereUpdatedAt(p mysql.Predicate, value time.Time) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", p), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereUpdatedAtIn(value []time.Time) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereUpdatedAtNotIn(value []time.Time) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) OrderByUpdatedAt(asc bool) *authorizedQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "updated_at "+order) - return qb -} - -func (qb *authorizedQueryBuilder) WhereUpdatedUser(p mysql.Predicate, value string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", p), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereUpdatedUserIn(value []string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", "IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) WhereUpdatedUserNotIn(value []string) *authorizedQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedQueryBuilder) OrderByUpdatedUser(asc bool) *authorizedQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "updated_user "+order) - return qb -} diff --git a/internal/repository/mysql/authorized/gen_model.go b/internal/repository/mysql/authorized/gen_model.go deleted file mode 100755 index 3959e0f..0000000 --- a/internal/repository/mysql/authorized/gen_model.go +++ /dev/null @@ -1,19 +0,0 @@ -package authorized - -import "time" - -// Authorized 已授权的调用方表 -//go:generate gormgen -structs Authorized -input . -type Authorized struct { - Id int32 // 主键 - BusinessKey string // 调用方key - BusinessSecret string // 调用方secret - BusinessDeveloper string // 调用方对接人 - Remark string // 备注 - IsUsed int32 // 是否启用 1:是 -1:否 - IsDeleted int32 // 是否删除 1:是 -1:否 - CreatedAt time.Time `gorm:"time"` // 创建时间 - CreatedUser string // 创建人 - UpdatedAt time.Time `gorm:"time"` // 更新时间 - UpdatedUser string // 更新人 -} diff --git a/internal/repository/mysql/authorized/gen_table.md b/internal/repository/mysql/authorized/gen_table.md deleted file mode 100755 index 3875e6a..0000000 --- a/internal/repository/mysql/authorized/gen_table.md +++ /dev/null @@ -1,16 +0,0 @@ -#### go_gin_api.authorized -已授权的调用方表 - -| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | -| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | -| 1 | id | 主键 | int unsigned | PRI | NO | auto_increment | | -| 2 | business_key | 调用方key | varchar(32) | UNI | NO | | | -| 3 | business_secret | 调用方secret | varchar(60) | | NO | | | -| 4 | business_developer | 调用方对接人 | varchar(60) | | NO | | | -| 5 | remark | 备注 | varchar(255) | | NO | | | -| 6 | is_used | 是否启用 1:是 -1:否 | tinyint(1) | | NO | | 1 | -| 7 | is_deleted | 是否删除 1:是 -1:否 | tinyint(1) | | NO | | -1 | -| 8 | created_at | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP | -| 9 | created_user | 创建人 | varchar(60) | | NO | | | -| 10 | updated_at | 更新时间 | timestamp | | NO | DEFAULT_GENERATED on update CURRENT_TIMESTAMP | CURRENT_TIMESTAMP | -| 11 | updated_user | 更新人 | varchar(60) | | NO | | | diff --git a/internal/repository/mysql/authorized/model.go b/internal/repository/mysql/authorized/model.go deleted file mode 100755 index c18c9d0..0000000 --- a/internal/repository/mysql/authorized/model.go +++ /dev/null @@ -1,6 +0,0 @@ -package authorized - -const ( - IsUsedYES = 1 // 启用 - IsUsedNo = -1 // 禁用 -) diff --git a/internal/repository/mysql/authorized_api/gen_authorized_api.go b/internal/repository/mysql/authorized_api/gen_authorized_api.go deleted file mode 100755 index 422cd1d..0000000 --- a/internal/repository/mysql/authorized_api/gen_authorized_api.go +++ /dev/null @@ -1,507 +0,0 @@ -/////////////////////////////////////////////////////////// -// THIS FILE IS AUTO GENERATED by gormgen, DON'T EDIT IT // -// ANY CHANGES DONE HERE WILL BE LOST // -/////////////////////////////////////////////////////////// - -package authorized_api - -import ( - "fmt" - "time" - - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - - "github.com/pkg/errors" - "gorm.io/gorm" -) - -func NewModel() *AuthorizedApi { - return new(AuthorizedApi) -} - -func NewQueryBuilder() *authorizedApiQueryBuilder { - return new(authorizedApiQueryBuilder) -} - -func (t *AuthorizedApi) Create(db *gorm.DB) (id int32, err error) { - if err = db.Create(t).Error; err != nil { - return 0, errors.Wrap(err, "create err") - } - return t.Id, nil -} - -type authorizedApiQueryBuilder struct { - order []string - where []struct { - prefix string - value interface{} - } - limit int - offset int -} - -func (qb *authorizedApiQueryBuilder) buildQuery(db *gorm.DB) *gorm.DB { - ret := db - for _, where := range qb.where { - ret = ret.Where(where.prefix, where.value) - } - for _, order := range qb.order { - ret = ret.Order(order) - } - ret = ret.Limit(qb.limit).Offset(qb.offset) - return ret -} - -func (qb *authorizedApiQueryBuilder) Updates(db *gorm.DB, m map[string]interface{}) (err error) { - db = db.Model(&AuthorizedApi{}) - - for _, where := range qb.where { - db.Where(where.prefix, where.value) - } - - if err = db.Updates(m).Error; err != nil { - return errors.Wrap(err, "updates err") - } - return nil -} - -func (qb *authorizedApiQueryBuilder) Delete(db *gorm.DB) (err error) { - for _, where := range qb.where { - db = db.Where(where.prefix, where.value) - } - - if err = db.Delete(&AuthorizedApi{}).Error; err != nil { - return errors.Wrap(err, "delete err") - } - return nil -} - -func (qb *authorizedApiQueryBuilder) Count(db *gorm.DB) (int64, error) { - var c int64 - res := qb.buildQuery(db).Model(&AuthorizedApi{}).Count(&c) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - c = 0 - } - return c, res.Error -} - -func (qb *authorizedApiQueryBuilder) First(db *gorm.DB) (*AuthorizedApi, error) { - ret := &AuthorizedApi{} - res := qb.buildQuery(db).First(ret) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - ret = nil - } - return ret, res.Error -} - -func (qb *authorizedApiQueryBuilder) QueryOne(db *gorm.DB) (*AuthorizedApi, error) { - qb.limit = 1 - ret, err := qb.QueryAll(db) - if len(ret) > 0 { - return ret[0], err - } - return nil, err -} - -func (qb *authorizedApiQueryBuilder) QueryAll(db *gorm.DB) ([]*AuthorizedApi, error) { - var ret []*AuthorizedApi - err := qb.buildQuery(db).Find(&ret).Error - return ret, err -} - -func (qb *authorizedApiQueryBuilder) Limit(limit int) *authorizedApiQueryBuilder { - qb.limit = limit - return qb -} - -func (qb *authorizedApiQueryBuilder) Offset(offset int) *authorizedApiQueryBuilder { - qb.offset = offset - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereId(p mysql.Predicate, value int32) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", p), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereIdIn(value []int32) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereIdNotIn(value []int32) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) OrderById(asc bool) *authorizedApiQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "id "+order) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereBusinessKey(p mysql.Predicate, value string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "business_key", p), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereBusinessKeyIn(value []string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "business_key", "IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereBusinessKeyNotIn(value []string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "business_key", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) OrderByBusinessKey(asc bool) *authorizedApiQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "business_key "+order) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereMethod(p mysql.Predicate, value string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "method", p), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereMethodIn(value []string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "method", "IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereMethodNotIn(value []string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "method", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) OrderByMethod(asc bool) *authorizedApiQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "method "+order) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereApi(p mysql.Predicate, value string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "api", p), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereApiIn(value []string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "api", "IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereApiNotIn(value []string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "api", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) OrderByApi(asc bool) *authorizedApiQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "api "+order) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereIsDeleted(p mysql.Predicate, value int32) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", p), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereIsDeletedIn(value []int32) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", "IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereIsDeletedNotIn(value []int32) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) OrderByIsDeleted(asc bool) *authorizedApiQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "is_deleted "+order) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereCreatedAt(p mysql.Predicate, value time.Time) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", p), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereCreatedAtIn(value []time.Time) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereCreatedAtNotIn(value []time.Time) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) OrderByCreatedAt(asc bool) *authorizedApiQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created_at "+order) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereCreatedUser(p mysql.Predicate, value string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", p), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereCreatedUserIn(value []string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", "IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereCreatedUserNotIn(value []string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) OrderByCreatedUser(asc bool) *authorizedApiQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created_user "+order) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereUpdatedAt(p mysql.Predicate, value time.Time) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", p), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereUpdatedAtIn(value []time.Time) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereUpdatedAtNotIn(value []time.Time) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) OrderByUpdatedAt(asc bool) *authorizedApiQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "updated_at "+order) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereUpdatedUser(p mysql.Predicate, value string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", p), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereUpdatedUserIn(value []string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", "IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) WhereUpdatedUserNotIn(value []string) *authorizedApiQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", "NOT IN"), - value, - }) - return qb -} - -func (qb *authorizedApiQueryBuilder) OrderByUpdatedUser(asc bool) *authorizedApiQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "updated_user "+order) - return qb -} diff --git a/internal/repository/mysql/authorized_api/gen_model.go b/internal/repository/mysql/authorized_api/gen_model.go deleted file mode 100755 index a93358d..0000000 --- a/internal/repository/mysql/authorized_api/gen_model.go +++ /dev/null @@ -1,17 +0,0 @@ -package authorized_api - -import "time" - -// AuthorizedApi 已授权接口地址表 -//go:generate gormgen -structs AuthorizedApi -input . -type AuthorizedApi struct { - Id int32 // 主键 - BusinessKey string // 调用方key - Method string // 请求方式 - Api string // 请求地址 - IsDeleted int32 // 是否删除 1:是 -1:否 - CreatedAt time.Time `gorm:"time"` // 创建时间 - CreatedUser string // 创建人 - UpdatedAt time.Time `gorm:"time"` // 更新时间 - UpdatedUser string // 更新人 -} diff --git a/internal/repository/mysql/authorized_api/gen_table.md b/internal/repository/mysql/authorized_api/gen_table.md deleted file mode 100755 index 0ade228..0000000 --- a/internal/repository/mysql/authorized_api/gen_table.md +++ /dev/null @@ -1,14 +0,0 @@ -#### go_gin_api.authorized_api -已授权接口地址表 - -| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | -| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | -| 1 | id | 主键 | int unsigned | PRI | NO | auto_increment | | -| 2 | business_key | 调用方key | varchar(32) | | NO | | | -| 3 | method | 请求方式 | varchar(30) | | NO | | | -| 4 | api | 请求地址 | varchar(100) | | NO | | | -| 5 | is_deleted | 是否删除 1:是 -1:否 | tinyint(1) | | NO | | -1 | -| 6 | created_at | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP | -| 7 | created_user | 创建人 | varchar(60) | | NO | | | -| 8 | updated_at | 更新时间 | timestamp | | NO | DEFAULT_GENERATED on update CURRENT_TIMESTAMP | CURRENT_TIMESTAMP | -| 9 | updated_user | 更新人 | varchar(60) | | NO | | | diff --git a/internal/repository/mysql/category/gen_category.go b/internal/repository/mysql/category/gen_category.go deleted file mode 100755 index a5e8d55..0000000 --- a/internal/repository/mysql/category/gen_category.go +++ /dev/null @@ -1,476 +0,0 @@ -/////////////////////////////////////////////////////////// -// THIS FILE IS AUTO GENERATED by gormgen, DON'T EDIT IT // -// ANY CHANGES DONE HERE WILL BE LOST // -/////////////////////////////////////////////////////////// - -package category - -import ( - "fmt" - "time" - - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - - "github.com/pkg/errors" - "gorm.io/gorm" -) - -func NewModel() *Category { - return new(Category) -} - -func NewQueryBuilder() *categoryQueryBuilder { - return new(categoryQueryBuilder) -} - -func (t *Category) Create(db *gorm.DB) (id int32, err error) { - if err = db.Create(t).Error; err != nil { - return 0, errors.Wrap(err, "create err") - } - return t.Id, nil -} - -type categoryQueryBuilder struct { - order []string - where []struct { - prefix string - value interface{} - } - limit int - offset int -} - -func (qb *categoryQueryBuilder) buildQuery(db *gorm.DB) *gorm.DB { - ret := db - for _, where := range qb.where { - ret = ret.Where(where.prefix, where.value) - } - for _, order := range qb.order { - ret = ret.Order(order) - } - ret = ret.Limit(qb.limit).Offset(qb.offset) - return ret -} - -func (qb *categoryQueryBuilder) GroupByParentId(db *gorm.DB) (parentIds []int32) { - rows, _ := db.Model(&Category{}).Select("parent_id").Group("parent_id").Rows() - for rows.Next() { - var parentId int32 - rows.Scan(&parentId) - parentIds = append(parentIds, parentId) - } - - return parentIds - -} - -func (qb *categoryQueryBuilder) Updates(db *gorm.DB, m map[string]interface{}) (err error) { - db = db.Model(&Category{}) - - for _, where := range qb.where { - db.Where(where.prefix, where.value) - } - - if err = db.Updates(m).Error; err != nil { - return errors.Wrap(err, "updates err") - } - return nil -} - -func (qb *categoryQueryBuilder) Delete(db *gorm.DB) (err error) { - for _, where := range qb.where { - db = db.Where(where.prefix, where.value) - } - - if err = db.Delete(&Category{}).Error; err != nil { - return errors.Wrap(err, "delete err") - } - return nil -} - -func (qb *categoryQueryBuilder) Count(db *gorm.DB) (int64, error) { - var c int64 - res := qb.buildQuery(db).Model(&Category{}).Count(&c) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - c = 0 - } - return c, res.Error -} - -func (qb *categoryQueryBuilder) First(db *gorm.DB) (*Category, error) { - ret := &Category{} - res := qb.buildQuery(db).First(ret) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - ret = nil - } - return ret, res.Error -} - -func (qb *categoryQueryBuilder) QueryOne(db *gorm.DB) (*Category, error) { - qb.limit = 1 - ret, err := qb.QueryAll(db) - if len(ret) > 0 { - return ret[0], err - } - return nil, err -} - -func (qb *categoryQueryBuilder) QueryAll(db *gorm.DB) ([]*Category, error) { - var ret []*Category - err := qb.buildQuery(db).Find(&ret).Error - return ret, err -} - -func (qb *categoryQueryBuilder) Limit(limit int) *categoryQueryBuilder { - qb.limit = limit - return qb -} - -func (qb *categoryQueryBuilder) Offset(offset int) *categoryQueryBuilder { - qb.offset = offset - return qb -} - -func (qb *categoryQueryBuilder) WhereId(p mysql.Predicate, value int32) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", p), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereIdIn(value []int32) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereIdNotIn(value []int32) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "NOT IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) OrderById(asc bool) *categoryQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "id "+order) - return qb -} - -func (qb *categoryQueryBuilder) WhereParentId(p mysql.Predicate, value int32) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "parent_id", p), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereParentIdIn(value []int32) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "parent_id", "IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereParentIdNotIn(value []int32) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "parent_id", "NOT IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) OrderByParentId(asc bool) *categoryQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "parent_id "+order) - return qb -} - -func (qb *categoryQueryBuilder) WhereIsUsed(p mysql.Predicate, value int32) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", p), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereIsUsedIn(value []int32) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", "IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereIsUsedNotIn(value []int32) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", "NOT IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) OrderByIsUsed(asc bool) *categoryQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "is_used "+order) - return qb -} - -func (qb *categoryQueryBuilder) WhereSort(p mysql.Predicate, value int32) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "sort", p), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereSortIn(value []int32) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "sort", "IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereSortNotIn(value []int32) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "sort", "NOT IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) OrderBySort(asc bool) *categoryQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "sort "+order) - return qb -} - -func (qb *categoryQueryBuilder) WhereTitle(p mysql.Predicate, value string) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "title", p), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereTitleIn(value []string) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "title", "IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereTitleNotIn(value []string) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "title", "NOT IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) OrderByTitle(asc bool) *categoryQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "title "+order) - return qb -} - -func (qb *categoryQueryBuilder) WhereIcon(p mysql.Predicate, value string) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "icon", p), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereIconIn(value []string) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "icon", "IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereIconNotIn(value []string) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "icon", "NOT IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) OrderByIcon(asc bool) *categoryQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "icon "+order) - return qb -} - -func (qb *categoryQueryBuilder) WhereCreateTime(p mysql.Predicate, value time.Time) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", p), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereCreateTimeIn(value []time.Time) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereCreateTimeNotIn(value []time.Time) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) OrderByCreateTime(asc bool) *categoryQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "create_time "+order) - return qb -} - -func (qb *categoryQueryBuilder) WhereUpdateTime(p mysql.Predicate, value time.Time) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", p), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereUpdateTimeIn(value []time.Time) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) WhereUpdateTimeNotIn(value []time.Time) *categoryQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *categoryQueryBuilder) OrderByUpdateTime(asc bool) *categoryQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "updated_at "+order) - return qb -} diff --git a/internal/repository/mysql/category/gen_model.go b/internal/repository/mysql/category/gen_model.go deleted file mode 100755 index 99edad0..0000000 --- a/internal/repository/mysql/category/gen_model.go +++ /dev/null @@ -1,17 +0,0 @@ -package category - -import "time" - -// Category 站分类 -//go:generate gormgen -structs Category -input . -type Category struct { - Id int32 // - ParentId int32 // - Sort int32 // 排序 - Title string // 名称 - Icon string // 图标 - Level int32 // 分类等级 - IsUsed int32 // 是否启用 1:是 -1:否 - CreatedAt time.Time `gorm:"time"` // 创建时间 - UpdatedAt time.Time `gorm:"time"` // 更新时间 -} diff --git a/internal/repository/mysql/category/gen_table.md b/internal/repository/mysql/category/gen_table.md deleted file mode 100755 index 2429b8b..0000000 --- a/internal/repository/mysql/category/gen_table.md +++ /dev/null @@ -1,13 +0,0 @@ -#### go_gin_api.category -站分类 - -| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | -| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | -| 1 | id | | int(10) unsigned | PRI | NO | auto_increment | | -| 2 | parent_id | | int(11) | | NO | | 0 | -| 3 | sort | | int(11) | | NO | | 0 | -| 4 | title | | varchar(50) | | NO | | | -| 5 | icon | | varchar(20) | | NO | | | -| 6 | levels | | int(11) | | YES | | | -| 7 | created_at | | timestamp | | YES | | | -| 8 | updated_at | | timestamp | | YES | | | diff --git a/internal/repository/mysql/cron_task/model.go b/internal/repository/mysql/constant/cron.go old mode 100755 new mode 100644 similarity index 75% rename from internal/repository/mysql/cron_task/model.go rename to internal/repository/mysql/constant/cron.go index 8e45f3b..b0d2771 --- a/internal/repository/mysql/cron_task/model.go +++ b/internal/repository/mysql/constant/cron.go @@ -1,4 +1,4 @@ -package cron_task +package constant const ( ProtocolShell = 1 @@ -19,29 +19,29 @@ const ( IsUsedNo = -1 ) -var ProtocolText = map[int32]string{ +var ProtocolText = map[int64]string{ ProtocolShell: "SHELL", ProtocolHTTP: "HTTP", } -var HttpMethodText = map[int32]string{ +var HttpMethodText = map[int64]string{ HttpMethodGet: "GET", HttpMethodPost: "POST", } -var NotifyStatusText = map[int32]string{ +var NotifyStatusText = map[int64]string{ NotifyStatusNo: "不通知", NotifyStatusFailed: "失败通知", NotifyStatusStopped: "结束通知", NotifyStatusKeyword: "结果关键字匹配通知", } -var NotifyTypeText = map[int32]string{ +var NotifyTypeText = map[int64]string{ NotifyTypeEmail: "邮件", NotifyTypeWebhook: "Webhook", } -var IsUsedText = map[int32]string{ +var IsUsedText = map[int64]string{ IsUsedYES: "启用", IsUsedNo: "禁用", } diff --git a/internal/repository/mysql/cron_task/gen_cron_task.go b/internal/repository/mysql/cron_task/gen_cron_task.go deleted file mode 100755 index 412f25f..0000000 --- a/internal/repository/mysql/cron_task/gen_cron_task.go +++ /dev/null @@ -1,937 +0,0 @@ -/////////////////////////////////////////////////////////// -// THIS FILE IS AUTO GENERATED by gormgen, DON'T EDIT IT // -// ANY CHANGES DONE HERE WILL BE LOST // -/////////////////////////////////////////////////////////// - -package cron_task - -import ( - "fmt" - "time" - - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - - "github.com/pkg/errors" - "gorm.io/gorm" -) - -func NewModel() *CronTask { - return new(CronTask) -} - -func NewQueryBuilder() *cronTaskQueryBuilder { - return new(cronTaskQueryBuilder) -} - -func (t *CronTask) Create(db *gorm.DB) (id int32, err error) { - if err = db.Create(t).Error; err != nil { - return 0, errors.Wrap(err, "create err") - } - return t.Id, nil -} - -type cronTaskQueryBuilder struct { - order []string - where []struct { - prefix string - value interface{} - } - limit int - offset int -} - -func (qb *cronTaskQueryBuilder) buildQuery(db *gorm.DB) *gorm.DB { - ret := db - for _, where := range qb.where { - ret = ret.Where(where.prefix, where.value) - } - for _, order := range qb.order { - ret = ret.Order(order) - } - ret = ret.Limit(qb.limit).Offset(qb.offset) - return ret -} - -func (qb *cronTaskQueryBuilder) Updates(db *gorm.DB, m map[string]interface{}) (err error) { - db = db.Model(&CronTask{}) - - for _, where := range qb.where { - db.Where(where.prefix, where.value) - } - - if err = db.Updates(m).Error; err != nil { - return errors.Wrap(err, "updates err") - } - return nil -} - -func (qb *cronTaskQueryBuilder) Delete(db *gorm.DB) (err error) { - for _, where := range qb.where { - db = db.Where(where.prefix, where.value) - } - - if err = db.Delete(&CronTask{}).Error; err != nil { - return errors.Wrap(err, "delete err") - } - return nil -} - -func (qb *cronTaskQueryBuilder) Count(db *gorm.DB) (int64, error) { - var c int64 - res := qb.buildQuery(db).Model(&CronTask{}).Count(&c) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - c = 0 - } - return c, res.Error -} - -func (qb *cronTaskQueryBuilder) First(db *gorm.DB) (*CronTask, error) { - ret := &CronTask{} - res := qb.buildQuery(db).First(ret) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - ret = nil - } - return ret, res.Error -} - -func (qb *cronTaskQueryBuilder) QueryOne(db *gorm.DB) (*CronTask, error) { - qb.limit = 1 - ret, err := qb.QueryAll(db) - if len(ret) > 0 { - return ret[0], err - } - return nil, err -} - -func (qb *cronTaskQueryBuilder) QueryAll(db *gorm.DB) ([]*CronTask, error) { - var ret []*CronTask - err := qb.buildQuery(db).Find(&ret).Error - return ret, err -} - -func (qb *cronTaskQueryBuilder) Limit(limit int) *cronTaskQueryBuilder { - qb.limit = limit - return qb -} - -func (qb *cronTaskQueryBuilder) Offset(offset int) *cronTaskQueryBuilder { - qb.offset = offset - return qb -} - -func (qb *cronTaskQueryBuilder) WhereId(p mysql.Predicate, value int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereIdIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereIdNotIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderById(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "id "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereName(p mysql.Predicate, value string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "name", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereNameIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "name", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereNameNotIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "name", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByName(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "name "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereSpec(p mysql.Predicate, value string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "spec", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereSpecIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "spec", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereSpecNotIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "spec", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderBySpec(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "spec "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereCommand(p mysql.Predicate, value string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "command", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereCommandIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "command", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereCommandNotIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "command", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByCommand(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "command "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereProtocol(p mysql.Predicate, value int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "protocol", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereProtocolIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "protocol", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereProtocolNotIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "protocol", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByProtocol(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "protocol "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereHttpMethod(p mysql.Predicate, value int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "http_method", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereHttpMethodIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "http_method", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereHttpMethodNotIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "http_method", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByHttpMethod(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "http_method "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereTimeout(p mysql.Predicate, value int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "timeout", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereTimeoutIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "timeout", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereTimeoutNotIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "timeout", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByTimeout(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "timeout "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereRetryTimes(p mysql.Predicate, value int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "retry_times", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereRetryTimesIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "retry_times", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereRetryTimesNotIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "retry_times", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByRetryTimes(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "retry_times "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereRetryInterval(p mysql.Predicate, value int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "retry_interval", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereRetryIntervalIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "retry_interval", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereRetryIntervalNotIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "retry_interval", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByRetryInterval(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "retry_interval "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereNotifyStatus(p mysql.Predicate, value int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "notify_status", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereNotifyStatusIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "notify_status", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereNotifyStatusNotIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "notify_status", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByNotifyStatus(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "notify_status "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereNotifyType(p mysql.Predicate, value int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "notify_type", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereNotifyTypeIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "notify_type", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereNotifyTypeNotIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "notify_type", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByNotifyType(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "notify_type "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereNotifyReceiverEmail(p mysql.Predicate, value string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "notify_receiver_email", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereNotifyReceiverEmailIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "notify_receiver_email", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereNotifyReceiverEmailNotIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "notify_receiver_email", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByNotifyReceiverEmail(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "notify_receiver_email "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereNotifyKeyword(p mysql.Predicate, value string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "notify_keyword", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereNotifyKeywordIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "notify_keyword", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereNotifyKeywordNotIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "notify_keyword", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByNotifyKeyword(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "notify_keyword "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereRemark(p mysql.Predicate, value string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "remark", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereRemarkIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "remark", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereRemarkNotIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "remark", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByRemark(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "remark "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereIsUsed(p mysql.Predicate, value int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereIsUsedIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereIsUsedNotIn(value []int32) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByIsUsed(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "is_used "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereCreatedAt(p mysql.Predicate, value time.Time) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereCreatedAtIn(value []time.Time) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereCreatedAtNotIn(value []time.Time) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByCreatedAt(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created_at "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereCreatedUser(p mysql.Predicate, value string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereCreatedUserIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereCreatedUserNotIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByCreatedUser(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created_user "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereUpdatedAt(p mysql.Predicate, value time.Time) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereUpdatedAtIn(value []time.Time) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereUpdatedAtNotIn(value []time.Time) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByUpdatedAt(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "updated_at "+order) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereUpdatedUser(p mysql.Predicate, value string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", p), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereUpdatedUserIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", "IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) WhereUpdatedUserNotIn(value []string) *cronTaskQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", "NOT IN"), - value, - }) - return qb -} - -func (qb *cronTaskQueryBuilder) OrderByUpdatedUser(asc bool) *cronTaskQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "updated_user "+order) - return qb -} diff --git a/internal/repository/mysql/cron_task/gen_model.go b/internal/repository/mysql/cron_task/gen_model.go deleted file mode 100755 index 22df0ff..0000000 --- a/internal/repository/mysql/cron_task/gen_model.go +++ /dev/null @@ -1,27 +0,0 @@ -package cron_task - -import "time" - -// CronTask 后台任务表 -//go:generate gormgen -structs CronTask -input . -type CronTask struct { - Id int32 // 主键 - Name string // 任务名称 - Spec string // crontab 表达式 - Command string // 执行命令 - Protocol int32 // 执行方式 1:shell 2:http - HttpMethod int32 // http 请求方式 1:get 2:post - Timeout int32 // 超时时间(单位:秒) - RetryTimes int32 // 重试次数 - RetryInterval int32 // 重试间隔(单位:秒) - NotifyStatus int32 // 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 - NotifyType int32 // 通知类型 1:邮件 2:webhook - NotifyReceiverEmail string // 通知者邮箱地址(多个用,分割) - NotifyKeyword string // 通知匹配关键字(多个用,分割) - Remark string // 备注 - IsUsed int32 // 是否启用 1:是 -1:否 - CreatedAt time.Time `gorm:"time"` // 创建时间 - CreatedUser string // 创建人 - UpdatedAt time.Time `gorm:"time"` // 更新时间 - UpdatedUser string // 更新人 -} diff --git a/internal/repository/mysql/cron_task/gen_table.md b/internal/repository/mysql/cron_task/gen_table.md deleted file mode 100755 index 7580914..0000000 --- a/internal/repository/mysql/cron_task/gen_table.md +++ /dev/null @@ -1,24 +0,0 @@ -#### go_gin_api.cron_task -后台任务表 - -| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | -| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | -| 1 | id | 主键 | int unsigned | PRI | NO | auto_increment | | -| 2 | name | 任务名称 | varchar(64) | MUL | NO | | | -| 3 | spec | crontab 表达式 | varchar(64) | | NO | | | -| 4 | command | 执行命令 | varchar(255) | | NO | | | -| 5 | protocol | 执行方式 1:shell 2:http | tinyint unsigned | | NO | | 1 | -| 6 | http_method | http 请求方式 1:get 2:post | tinyint unsigned | | NO | | 1 | -| 7 | timeout | 超时时间(单位:秒) | int unsigned | | NO | | 60 | -| 8 | retry_times | 重试次数 | tinyint(1) | | NO | | 3 | -| 9 | retry_interval | 重试间隔(单位:秒) | int | | NO | | 60 | -| 10 | notify_status | 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 | tinyint unsigned | | NO | | 0 | -| 11 | notify_type | 通知类型 1:邮件 2:webhook | tinyint unsigned | | NO | | 1 | -| 12 | notify_receiver_email | 通知者邮箱地址(多个用,分割) | varchar(255) | | NO | | | -| 13 | notify_keyword | 通知匹配关键字(多个用,分割) | varchar(255) | | NO | | | -| 14 | remark | 备注 | varchar(100) | | NO | | | -| 15 | is_used | 是否启用 1:是 -1:否 | tinyint(1) | | NO | | 1 | -| 16 | created_at | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP | -| 17 | created_user | 创建人 | varchar(60) | | NO | | | -| 18 | updated_at | 更新时间 | timestamp | | NO | DEFAULT_GENERATED on update CURRENT_TIMESTAMP | CURRENT_TIMESTAMP | -| 19 | updated_user | 更新人 | varchar(60) | | NO | | | diff --git a/internal/repository/mysql/menu/gen_menu.go b/internal/repository/mysql/menu/gen_menu.go deleted file mode 100755 index c91345e..0000000 --- a/internal/repository/mysql/menu/gen_menu.go +++ /dev/null @@ -1,679 +0,0 @@ -/////////////////////////////////////////////////////////// -// THIS FILE IS AUTO GENERATED by gormgen, DON'T EDIT IT // -// ANY CHANGES DONE HERE WILL BE LOST // -/////////////////////////////////////////////////////////// - -package menu - -import ( - "fmt" - "time" - - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - - "github.com/pkg/errors" - "gorm.io/gorm" -) - -func NewModel() *Menu { - return new(Menu) -} - -func NewQueryBuilder() *menuQueryBuilder { - return new(menuQueryBuilder) -} - -func (t *Menu) Create(db *gorm.DB) (id int32, err error) { - if err = db.Create(t).Error; err != nil { - return 0, errors.Wrap(err, "create err") - } - return t.Id, nil -} - -type menuQueryBuilder struct { - order []string - where []struct { - prefix string - value interface{} - } - limit int - offset int -} - -func (qb *menuQueryBuilder) buildQuery(db *gorm.DB) *gorm.DB { - ret := db - for _, where := range qb.where { - ret = ret.Where(where.prefix, where.value) - } - for _, order := range qb.order { - ret = ret.Order(order) - } - ret = ret.Limit(qb.limit).Offset(qb.offset) - return ret -} - -func (qb *menuQueryBuilder) Updates(db *gorm.DB, m map[string]interface{}) (err error) { - db = db.Model(&Menu{}) - - for _, where := range qb.where { - db.Where(where.prefix, where.value) - } - - if err = db.Updates(m).Error; err != nil { - return errors.Wrap(err, "updates err") - } - return nil -} - -func (qb *menuQueryBuilder) Delete(db *gorm.DB) (err error) { - for _, where := range qb.where { - db = db.Where(where.prefix, where.value) - } - - if err = db.Delete(&Menu{}).Error; err != nil { - return errors.Wrap(err, "delete err") - } - return nil -} - -func (qb *menuQueryBuilder) Count(db *gorm.DB) (int64, error) { - var c int64 - res := qb.buildQuery(db).Model(&Menu{}).Count(&c) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - c = 0 - } - return c, res.Error -} - -func (qb *menuQueryBuilder) First(db *gorm.DB) (*Menu, error) { - ret := &Menu{} - res := qb.buildQuery(db).First(ret) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - ret = nil - } - return ret, res.Error -} - -func (qb *menuQueryBuilder) QueryOne(db *gorm.DB) (*Menu, error) { - qb.limit = 1 - ret, err := qb.QueryAll(db) - if len(ret) > 0 { - return ret[0], err - } - return nil, err -} - -func (qb *menuQueryBuilder) QueryAll(db *gorm.DB) ([]*Menu, error) { - var ret []*Menu - err := qb.buildQuery(db).Find(&ret).Error - return ret, err -} - -func (qb *menuQueryBuilder) Limit(limit int) *menuQueryBuilder { - qb.limit = limit - return qb -} - -func (qb *menuQueryBuilder) Offset(offset int) *menuQueryBuilder { - qb.offset = offset - return qb -} - -func (qb *menuQueryBuilder) WhereId(p mysql.Predicate, value int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", p), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereIdIn(value []int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereIdNotIn(value []int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) OrderById(asc bool) *menuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "id "+order) - return qb -} - -func (qb *menuQueryBuilder) WherePid(p mysql.Predicate, value int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "pid", p), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WherePidIn(value []int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "pid", "IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WherePidNotIn(value []int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "pid", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) OrderByPid(asc bool) *menuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "pid "+order) - return qb -} - -func (qb *menuQueryBuilder) WhereName(p mysql.Predicate, value string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "name", p), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereNameIn(value []string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "name", "IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereNameNotIn(value []string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "name", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) OrderByName(asc bool) *menuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "name "+order) - return qb -} - -func (qb *menuQueryBuilder) WhereLink(p mysql.Predicate, value string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "link", p), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereLinkIn(value []string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "link", "IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereLinkNotIn(value []string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "link", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) OrderByLink(asc bool) *menuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "link "+order) - return qb -} - -func (qb *menuQueryBuilder) WhereIcon(p mysql.Predicate, value string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "icon", p), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereIconIn(value []string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "icon", "IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereIconNotIn(value []string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "icon", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) OrderByIcon(asc bool) *menuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "icon "+order) - return qb -} - -func (qb *menuQueryBuilder) WhereLevel(p mysql.Predicate, value int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "level", p), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereLevelIn(value []int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "level", "IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereLevelNotIn(value []int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "level", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) OrderByLevel(asc bool) *menuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "level "+order) - return qb -} - -func (qb *menuQueryBuilder) WhereSort(p mysql.Predicate, value int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "sort", p), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereSortIn(value []int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "sort", "IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereSortNotIn(value []int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "sort", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) OrderBySort(asc bool) *menuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "sort "+order) - return qb -} - -func (qb *menuQueryBuilder) WhereIsUsed(p mysql.Predicate, value int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", p), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereIsUsedIn(value []int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", "IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereIsUsedNotIn(value []int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) OrderByIsUsed(asc bool) *menuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "is_used "+order) - return qb -} - -func (qb *menuQueryBuilder) WhereIsDeleted(p mysql.Predicate, value int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", p), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereIsDeletedIn(value []int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", "IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereIsDeletedNotIn(value []int32) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) OrderByIsDeleted(asc bool) *menuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "is_deleted "+order) - return qb -} - -func (qb *menuQueryBuilder) WhereCreatedAt(p mysql.Predicate, value time.Time) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", p), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereCreatedAtIn(value []time.Time) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereCreatedAtNotIn(value []time.Time) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) OrderByCreatedAt(asc bool) *menuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created_at "+order) - return qb -} - -func (qb *menuQueryBuilder) WhereCreatedUser(p mysql.Predicate, value string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", p), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereCreatedUserIn(value []string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", "IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereCreatedUserNotIn(value []string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) OrderByCreatedUser(asc bool) *menuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created_user "+order) - return qb -} - -func (qb *menuQueryBuilder) WhereUpdatedAt(p mysql.Predicate, value time.Time) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", p), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereUpdatedAtIn(value []time.Time) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereUpdatedAtNotIn(value []time.Time) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) OrderByUpdatedAt(asc bool) *menuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "updated_at "+order) - return qb -} - -func (qb *menuQueryBuilder) WhereUpdatedUser(p mysql.Predicate, value string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", p), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereUpdatedUserIn(value []string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", "IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) WhereUpdatedUserNotIn(value []string) *menuQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuQueryBuilder) OrderByUpdatedUser(asc bool) *menuQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "updated_user "+order) - return qb -} diff --git a/internal/repository/mysql/menu/gen_model.go b/internal/repository/mysql/menu/gen_model.go deleted file mode 100755 index ff38418..0000000 --- a/internal/repository/mysql/menu/gen_model.go +++ /dev/null @@ -1,21 +0,0 @@ -package menu - -import "time" - -// Menu 左侧菜单栏表 -//go:generate gormgen -structs Menu -input . -type Menu struct { - Id int32 // 主键 - Pid int32 // 父类ID - Name string // 菜单名称 - Link string // 链接地址 - Icon string // 图标 - Level int32 // 菜单类型 1:一级菜单 2:二级菜单 - Sort int32 // 排序 - IsUsed int32 // 是否启用 1:是 -1:否 - IsDeleted int32 // 是否删除 1:是 -1:否 - CreatedAt time.Time `gorm:"time"` // 创建时间 - CreatedUser string // 创建人 - UpdatedAt time.Time `gorm:"time"` // 更新时间 - UpdatedUser string // 更新人 -} diff --git a/internal/repository/mysql/menu/gen_table.md b/internal/repository/mysql/menu/gen_table.md deleted file mode 100755 index a681e83..0000000 --- a/internal/repository/mysql/menu/gen_table.md +++ /dev/null @@ -1,18 +0,0 @@ -#### go_gin_api.menu -左侧菜单栏表 - -| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | -| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | -| 1 | id | 主键 | int unsigned | PRI | NO | auto_increment | | -| 2 | pid | 父类ID | int unsigned | | NO | | 0 | -| 3 | name | 菜单名称 | varchar(32) | | NO | | | -| 4 | link | 链接地址 | varchar(100) | | NO | | | -| 5 | icon | 图标 | varchar(60) | | NO | | | -| 6 | level | 菜单类型 1:一级菜单 2:二级菜单 | tinyint unsigned | | NO | | 1 | -| 7 | sort | 排序 | int unsigned | | NO | | 0 | -| 8 | is_used | 是否启用 1:是 -1:否 | tinyint(1) | | NO | | 1 | -| 9 | is_deleted | 是否删除 1:是 -1:否 | tinyint(1) | | NO | | -1 | -| 10 | created_at | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP | -| 11 | created_user | 创建人 | varchar(60) | | NO | | | -| 12 | updated_at | 更新时间 | timestamp | | NO | DEFAULT_GENERATED on update CURRENT_TIMESTAMP | CURRENT_TIMESTAMP | -| 13 | updated_user | 更新人 | varchar(60) | | NO | | | diff --git a/internal/repository/mysql/menu_action/gen_menu_action.go b/internal/repository/mysql/menu_action/gen_menu_action.go deleted file mode 100755 index d600010..0000000 --- a/internal/repository/mysql/menu_action/gen_menu_action.go +++ /dev/null @@ -1,507 +0,0 @@ -/////////////////////////////////////////////////////////// -// THIS FILE IS AUTO GENERATED by gormgen, DON'T EDIT IT // -// ANY CHANGES DONE HERE WILL BE LOST // -/////////////////////////////////////////////////////////// - -package menu_action - -import ( - "fmt" - "time" - - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - - "github.com/pkg/errors" - "gorm.io/gorm" -) - -func NewModel() *MenuAction { - return new(MenuAction) -} - -func NewQueryBuilder() *menuActionQueryBuilder { - return new(menuActionQueryBuilder) -} - -func (t *MenuAction) Create(db *gorm.DB) (id int32, err error) { - if err = db.Create(t).Error; err != nil { - return 0, errors.Wrap(err, "create err") - } - return t.Id, nil -} - -type menuActionQueryBuilder struct { - order []string - where []struct { - prefix string - value interface{} - } - limit int - offset int -} - -func (qb *menuActionQueryBuilder) buildQuery(db *gorm.DB) *gorm.DB { - ret := db - for _, where := range qb.where { - ret = ret.Where(where.prefix, where.value) - } - for _, order := range qb.order { - ret = ret.Order(order) - } - ret = ret.Limit(qb.limit).Offset(qb.offset) - return ret -} - -func (qb *menuActionQueryBuilder) Updates(db *gorm.DB, m map[string]interface{}) (err error) { - db = db.Model(&MenuAction{}) - - for _, where := range qb.where { - db.Where(where.prefix, where.value) - } - - if err = db.Updates(m).Error; err != nil { - return errors.Wrap(err, "updates err") - } - return nil -} - -func (qb *menuActionQueryBuilder) Delete(db *gorm.DB) (err error) { - for _, where := range qb.where { - db = db.Where(where.prefix, where.value) - } - - if err = db.Delete(&MenuAction{}).Error; err != nil { - return errors.Wrap(err, "delete err") - } - return nil -} - -func (qb *menuActionQueryBuilder) Count(db *gorm.DB) (int64, error) { - var c int64 - res := qb.buildQuery(db).Model(&MenuAction{}).Count(&c) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - c = 0 - } - return c, res.Error -} - -func (qb *menuActionQueryBuilder) First(db *gorm.DB) (*MenuAction, error) { - ret := &MenuAction{} - res := qb.buildQuery(db).First(ret) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - ret = nil - } - return ret, res.Error -} - -func (qb *menuActionQueryBuilder) QueryOne(db *gorm.DB) (*MenuAction, error) { - qb.limit = 1 - ret, err := qb.QueryAll(db) - if len(ret) > 0 { - return ret[0], err - } - return nil, err -} - -func (qb *menuActionQueryBuilder) QueryAll(db *gorm.DB) ([]*MenuAction, error) { - var ret []*MenuAction - err := qb.buildQuery(db).Find(&ret).Error - return ret, err -} - -func (qb *menuActionQueryBuilder) Limit(limit int) *menuActionQueryBuilder { - qb.limit = limit - return qb -} - -func (qb *menuActionQueryBuilder) Offset(offset int) *menuActionQueryBuilder { - qb.offset = offset - return qb -} - -func (qb *menuActionQueryBuilder) WhereId(p mysql.Predicate, value int32) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", p), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereIdIn(value []int32) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereIdNotIn(value []int32) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) OrderById(asc bool) *menuActionQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "id "+order) - return qb -} - -func (qb *menuActionQueryBuilder) WhereMenuId(p mysql.Predicate, value int32) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "menu_id", p), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereMenuIdIn(value []int32) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "menu_id", "IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereMenuIdNotIn(value []int32) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "menu_id", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) OrderByMenuId(asc bool) *menuActionQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "menu_id "+order) - return qb -} - -func (qb *menuActionQueryBuilder) WhereMethod(p mysql.Predicate, value string) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "method", p), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereMethodIn(value []string) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "method", "IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereMethodNotIn(value []string) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "method", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) OrderByMethod(asc bool) *menuActionQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "method "+order) - return qb -} - -func (qb *menuActionQueryBuilder) WhereApi(p mysql.Predicate, value string) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "api", p), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereApiIn(value []string) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "api", "IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereApiNotIn(value []string) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "api", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) OrderByApi(asc bool) *menuActionQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "api "+order) - return qb -} - -func (qb *menuActionQueryBuilder) WhereIsDeleted(p mysql.Predicate, value int32) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", p), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereIsDeletedIn(value []int32) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", "IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereIsDeletedNotIn(value []int32) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_deleted", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) OrderByIsDeleted(asc bool) *menuActionQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "is_deleted "+order) - return qb -} - -func (qb *menuActionQueryBuilder) WhereCreatedAt(p mysql.Predicate, value time.Time) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", p), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereCreatedAtIn(value []time.Time) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereCreatedAtNotIn(value []time.Time) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) OrderByCreatedAt(asc bool) *menuActionQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created_at "+order) - return qb -} - -func (qb *menuActionQueryBuilder) WhereCreatedUser(p mysql.Predicate, value string) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", p), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereCreatedUserIn(value []string) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", "IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereCreatedUserNotIn(value []string) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_user", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) OrderByCreatedUser(asc bool) *menuActionQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created_user "+order) - return qb -} - -func (qb *menuActionQueryBuilder) WhereUpdatedAt(p mysql.Predicate, value time.Time) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", p), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereUpdatedAtIn(value []time.Time) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereUpdatedAtNotIn(value []time.Time) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) OrderByUpdatedAt(asc bool) *menuActionQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "updated_at "+order) - return qb -} - -func (qb *menuActionQueryBuilder) WhereUpdatedUser(p mysql.Predicate, value string) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", p), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereUpdatedUserIn(value []string) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", "IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) WhereUpdatedUserNotIn(value []string) *menuActionQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_user", "NOT IN"), - value, - }) - return qb -} - -func (qb *menuActionQueryBuilder) OrderByUpdatedUser(asc bool) *menuActionQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "updated_user "+order) - return qb -} diff --git a/internal/repository/mysql/menu_action/gen_model.go b/internal/repository/mysql/menu_action/gen_model.go deleted file mode 100755 index b09788d..0000000 --- a/internal/repository/mysql/menu_action/gen_model.go +++ /dev/null @@ -1,17 +0,0 @@ -package menu_action - -import "time" - -// MenuAction 功能权限表 -//go:generate gormgen -structs MenuAction -input . -type MenuAction struct { - Id int32 // 主键 - MenuId int32 // 菜单栏ID - Method string // 请求方式 - Api string // 请求地址 - IsDeleted int32 // 是否删除 1:是 -1:否 - CreatedAt time.Time `gorm:"time"` // 创建时间 - CreatedUser string // 创建人 - UpdatedAt time.Time `gorm:"time"` // 更新时间 - UpdatedUser string // 更新人 -} diff --git a/internal/repository/mysql/menu_action/gen_table.md b/internal/repository/mysql/menu_action/gen_table.md deleted file mode 100755 index 7df558d..0000000 --- a/internal/repository/mysql/menu_action/gen_table.md +++ /dev/null @@ -1,14 +0,0 @@ -#### go_gin_api.menu_action -功能权限表 - -| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | -| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | -| 1 | id | 主键 | int unsigned | PRI | NO | auto_increment | | -| 2 | menu_id | 菜单栏ID | int unsigned | MUL | NO | | 0 | -| 3 | method | 请求方式 | varchar(30) | | NO | | | -| 4 | api | 请求地址 | varchar(100) | | NO | | | -| 5 | is_deleted | 是否删除 1:是 -1:否 | tinyint(1) | | NO | | -1 | -| 6 | created_at | 创建时间 | timestamp | | NO | DEFAULT_GENERATED | CURRENT_TIMESTAMP | -| 7 | created_user | 创建人 | varchar(60) | | NO | | | -| 8 | updated_at | 更新时间 | timestamp | | NO | DEFAULT_GENERATED on update CURRENT_TIMESTAMP | CURRENT_TIMESTAMP | -| 9 | updated_user | 更新人 | varchar(60) | | NO | | | diff --git a/internal/repository/mysql/model/admin.gen.go b/internal/repository/mysql/model/admin.gen.go new file mode 100644 index 0000000..8322ae9 --- /dev/null +++ b/internal/repository/mysql/model/admin.gen.go @@ -0,0 +1,31 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +import ( + "time" +) + +const TableNameAdmin = "admin" + +// Admin mapped from table +type Admin struct { + ID int64 `gorm:"column:id;primaryKey;autoIncrement:true;comment:主键" json:"id"` + Username string `gorm:"column:username;not null;comment:用户名" json:"username"` + Password string `gorm:"column:password;not null;comment:密码" json:"password"` + Nickname string `gorm:"column:nickname;not null;comment:昵称" json:"nickname"` + Mobile string `gorm:"column:mobile;not null;comment:手机号" json:"mobile"` + IsUsed int64 `gorm:"column:is_used;not null;default:1;comment:是否启用 1:是 -1:否" json:"is_used"` + IsDeleted int64 `gorm:"column:is_deleted;not null;default:-1;comment:是否删除 1:是 -1:否" json:"is_deleted"` + CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` + CreatedUser string `gorm:"column:created_user;not null;comment:创建人" json:"created_user"` + UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` + UpdatedUser string `gorm:"column:updated_user;not null;comment:更新人" json:"updated_user"` +} + +// TableName Admin's table name +func (*Admin) TableName() string { + return TableNameAdmin +} diff --git a/internal/repository/mysql/model/admin_menu.gen.go b/internal/repository/mysql/model/admin_menu.gen.go new file mode 100644 index 0000000..786c2ed --- /dev/null +++ b/internal/repository/mysql/model/admin_menu.gen.go @@ -0,0 +1,25 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +import ( + "time" +) + +const TableNameAdminMenu = "admin_menu" + +// AdminMenu mapped from table +type AdminMenu struct { + ID int64 `gorm:"column:id;primaryKey;autoIncrement:true;comment:主键" json:"id"` + AdminID int64 `gorm:"column:admin_id;not null;comment:管理员ID" json:"admin_id"` + MenuID int64 `gorm:"column:menu_id;not null;comment:菜单栏ID" json:"menu_id"` + CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` + CreatedUser string `gorm:"column:created_user;not null;comment:创建人" json:"created_user"` +} + +// TableName AdminMenu's table name +func (*AdminMenu) TableName() string { + return TableNameAdminMenu +} diff --git a/internal/repository/mysql/model/authorized.gen.go b/internal/repository/mysql/model/authorized.gen.go new file mode 100644 index 0000000..9006876 --- /dev/null +++ b/internal/repository/mysql/model/authorized.gen.go @@ -0,0 +1,31 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +import ( + "time" +) + +const TableNameAuthorized = "authorized" + +// Authorized mapped from table +type Authorized struct { + ID int64 `gorm:"column:id;primaryKey;autoIncrement:true;comment:主键" json:"id"` + BusinessKey string `gorm:"column:business_key;not null;comment:调用方key" json:"business_key"` + BusinessSecret string `gorm:"column:business_secret;not null;comment:调用方secret" json:"business_secret"` + BusinessDeveloper string `gorm:"column:business_developer;not null;comment:调用方对接人" json:"business_developer"` + Remark string `gorm:"column:remark;not null;comment:备注" json:"remark"` + IsUsed int64 `gorm:"column:is_used;not null;default:1;comment:是否启用 1:是 -1:否" json:"is_used"` + IsDeleted int64 `gorm:"column:is_deleted;not null;default:-1;comment:是否删除 1:是 -1:否" json:"is_deleted"` + CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` + CreatedUser string `gorm:"column:created_user;not null;comment:创建人" json:"created_user"` + UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` + UpdatedUser string `gorm:"column:updated_user;not null;comment:更新人" json:"updated_user"` +} + +// TableName Authorized's table name +func (*Authorized) TableName() string { + return TableNameAuthorized +} diff --git a/internal/repository/mysql/model/authorized_api.gen.go b/internal/repository/mysql/model/authorized_api.gen.go new file mode 100644 index 0000000..afa5f8c --- /dev/null +++ b/internal/repository/mysql/model/authorized_api.gen.go @@ -0,0 +1,29 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +import ( + "time" +) + +const TableNameAuthorizedAPI = "authorized_api" + +// AuthorizedAPI mapped from table +type AuthorizedAPI struct { + ID int64 `gorm:"column:id;primaryKey;autoIncrement:true;comment:主键" json:"id"` + BusinessKey string `gorm:"column:business_key;not null;comment:调用方key" json:"business_key"` + Method string `gorm:"column:method;not null;comment:请求方式" json:"method"` + API string `gorm:"column:api;not null;comment:请求地址" json:"api"` + IsDeleted int64 `gorm:"column:is_deleted;not null;default:-1;comment:是否删除 1:是 -1:否" json:"is_deleted"` + CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` + CreatedUser string `gorm:"column:created_user;not null;comment:创建人" json:"created_user"` + UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` + UpdatedUser string `gorm:"column:updated_user;not null;comment:更新人" json:"updated_user"` +} + +// TableName AuthorizedAPI's table name +func (*AuthorizedAPI) TableName() string { + return TableNameAuthorizedAPI +} diff --git a/internal/repository/mysql/model/category.gen.go b/internal/repository/mysql/model/category.gen.go new file mode 100644 index 0000000..eb49af7 --- /dev/null +++ b/internal/repository/mysql/model/category.gen.go @@ -0,0 +1,29 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +import ( + "time" +) + +const TableNameCategory = "category" + +// Category mapped from table +type Category struct { + ID int64 `gorm:"column:id;primaryKey;autoIncrement:true" json:"id"` + ParentID int64 `gorm:"column:parent_id;not null" json:"parent_id"` + Sort int64 `gorm:"column:sort;not null;comment:排序" json:"sort"` + Title string `gorm:"column:title;not null;comment:名称" json:"title"` + Icon string `gorm:"column:icon;not null;comment:图标" json:"icon"` + CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` + UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` + IsUsed int64 `gorm:"column:is_used;default:-1;comment:是否启用 1:是 -1:否" json:"is_used"` + Level int64 `gorm:"column:level;comment:分类等级" json:"level"` +} + +// TableName Category's table name +func (*Category) TableName() string { + return TableNameCategory +} diff --git a/internal/repository/mysql/model/cron_task.gen.go b/internal/repository/mysql/model/cron_task.gen.go new file mode 100644 index 0000000..eb7e81c --- /dev/null +++ b/internal/repository/mysql/model/cron_task.gen.go @@ -0,0 +1,39 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +import ( + "time" +) + +const TableNameCronTask = "cron_task" + +// CronTask mapped from table +type CronTask struct { + ID int64 `gorm:"column:id;primaryKey;autoIncrement:true;comment:主键" json:"id"` + Name string `gorm:"column:name;not null;comment:任务名称" json:"name"` + Spec string `gorm:"column:spec;not null;comment:crontab 表达式" json:"spec"` + Command string `gorm:"column:command;not null;comment:执行命令" json:"command"` + Protocol int64 `gorm:"column:protocol;not null;default:1;comment:执行方式 1:shell 2:http" json:"protocol"` + HTTPMethod int64 `gorm:"column:http_method;not null;default:1;comment:http 请求方式 1:get 2:post" json:"http_method"` + Timeout int64 `gorm:"column:timeout;not null;default:60;comment:超时时间(单位:秒)" json:"timeout"` + RetryTimes int64 `gorm:"column:retry_times;not null;default:3;comment:重试次数" json:"retry_times"` + RetryInterval int64 `gorm:"column:retry_interval;not null;default:60;comment:重试间隔(单位:秒)" json:"retry_interval"` + NotifyStatus int64 `gorm:"column:notify_status;not null;comment:执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知" json:"notify_status"` + NotifyType int64 `gorm:"column:notify_type;not null;default:1;comment:通知类型 1:邮件 2:webhook" json:"notify_type"` + NotifyReceiverEmail string `gorm:"column:notify_receiver_email;not null;comment:通知者邮箱地址(多个用,分割)" json:"notify_receiver_email"` + NotifyKeyword string `gorm:"column:notify_keyword;not null;comment:通知匹配关键字(多个用,分割)" json:"notify_keyword"` + Remark string `gorm:"column:remark;not null;comment:备注" json:"remark"` + IsUsed int64 `gorm:"column:is_used;not null;default:1;comment:是否启用 1:是 -1:否" json:"is_used"` + CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` + CreatedUser string `gorm:"column:created_user;not null;comment:创建人" json:"created_user"` + UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` + UpdatedUser string `gorm:"column:updated_user;not null;comment:更新人" json:"updated_user"` +} + +// TableName CronTask's table name +func (*CronTask) TableName() string { + return TableNameCronTask +} diff --git a/internal/repository/mysql/model/menu.gen.go b/internal/repository/mysql/model/menu.gen.go new file mode 100644 index 0000000..890fe6e --- /dev/null +++ b/internal/repository/mysql/model/menu.gen.go @@ -0,0 +1,33 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +import ( + "time" +) + +const TableNameMenu = "menu" + +// Menu mapped from table +type Menu struct { + ID int64 `gorm:"column:id;primaryKey;autoIncrement:true;comment:主键" json:"id"` + Pid int64 `gorm:"column:pid;not null;comment:父类ID" json:"pid"` + Name string `gorm:"column:name;not null;comment:菜单名称" json:"name"` + Link string `gorm:"column:link;not null;comment:链接地址" json:"link"` + Icon string `gorm:"column:icon;not null;comment:图标" json:"icon"` + Level int64 `gorm:"column:level;not null;default:1;comment:菜单类型 1:一级菜单 2:二级菜单" json:"level"` + Sort int64 `gorm:"column:sort;not null;comment:排序" json:"sort"` + IsUsed int64 `gorm:"column:is_used;not null;default:1;comment:是否启用 1:是 -1:否" json:"is_used"` + IsDeleted int64 `gorm:"column:is_deleted;not null;default:-1;comment:是否删除 1:是 -1:否" json:"is_deleted"` + CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` + CreatedUser string `gorm:"column:created_user;not null;comment:创建人" json:"created_user"` + UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` + UpdatedUser string `gorm:"column:updated_user;not null;comment:更新人" json:"updated_user"` +} + +// TableName Menu's table name +func (*Menu) TableName() string { + return TableNameMenu +} diff --git a/internal/repository/mysql/model/menu_action.gen.go b/internal/repository/mysql/model/menu_action.gen.go new file mode 100644 index 0000000..5bcbbca --- /dev/null +++ b/internal/repository/mysql/model/menu_action.gen.go @@ -0,0 +1,29 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +import ( + "time" +) + +const TableNameMenuAction = "menu_action" + +// MenuAction mapped from table +type MenuAction struct { + ID int64 `gorm:"column:id;primaryKey;autoIncrement:true;comment:主键" json:"id"` + MenuID int64 `gorm:"column:menu_id;not null;comment:菜单栏ID" json:"menu_id"` + Method string `gorm:"column:method;not null;comment:请求方式" json:"method"` + API string `gorm:"column:api;not null;comment:请求地址" json:"api"` + IsDeleted int64 `gorm:"column:is_deleted;not null;default:-1;comment:是否删除 1:是 -1:否" json:"is_deleted"` + CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` + CreatedUser string `gorm:"column:created_user;not null;comment:创建人" json:"created_user"` + UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` + UpdatedUser string `gorm:"column:updated_user;not null;comment:更新人" json:"updated_user"` +} + +// TableName MenuAction's table name +func (*MenuAction) TableName() string { + return TableNameMenuAction +} diff --git a/internal/repository/mysql/model/site.gen.go b/internal/repository/mysql/model/site.gen.go new file mode 100644 index 0000000..599e2b0 --- /dev/null +++ b/internal/repository/mysql/model/site.gen.go @@ -0,0 +1,30 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +import ( + "time" +) + +const TableNameSite = "site" + +// Site mapped from table +type Site struct { + ID int64 `gorm:"column:id;primaryKey;autoIncrement:true" json:"id"` + CategoryID int64 `gorm:"column:category_id;comment:分类id" json:"category_id"` + Title string `gorm:"column:title;comment:网站标题" json:"title"` + Thumb string `gorm:"column:thumb;comment:网站logo" json:"thumb"` + Description string `gorm:"column:description;comment:网站描述" json:"description"` + URL string `gorm:"column:url;comment:网站地址" json:"url"` + CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` + UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` + IsUsed int64 `gorm:"column:is_used;default:-1;comment:是否使用" json:"is_used"` + Category Category `gorm:"foreignKey:CategoryID" json:"category"` +} + +// TableName Site's table name +func (*Site) TableName() string { + return TableNameSite +} diff --git a/internal/repository/mysql/query/admin.gen.go b/internal/repository/mysql/query/admin.gen.go new file mode 100644 index 0000000..c107c50 --- /dev/null +++ b/internal/repository/mysql/query/admin.gen.go @@ -0,0 +1,424 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" +) + +func newAdmin(db *gorm.DB, opts ...gen.DOOption) admin { + _admin := admin{} + + _admin.adminDo.UseDB(db, opts...) + _admin.adminDo.UseModel(&model.Admin{}) + + tableName := _admin.adminDo.TableName() + _admin.ALL = field.NewAsterisk(tableName) + _admin.ID = field.NewInt64(tableName, "id") + _admin.Username = field.NewString(tableName, "username") + _admin.Password = field.NewString(tableName, "password") + _admin.Nickname = field.NewString(tableName, "nickname") + _admin.Mobile = field.NewString(tableName, "mobile") + _admin.IsUsed = field.NewInt64(tableName, "is_used") + _admin.IsDeleted = field.NewInt64(tableName, "is_deleted") + _admin.CreatedAt = field.NewTime(tableName, "created_at") + _admin.CreatedUser = field.NewString(tableName, "created_user") + _admin.UpdatedAt = field.NewTime(tableName, "updated_at") + _admin.UpdatedUser = field.NewString(tableName, "updated_user") + + _admin.fillFieldMap() + + return _admin +} + +type admin struct { + adminDo + + ALL field.Asterisk + ID field.Int64 // 主键 + Username field.String // 用户名 + Password field.String // 密码 + Nickname field.String // 昵称 + Mobile field.String // 手机号 + IsUsed field.Int64 // 是否启用 1:是 -1:否 + IsDeleted field.Int64 // 是否删除 1:是 -1:否 + CreatedAt field.Time // 创建时间 + CreatedUser field.String // 创建人 + UpdatedAt field.Time // 更新时间 + UpdatedUser field.String // 更新人 + + fieldMap map[string]field.Expr +} + +func (a admin) Table(newTableName string) *admin { + a.adminDo.UseTable(newTableName) + return a.updateTableName(newTableName) +} + +func (a admin) As(alias string) *admin { + a.adminDo.DO = *(a.adminDo.As(alias).(*gen.DO)) + return a.updateTableName(alias) +} + +func (a *admin) updateTableName(table string) *admin { + a.ALL = field.NewAsterisk(table) + a.ID = field.NewInt64(table, "id") + a.Username = field.NewString(table, "username") + a.Password = field.NewString(table, "password") + a.Nickname = field.NewString(table, "nickname") + a.Mobile = field.NewString(table, "mobile") + a.IsUsed = field.NewInt64(table, "is_used") + a.IsDeleted = field.NewInt64(table, "is_deleted") + a.CreatedAt = field.NewTime(table, "created_at") + a.CreatedUser = field.NewString(table, "created_user") + a.UpdatedAt = field.NewTime(table, "updated_at") + a.UpdatedUser = field.NewString(table, "updated_user") + + a.fillFieldMap() + + return a +} + +func (a *admin) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := a.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (a *admin) fillFieldMap() { + a.fieldMap = make(map[string]field.Expr, 11) + a.fieldMap["id"] = a.ID + a.fieldMap["username"] = a.Username + a.fieldMap["password"] = a.Password + a.fieldMap["nickname"] = a.Nickname + a.fieldMap["mobile"] = a.Mobile + a.fieldMap["is_used"] = a.IsUsed + a.fieldMap["is_deleted"] = a.IsDeleted + a.fieldMap["created_at"] = a.CreatedAt + a.fieldMap["created_user"] = a.CreatedUser + a.fieldMap["updated_at"] = a.UpdatedAt + a.fieldMap["updated_user"] = a.UpdatedUser +} + +func (a admin) clone(db *gorm.DB) admin { + a.adminDo.ReplaceConnPool(db.Statement.ConnPool) + return a +} + +func (a admin) replaceDB(db *gorm.DB) admin { + a.adminDo.ReplaceDB(db) + return a +} + +type adminDo struct{ gen.DO } + +type IAdminDo interface { + gen.SubQuery + Debug() IAdminDo + WithContext(ctx context.Context) IAdminDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() IAdminDo + WriteDB() IAdminDo + As(alias string) gen.Dao + Session(config *gorm.Session) IAdminDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) IAdminDo + Not(conds ...gen.Condition) IAdminDo + Or(conds ...gen.Condition) IAdminDo + Select(conds ...field.Expr) IAdminDo + Where(conds ...gen.Condition) IAdminDo + Order(conds ...field.Expr) IAdminDo + Distinct(cols ...field.Expr) IAdminDo + Omit(cols ...field.Expr) IAdminDo + Join(table schema.Tabler, on ...field.Expr) IAdminDo + LeftJoin(table schema.Tabler, on ...field.Expr) IAdminDo + RightJoin(table schema.Tabler, on ...field.Expr) IAdminDo + Group(cols ...field.Expr) IAdminDo + Having(conds ...gen.Condition) IAdminDo + Limit(limit int) IAdminDo + Offset(offset int) IAdminDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) IAdminDo + Unscoped() IAdminDo + Create(values ...*model.Admin) error + CreateInBatches(values []*model.Admin, batchSize int) error + Save(values ...*model.Admin) error + First() (*model.Admin, error) + Take() (*model.Admin, error) + Last() (*model.Admin, error) + Find() ([]*model.Admin, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Admin, err error) + FindInBatches(result *[]*model.Admin, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*model.Admin) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) IAdminDo + Assign(attrs ...field.AssignExpr) IAdminDo + Joins(fields ...field.RelationField) IAdminDo + Preload(fields ...field.RelationField) IAdminDo + FirstOrInit() (*model.Admin, error) + FirstOrCreate() (*model.Admin, error) + FindByPage(offset int, limit int) (result []*model.Admin, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) IAdminDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (a adminDo) Debug() IAdminDo { + return a.withDO(a.DO.Debug()) +} + +func (a adminDo) WithContext(ctx context.Context) IAdminDo { + return a.withDO(a.DO.WithContext(ctx)) +} + +func (a adminDo) ReadDB() IAdminDo { + return a.Clauses(dbresolver.Read) +} + +func (a adminDo) WriteDB() IAdminDo { + return a.Clauses(dbresolver.Write) +} + +func (a adminDo) Session(config *gorm.Session) IAdminDo { + return a.withDO(a.DO.Session(config)) +} + +func (a adminDo) Clauses(conds ...clause.Expression) IAdminDo { + return a.withDO(a.DO.Clauses(conds...)) +} + +func (a adminDo) Returning(value interface{}, columns ...string) IAdminDo { + return a.withDO(a.DO.Returning(value, columns...)) +} + +func (a adminDo) Not(conds ...gen.Condition) IAdminDo { + return a.withDO(a.DO.Not(conds...)) +} + +func (a adminDo) Or(conds ...gen.Condition) IAdminDo { + return a.withDO(a.DO.Or(conds...)) +} + +func (a adminDo) Select(conds ...field.Expr) IAdminDo { + return a.withDO(a.DO.Select(conds...)) +} + +func (a adminDo) Where(conds ...gen.Condition) IAdminDo { + return a.withDO(a.DO.Where(conds...)) +} + +func (a adminDo) Exists(subquery interface{ UnderlyingDB() *gorm.DB }) IAdminDo { + return a.Where(field.CompareSubQuery(field.ExistsOp, nil, subquery.UnderlyingDB())) +} + +func (a adminDo) Order(conds ...field.Expr) IAdminDo { + return a.withDO(a.DO.Order(conds...)) +} + +func (a adminDo) Distinct(cols ...field.Expr) IAdminDo { + return a.withDO(a.DO.Distinct(cols...)) +} + +func (a adminDo) Omit(cols ...field.Expr) IAdminDo { + return a.withDO(a.DO.Omit(cols...)) +} + +func (a adminDo) Join(table schema.Tabler, on ...field.Expr) IAdminDo { + return a.withDO(a.DO.Join(table, on...)) +} + +func (a adminDo) LeftJoin(table schema.Tabler, on ...field.Expr) IAdminDo { + return a.withDO(a.DO.LeftJoin(table, on...)) +} + +func (a adminDo) RightJoin(table schema.Tabler, on ...field.Expr) IAdminDo { + return a.withDO(a.DO.RightJoin(table, on...)) +} + +func (a adminDo) Group(cols ...field.Expr) IAdminDo { + return a.withDO(a.DO.Group(cols...)) +} + +func (a adminDo) Having(conds ...gen.Condition) IAdminDo { + return a.withDO(a.DO.Having(conds...)) +} + +func (a adminDo) Limit(limit int) IAdminDo { + return a.withDO(a.DO.Limit(limit)) +} + +func (a adminDo) Offset(offset int) IAdminDo { + return a.withDO(a.DO.Offset(offset)) +} + +func (a adminDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IAdminDo { + return a.withDO(a.DO.Scopes(funcs...)) +} + +func (a adminDo) Unscoped() IAdminDo { + return a.withDO(a.DO.Unscoped()) +} + +func (a adminDo) Create(values ...*model.Admin) error { + if len(values) == 0 { + return nil + } + return a.DO.Create(values) +} + +func (a adminDo) CreateInBatches(values []*model.Admin, batchSize int) error { + return a.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (a adminDo) Save(values ...*model.Admin) error { + if len(values) == 0 { + return nil + } + return a.DO.Save(values) +} + +func (a adminDo) First() (*model.Admin, error) { + if result, err := a.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.Admin), nil + } +} + +func (a adminDo) Take() (*model.Admin, error) { + if result, err := a.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.Admin), nil + } +} + +func (a adminDo) Last() (*model.Admin, error) { + if result, err := a.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.Admin), nil + } +} + +func (a adminDo) Find() ([]*model.Admin, error) { + result, err := a.DO.Find() + return result.([]*model.Admin), err +} + +func (a adminDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Admin, err error) { + buf := make([]*model.Admin, 0, batchSize) + err = a.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (a adminDo) FindInBatches(result *[]*model.Admin, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return a.DO.FindInBatches(result, batchSize, fc) +} + +func (a adminDo) Attrs(attrs ...field.AssignExpr) IAdminDo { + return a.withDO(a.DO.Attrs(attrs...)) +} + +func (a adminDo) Assign(attrs ...field.AssignExpr) IAdminDo { + return a.withDO(a.DO.Assign(attrs...)) +} + +func (a adminDo) Joins(fields ...field.RelationField) IAdminDo { + for _, _f := range fields { + a = *a.withDO(a.DO.Joins(_f)) + } + return &a +} + +func (a adminDo) Preload(fields ...field.RelationField) IAdminDo { + for _, _f := range fields { + a = *a.withDO(a.DO.Preload(_f)) + } + return &a +} + +func (a adminDo) FirstOrInit() (*model.Admin, error) { + if result, err := a.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.Admin), nil + } +} + +func (a adminDo) FirstOrCreate() (*model.Admin, error) { + if result, err := a.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.Admin), nil + } +} + +func (a adminDo) FindByPage(offset int, limit int) (result []*model.Admin, count int64, err error) { + result, err = a.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = a.Offset(-1).Limit(-1).Count() + return +} + +func (a adminDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = a.Count() + if err != nil { + return + } + + err = a.Offset(offset).Limit(limit).Scan(result) + return +} + +func (a adminDo) Scan(result interface{}) (err error) { + return a.DO.Scan(result) +} + +func (a adminDo) Delete(models ...*model.Admin) (result gen.ResultInfo, err error) { + return a.DO.Delete(models) +} + +func (a *adminDo) withDO(do gen.Dao) *adminDo { + a.DO = *do.(*gen.DO) + return a +} diff --git a/internal/repository/mysql/query/admin_menu.gen.go b/internal/repository/mysql/query/admin_menu.gen.go new file mode 100644 index 0000000..85d3c94 --- /dev/null +++ b/internal/repository/mysql/query/admin_menu.gen.go @@ -0,0 +1,400 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" +) + +func newAdminMenu(db *gorm.DB, opts ...gen.DOOption) adminMenu { + _adminMenu := adminMenu{} + + _adminMenu.adminMenuDo.UseDB(db, opts...) + _adminMenu.adminMenuDo.UseModel(&model.AdminMenu{}) + + tableName := _adminMenu.adminMenuDo.TableName() + _adminMenu.ALL = field.NewAsterisk(tableName) + _adminMenu.ID = field.NewInt64(tableName, "id") + _adminMenu.AdminID = field.NewInt64(tableName, "admin_id") + _adminMenu.MenuID = field.NewInt64(tableName, "menu_id") + _adminMenu.CreatedAt = field.NewTime(tableName, "created_at") + _adminMenu.CreatedUser = field.NewString(tableName, "created_user") + + _adminMenu.fillFieldMap() + + return _adminMenu +} + +type adminMenu struct { + adminMenuDo + + ALL field.Asterisk + ID field.Int64 // 主键 + AdminID field.Int64 // 管理员ID + MenuID field.Int64 // 菜单栏ID + CreatedAt field.Time // 创建时间 + CreatedUser field.String // 创建人 + + fieldMap map[string]field.Expr +} + +func (a adminMenu) Table(newTableName string) *adminMenu { + a.adminMenuDo.UseTable(newTableName) + return a.updateTableName(newTableName) +} + +func (a adminMenu) As(alias string) *adminMenu { + a.adminMenuDo.DO = *(a.adminMenuDo.As(alias).(*gen.DO)) + return a.updateTableName(alias) +} + +func (a *adminMenu) updateTableName(table string) *adminMenu { + a.ALL = field.NewAsterisk(table) + a.ID = field.NewInt64(table, "id") + a.AdminID = field.NewInt64(table, "admin_id") + a.MenuID = field.NewInt64(table, "menu_id") + a.CreatedAt = field.NewTime(table, "created_at") + a.CreatedUser = field.NewString(table, "created_user") + + a.fillFieldMap() + + return a +} + +func (a *adminMenu) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := a.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (a *adminMenu) fillFieldMap() { + a.fieldMap = make(map[string]field.Expr, 5) + a.fieldMap["id"] = a.ID + a.fieldMap["admin_id"] = a.AdminID + a.fieldMap["menu_id"] = a.MenuID + a.fieldMap["created_at"] = a.CreatedAt + a.fieldMap["created_user"] = a.CreatedUser +} + +func (a adminMenu) clone(db *gorm.DB) adminMenu { + a.adminMenuDo.ReplaceConnPool(db.Statement.ConnPool) + return a +} + +func (a adminMenu) replaceDB(db *gorm.DB) adminMenu { + a.adminMenuDo.ReplaceDB(db) + return a +} + +type adminMenuDo struct{ gen.DO } + +type IAdminMenuDo interface { + gen.SubQuery + Debug() IAdminMenuDo + WithContext(ctx context.Context) IAdminMenuDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() IAdminMenuDo + WriteDB() IAdminMenuDo + As(alias string) gen.Dao + Session(config *gorm.Session) IAdminMenuDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) IAdminMenuDo + Not(conds ...gen.Condition) IAdminMenuDo + Or(conds ...gen.Condition) IAdminMenuDo + Select(conds ...field.Expr) IAdminMenuDo + Where(conds ...gen.Condition) IAdminMenuDo + Order(conds ...field.Expr) IAdminMenuDo + Distinct(cols ...field.Expr) IAdminMenuDo + Omit(cols ...field.Expr) IAdminMenuDo + Join(table schema.Tabler, on ...field.Expr) IAdminMenuDo + LeftJoin(table schema.Tabler, on ...field.Expr) IAdminMenuDo + RightJoin(table schema.Tabler, on ...field.Expr) IAdminMenuDo + Group(cols ...field.Expr) IAdminMenuDo + Having(conds ...gen.Condition) IAdminMenuDo + Limit(limit int) IAdminMenuDo + Offset(offset int) IAdminMenuDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) IAdminMenuDo + Unscoped() IAdminMenuDo + Create(values ...*model.AdminMenu) error + CreateInBatches(values []*model.AdminMenu, batchSize int) error + Save(values ...*model.AdminMenu) error + First() (*model.AdminMenu, error) + Take() (*model.AdminMenu, error) + Last() (*model.AdminMenu, error) + Find() ([]*model.AdminMenu, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.AdminMenu, err error) + FindInBatches(result *[]*model.AdminMenu, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*model.AdminMenu) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) IAdminMenuDo + Assign(attrs ...field.AssignExpr) IAdminMenuDo + Joins(fields ...field.RelationField) IAdminMenuDo + Preload(fields ...field.RelationField) IAdminMenuDo + FirstOrInit() (*model.AdminMenu, error) + FirstOrCreate() (*model.AdminMenu, error) + FindByPage(offset int, limit int) (result []*model.AdminMenu, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) IAdminMenuDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (a adminMenuDo) Debug() IAdminMenuDo { + return a.withDO(a.DO.Debug()) +} + +func (a adminMenuDo) WithContext(ctx context.Context) IAdminMenuDo { + return a.withDO(a.DO.WithContext(ctx)) +} + +func (a adminMenuDo) ReadDB() IAdminMenuDo { + return a.Clauses(dbresolver.Read) +} + +func (a adminMenuDo) WriteDB() IAdminMenuDo { + return a.Clauses(dbresolver.Write) +} + +func (a adminMenuDo) Session(config *gorm.Session) IAdminMenuDo { + return a.withDO(a.DO.Session(config)) +} + +func (a adminMenuDo) Clauses(conds ...clause.Expression) IAdminMenuDo { + return a.withDO(a.DO.Clauses(conds...)) +} + +func (a adminMenuDo) Returning(value interface{}, columns ...string) IAdminMenuDo { + return a.withDO(a.DO.Returning(value, columns...)) +} + +func (a adminMenuDo) Not(conds ...gen.Condition) IAdminMenuDo { + return a.withDO(a.DO.Not(conds...)) +} + +func (a adminMenuDo) Or(conds ...gen.Condition) IAdminMenuDo { + return a.withDO(a.DO.Or(conds...)) +} + +func (a adminMenuDo) Select(conds ...field.Expr) IAdminMenuDo { + return a.withDO(a.DO.Select(conds...)) +} + +func (a adminMenuDo) Where(conds ...gen.Condition) IAdminMenuDo { + return a.withDO(a.DO.Where(conds...)) +} + +func (a adminMenuDo) Exists(subquery interface{ UnderlyingDB() *gorm.DB }) IAdminMenuDo { + return a.Where(field.CompareSubQuery(field.ExistsOp, nil, subquery.UnderlyingDB())) +} + +func (a adminMenuDo) Order(conds ...field.Expr) IAdminMenuDo { + return a.withDO(a.DO.Order(conds...)) +} + +func (a adminMenuDo) Distinct(cols ...field.Expr) IAdminMenuDo { + return a.withDO(a.DO.Distinct(cols...)) +} + +func (a adminMenuDo) Omit(cols ...field.Expr) IAdminMenuDo { + return a.withDO(a.DO.Omit(cols...)) +} + +func (a adminMenuDo) Join(table schema.Tabler, on ...field.Expr) IAdminMenuDo { + return a.withDO(a.DO.Join(table, on...)) +} + +func (a adminMenuDo) LeftJoin(table schema.Tabler, on ...field.Expr) IAdminMenuDo { + return a.withDO(a.DO.LeftJoin(table, on...)) +} + +func (a adminMenuDo) RightJoin(table schema.Tabler, on ...field.Expr) IAdminMenuDo { + return a.withDO(a.DO.RightJoin(table, on...)) +} + +func (a adminMenuDo) Group(cols ...field.Expr) IAdminMenuDo { + return a.withDO(a.DO.Group(cols...)) +} + +func (a adminMenuDo) Having(conds ...gen.Condition) IAdminMenuDo { + return a.withDO(a.DO.Having(conds...)) +} + +func (a adminMenuDo) Limit(limit int) IAdminMenuDo { + return a.withDO(a.DO.Limit(limit)) +} + +func (a adminMenuDo) Offset(offset int) IAdminMenuDo { + return a.withDO(a.DO.Offset(offset)) +} + +func (a adminMenuDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IAdminMenuDo { + return a.withDO(a.DO.Scopes(funcs...)) +} + +func (a adminMenuDo) Unscoped() IAdminMenuDo { + return a.withDO(a.DO.Unscoped()) +} + +func (a adminMenuDo) Create(values ...*model.AdminMenu) error { + if len(values) == 0 { + return nil + } + return a.DO.Create(values) +} + +func (a adminMenuDo) CreateInBatches(values []*model.AdminMenu, batchSize int) error { + return a.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (a adminMenuDo) Save(values ...*model.AdminMenu) error { + if len(values) == 0 { + return nil + } + return a.DO.Save(values) +} + +func (a adminMenuDo) First() (*model.AdminMenu, error) { + if result, err := a.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.AdminMenu), nil + } +} + +func (a adminMenuDo) Take() (*model.AdminMenu, error) { + if result, err := a.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.AdminMenu), nil + } +} + +func (a adminMenuDo) Last() (*model.AdminMenu, error) { + if result, err := a.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.AdminMenu), nil + } +} + +func (a adminMenuDo) Find() ([]*model.AdminMenu, error) { + result, err := a.DO.Find() + return result.([]*model.AdminMenu), err +} + +func (a adminMenuDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.AdminMenu, err error) { + buf := make([]*model.AdminMenu, 0, batchSize) + err = a.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (a adminMenuDo) FindInBatches(result *[]*model.AdminMenu, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return a.DO.FindInBatches(result, batchSize, fc) +} + +func (a adminMenuDo) Attrs(attrs ...field.AssignExpr) IAdminMenuDo { + return a.withDO(a.DO.Attrs(attrs...)) +} + +func (a adminMenuDo) Assign(attrs ...field.AssignExpr) IAdminMenuDo { + return a.withDO(a.DO.Assign(attrs...)) +} + +func (a adminMenuDo) Joins(fields ...field.RelationField) IAdminMenuDo { + for _, _f := range fields { + a = *a.withDO(a.DO.Joins(_f)) + } + return &a +} + +func (a adminMenuDo) Preload(fields ...field.RelationField) IAdminMenuDo { + for _, _f := range fields { + a = *a.withDO(a.DO.Preload(_f)) + } + return &a +} + +func (a adminMenuDo) FirstOrInit() (*model.AdminMenu, error) { + if result, err := a.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.AdminMenu), nil + } +} + +func (a adminMenuDo) FirstOrCreate() (*model.AdminMenu, error) { + if result, err := a.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.AdminMenu), nil + } +} + +func (a adminMenuDo) FindByPage(offset int, limit int) (result []*model.AdminMenu, count int64, err error) { + result, err = a.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = a.Offset(-1).Limit(-1).Count() + return +} + +func (a adminMenuDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = a.Count() + if err != nil { + return + } + + err = a.Offset(offset).Limit(limit).Scan(result) + return +} + +func (a adminMenuDo) Scan(result interface{}) (err error) { + return a.DO.Scan(result) +} + +func (a adminMenuDo) Delete(models ...*model.AdminMenu) (result gen.ResultInfo, err error) { + return a.DO.Delete(models) +} + +func (a *adminMenuDo) withDO(do gen.Dao) *adminMenuDo { + a.DO = *do.(*gen.DO) + return a +} diff --git a/internal/repository/mysql/query/authorized.gen.go b/internal/repository/mysql/query/authorized.gen.go new file mode 100644 index 0000000..63efc57 --- /dev/null +++ b/internal/repository/mysql/query/authorized.gen.go @@ -0,0 +1,424 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" +) + +func newAuthorized(db *gorm.DB, opts ...gen.DOOption) authorized { + _authorized := authorized{} + + _authorized.authorizedDo.UseDB(db, opts...) + _authorized.authorizedDo.UseModel(&model.Authorized{}) + + tableName := _authorized.authorizedDo.TableName() + _authorized.ALL = field.NewAsterisk(tableName) + _authorized.ID = field.NewInt64(tableName, "id") + _authorized.BusinessKey = field.NewString(tableName, "business_key") + _authorized.BusinessSecret = field.NewString(tableName, "business_secret") + _authorized.BusinessDeveloper = field.NewString(tableName, "business_developer") + _authorized.Remark = field.NewString(tableName, "remark") + _authorized.IsUsed = field.NewInt64(tableName, "is_used") + _authorized.IsDeleted = field.NewInt64(tableName, "is_deleted") + _authorized.CreatedAt = field.NewTime(tableName, "created_at") + _authorized.CreatedUser = field.NewString(tableName, "created_user") + _authorized.UpdatedAt = field.NewTime(tableName, "updated_at") + _authorized.UpdatedUser = field.NewString(tableName, "updated_user") + + _authorized.fillFieldMap() + + return _authorized +} + +type authorized struct { + authorizedDo + + ALL field.Asterisk + ID field.Int64 // 主键 + BusinessKey field.String // 调用方key + BusinessSecret field.String // 调用方secret + BusinessDeveloper field.String // 调用方对接人 + Remark field.String // 备注 + IsUsed field.Int64 // 是否启用 1:是 -1:否 + IsDeleted field.Int64 // 是否删除 1:是 -1:否 + CreatedAt field.Time // 创建时间 + CreatedUser field.String // 创建人 + UpdatedAt field.Time // 更新时间 + UpdatedUser field.String // 更新人 + + fieldMap map[string]field.Expr +} + +func (a authorized) Table(newTableName string) *authorized { + a.authorizedDo.UseTable(newTableName) + return a.updateTableName(newTableName) +} + +func (a authorized) As(alias string) *authorized { + a.authorizedDo.DO = *(a.authorizedDo.As(alias).(*gen.DO)) + return a.updateTableName(alias) +} + +func (a *authorized) updateTableName(table string) *authorized { + a.ALL = field.NewAsterisk(table) + a.ID = field.NewInt64(table, "id") + a.BusinessKey = field.NewString(table, "business_key") + a.BusinessSecret = field.NewString(table, "business_secret") + a.BusinessDeveloper = field.NewString(table, "business_developer") + a.Remark = field.NewString(table, "remark") + a.IsUsed = field.NewInt64(table, "is_used") + a.IsDeleted = field.NewInt64(table, "is_deleted") + a.CreatedAt = field.NewTime(table, "created_at") + a.CreatedUser = field.NewString(table, "created_user") + a.UpdatedAt = field.NewTime(table, "updated_at") + a.UpdatedUser = field.NewString(table, "updated_user") + + a.fillFieldMap() + + return a +} + +func (a *authorized) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := a.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (a *authorized) fillFieldMap() { + a.fieldMap = make(map[string]field.Expr, 11) + a.fieldMap["id"] = a.ID + a.fieldMap["business_key"] = a.BusinessKey + a.fieldMap["business_secret"] = a.BusinessSecret + a.fieldMap["business_developer"] = a.BusinessDeveloper + a.fieldMap["remark"] = a.Remark + a.fieldMap["is_used"] = a.IsUsed + a.fieldMap["is_deleted"] = a.IsDeleted + a.fieldMap["created_at"] = a.CreatedAt + a.fieldMap["created_user"] = a.CreatedUser + a.fieldMap["updated_at"] = a.UpdatedAt + a.fieldMap["updated_user"] = a.UpdatedUser +} + +func (a authorized) clone(db *gorm.DB) authorized { + a.authorizedDo.ReplaceConnPool(db.Statement.ConnPool) + return a +} + +func (a authorized) replaceDB(db *gorm.DB) authorized { + a.authorizedDo.ReplaceDB(db) + return a +} + +type authorizedDo struct{ gen.DO } + +type IAuthorizedDo interface { + gen.SubQuery + Debug() IAuthorizedDo + WithContext(ctx context.Context) IAuthorizedDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() IAuthorizedDo + WriteDB() IAuthorizedDo + As(alias string) gen.Dao + Session(config *gorm.Session) IAuthorizedDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) IAuthorizedDo + Not(conds ...gen.Condition) IAuthorizedDo + Or(conds ...gen.Condition) IAuthorizedDo + Select(conds ...field.Expr) IAuthorizedDo + Where(conds ...gen.Condition) IAuthorizedDo + Order(conds ...field.Expr) IAuthorizedDo + Distinct(cols ...field.Expr) IAuthorizedDo + Omit(cols ...field.Expr) IAuthorizedDo + Join(table schema.Tabler, on ...field.Expr) IAuthorizedDo + LeftJoin(table schema.Tabler, on ...field.Expr) IAuthorizedDo + RightJoin(table schema.Tabler, on ...field.Expr) IAuthorizedDo + Group(cols ...field.Expr) IAuthorizedDo + Having(conds ...gen.Condition) IAuthorizedDo + Limit(limit int) IAuthorizedDo + Offset(offset int) IAuthorizedDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) IAuthorizedDo + Unscoped() IAuthorizedDo + Create(values ...*model.Authorized) error + CreateInBatches(values []*model.Authorized, batchSize int) error + Save(values ...*model.Authorized) error + First() (*model.Authorized, error) + Take() (*model.Authorized, error) + Last() (*model.Authorized, error) + Find() ([]*model.Authorized, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Authorized, err error) + FindInBatches(result *[]*model.Authorized, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*model.Authorized) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) IAuthorizedDo + Assign(attrs ...field.AssignExpr) IAuthorizedDo + Joins(fields ...field.RelationField) IAuthorizedDo + Preload(fields ...field.RelationField) IAuthorizedDo + FirstOrInit() (*model.Authorized, error) + FirstOrCreate() (*model.Authorized, error) + FindByPage(offset int, limit int) (result []*model.Authorized, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) IAuthorizedDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (a authorizedDo) Debug() IAuthorizedDo { + return a.withDO(a.DO.Debug()) +} + +func (a authorizedDo) WithContext(ctx context.Context) IAuthorizedDo { + return a.withDO(a.DO.WithContext(ctx)) +} + +func (a authorizedDo) ReadDB() IAuthorizedDo { + return a.Clauses(dbresolver.Read) +} + +func (a authorizedDo) WriteDB() IAuthorizedDo { + return a.Clauses(dbresolver.Write) +} + +func (a authorizedDo) Session(config *gorm.Session) IAuthorizedDo { + return a.withDO(a.DO.Session(config)) +} + +func (a authorizedDo) Clauses(conds ...clause.Expression) IAuthorizedDo { + return a.withDO(a.DO.Clauses(conds...)) +} + +func (a authorizedDo) Returning(value interface{}, columns ...string) IAuthorizedDo { + return a.withDO(a.DO.Returning(value, columns...)) +} + +func (a authorizedDo) Not(conds ...gen.Condition) IAuthorizedDo { + return a.withDO(a.DO.Not(conds...)) +} + +func (a authorizedDo) Or(conds ...gen.Condition) IAuthorizedDo { + return a.withDO(a.DO.Or(conds...)) +} + +func (a authorizedDo) Select(conds ...field.Expr) IAuthorizedDo { + return a.withDO(a.DO.Select(conds...)) +} + +func (a authorizedDo) Where(conds ...gen.Condition) IAuthorizedDo { + return a.withDO(a.DO.Where(conds...)) +} + +func (a authorizedDo) Exists(subquery interface{ UnderlyingDB() *gorm.DB }) IAuthorizedDo { + return a.Where(field.CompareSubQuery(field.ExistsOp, nil, subquery.UnderlyingDB())) +} + +func (a authorizedDo) Order(conds ...field.Expr) IAuthorizedDo { + return a.withDO(a.DO.Order(conds...)) +} + +func (a authorizedDo) Distinct(cols ...field.Expr) IAuthorizedDo { + return a.withDO(a.DO.Distinct(cols...)) +} + +func (a authorizedDo) Omit(cols ...field.Expr) IAuthorizedDo { + return a.withDO(a.DO.Omit(cols...)) +} + +func (a authorizedDo) Join(table schema.Tabler, on ...field.Expr) IAuthorizedDo { + return a.withDO(a.DO.Join(table, on...)) +} + +func (a authorizedDo) LeftJoin(table schema.Tabler, on ...field.Expr) IAuthorizedDo { + return a.withDO(a.DO.LeftJoin(table, on...)) +} + +func (a authorizedDo) RightJoin(table schema.Tabler, on ...field.Expr) IAuthorizedDo { + return a.withDO(a.DO.RightJoin(table, on...)) +} + +func (a authorizedDo) Group(cols ...field.Expr) IAuthorizedDo { + return a.withDO(a.DO.Group(cols...)) +} + +func (a authorizedDo) Having(conds ...gen.Condition) IAuthorizedDo { + return a.withDO(a.DO.Having(conds...)) +} + +func (a authorizedDo) Limit(limit int) IAuthorizedDo { + return a.withDO(a.DO.Limit(limit)) +} + +func (a authorizedDo) Offset(offset int) IAuthorizedDo { + return a.withDO(a.DO.Offset(offset)) +} + +func (a authorizedDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IAuthorizedDo { + return a.withDO(a.DO.Scopes(funcs...)) +} + +func (a authorizedDo) Unscoped() IAuthorizedDo { + return a.withDO(a.DO.Unscoped()) +} + +func (a authorizedDo) Create(values ...*model.Authorized) error { + if len(values) == 0 { + return nil + } + return a.DO.Create(values) +} + +func (a authorizedDo) CreateInBatches(values []*model.Authorized, batchSize int) error { + return a.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (a authorizedDo) Save(values ...*model.Authorized) error { + if len(values) == 0 { + return nil + } + return a.DO.Save(values) +} + +func (a authorizedDo) First() (*model.Authorized, error) { + if result, err := a.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.Authorized), nil + } +} + +func (a authorizedDo) Take() (*model.Authorized, error) { + if result, err := a.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.Authorized), nil + } +} + +func (a authorizedDo) Last() (*model.Authorized, error) { + if result, err := a.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.Authorized), nil + } +} + +func (a authorizedDo) Find() ([]*model.Authorized, error) { + result, err := a.DO.Find() + return result.([]*model.Authorized), err +} + +func (a authorizedDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Authorized, err error) { + buf := make([]*model.Authorized, 0, batchSize) + err = a.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (a authorizedDo) FindInBatches(result *[]*model.Authorized, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return a.DO.FindInBatches(result, batchSize, fc) +} + +func (a authorizedDo) Attrs(attrs ...field.AssignExpr) IAuthorizedDo { + return a.withDO(a.DO.Attrs(attrs...)) +} + +func (a authorizedDo) Assign(attrs ...field.AssignExpr) IAuthorizedDo { + return a.withDO(a.DO.Assign(attrs...)) +} + +func (a authorizedDo) Joins(fields ...field.RelationField) IAuthorizedDo { + for _, _f := range fields { + a = *a.withDO(a.DO.Joins(_f)) + } + return &a +} + +func (a authorizedDo) Preload(fields ...field.RelationField) IAuthorizedDo { + for _, _f := range fields { + a = *a.withDO(a.DO.Preload(_f)) + } + return &a +} + +func (a authorizedDo) FirstOrInit() (*model.Authorized, error) { + if result, err := a.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.Authorized), nil + } +} + +func (a authorizedDo) FirstOrCreate() (*model.Authorized, error) { + if result, err := a.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.Authorized), nil + } +} + +func (a authorizedDo) FindByPage(offset int, limit int) (result []*model.Authorized, count int64, err error) { + result, err = a.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = a.Offset(-1).Limit(-1).Count() + return +} + +func (a authorizedDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = a.Count() + if err != nil { + return + } + + err = a.Offset(offset).Limit(limit).Scan(result) + return +} + +func (a authorizedDo) Scan(result interface{}) (err error) { + return a.DO.Scan(result) +} + +func (a authorizedDo) Delete(models ...*model.Authorized) (result gen.ResultInfo, err error) { + return a.DO.Delete(models) +} + +func (a *authorizedDo) withDO(do gen.Dao) *authorizedDo { + a.DO = *do.(*gen.DO) + return a +} diff --git a/internal/repository/mysql/query/authorized_api.gen.go b/internal/repository/mysql/query/authorized_api.gen.go new file mode 100644 index 0000000..998cfd1 --- /dev/null +++ b/internal/repository/mysql/query/authorized_api.gen.go @@ -0,0 +1,416 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" +) + +func newAuthorizedAPI(db *gorm.DB, opts ...gen.DOOption) authorizedAPI { + _authorizedAPI := authorizedAPI{} + + _authorizedAPI.authorizedAPIDo.UseDB(db, opts...) + _authorizedAPI.authorizedAPIDo.UseModel(&model.AuthorizedAPI{}) + + tableName := _authorizedAPI.authorizedAPIDo.TableName() + _authorizedAPI.ALL = field.NewAsterisk(tableName) + _authorizedAPI.ID = field.NewInt64(tableName, "id") + _authorizedAPI.BusinessKey = field.NewString(tableName, "business_key") + _authorizedAPI.Method = field.NewString(tableName, "method") + _authorizedAPI.API = field.NewString(tableName, "api") + _authorizedAPI.IsDeleted = field.NewInt64(tableName, "is_deleted") + _authorizedAPI.CreatedAt = field.NewTime(tableName, "created_at") + _authorizedAPI.CreatedUser = field.NewString(tableName, "created_user") + _authorizedAPI.UpdatedAt = field.NewTime(tableName, "updated_at") + _authorizedAPI.UpdatedUser = field.NewString(tableName, "updated_user") + + _authorizedAPI.fillFieldMap() + + return _authorizedAPI +} + +type authorizedAPI struct { + authorizedAPIDo + + ALL field.Asterisk + ID field.Int64 // 主键 + BusinessKey field.String // 调用方key + Method field.String // 请求方式 + API field.String // 请求地址 + IsDeleted field.Int64 // 是否删除 1:是 -1:否 + CreatedAt field.Time // 创建时间 + CreatedUser field.String // 创建人 + UpdatedAt field.Time // 更新时间 + UpdatedUser field.String // 更新人 + + fieldMap map[string]field.Expr +} + +func (a authorizedAPI) Table(newTableName string) *authorizedAPI { + a.authorizedAPIDo.UseTable(newTableName) + return a.updateTableName(newTableName) +} + +func (a authorizedAPI) As(alias string) *authorizedAPI { + a.authorizedAPIDo.DO = *(a.authorizedAPIDo.As(alias).(*gen.DO)) + return a.updateTableName(alias) +} + +func (a *authorizedAPI) updateTableName(table string) *authorizedAPI { + a.ALL = field.NewAsterisk(table) + a.ID = field.NewInt64(table, "id") + a.BusinessKey = field.NewString(table, "business_key") + a.Method = field.NewString(table, "method") + a.API = field.NewString(table, "api") + a.IsDeleted = field.NewInt64(table, "is_deleted") + a.CreatedAt = field.NewTime(table, "created_at") + a.CreatedUser = field.NewString(table, "created_user") + a.UpdatedAt = field.NewTime(table, "updated_at") + a.UpdatedUser = field.NewString(table, "updated_user") + + a.fillFieldMap() + + return a +} + +func (a *authorizedAPI) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := a.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (a *authorizedAPI) fillFieldMap() { + a.fieldMap = make(map[string]field.Expr, 9) + a.fieldMap["id"] = a.ID + a.fieldMap["business_key"] = a.BusinessKey + a.fieldMap["method"] = a.Method + a.fieldMap["api"] = a.API + a.fieldMap["is_deleted"] = a.IsDeleted + a.fieldMap["created_at"] = a.CreatedAt + a.fieldMap["created_user"] = a.CreatedUser + a.fieldMap["updated_at"] = a.UpdatedAt + a.fieldMap["updated_user"] = a.UpdatedUser +} + +func (a authorizedAPI) clone(db *gorm.DB) authorizedAPI { + a.authorizedAPIDo.ReplaceConnPool(db.Statement.ConnPool) + return a +} + +func (a authorizedAPI) replaceDB(db *gorm.DB) authorizedAPI { + a.authorizedAPIDo.ReplaceDB(db) + return a +} + +type authorizedAPIDo struct{ gen.DO } + +type IAuthorizedAPIDo interface { + gen.SubQuery + Debug() IAuthorizedAPIDo + WithContext(ctx context.Context) IAuthorizedAPIDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() IAuthorizedAPIDo + WriteDB() IAuthorizedAPIDo + As(alias string) gen.Dao + Session(config *gorm.Session) IAuthorizedAPIDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) IAuthorizedAPIDo + Not(conds ...gen.Condition) IAuthorizedAPIDo + Or(conds ...gen.Condition) IAuthorizedAPIDo + Select(conds ...field.Expr) IAuthorizedAPIDo + Where(conds ...gen.Condition) IAuthorizedAPIDo + Order(conds ...field.Expr) IAuthorizedAPIDo + Distinct(cols ...field.Expr) IAuthorizedAPIDo + Omit(cols ...field.Expr) IAuthorizedAPIDo + Join(table schema.Tabler, on ...field.Expr) IAuthorizedAPIDo + LeftJoin(table schema.Tabler, on ...field.Expr) IAuthorizedAPIDo + RightJoin(table schema.Tabler, on ...field.Expr) IAuthorizedAPIDo + Group(cols ...field.Expr) IAuthorizedAPIDo + Having(conds ...gen.Condition) IAuthorizedAPIDo + Limit(limit int) IAuthorizedAPIDo + Offset(offset int) IAuthorizedAPIDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) IAuthorizedAPIDo + Unscoped() IAuthorizedAPIDo + Create(values ...*model.AuthorizedAPI) error + CreateInBatches(values []*model.AuthorizedAPI, batchSize int) error + Save(values ...*model.AuthorizedAPI) error + First() (*model.AuthorizedAPI, error) + Take() (*model.AuthorizedAPI, error) + Last() (*model.AuthorizedAPI, error) + Find() ([]*model.AuthorizedAPI, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.AuthorizedAPI, err error) + FindInBatches(result *[]*model.AuthorizedAPI, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*model.AuthorizedAPI) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) IAuthorizedAPIDo + Assign(attrs ...field.AssignExpr) IAuthorizedAPIDo + Joins(fields ...field.RelationField) IAuthorizedAPIDo + Preload(fields ...field.RelationField) IAuthorizedAPIDo + FirstOrInit() (*model.AuthorizedAPI, error) + FirstOrCreate() (*model.AuthorizedAPI, error) + FindByPage(offset int, limit int) (result []*model.AuthorizedAPI, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) IAuthorizedAPIDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (a authorizedAPIDo) Debug() IAuthorizedAPIDo { + return a.withDO(a.DO.Debug()) +} + +func (a authorizedAPIDo) WithContext(ctx context.Context) IAuthorizedAPIDo { + return a.withDO(a.DO.WithContext(ctx)) +} + +func (a authorizedAPIDo) ReadDB() IAuthorizedAPIDo { + return a.Clauses(dbresolver.Read) +} + +func (a authorizedAPIDo) WriteDB() IAuthorizedAPIDo { + return a.Clauses(dbresolver.Write) +} + +func (a authorizedAPIDo) Session(config *gorm.Session) IAuthorizedAPIDo { + return a.withDO(a.DO.Session(config)) +} + +func (a authorizedAPIDo) Clauses(conds ...clause.Expression) IAuthorizedAPIDo { + return a.withDO(a.DO.Clauses(conds...)) +} + +func (a authorizedAPIDo) Returning(value interface{}, columns ...string) IAuthorizedAPIDo { + return a.withDO(a.DO.Returning(value, columns...)) +} + +func (a authorizedAPIDo) Not(conds ...gen.Condition) IAuthorizedAPIDo { + return a.withDO(a.DO.Not(conds...)) +} + +func (a authorizedAPIDo) Or(conds ...gen.Condition) IAuthorizedAPIDo { + return a.withDO(a.DO.Or(conds...)) +} + +func (a authorizedAPIDo) Select(conds ...field.Expr) IAuthorizedAPIDo { + return a.withDO(a.DO.Select(conds...)) +} + +func (a authorizedAPIDo) Where(conds ...gen.Condition) IAuthorizedAPIDo { + return a.withDO(a.DO.Where(conds...)) +} + +func (a authorizedAPIDo) Exists(subquery interface{ UnderlyingDB() *gorm.DB }) IAuthorizedAPIDo { + return a.Where(field.CompareSubQuery(field.ExistsOp, nil, subquery.UnderlyingDB())) +} + +func (a authorizedAPIDo) Order(conds ...field.Expr) IAuthorizedAPIDo { + return a.withDO(a.DO.Order(conds...)) +} + +func (a authorizedAPIDo) Distinct(cols ...field.Expr) IAuthorizedAPIDo { + return a.withDO(a.DO.Distinct(cols...)) +} + +func (a authorizedAPIDo) Omit(cols ...field.Expr) IAuthorizedAPIDo { + return a.withDO(a.DO.Omit(cols...)) +} + +func (a authorizedAPIDo) Join(table schema.Tabler, on ...field.Expr) IAuthorizedAPIDo { + return a.withDO(a.DO.Join(table, on...)) +} + +func (a authorizedAPIDo) LeftJoin(table schema.Tabler, on ...field.Expr) IAuthorizedAPIDo { + return a.withDO(a.DO.LeftJoin(table, on...)) +} + +func (a authorizedAPIDo) RightJoin(table schema.Tabler, on ...field.Expr) IAuthorizedAPIDo { + return a.withDO(a.DO.RightJoin(table, on...)) +} + +func (a authorizedAPIDo) Group(cols ...field.Expr) IAuthorizedAPIDo { + return a.withDO(a.DO.Group(cols...)) +} + +func (a authorizedAPIDo) Having(conds ...gen.Condition) IAuthorizedAPIDo { + return a.withDO(a.DO.Having(conds...)) +} + +func (a authorizedAPIDo) Limit(limit int) IAuthorizedAPIDo { + return a.withDO(a.DO.Limit(limit)) +} + +func (a authorizedAPIDo) Offset(offset int) IAuthorizedAPIDo { + return a.withDO(a.DO.Offset(offset)) +} + +func (a authorizedAPIDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IAuthorizedAPIDo { + return a.withDO(a.DO.Scopes(funcs...)) +} + +func (a authorizedAPIDo) Unscoped() IAuthorizedAPIDo { + return a.withDO(a.DO.Unscoped()) +} + +func (a authorizedAPIDo) Create(values ...*model.AuthorizedAPI) error { + if len(values) == 0 { + return nil + } + return a.DO.Create(values) +} + +func (a authorizedAPIDo) CreateInBatches(values []*model.AuthorizedAPI, batchSize int) error { + return a.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (a authorizedAPIDo) Save(values ...*model.AuthorizedAPI) error { + if len(values) == 0 { + return nil + } + return a.DO.Save(values) +} + +func (a authorizedAPIDo) First() (*model.AuthorizedAPI, error) { + if result, err := a.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.AuthorizedAPI), nil + } +} + +func (a authorizedAPIDo) Take() (*model.AuthorizedAPI, error) { + if result, err := a.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.AuthorizedAPI), nil + } +} + +func (a authorizedAPIDo) Last() (*model.AuthorizedAPI, error) { + if result, err := a.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.AuthorizedAPI), nil + } +} + +func (a authorizedAPIDo) Find() ([]*model.AuthorizedAPI, error) { + result, err := a.DO.Find() + return result.([]*model.AuthorizedAPI), err +} + +func (a authorizedAPIDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.AuthorizedAPI, err error) { + buf := make([]*model.AuthorizedAPI, 0, batchSize) + err = a.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (a authorizedAPIDo) FindInBatches(result *[]*model.AuthorizedAPI, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return a.DO.FindInBatches(result, batchSize, fc) +} + +func (a authorizedAPIDo) Attrs(attrs ...field.AssignExpr) IAuthorizedAPIDo { + return a.withDO(a.DO.Attrs(attrs...)) +} + +func (a authorizedAPIDo) Assign(attrs ...field.AssignExpr) IAuthorizedAPIDo { + return a.withDO(a.DO.Assign(attrs...)) +} + +func (a authorizedAPIDo) Joins(fields ...field.RelationField) IAuthorizedAPIDo { + for _, _f := range fields { + a = *a.withDO(a.DO.Joins(_f)) + } + return &a +} + +func (a authorizedAPIDo) Preload(fields ...field.RelationField) IAuthorizedAPIDo { + for _, _f := range fields { + a = *a.withDO(a.DO.Preload(_f)) + } + return &a +} + +func (a authorizedAPIDo) FirstOrInit() (*model.AuthorizedAPI, error) { + if result, err := a.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.AuthorizedAPI), nil + } +} + +func (a authorizedAPIDo) FirstOrCreate() (*model.AuthorizedAPI, error) { + if result, err := a.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.AuthorizedAPI), nil + } +} + +func (a authorizedAPIDo) FindByPage(offset int, limit int) (result []*model.AuthorizedAPI, count int64, err error) { + result, err = a.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = a.Offset(-1).Limit(-1).Count() + return +} + +func (a authorizedAPIDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = a.Count() + if err != nil { + return + } + + err = a.Offset(offset).Limit(limit).Scan(result) + return +} + +func (a authorizedAPIDo) Scan(result interface{}) (err error) { + return a.DO.Scan(result) +} + +func (a authorizedAPIDo) Delete(models ...*model.AuthorizedAPI) (result gen.ResultInfo, err error) { + return a.DO.Delete(models) +} + +func (a *authorizedAPIDo) withDO(do gen.Dao) *authorizedAPIDo { + a.DO = *do.(*gen.DO) + return a +} diff --git a/internal/repository/mysql/query/category.gen.go b/internal/repository/mysql/query/category.gen.go new file mode 100644 index 0000000..618ad58 --- /dev/null +++ b/internal/repository/mysql/query/category.gen.go @@ -0,0 +1,433 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + "strings" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" +) + +func newCategory(db *gorm.DB, opts ...gen.DOOption) category { + _category := category{} + + _category.categoryDo.UseDB(db, opts...) + _category.categoryDo.UseModel(&model.Category{}) + + tableName := _category.categoryDo.TableName() + _category.ALL = field.NewAsterisk(tableName) + _category.ID = field.NewInt64(tableName, "id") + _category.ParentID = field.NewInt64(tableName, "parent_id") + _category.Sort = field.NewInt64(tableName, "sort") + _category.Title = field.NewString(tableName, "title") + _category.Icon = field.NewString(tableName, "icon") + _category.CreatedAt = field.NewTime(tableName, "created_at") + _category.UpdatedAt = field.NewTime(tableName, "updated_at") + _category.IsUsed = field.NewInt64(tableName, "is_used") + _category.Level = field.NewInt64(tableName, "level") + + _category.fillFieldMap() + + return _category +} + +type category struct { + categoryDo + + ALL field.Asterisk + ID field.Int64 + ParentID field.Int64 + Sort field.Int64 + Title field.String + Icon field.String + CreatedAt field.Time + UpdatedAt field.Time + IsUsed field.Int64 + Level field.Int64 + + fieldMap map[string]field.Expr +} + +func (c category) Table(newTableName string) *category { + c.categoryDo.UseTable(newTableName) + return c.updateTableName(newTableName) +} + +func (c category) As(alias string) *category { + c.categoryDo.DO = *(c.categoryDo.As(alias).(*gen.DO)) + return c.updateTableName(alias) +} + +func (c *category) updateTableName(table string) *category { + c.ALL = field.NewAsterisk(table) + c.ID = field.NewInt64(table, "id") + c.ParentID = field.NewInt64(table, "parent_id") + c.Sort = field.NewInt64(table, "sort") + c.Title = field.NewString(table, "title") + c.Icon = field.NewString(table, "icon") + c.CreatedAt = field.NewTime(table, "created_at") + c.UpdatedAt = field.NewTime(table, "updated_at") + c.IsUsed = field.NewInt64(table, "is_used") + c.Level = field.NewInt64(table, "level") + + c.fillFieldMap() + + return c +} + +func (c *category) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := c.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (c *category) fillFieldMap() { + c.fieldMap = make(map[string]field.Expr, 9) + c.fieldMap["id"] = c.ID + c.fieldMap["parent_id"] = c.ParentID + c.fieldMap["sort"] = c.Sort + c.fieldMap["title"] = c.Title + c.fieldMap["icon"] = c.Icon + c.fieldMap["created_at"] = c.CreatedAt + c.fieldMap["updated_at"] = c.UpdatedAt + c.fieldMap["is_used"] = c.IsUsed + c.fieldMap["level"] = c.Level +} + +func (c category) clone(db *gorm.DB) category { + c.categoryDo.ReplaceConnPool(db.Statement.ConnPool) + return c +} + +func (c category) replaceDB(db *gorm.DB) category { + c.categoryDo.ReplaceDB(db) + return c +} + +type categoryDo struct{ gen.DO } + +type ICategoryDo interface { + gen.SubQuery + Debug() ICategoryDo + WithContext(ctx context.Context) ICategoryDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() ICategoryDo + WriteDB() ICategoryDo + As(alias string) gen.Dao + Session(config *gorm.Session) ICategoryDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) ICategoryDo + Not(conds ...gen.Condition) ICategoryDo + Or(conds ...gen.Condition) ICategoryDo + Select(conds ...field.Expr) ICategoryDo + Where(conds ...gen.Condition) ICategoryDo + Order(conds ...field.Expr) ICategoryDo + Distinct(cols ...field.Expr) ICategoryDo + Omit(cols ...field.Expr) ICategoryDo + Join(table schema.Tabler, on ...field.Expr) ICategoryDo + LeftJoin(table schema.Tabler, on ...field.Expr) ICategoryDo + RightJoin(table schema.Tabler, on ...field.Expr) ICategoryDo + Group(cols ...field.Expr) ICategoryDo + Having(conds ...gen.Condition) ICategoryDo + Limit(limit int) ICategoryDo + Offset(offset int) ICategoryDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) ICategoryDo + Unscoped() ICategoryDo + Create(values ...*model.Category) error + CreateInBatches(values []*model.Category, batchSize int) error + Save(values ...*model.Category) error + First() (*model.Category, error) + Take() (*model.Category, error) + Last() (*model.Category, error) + Find() ([]*model.Category, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Category, err error) + FindInBatches(result *[]*model.Category, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*model.Category) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) ICategoryDo + Assign(attrs ...field.AssignExpr) ICategoryDo + Joins(fields ...field.RelationField) ICategoryDo + Preload(fields ...field.RelationField) ICategoryDo + FirstOrInit() (*model.Category, error) + FirstOrCreate() (*model.Category, error) + FindByPage(offset int, limit int) (result []*model.Category, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) ICategoryDo + UnderlyingDB() *gorm.DB + schema.Tabler + + GetParentIdsByGroupParentId() (result map[string]interface{}, err error) +} + +// GetParentIdsByGroupParentId +// SELECT GROUP_CONCAT(a.parent_id) AS parent_ids from (SELECT parent_id FROM category GROUP BY parent_id) as a +func (c categoryDo) GetParentIdsByGroupParentId() (result map[string]interface{}, err error) { + var generateSQL strings.Builder + generateSQL.WriteString("SELECT GROUP_CONCAT(a.parent_id) AS parent_ids from (SELECT parent_id FROM category GROUP BY parent_id) as a ") + + result = make(map[string]interface{}) + var executeSQL *gorm.DB + executeSQL = c.UnderlyingDB().Raw(generateSQL.String()).Take(result) // ignore_security_alert + err = executeSQL.Error + + return +} + +func (c categoryDo) Debug() ICategoryDo { + return c.withDO(c.DO.Debug()) +} + +func (c categoryDo) WithContext(ctx context.Context) ICategoryDo { + return c.withDO(c.DO.WithContext(ctx)) +} + +func (c categoryDo) ReadDB() ICategoryDo { + return c.Clauses(dbresolver.Read) +} + +func (c categoryDo) WriteDB() ICategoryDo { + return c.Clauses(dbresolver.Write) +} + +func (c categoryDo) Session(config *gorm.Session) ICategoryDo { + return c.withDO(c.DO.Session(config)) +} + +func (c categoryDo) Clauses(conds ...clause.Expression) ICategoryDo { + return c.withDO(c.DO.Clauses(conds...)) +} + +func (c categoryDo) Returning(value interface{}, columns ...string) ICategoryDo { + return c.withDO(c.DO.Returning(value, columns...)) +} + +func (c categoryDo) Not(conds ...gen.Condition) ICategoryDo { + return c.withDO(c.DO.Not(conds...)) +} + +func (c categoryDo) Or(conds ...gen.Condition) ICategoryDo { + return c.withDO(c.DO.Or(conds...)) +} + +func (c categoryDo) Select(conds ...field.Expr) ICategoryDo { + return c.withDO(c.DO.Select(conds...)) +} + +func (c categoryDo) Where(conds ...gen.Condition) ICategoryDo { + return c.withDO(c.DO.Where(conds...)) +} + +func (c categoryDo) Exists(subquery interface{ UnderlyingDB() *gorm.DB }) ICategoryDo { + return c.Where(field.CompareSubQuery(field.ExistsOp, nil, subquery.UnderlyingDB())) +} + +func (c categoryDo) Order(conds ...field.Expr) ICategoryDo { + return c.withDO(c.DO.Order(conds...)) +} + +func (c categoryDo) Distinct(cols ...field.Expr) ICategoryDo { + return c.withDO(c.DO.Distinct(cols...)) +} + +func (c categoryDo) Omit(cols ...field.Expr) ICategoryDo { + return c.withDO(c.DO.Omit(cols...)) +} + +func (c categoryDo) Join(table schema.Tabler, on ...field.Expr) ICategoryDo { + return c.withDO(c.DO.Join(table, on...)) +} + +func (c categoryDo) LeftJoin(table schema.Tabler, on ...field.Expr) ICategoryDo { + return c.withDO(c.DO.LeftJoin(table, on...)) +} + +func (c categoryDo) RightJoin(table schema.Tabler, on ...field.Expr) ICategoryDo { + return c.withDO(c.DO.RightJoin(table, on...)) +} + +func (c categoryDo) Group(cols ...field.Expr) ICategoryDo { + return c.withDO(c.DO.Group(cols...)) +} + +func (c categoryDo) Having(conds ...gen.Condition) ICategoryDo { + return c.withDO(c.DO.Having(conds...)) +} + +func (c categoryDo) Limit(limit int) ICategoryDo { + return c.withDO(c.DO.Limit(limit)) +} + +func (c categoryDo) Offset(offset int) ICategoryDo { + return c.withDO(c.DO.Offset(offset)) +} + +func (c categoryDo) Scopes(funcs ...func(gen.Dao) gen.Dao) ICategoryDo { + return c.withDO(c.DO.Scopes(funcs...)) +} + +func (c categoryDo) Unscoped() ICategoryDo { + return c.withDO(c.DO.Unscoped()) +} + +func (c categoryDo) Create(values ...*model.Category) error { + if len(values) == 0 { + return nil + } + return c.DO.Create(values) +} + +func (c categoryDo) CreateInBatches(values []*model.Category, batchSize int) error { + return c.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (c categoryDo) Save(values ...*model.Category) error { + if len(values) == 0 { + return nil + } + return c.DO.Save(values) +} + +func (c categoryDo) First() (*model.Category, error) { + if result, err := c.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.Category), nil + } +} + +func (c categoryDo) Take() (*model.Category, error) { + if result, err := c.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.Category), nil + } +} + +func (c categoryDo) Last() (*model.Category, error) { + if result, err := c.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.Category), nil + } +} + +func (c categoryDo) Find() ([]*model.Category, error) { + result, err := c.DO.Find() + return result.([]*model.Category), err +} + +func (c categoryDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Category, err error) { + buf := make([]*model.Category, 0, batchSize) + err = c.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (c categoryDo) FindInBatches(result *[]*model.Category, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return c.DO.FindInBatches(result, batchSize, fc) +} + +func (c categoryDo) Attrs(attrs ...field.AssignExpr) ICategoryDo { + return c.withDO(c.DO.Attrs(attrs...)) +} + +func (c categoryDo) Assign(attrs ...field.AssignExpr) ICategoryDo { + return c.withDO(c.DO.Assign(attrs...)) +} + +func (c categoryDo) Joins(fields ...field.RelationField) ICategoryDo { + for _, _f := range fields { + c = *c.withDO(c.DO.Joins(_f)) + } + return &c +} + +func (c categoryDo) Preload(fields ...field.RelationField) ICategoryDo { + for _, _f := range fields { + c = *c.withDO(c.DO.Preload(_f)) + } + return &c +} + +func (c categoryDo) FirstOrInit() (*model.Category, error) { + if result, err := c.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.Category), nil + } +} + +func (c categoryDo) FirstOrCreate() (*model.Category, error) { + if result, err := c.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.Category), nil + } +} + +func (c categoryDo) FindByPage(offset int, limit int) (result []*model.Category, count int64, err error) { + result, err = c.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = c.Offset(-1).Limit(-1).Count() + return +} + +func (c categoryDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = c.Count() + if err != nil { + return + } + + err = c.Offset(offset).Limit(limit).Scan(result) + return +} + +func (c categoryDo) Scan(result interface{}) (err error) { + return c.DO.Scan(result) +} + +func (c categoryDo) Delete(models ...*model.Category) (result gen.ResultInfo, err error) { + return c.DO.Delete(models) +} + +func (c *categoryDo) withDO(do gen.Dao) *categoryDo { + c.DO = *do.(*gen.DO) + return c +} diff --git a/internal/repository/mysql/query/cron_task.gen.go b/internal/repository/mysql/query/cron_task.gen.go new file mode 100644 index 0000000..7bf6993 --- /dev/null +++ b/internal/repository/mysql/query/cron_task.gen.go @@ -0,0 +1,456 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" +) + +func newCronTask(db *gorm.DB, opts ...gen.DOOption) cronTask { + _cronTask := cronTask{} + + _cronTask.cronTaskDo.UseDB(db, opts...) + _cronTask.cronTaskDo.UseModel(&model.CronTask{}) + + tableName := _cronTask.cronTaskDo.TableName() + _cronTask.ALL = field.NewAsterisk(tableName) + _cronTask.ID = field.NewInt64(tableName, "id") + _cronTask.Name = field.NewString(tableName, "name") + _cronTask.Spec = field.NewString(tableName, "spec") + _cronTask.Command = field.NewString(tableName, "command") + _cronTask.Protocol = field.NewInt64(tableName, "protocol") + _cronTask.HTTPMethod = field.NewInt64(tableName, "http_method") + _cronTask.Timeout = field.NewInt64(tableName, "timeout") + _cronTask.RetryTimes = field.NewInt64(tableName, "retry_times") + _cronTask.RetryInterval = field.NewInt64(tableName, "retry_interval") + _cronTask.NotifyStatus = field.NewInt64(tableName, "notify_status") + _cronTask.NotifyType = field.NewInt64(tableName, "notify_type") + _cronTask.NotifyReceiverEmail = field.NewString(tableName, "notify_receiver_email") + _cronTask.NotifyKeyword = field.NewString(tableName, "notify_keyword") + _cronTask.Remark = field.NewString(tableName, "remark") + _cronTask.IsUsed = field.NewInt64(tableName, "is_used") + _cronTask.CreatedAt = field.NewTime(tableName, "created_at") + _cronTask.CreatedUser = field.NewString(tableName, "created_user") + _cronTask.UpdatedAt = field.NewTime(tableName, "updated_at") + _cronTask.UpdatedUser = field.NewString(tableName, "updated_user") + + _cronTask.fillFieldMap() + + return _cronTask +} + +type cronTask struct { + cronTaskDo + + ALL field.Asterisk + ID field.Int64 // 主键 + Name field.String // 任务名称 + Spec field.String // crontab 表达式 + Command field.String // 执行命令 + Protocol field.Int64 // 执行方式 1:shell 2:http + HTTPMethod field.Int64 // http 请求方式 1:get 2:post + Timeout field.Int64 // 超时时间(单位:秒) + RetryTimes field.Int64 // 重试次数 + RetryInterval field.Int64 // 重试间隔(单位:秒) + NotifyStatus field.Int64 // 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 + NotifyType field.Int64 // 通知类型 1:邮件 2:webhook + NotifyReceiverEmail field.String // 通知者邮箱地址(多个用,分割) + NotifyKeyword field.String // 通知匹配关键字(多个用,分割) + Remark field.String // 备注 + IsUsed field.Int64 // 是否启用 1:是 -1:否 + CreatedAt field.Time // 创建时间 + CreatedUser field.String // 创建人 + UpdatedAt field.Time // 更新时间 + UpdatedUser field.String // 更新人 + + fieldMap map[string]field.Expr +} + +func (c cronTask) Table(newTableName string) *cronTask { + c.cronTaskDo.UseTable(newTableName) + return c.updateTableName(newTableName) +} + +func (c cronTask) As(alias string) *cronTask { + c.cronTaskDo.DO = *(c.cronTaskDo.As(alias).(*gen.DO)) + return c.updateTableName(alias) +} + +func (c *cronTask) updateTableName(table string) *cronTask { + c.ALL = field.NewAsterisk(table) + c.ID = field.NewInt64(table, "id") + c.Name = field.NewString(table, "name") + c.Spec = field.NewString(table, "spec") + c.Command = field.NewString(table, "command") + c.Protocol = field.NewInt64(table, "protocol") + c.HTTPMethod = field.NewInt64(table, "http_method") + c.Timeout = field.NewInt64(table, "timeout") + c.RetryTimes = field.NewInt64(table, "retry_times") + c.RetryInterval = field.NewInt64(table, "retry_interval") + c.NotifyStatus = field.NewInt64(table, "notify_status") + c.NotifyType = field.NewInt64(table, "notify_type") + c.NotifyReceiverEmail = field.NewString(table, "notify_receiver_email") + c.NotifyKeyword = field.NewString(table, "notify_keyword") + c.Remark = field.NewString(table, "remark") + c.IsUsed = field.NewInt64(table, "is_used") + c.CreatedAt = field.NewTime(table, "created_at") + c.CreatedUser = field.NewString(table, "created_user") + c.UpdatedAt = field.NewTime(table, "updated_at") + c.UpdatedUser = field.NewString(table, "updated_user") + + c.fillFieldMap() + + return c +} + +func (c *cronTask) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := c.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (c *cronTask) fillFieldMap() { + c.fieldMap = make(map[string]field.Expr, 19) + c.fieldMap["id"] = c.ID + c.fieldMap["name"] = c.Name + c.fieldMap["spec"] = c.Spec + c.fieldMap["command"] = c.Command + c.fieldMap["protocol"] = c.Protocol + c.fieldMap["http_method"] = c.HTTPMethod + c.fieldMap["timeout"] = c.Timeout + c.fieldMap["retry_times"] = c.RetryTimes + c.fieldMap["retry_interval"] = c.RetryInterval + c.fieldMap["notify_status"] = c.NotifyStatus + c.fieldMap["notify_type"] = c.NotifyType + c.fieldMap["notify_receiver_email"] = c.NotifyReceiverEmail + c.fieldMap["notify_keyword"] = c.NotifyKeyword + c.fieldMap["remark"] = c.Remark + c.fieldMap["is_used"] = c.IsUsed + c.fieldMap["created_at"] = c.CreatedAt + c.fieldMap["created_user"] = c.CreatedUser + c.fieldMap["updated_at"] = c.UpdatedAt + c.fieldMap["updated_user"] = c.UpdatedUser +} + +func (c cronTask) clone(db *gorm.DB) cronTask { + c.cronTaskDo.ReplaceConnPool(db.Statement.ConnPool) + return c +} + +func (c cronTask) replaceDB(db *gorm.DB) cronTask { + c.cronTaskDo.ReplaceDB(db) + return c +} + +type cronTaskDo struct{ gen.DO } + +type ICronTaskDo interface { + gen.SubQuery + Debug() ICronTaskDo + WithContext(ctx context.Context) ICronTaskDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() ICronTaskDo + WriteDB() ICronTaskDo + As(alias string) gen.Dao + Session(config *gorm.Session) ICronTaskDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) ICronTaskDo + Not(conds ...gen.Condition) ICronTaskDo + Or(conds ...gen.Condition) ICronTaskDo + Select(conds ...field.Expr) ICronTaskDo + Where(conds ...gen.Condition) ICronTaskDo + Order(conds ...field.Expr) ICronTaskDo + Distinct(cols ...field.Expr) ICronTaskDo + Omit(cols ...field.Expr) ICronTaskDo + Join(table schema.Tabler, on ...field.Expr) ICronTaskDo + LeftJoin(table schema.Tabler, on ...field.Expr) ICronTaskDo + RightJoin(table schema.Tabler, on ...field.Expr) ICronTaskDo + Group(cols ...field.Expr) ICronTaskDo + Having(conds ...gen.Condition) ICronTaskDo + Limit(limit int) ICronTaskDo + Offset(offset int) ICronTaskDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) ICronTaskDo + Unscoped() ICronTaskDo + Create(values ...*model.CronTask) error + CreateInBatches(values []*model.CronTask, batchSize int) error + Save(values ...*model.CronTask) error + First() (*model.CronTask, error) + Take() (*model.CronTask, error) + Last() (*model.CronTask, error) + Find() ([]*model.CronTask, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.CronTask, err error) + FindInBatches(result *[]*model.CronTask, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*model.CronTask) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) ICronTaskDo + Assign(attrs ...field.AssignExpr) ICronTaskDo + Joins(fields ...field.RelationField) ICronTaskDo + Preload(fields ...field.RelationField) ICronTaskDo + FirstOrInit() (*model.CronTask, error) + FirstOrCreate() (*model.CronTask, error) + FindByPage(offset int, limit int) (result []*model.CronTask, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) ICronTaskDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (c cronTaskDo) Debug() ICronTaskDo { + return c.withDO(c.DO.Debug()) +} + +func (c cronTaskDo) WithContext(ctx context.Context) ICronTaskDo { + return c.withDO(c.DO.WithContext(ctx)) +} + +func (c cronTaskDo) ReadDB() ICronTaskDo { + return c.Clauses(dbresolver.Read) +} + +func (c cronTaskDo) WriteDB() ICronTaskDo { + return c.Clauses(dbresolver.Write) +} + +func (c cronTaskDo) Session(config *gorm.Session) ICronTaskDo { + return c.withDO(c.DO.Session(config)) +} + +func (c cronTaskDo) Clauses(conds ...clause.Expression) ICronTaskDo { + return c.withDO(c.DO.Clauses(conds...)) +} + +func (c cronTaskDo) Returning(value interface{}, columns ...string) ICronTaskDo { + return c.withDO(c.DO.Returning(value, columns...)) +} + +func (c cronTaskDo) Not(conds ...gen.Condition) ICronTaskDo { + return c.withDO(c.DO.Not(conds...)) +} + +func (c cronTaskDo) Or(conds ...gen.Condition) ICronTaskDo { + return c.withDO(c.DO.Or(conds...)) +} + +func (c cronTaskDo) Select(conds ...field.Expr) ICronTaskDo { + return c.withDO(c.DO.Select(conds...)) +} + +func (c cronTaskDo) Where(conds ...gen.Condition) ICronTaskDo { + return c.withDO(c.DO.Where(conds...)) +} + +func (c cronTaskDo) Exists(subquery interface{ UnderlyingDB() *gorm.DB }) ICronTaskDo { + return c.Where(field.CompareSubQuery(field.ExistsOp, nil, subquery.UnderlyingDB())) +} + +func (c cronTaskDo) Order(conds ...field.Expr) ICronTaskDo { + return c.withDO(c.DO.Order(conds...)) +} + +func (c cronTaskDo) Distinct(cols ...field.Expr) ICronTaskDo { + return c.withDO(c.DO.Distinct(cols...)) +} + +func (c cronTaskDo) Omit(cols ...field.Expr) ICronTaskDo { + return c.withDO(c.DO.Omit(cols...)) +} + +func (c cronTaskDo) Join(table schema.Tabler, on ...field.Expr) ICronTaskDo { + return c.withDO(c.DO.Join(table, on...)) +} + +func (c cronTaskDo) LeftJoin(table schema.Tabler, on ...field.Expr) ICronTaskDo { + return c.withDO(c.DO.LeftJoin(table, on...)) +} + +func (c cronTaskDo) RightJoin(table schema.Tabler, on ...field.Expr) ICronTaskDo { + return c.withDO(c.DO.RightJoin(table, on...)) +} + +func (c cronTaskDo) Group(cols ...field.Expr) ICronTaskDo { + return c.withDO(c.DO.Group(cols...)) +} + +func (c cronTaskDo) Having(conds ...gen.Condition) ICronTaskDo { + return c.withDO(c.DO.Having(conds...)) +} + +func (c cronTaskDo) Limit(limit int) ICronTaskDo { + return c.withDO(c.DO.Limit(limit)) +} + +func (c cronTaskDo) Offset(offset int) ICronTaskDo { + return c.withDO(c.DO.Offset(offset)) +} + +func (c cronTaskDo) Scopes(funcs ...func(gen.Dao) gen.Dao) ICronTaskDo { + return c.withDO(c.DO.Scopes(funcs...)) +} + +func (c cronTaskDo) Unscoped() ICronTaskDo { + return c.withDO(c.DO.Unscoped()) +} + +func (c cronTaskDo) Create(values ...*model.CronTask) error { + if len(values) == 0 { + return nil + } + return c.DO.Create(values) +} + +func (c cronTaskDo) CreateInBatches(values []*model.CronTask, batchSize int) error { + return c.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (c cronTaskDo) Save(values ...*model.CronTask) error { + if len(values) == 0 { + return nil + } + return c.DO.Save(values) +} + +func (c cronTaskDo) First() (*model.CronTask, error) { + if result, err := c.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.CronTask), nil + } +} + +func (c cronTaskDo) Take() (*model.CronTask, error) { + if result, err := c.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.CronTask), nil + } +} + +func (c cronTaskDo) Last() (*model.CronTask, error) { + if result, err := c.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.CronTask), nil + } +} + +func (c cronTaskDo) Find() ([]*model.CronTask, error) { + result, err := c.DO.Find() + return result.([]*model.CronTask), err +} + +func (c cronTaskDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.CronTask, err error) { + buf := make([]*model.CronTask, 0, batchSize) + err = c.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (c cronTaskDo) FindInBatches(result *[]*model.CronTask, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return c.DO.FindInBatches(result, batchSize, fc) +} + +func (c cronTaskDo) Attrs(attrs ...field.AssignExpr) ICronTaskDo { + return c.withDO(c.DO.Attrs(attrs...)) +} + +func (c cronTaskDo) Assign(attrs ...field.AssignExpr) ICronTaskDo { + return c.withDO(c.DO.Assign(attrs...)) +} + +func (c cronTaskDo) Joins(fields ...field.RelationField) ICronTaskDo { + for _, _f := range fields { + c = *c.withDO(c.DO.Joins(_f)) + } + return &c +} + +func (c cronTaskDo) Preload(fields ...field.RelationField) ICronTaskDo { + for _, _f := range fields { + c = *c.withDO(c.DO.Preload(_f)) + } + return &c +} + +func (c cronTaskDo) FirstOrInit() (*model.CronTask, error) { + if result, err := c.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.CronTask), nil + } +} + +func (c cronTaskDo) FirstOrCreate() (*model.CronTask, error) { + if result, err := c.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.CronTask), nil + } +} + +func (c cronTaskDo) FindByPage(offset int, limit int) (result []*model.CronTask, count int64, err error) { + result, err = c.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = c.Offset(-1).Limit(-1).Count() + return +} + +func (c cronTaskDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = c.Count() + if err != nil { + return + } + + err = c.Offset(offset).Limit(limit).Scan(result) + return +} + +func (c cronTaskDo) Scan(result interface{}) (err error) { + return c.DO.Scan(result) +} + +func (c cronTaskDo) Delete(models ...*model.CronTask) (result gen.ResultInfo, err error) { + return c.DO.Delete(models) +} + +func (c *cronTaskDo) withDO(do gen.Dao) *cronTaskDo { + c.DO = *do.(*gen.DO) + return c +} diff --git a/internal/repository/mysql/query/gen.go b/internal/repository/mysql/query/gen.go new file mode 100644 index 0000000..ed65254 --- /dev/null +++ b/internal/repository/mysql/query/gen.go @@ -0,0 +1,167 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + "database/sql" + + "gorm.io/gorm" + + "gorm.io/gen" + + "gorm.io/plugin/dbresolver" +) + +var ( + Q = new(Query) + Admin *admin + AdminMenu *adminMenu + Authorized *authorized + AuthorizedAPI *authorizedAPI + Category *category + CronTask *cronTask + Menu *menu + MenuAction *menuAction + Site *site +) + +func SetDefault(db *gorm.DB, opts ...gen.DOOption) { + *Q = *Use(db, opts...) + Admin = &Q.Admin + AdminMenu = &Q.AdminMenu + Authorized = &Q.Authorized + AuthorizedAPI = &Q.AuthorizedAPI + Category = &Q.Category + CronTask = &Q.CronTask + Menu = &Q.Menu + MenuAction = &Q.MenuAction + Site = &Q.Site +} + +func Use(db *gorm.DB, opts ...gen.DOOption) *Query { + return &Query{ + db: db, + Admin: newAdmin(db, opts...), + AdminMenu: newAdminMenu(db, opts...), + Authorized: newAuthorized(db, opts...), + AuthorizedAPI: newAuthorizedAPI(db, opts...), + Category: newCategory(db, opts...), + CronTask: newCronTask(db, opts...), + Menu: newMenu(db, opts...), + MenuAction: newMenuAction(db, opts...), + Site: newSite(db, opts...), + } +} + +type Query struct { + db *gorm.DB + + Admin admin + AdminMenu adminMenu + Authorized authorized + AuthorizedAPI authorizedAPI + Category category + CronTask cronTask + Menu menu + MenuAction menuAction + Site site +} + +func (q *Query) Available() bool { return q.db != nil } + +func (q *Query) clone(db *gorm.DB) *Query { + return &Query{ + db: db, + Admin: q.Admin.clone(db), + AdminMenu: q.AdminMenu.clone(db), + Authorized: q.Authorized.clone(db), + AuthorizedAPI: q.AuthorizedAPI.clone(db), + Category: q.Category.clone(db), + CronTask: q.CronTask.clone(db), + Menu: q.Menu.clone(db), + MenuAction: q.MenuAction.clone(db), + Site: q.Site.clone(db), + } +} + +func (q *Query) ReadDB() *Query { + return q.ReplaceDB(q.db.Clauses(dbresolver.Read)) +} + +func (q *Query) WriteDB() *Query { + return q.ReplaceDB(q.db.Clauses(dbresolver.Write)) +} + +func (q *Query) ReplaceDB(db *gorm.DB) *Query { + return &Query{ + db: db, + Admin: q.Admin.replaceDB(db), + AdminMenu: q.AdminMenu.replaceDB(db), + Authorized: q.Authorized.replaceDB(db), + AuthorizedAPI: q.AuthorizedAPI.replaceDB(db), + Category: q.Category.replaceDB(db), + CronTask: q.CronTask.replaceDB(db), + Menu: q.Menu.replaceDB(db), + MenuAction: q.MenuAction.replaceDB(db), + Site: q.Site.replaceDB(db), + } +} + +type queryCtx struct { + Admin IAdminDo + AdminMenu IAdminMenuDo + Authorized IAuthorizedDo + AuthorizedAPI IAuthorizedAPIDo + Category ICategoryDo + CronTask ICronTaskDo + Menu IMenuDo + MenuAction IMenuActionDo + Site ISiteDo +} + +func (q *Query) WithContext(ctx context.Context) *queryCtx { + return &queryCtx{ + Admin: q.Admin.WithContext(ctx), + AdminMenu: q.AdminMenu.WithContext(ctx), + Authorized: q.Authorized.WithContext(ctx), + AuthorizedAPI: q.AuthorizedAPI.WithContext(ctx), + Category: q.Category.WithContext(ctx), + CronTask: q.CronTask.WithContext(ctx), + Menu: q.Menu.WithContext(ctx), + MenuAction: q.MenuAction.WithContext(ctx), + Site: q.Site.WithContext(ctx), + } +} + +func (q *Query) Transaction(fc func(tx *Query) error, opts ...*sql.TxOptions) error { + return q.db.Transaction(func(tx *gorm.DB) error { return fc(q.clone(tx)) }, opts...) +} + +func (q *Query) Begin(opts ...*sql.TxOptions) *QueryTx { + tx := q.db.Begin(opts...) + return &QueryTx{Query: q.clone(tx), Error: tx.Error} +} + +type QueryTx struct { + *Query + Error error +} + +func (q *QueryTx) Commit() error { + return q.db.Commit().Error +} + +func (q *QueryTx) Rollback() error { + return q.db.Rollback().Error +} + +func (q *QueryTx) SavePoint(name string) error { + return q.db.SavePoint(name).Error +} + +func (q *QueryTx) RollbackTo(name string) error { + return q.db.RollbackTo(name).Error +} diff --git a/internal/repository/mysql/query/menu.gen.go b/internal/repository/mysql/query/menu.gen.go new file mode 100644 index 0000000..bc90b31 --- /dev/null +++ b/internal/repository/mysql/query/menu.gen.go @@ -0,0 +1,432 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" +) + +func newMenu(db *gorm.DB, opts ...gen.DOOption) menu { + _menu := menu{} + + _menu.menuDo.UseDB(db, opts...) + _menu.menuDo.UseModel(&model.Menu{}) + + tableName := _menu.menuDo.TableName() + _menu.ALL = field.NewAsterisk(tableName) + _menu.ID = field.NewInt64(tableName, "id") + _menu.Pid = field.NewInt64(tableName, "pid") + _menu.Name = field.NewString(tableName, "name") + _menu.Link = field.NewString(tableName, "link") + _menu.Icon = field.NewString(tableName, "icon") + _menu.Level = field.NewInt64(tableName, "level") + _menu.Sort = field.NewInt64(tableName, "sort") + _menu.IsUsed = field.NewInt64(tableName, "is_used") + _menu.IsDeleted = field.NewInt64(tableName, "is_deleted") + _menu.CreatedAt = field.NewTime(tableName, "created_at") + _menu.CreatedUser = field.NewString(tableName, "created_user") + _menu.UpdatedAt = field.NewTime(tableName, "updated_at") + _menu.UpdatedUser = field.NewString(tableName, "updated_user") + + _menu.fillFieldMap() + + return _menu +} + +type menu struct { + menuDo + + ALL field.Asterisk + ID field.Int64 // 主键 + Pid field.Int64 // 父类ID + Name field.String // 菜单名称 + Link field.String // 链接地址 + Icon field.String // 图标 + Level field.Int64 // 菜单类型 1:一级菜单 2:二级菜单 + Sort field.Int64 // 排序 + IsUsed field.Int64 // 是否启用 1:是 -1:否 + IsDeleted field.Int64 // 是否删除 1:是 -1:否 + CreatedAt field.Time // 创建时间 + CreatedUser field.String // 创建人 + UpdatedAt field.Time // 更新时间 + UpdatedUser field.String // 更新人 + + fieldMap map[string]field.Expr +} + +func (m menu) Table(newTableName string) *menu { + m.menuDo.UseTable(newTableName) + return m.updateTableName(newTableName) +} + +func (m menu) As(alias string) *menu { + m.menuDo.DO = *(m.menuDo.As(alias).(*gen.DO)) + return m.updateTableName(alias) +} + +func (m *menu) updateTableName(table string) *menu { + m.ALL = field.NewAsterisk(table) + m.ID = field.NewInt64(table, "id") + m.Pid = field.NewInt64(table, "pid") + m.Name = field.NewString(table, "name") + m.Link = field.NewString(table, "link") + m.Icon = field.NewString(table, "icon") + m.Level = field.NewInt64(table, "level") + m.Sort = field.NewInt64(table, "sort") + m.IsUsed = field.NewInt64(table, "is_used") + m.IsDeleted = field.NewInt64(table, "is_deleted") + m.CreatedAt = field.NewTime(table, "created_at") + m.CreatedUser = field.NewString(table, "created_user") + m.UpdatedAt = field.NewTime(table, "updated_at") + m.UpdatedUser = field.NewString(table, "updated_user") + + m.fillFieldMap() + + return m +} + +func (m *menu) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := m.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (m *menu) fillFieldMap() { + m.fieldMap = make(map[string]field.Expr, 13) + m.fieldMap["id"] = m.ID + m.fieldMap["pid"] = m.Pid + m.fieldMap["name"] = m.Name + m.fieldMap["link"] = m.Link + m.fieldMap["icon"] = m.Icon + m.fieldMap["level"] = m.Level + m.fieldMap["sort"] = m.Sort + m.fieldMap["is_used"] = m.IsUsed + m.fieldMap["is_deleted"] = m.IsDeleted + m.fieldMap["created_at"] = m.CreatedAt + m.fieldMap["created_user"] = m.CreatedUser + m.fieldMap["updated_at"] = m.UpdatedAt + m.fieldMap["updated_user"] = m.UpdatedUser +} + +func (m menu) clone(db *gorm.DB) menu { + m.menuDo.ReplaceConnPool(db.Statement.ConnPool) + return m +} + +func (m menu) replaceDB(db *gorm.DB) menu { + m.menuDo.ReplaceDB(db) + return m +} + +type menuDo struct{ gen.DO } + +type IMenuDo interface { + gen.SubQuery + Debug() IMenuDo + WithContext(ctx context.Context) IMenuDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() IMenuDo + WriteDB() IMenuDo + As(alias string) gen.Dao + Session(config *gorm.Session) IMenuDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) IMenuDo + Not(conds ...gen.Condition) IMenuDo + Or(conds ...gen.Condition) IMenuDo + Select(conds ...field.Expr) IMenuDo + Where(conds ...gen.Condition) IMenuDo + Order(conds ...field.Expr) IMenuDo + Distinct(cols ...field.Expr) IMenuDo + Omit(cols ...field.Expr) IMenuDo + Join(table schema.Tabler, on ...field.Expr) IMenuDo + LeftJoin(table schema.Tabler, on ...field.Expr) IMenuDo + RightJoin(table schema.Tabler, on ...field.Expr) IMenuDo + Group(cols ...field.Expr) IMenuDo + Having(conds ...gen.Condition) IMenuDo + Limit(limit int) IMenuDo + Offset(offset int) IMenuDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) IMenuDo + Unscoped() IMenuDo + Create(values ...*model.Menu) error + CreateInBatches(values []*model.Menu, batchSize int) error + Save(values ...*model.Menu) error + First() (*model.Menu, error) + Take() (*model.Menu, error) + Last() (*model.Menu, error) + Find() ([]*model.Menu, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Menu, err error) + FindInBatches(result *[]*model.Menu, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*model.Menu) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) IMenuDo + Assign(attrs ...field.AssignExpr) IMenuDo + Joins(fields ...field.RelationField) IMenuDo + Preload(fields ...field.RelationField) IMenuDo + FirstOrInit() (*model.Menu, error) + FirstOrCreate() (*model.Menu, error) + FindByPage(offset int, limit int) (result []*model.Menu, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) IMenuDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (m menuDo) Debug() IMenuDo { + return m.withDO(m.DO.Debug()) +} + +func (m menuDo) WithContext(ctx context.Context) IMenuDo { + return m.withDO(m.DO.WithContext(ctx)) +} + +func (m menuDo) ReadDB() IMenuDo { + return m.Clauses(dbresolver.Read) +} + +func (m menuDo) WriteDB() IMenuDo { + return m.Clauses(dbresolver.Write) +} + +func (m menuDo) Session(config *gorm.Session) IMenuDo { + return m.withDO(m.DO.Session(config)) +} + +func (m menuDo) Clauses(conds ...clause.Expression) IMenuDo { + return m.withDO(m.DO.Clauses(conds...)) +} + +func (m menuDo) Returning(value interface{}, columns ...string) IMenuDo { + return m.withDO(m.DO.Returning(value, columns...)) +} + +func (m menuDo) Not(conds ...gen.Condition) IMenuDo { + return m.withDO(m.DO.Not(conds...)) +} + +func (m menuDo) Or(conds ...gen.Condition) IMenuDo { + return m.withDO(m.DO.Or(conds...)) +} + +func (m menuDo) Select(conds ...field.Expr) IMenuDo { + return m.withDO(m.DO.Select(conds...)) +} + +func (m menuDo) Where(conds ...gen.Condition) IMenuDo { + return m.withDO(m.DO.Where(conds...)) +} + +func (m menuDo) Exists(subquery interface{ UnderlyingDB() *gorm.DB }) IMenuDo { + return m.Where(field.CompareSubQuery(field.ExistsOp, nil, subquery.UnderlyingDB())) +} + +func (m menuDo) Order(conds ...field.Expr) IMenuDo { + return m.withDO(m.DO.Order(conds...)) +} + +func (m menuDo) Distinct(cols ...field.Expr) IMenuDo { + return m.withDO(m.DO.Distinct(cols...)) +} + +func (m menuDo) Omit(cols ...field.Expr) IMenuDo { + return m.withDO(m.DO.Omit(cols...)) +} + +func (m menuDo) Join(table schema.Tabler, on ...field.Expr) IMenuDo { + return m.withDO(m.DO.Join(table, on...)) +} + +func (m menuDo) LeftJoin(table schema.Tabler, on ...field.Expr) IMenuDo { + return m.withDO(m.DO.LeftJoin(table, on...)) +} + +func (m menuDo) RightJoin(table schema.Tabler, on ...field.Expr) IMenuDo { + return m.withDO(m.DO.RightJoin(table, on...)) +} + +func (m menuDo) Group(cols ...field.Expr) IMenuDo { + return m.withDO(m.DO.Group(cols...)) +} + +func (m menuDo) Having(conds ...gen.Condition) IMenuDo { + return m.withDO(m.DO.Having(conds...)) +} + +func (m menuDo) Limit(limit int) IMenuDo { + return m.withDO(m.DO.Limit(limit)) +} + +func (m menuDo) Offset(offset int) IMenuDo { + return m.withDO(m.DO.Offset(offset)) +} + +func (m menuDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IMenuDo { + return m.withDO(m.DO.Scopes(funcs...)) +} + +func (m menuDo) Unscoped() IMenuDo { + return m.withDO(m.DO.Unscoped()) +} + +func (m menuDo) Create(values ...*model.Menu) error { + if len(values) == 0 { + return nil + } + return m.DO.Create(values) +} + +func (m menuDo) CreateInBatches(values []*model.Menu, batchSize int) error { + return m.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (m menuDo) Save(values ...*model.Menu) error { + if len(values) == 0 { + return nil + } + return m.DO.Save(values) +} + +func (m menuDo) First() (*model.Menu, error) { + if result, err := m.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.Menu), nil + } +} + +func (m menuDo) Take() (*model.Menu, error) { + if result, err := m.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.Menu), nil + } +} + +func (m menuDo) Last() (*model.Menu, error) { + if result, err := m.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.Menu), nil + } +} + +func (m menuDo) Find() ([]*model.Menu, error) { + result, err := m.DO.Find() + return result.([]*model.Menu), err +} + +func (m menuDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Menu, err error) { + buf := make([]*model.Menu, 0, batchSize) + err = m.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (m menuDo) FindInBatches(result *[]*model.Menu, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return m.DO.FindInBatches(result, batchSize, fc) +} + +func (m menuDo) Attrs(attrs ...field.AssignExpr) IMenuDo { + return m.withDO(m.DO.Attrs(attrs...)) +} + +func (m menuDo) Assign(attrs ...field.AssignExpr) IMenuDo { + return m.withDO(m.DO.Assign(attrs...)) +} + +func (m menuDo) Joins(fields ...field.RelationField) IMenuDo { + for _, _f := range fields { + m = *m.withDO(m.DO.Joins(_f)) + } + return &m +} + +func (m menuDo) Preload(fields ...field.RelationField) IMenuDo { + for _, _f := range fields { + m = *m.withDO(m.DO.Preload(_f)) + } + return &m +} + +func (m menuDo) FirstOrInit() (*model.Menu, error) { + if result, err := m.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.Menu), nil + } +} + +func (m menuDo) FirstOrCreate() (*model.Menu, error) { + if result, err := m.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.Menu), nil + } +} + +func (m menuDo) FindByPage(offset int, limit int) (result []*model.Menu, count int64, err error) { + result, err = m.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = m.Offset(-1).Limit(-1).Count() + return +} + +func (m menuDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = m.Count() + if err != nil { + return + } + + err = m.Offset(offset).Limit(limit).Scan(result) + return +} + +func (m menuDo) Scan(result interface{}) (err error) { + return m.DO.Scan(result) +} + +func (m menuDo) Delete(models ...*model.Menu) (result gen.ResultInfo, err error) { + return m.DO.Delete(models) +} + +func (m *menuDo) withDO(do gen.Dao) *menuDo { + m.DO = *do.(*gen.DO) + return m +} diff --git a/internal/repository/mysql/query/menu_action.gen.go b/internal/repository/mysql/query/menu_action.gen.go new file mode 100644 index 0000000..78627f4 --- /dev/null +++ b/internal/repository/mysql/query/menu_action.gen.go @@ -0,0 +1,416 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" +) + +func newMenuAction(db *gorm.DB, opts ...gen.DOOption) menuAction { + _menuAction := menuAction{} + + _menuAction.menuActionDo.UseDB(db, opts...) + _menuAction.menuActionDo.UseModel(&model.MenuAction{}) + + tableName := _menuAction.menuActionDo.TableName() + _menuAction.ALL = field.NewAsterisk(tableName) + _menuAction.ID = field.NewInt64(tableName, "id") + _menuAction.MenuID = field.NewInt64(tableName, "menu_id") + _menuAction.Method = field.NewString(tableName, "method") + _menuAction.API = field.NewString(tableName, "api") + _menuAction.IsDeleted = field.NewInt64(tableName, "is_deleted") + _menuAction.CreatedAt = field.NewTime(tableName, "created_at") + _menuAction.CreatedUser = field.NewString(tableName, "created_user") + _menuAction.UpdatedAt = field.NewTime(tableName, "updated_at") + _menuAction.UpdatedUser = field.NewString(tableName, "updated_user") + + _menuAction.fillFieldMap() + + return _menuAction +} + +type menuAction struct { + menuActionDo + + ALL field.Asterisk + ID field.Int64 // 主键 + MenuID field.Int64 // 菜单栏ID + Method field.String // 请求方式 + API field.String // 请求地址 + IsDeleted field.Int64 // 是否删除 1:是 -1:否 + CreatedAt field.Time // 创建时间 + CreatedUser field.String // 创建人 + UpdatedAt field.Time // 更新时间 + UpdatedUser field.String // 更新人 + + fieldMap map[string]field.Expr +} + +func (m menuAction) Table(newTableName string) *menuAction { + m.menuActionDo.UseTable(newTableName) + return m.updateTableName(newTableName) +} + +func (m menuAction) As(alias string) *menuAction { + m.menuActionDo.DO = *(m.menuActionDo.As(alias).(*gen.DO)) + return m.updateTableName(alias) +} + +func (m *menuAction) updateTableName(table string) *menuAction { + m.ALL = field.NewAsterisk(table) + m.ID = field.NewInt64(table, "id") + m.MenuID = field.NewInt64(table, "menu_id") + m.Method = field.NewString(table, "method") + m.API = field.NewString(table, "api") + m.IsDeleted = field.NewInt64(table, "is_deleted") + m.CreatedAt = field.NewTime(table, "created_at") + m.CreatedUser = field.NewString(table, "created_user") + m.UpdatedAt = field.NewTime(table, "updated_at") + m.UpdatedUser = field.NewString(table, "updated_user") + + m.fillFieldMap() + + return m +} + +func (m *menuAction) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := m.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (m *menuAction) fillFieldMap() { + m.fieldMap = make(map[string]field.Expr, 9) + m.fieldMap["id"] = m.ID + m.fieldMap["menu_id"] = m.MenuID + m.fieldMap["method"] = m.Method + m.fieldMap["api"] = m.API + m.fieldMap["is_deleted"] = m.IsDeleted + m.fieldMap["created_at"] = m.CreatedAt + m.fieldMap["created_user"] = m.CreatedUser + m.fieldMap["updated_at"] = m.UpdatedAt + m.fieldMap["updated_user"] = m.UpdatedUser +} + +func (m menuAction) clone(db *gorm.DB) menuAction { + m.menuActionDo.ReplaceConnPool(db.Statement.ConnPool) + return m +} + +func (m menuAction) replaceDB(db *gorm.DB) menuAction { + m.menuActionDo.ReplaceDB(db) + return m +} + +type menuActionDo struct{ gen.DO } + +type IMenuActionDo interface { + gen.SubQuery + Debug() IMenuActionDo + WithContext(ctx context.Context) IMenuActionDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() IMenuActionDo + WriteDB() IMenuActionDo + As(alias string) gen.Dao + Session(config *gorm.Session) IMenuActionDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) IMenuActionDo + Not(conds ...gen.Condition) IMenuActionDo + Or(conds ...gen.Condition) IMenuActionDo + Select(conds ...field.Expr) IMenuActionDo + Where(conds ...gen.Condition) IMenuActionDo + Order(conds ...field.Expr) IMenuActionDo + Distinct(cols ...field.Expr) IMenuActionDo + Omit(cols ...field.Expr) IMenuActionDo + Join(table schema.Tabler, on ...field.Expr) IMenuActionDo + LeftJoin(table schema.Tabler, on ...field.Expr) IMenuActionDo + RightJoin(table schema.Tabler, on ...field.Expr) IMenuActionDo + Group(cols ...field.Expr) IMenuActionDo + Having(conds ...gen.Condition) IMenuActionDo + Limit(limit int) IMenuActionDo + Offset(offset int) IMenuActionDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) IMenuActionDo + Unscoped() IMenuActionDo + Create(values ...*model.MenuAction) error + CreateInBatches(values []*model.MenuAction, batchSize int) error + Save(values ...*model.MenuAction) error + First() (*model.MenuAction, error) + Take() (*model.MenuAction, error) + Last() (*model.MenuAction, error) + Find() ([]*model.MenuAction, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.MenuAction, err error) + FindInBatches(result *[]*model.MenuAction, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*model.MenuAction) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) IMenuActionDo + Assign(attrs ...field.AssignExpr) IMenuActionDo + Joins(fields ...field.RelationField) IMenuActionDo + Preload(fields ...field.RelationField) IMenuActionDo + FirstOrInit() (*model.MenuAction, error) + FirstOrCreate() (*model.MenuAction, error) + FindByPage(offset int, limit int) (result []*model.MenuAction, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) IMenuActionDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (m menuActionDo) Debug() IMenuActionDo { + return m.withDO(m.DO.Debug()) +} + +func (m menuActionDo) WithContext(ctx context.Context) IMenuActionDo { + return m.withDO(m.DO.WithContext(ctx)) +} + +func (m menuActionDo) ReadDB() IMenuActionDo { + return m.Clauses(dbresolver.Read) +} + +func (m menuActionDo) WriteDB() IMenuActionDo { + return m.Clauses(dbresolver.Write) +} + +func (m menuActionDo) Session(config *gorm.Session) IMenuActionDo { + return m.withDO(m.DO.Session(config)) +} + +func (m menuActionDo) Clauses(conds ...clause.Expression) IMenuActionDo { + return m.withDO(m.DO.Clauses(conds...)) +} + +func (m menuActionDo) Returning(value interface{}, columns ...string) IMenuActionDo { + return m.withDO(m.DO.Returning(value, columns...)) +} + +func (m menuActionDo) Not(conds ...gen.Condition) IMenuActionDo { + return m.withDO(m.DO.Not(conds...)) +} + +func (m menuActionDo) Or(conds ...gen.Condition) IMenuActionDo { + return m.withDO(m.DO.Or(conds...)) +} + +func (m menuActionDo) Select(conds ...field.Expr) IMenuActionDo { + return m.withDO(m.DO.Select(conds...)) +} + +func (m menuActionDo) Where(conds ...gen.Condition) IMenuActionDo { + return m.withDO(m.DO.Where(conds...)) +} + +func (m menuActionDo) Exists(subquery interface{ UnderlyingDB() *gorm.DB }) IMenuActionDo { + return m.Where(field.CompareSubQuery(field.ExistsOp, nil, subquery.UnderlyingDB())) +} + +func (m menuActionDo) Order(conds ...field.Expr) IMenuActionDo { + return m.withDO(m.DO.Order(conds...)) +} + +func (m menuActionDo) Distinct(cols ...field.Expr) IMenuActionDo { + return m.withDO(m.DO.Distinct(cols...)) +} + +func (m menuActionDo) Omit(cols ...field.Expr) IMenuActionDo { + return m.withDO(m.DO.Omit(cols...)) +} + +func (m menuActionDo) Join(table schema.Tabler, on ...field.Expr) IMenuActionDo { + return m.withDO(m.DO.Join(table, on...)) +} + +func (m menuActionDo) LeftJoin(table schema.Tabler, on ...field.Expr) IMenuActionDo { + return m.withDO(m.DO.LeftJoin(table, on...)) +} + +func (m menuActionDo) RightJoin(table schema.Tabler, on ...field.Expr) IMenuActionDo { + return m.withDO(m.DO.RightJoin(table, on...)) +} + +func (m menuActionDo) Group(cols ...field.Expr) IMenuActionDo { + return m.withDO(m.DO.Group(cols...)) +} + +func (m menuActionDo) Having(conds ...gen.Condition) IMenuActionDo { + return m.withDO(m.DO.Having(conds...)) +} + +func (m menuActionDo) Limit(limit int) IMenuActionDo { + return m.withDO(m.DO.Limit(limit)) +} + +func (m menuActionDo) Offset(offset int) IMenuActionDo { + return m.withDO(m.DO.Offset(offset)) +} + +func (m menuActionDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IMenuActionDo { + return m.withDO(m.DO.Scopes(funcs...)) +} + +func (m menuActionDo) Unscoped() IMenuActionDo { + return m.withDO(m.DO.Unscoped()) +} + +func (m menuActionDo) Create(values ...*model.MenuAction) error { + if len(values) == 0 { + return nil + } + return m.DO.Create(values) +} + +func (m menuActionDo) CreateInBatches(values []*model.MenuAction, batchSize int) error { + return m.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (m menuActionDo) Save(values ...*model.MenuAction) error { + if len(values) == 0 { + return nil + } + return m.DO.Save(values) +} + +func (m menuActionDo) First() (*model.MenuAction, error) { + if result, err := m.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.MenuAction), nil + } +} + +func (m menuActionDo) Take() (*model.MenuAction, error) { + if result, err := m.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.MenuAction), nil + } +} + +func (m menuActionDo) Last() (*model.MenuAction, error) { + if result, err := m.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.MenuAction), nil + } +} + +func (m menuActionDo) Find() ([]*model.MenuAction, error) { + result, err := m.DO.Find() + return result.([]*model.MenuAction), err +} + +func (m menuActionDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.MenuAction, err error) { + buf := make([]*model.MenuAction, 0, batchSize) + err = m.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (m menuActionDo) FindInBatches(result *[]*model.MenuAction, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return m.DO.FindInBatches(result, batchSize, fc) +} + +func (m menuActionDo) Attrs(attrs ...field.AssignExpr) IMenuActionDo { + return m.withDO(m.DO.Attrs(attrs...)) +} + +func (m menuActionDo) Assign(attrs ...field.AssignExpr) IMenuActionDo { + return m.withDO(m.DO.Assign(attrs...)) +} + +func (m menuActionDo) Joins(fields ...field.RelationField) IMenuActionDo { + for _, _f := range fields { + m = *m.withDO(m.DO.Joins(_f)) + } + return &m +} + +func (m menuActionDo) Preload(fields ...field.RelationField) IMenuActionDo { + for _, _f := range fields { + m = *m.withDO(m.DO.Preload(_f)) + } + return &m +} + +func (m menuActionDo) FirstOrInit() (*model.MenuAction, error) { + if result, err := m.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.MenuAction), nil + } +} + +func (m menuActionDo) FirstOrCreate() (*model.MenuAction, error) { + if result, err := m.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.MenuAction), nil + } +} + +func (m menuActionDo) FindByPage(offset int, limit int) (result []*model.MenuAction, count int64, err error) { + result, err = m.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = m.Offset(-1).Limit(-1).Count() + return +} + +func (m menuActionDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = m.Count() + if err != nil { + return + } + + err = m.Offset(offset).Limit(limit).Scan(result) + return +} + +func (m menuActionDo) Scan(result interface{}) (err error) { + return m.DO.Scan(result) +} + +func (m menuActionDo) Delete(models ...*model.MenuAction) (result gen.ResultInfo, err error) { + return m.DO.Delete(models) +} + +func (m *menuActionDo) withDO(do gen.Dao) *menuActionDo { + m.DO = *do.(*gen.DO) + return m +} diff --git a/internal/repository/mysql/query/site.gen.go b/internal/repository/mysql/query/site.gen.go new file mode 100644 index 0000000..25dc234 --- /dev/null +++ b/internal/repository/mysql/query/site.gen.go @@ -0,0 +1,494 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" +) + +func newSite(db *gorm.DB, opts ...gen.DOOption) site { + _site := site{} + + _site.siteDo.UseDB(db, opts...) + _site.siteDo.UseModel(&model.Site{}) + + tableName := _site.siteDo.TableName() + _site.ALL = field.NewAsterisk(tableName) + _site.ID = field.NewInt64(tableName, "id") + _site.CategoryID = field.NewInt64(tableName, "category_id") + _site.Title = field.NewString(tableName, "title") + _site.Thumb = field.NewString(tableName, "thumb") + _site.Description = field.NewString(tableName, "description") + _site.URL = field.NewString(tableName, "url") + _site.CreatedAt = field.NewTime(tableName, "created_at") + _site.UpdatedAt = field.NewTime(tableName, "updated_at") + _site.IsUsed = field.NewInt64(tableName, "is_used") + _site.Category = siteBelongsToCategory{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("Category", "model.Category"), + } + + _site.fillFieldMap() + + return _site +} + +type site struct { + siteDo + + ALL field.Asterisk + ID field.Int64 + CategoryID field.Int64 // 分类id + Title field.String // 网站标题 + Thumb field.String // 网站logo + Description field.String // 网站描述 + URL field.String // 网站地址 + CreatedAt field.Time // 创建时间 + UpdatedAt field.Time // 更新时间 + IsUsed field.Int64 // 是否使用 + Category siteBelongsToCategory + + fieldMap map[string]field.Expr +} + +func (s site) Table(newTableName string) *site { + s.siteDo.UseTable(newTableName) + return s.updateTableName(newTableName) +} + +func (s site) As(alias string) *site { + s.siteDo.DO = *(s.siteDo.As(alias).(*gen.DO)) + return s.updateTableName(alias) +} + +func (s *site) updateTableName(table string) *site { + s.ALL = field.NewAsterisk(table) + s.ID = field.NewInt64(table, "id") + s.CategoryID = field.NewInt64(table, "category_id") + s.Title = field.NewString(table, "title") + s.Thumb = field.NewString(table, "thumb") + s.Description = field.NewString(table, "description") + s.URL = field.NewString(table, "url") + s.CreatedAt = field.NewTime(table, "created_at") + s.UpdatedAt = field.NewTime(table, "updated_at") + s.IsUsed = field.NewInt64(table, "is_used") + + s.fillFieldMap() + + return s +} + +func (s *site) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := s.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (s *site) fillFieldMap() { + s.fieldMap = make(map[string]field.Expr, 10) + s.fieldMap["id"] = s.ID + s.fieldMap["category_id"] = s.CategoryID + s.fieldMap["title"] = s.Title + s.fieldMap["thumb"] = s.Thumb + s.fieldMap["description"] = s.Description + s.fieldMap["url"] = s.URL + s.fieldMap["created_at"] = s.CreatedAt + s.fieldMap["updated_at"] = s.UpdatedAt + s.fieldMap["is_used"] = s.IsUsed + +} + +func (s site) clone(db *gorm.DB) site { + s.siteDo.ReplaceConnPool(db.Statement.ConnPool) + return s +} + +func (s site) replaceDB(db *gorm.DB) site { + s.siteDo.ReplaceDB(db) + return s +} + +type siteBelongsToCategory struct { + db *gorm.DB + + field.RelationField +} + +func (a siteBelongsToCategory) Where(conds ...field.Expr) *siteBelongsToCategory { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a siteBelongsToCategory) WithContext(ctx context.Context) *siteBelongsToCategory { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a siteBelongsToCategory) Session(session *gorm.Session) *siteBelongsToCategory { + a.db = a.db.Session(session) + return &a +} + +func (a siteBelongsToCategory) Model(m *model.Site) *siteBelongsToCategoryTx { + return &siteBelongsToCategoryTx{a.db.Model(m).Association(a.Name())} +} + +type siteBelongsToCategoryTx struct{ tx *gorm.Association } + +func (a siteBelongsToCategoryTx) Find() (result *model.Category, err error) { + return result, a.tx.Find(&result) +} + +func (a siteBelongsToCategoryTx) Append(values ...*model.Category) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a siteBelongsToCategoryTx) Replace(values ...*model.Category) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a siteBelongsToCategoryTx) Delete(values ...*model.Category) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a siteBelongsToCategoryTx) Clear() error { + return a.tx.Clear() +} + +func (a siteBelongsToCategoryTx) Count() int64 { + return a.tx.Count() +} + +type siteDo struct{ gen.DO } + +type ISiteDo interface { + gen.SubQuery + Debug() ISiteDo + WithContext(ctx context.Context) ISiteDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() ISiteDo + WriteDB() ISiteDo + As(alias string) gen.Dao + Session(config *gorm.Session) ISiteDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) ISiteDo + Not(conds ...gen.Condition) ISiteDo + Or(conds ...gen.Condition) ISiteDo + Select(conds ...field.Expr) ISiteDo + Where(conds ...gen.Condition) ISiteDo + Order(conds ...field.Expr) ISiteDo + Distinct(cols ...field.Expr) ISiteDo + Omit(cols ...field.Expr) ISiteDo + Join(table schema.Tabler, on ...field.Expr) ISiteDo + LeftJoin(table schema.Tabler, on ...field.Expr) ISiteDo + RightJoin(table schema.Tabler, on ...field.Expr) ISiteDo + Group(cols ...field.Expr) ISiteDo + Having(conds ...gen.Condition) ISiteDo + Limit(limit int) ISiteDo + Offset(offset int) ISiteDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) ISiteDo + Unscoped() ISiteDo + Create(values ...*model.Site) error + CreateInBatches(values []*model.Site, batchSize int) error + Save(values ...*model.Site) error + First() (*model.Site, error) + Take() (*model.Site, error) + Last() (*model.Site, error) + Find() ([]*model.Site, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Site, err error) + FindInBatches(result *[]*model.Site, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*model.Site) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) ISiteDo + Assign(attrs ...field.AssignExpr) ISiteDo + Joins(fields ...field.RelationField) ISiteDo + Preload(fields ...field.RelationField) ISiteDo + FirstOrInit() (*model.Site, error) + FirstOrCreate() (*model.Site, error) + FindByPage(offset int, limit int) (result []*model.Site, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) ISiteDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (s siteDo) Debug() ISiteDo { + return s.withDO(s.DO.Debug()) +} + +func (s siteDo) WithContext(ctx context.Context) ISiteDo { + return s.withDO(s.DO.WithContext(ctx)) +} + +func (s siteDo) ReadDB() ISiteDo { + return s.Clauses(dbresolver.Read) +} + +func (s siteDo) WriteDB() ISiteDo { + return s.Clauses(dbresolver.Write) +} + +func (s siteDo) Session(config *gorm.Session) ISiteDo { + return s.withDO(s.DO.Session(config)) +} + +func (s siteDo) Clauses(conds ...clause.Expression) ISiteDo { + return s.withDO(s.DO.Clauses(conds...)) +} + +func (s siteDo) Returning(value interface{}, columns ...string) ISiteDo { + return s.withDO(s.DO.Returning(value, columns...)) +} + +func (s siteDo) Not(conds ...gen.Condition) ISiteDo { + return s.withDO(s.DO.Not(conds...)) +} + +func (s siteDo) Or(conds ...gen.Condition) ISiteDo { + return s.withDO(s.DO.Or(conds...)) +} + +func (s siteDo) Select(conds ...field.Expr) ISiteDo { + return s.withDO(s.DO.Select(conds...)) +} + +func (s siteDo) Where(conds ...gen.Condition) ISiteDo { + return s.withDO(s.DO.Where(conds...)) +} + +func (s siteDo) Exists(subquery interface{ UnderlyingDB() *gorm.DB }) ISiteDo { + return s.Where(field.CompareSubQuery(field.ExistsOp, nil, subquery.UnderlyingDB())) +} + +func (s siteDo) Order(conds ...field.Expr) ISiteDo { + return s.withDO(s.DO.Order(conds...)) +} + +func (s siteDo) Distinct(cols ...field.Expr) ISiteDo { + return s.withDO(s.DO.Distinct(cols...)) +} + +func (s siteDo) Omit(cols ...field.Expr) ISiteDo { + return s.withDO(s.DO.Omit(cols...)) +} + +func (s siteDo) Join(table schema.Tabler, on ...field.Expr) ISiteDo { + return s.withDO(s.DO.Join(table, on...)) +} + +func (s siteDo) LeftJoin(table schema.Tabler, on ...field.Expr) ISiteDo { + return s.withDO(s.DO.LeftJoin(table, on...)) +} + +func (s siteDo) RightJoin(table schema.Tabler, on ...field.Expr) ISiteDo { + return s.withDO(s.DO.RightJoin(table, on...)) +} + +func (s siteDo) Group(cols ...field.Expr) ISiteDo { + return s.withDO(s.DO.Group(cols...)) +} + +func (s siteDo) Having(conds ...gen.Condition) ISiteDo { + return s.withDO(s.DO.Having(conds...)) +} + +func (s siteDo) Limit(limit int) ISiteDo { + return s.withDO(s.DO.Limit(limit)) +} + +func (s siteDo) Offset(offset int) ISiteDo { + return s.withDO(s.DO.Offset(offset)) +} + +func (s siteDo) Scopes(funcs ...func(gen.Dao) gen.Dao) ISiteDo { + return s.withDO(s.DO.Scopes(funcs...)) +} + +func (s siteDo) Unscoped() ISiteDo { + return s.withDO(s.DO.Unscoped()) +} + +func (s siteDo) Create(values ...*model.Site) error { + if len(values) == 0 { + return nil + } + return s.DO.Create(values) +} + +func (s siteDo) CreateInBatches(values []*model.Site, batchSize int) error { + return s.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (s siteDo) Save(values ...*model.Site) error { + if len(values) == 0 { + return nil + } + return s.DO.Save(values) +} + +func (s siteDo) First() (*model.Site, error) { + if result, err := s.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.Site), nil + } +} + +func (s siteDo) Take() (*model.Site, error) { + if result, err := s.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.Site), nil + } +} + +func (s siteDo) Last() (*model.Site, error) { + if result, err := s.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.Site), nil + } +} + +func (s siteDo) Find() ([]*model.Site, error) { + result, err := s.DO.Find() + return result.([]*model.Site), err +} + +func (s siteDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Site, err error) { + buf := make([]*model.Site, 0, batchSize) + err = s.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (s siteDo) FindInBatches(result *[]*model.Site, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return s.DO.FindInBatches(result, batchSize, fc) +} + +func (s siteDo) Attrs(attrs ...field.AssignExpr) ISiteDo { + return s.withDO(s.DO.Attrs(attrs...)) +} + +func (s siteDo) Assign(attrs ...field.AssignExpr) ISiteDo { + return s.withDO(s.DO.Assign(attrs...)) +} + +func (s siteDo) Joins(fields ...field.RelationField) ISiteDo { + for _, _f := range fields { + s = *s.withDO(s.DO.Joins(_f)) + } + return &s +} + +func (s siteDo) Preload(fields ...field.RelationField) ISiteDo { + for _, _f := range fields { + s = *s.withDO(s.DO.Preload(_f)) + } + return &s +} + +func (s siteDo) FirstOrInit() (*model.Site, error) { + if result, err := s.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.Site), nil + } +} + +func (s siteDo) FirstOrCreate() (*model.Site, error) { + if result, err := s.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.Site), nil + } +} + +func (s siteDo) FindByPage(offset int, limit int) (result []*model.Site, count int64, err error) { + result, err = s.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = s.Offset(-1).Limit(-1).Count() + return +} + +func (s siteDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = s.Count() + if err != nil { + return + } + + err = s.Offset(offset).Limit(limit).Scan(result) + return +} + +func (s siteDo) Scan(result interface{}) (err error) { + return s.DO.Scan(result) +} + +func (s siteDo) Delete(models ...*model.Site) (result gen.ResultInfo, err error) { + return s.DO.Delete(models) +} + +func (s *siteDo) withDO(do gen.Dao) *siteDo { + s.DO = *do.(*gen.DO) + return s +} diff --git a/internal/repository/mysql/site/gen_model.go b/internal/repository/mysql/site/gen_model.go deleted file mode 100755 index d97bbd0..0000000 --- a/internal/repository/mysql/site/gen_model.go +++ /dev/null @@ -1,28 +0,0 @@ -package site - -import ( - "github.com/ch3nnn/webstack-go/internal/repository/mysql/category" - "time" -) - -type IsUsedStatus int32 - -// Site 网站信息 -//go:generate gormgen -structs Site -input . -type Site struct { - Id int32 // - CategoryId int32 // 网站分类id - Category category.Category // 网站分类 - IsUsed IsUsedStatus // 是否启用 1:是 -1:否 - Title string // 网站标题 - Thumb string // 网站 logo - Description string // 网站描述 - Url string // 网站地址 - CreatedAt time.Time `gorm:"time"` // 创建时间 - UpdatedAt time.Time `gorm:"time"` // 更新时间 -} - -const ( - Off IsUsedStatus = -1 - Open IsUsedStatus = 1 -) diff --git a/internal/repository/mysql/site/gen_site.go b/internal/repository/mysql/site/gen_site.go deleted file mode 100755 index f381ff6..0000000 --- a/internal/repository/mysql/site/gen_site.go +++ /dev/null @@ -1,487 +0,0 @@ -/////////////////////////////////////////////////////////// -// THIS FILE IS AUTO GENERATED by gormgen, DON'T EDIT IT // -// ANY CHANGES DONE HERE WILL BE LOST // -/////////////////////////////////////////////////////////// - -package site - -import ( - "fmt" - "time" - - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - - "github.com/pkg/errors" - "gorm.io/gorm" -) - -func NewModel() *Site { - return new(Site) -} - -func NewQueryBuilder() *siteQueryBuilder { - return new(siteQueryBuilder) -} - -func (t *Site) Create(db *gorm.DB) (id int32, err error) { - if err = db.Create(t).Error; err != nil { - return 0, errors.Wrap(err, "create err") - } - return t.Id, nil -} - -type siteQueryBuilder struct { - order []string - where []struct { - prefix string - value interface{} - } - limit int - offset int -} - -func (qb *siteQueryBuilder) buildQuery(db *gorm.DB) *gorm.DB { - ret := db - for _, where := range qb.where { - ret = ret.Where(where.prefix, where.value) - } - for _, order := range qb.order { - ret = ret.Order(order) - } - ret = ret.Limit(qb.limit).Offset(qb.offset) - return ret -} - -func (qb *siteQueryBuilder) Updates(db *gorm.DB, m map[string]interface{}) (err error) { - db = db.Model(&Site{}) - - for _, where := range qb.where { - db.Where(where.prefix, where.value) - } - - if err = db.Updates(m).Error; err != nil { - return errors.Wrap(err, "updates err") - } - return nil -} - -func (qb *siteQueryBuilder) Delete(db *gorm.DB) (err error) { - for _, where := range qb.where { - db = db.Where(where.prefix, where.value) - } - - if err = db.Delete(&Site{}).Error; err != nil { - return errors.Wrap(err, "delete err") - } - return nil -} - -func (qb *siteQueryBuilder) Count(db *gorm.DB) (int64, error) { - var c int64 - res := qb.buildQuery(db).Model(&Site{}).Count(&c) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - c = 0 - } - return c, res.Error -} - -func (qb *siteQueryBuilder) First(db *gorm.DB) (*Site, error) { - ret := &Site{} - res := qb.buildQuery(db).First(ret) - if res.Error != nil && res.Error == gorm.ErrRecordNotFound { - ret = nil - } - return ret, res.Error -} - -func (qb *siteQueryBuilder) QueryOne(db *gorm.DB) (*Site, error) { - qb.limit = 1 - ret, err := qb.QueryAll(db) - if len(ret) > 0 { - return ret[0], err - } - return nil, err -} - -func (qb *siteQueryBuilder) QueryAll(db *gorm.DB) ([]*Site, error) { - var ret []*Site - err := qb.buildQuery(db).Preload("Category").Find(&ret).Error - return ret, err -} - -func (qb *siteQueryBuilder) Limit(limit int) *siteQueryBuilder { - qb.limit = limit - return qb -} - -func (qb *siteQueryBuilder) Offset(offset int) *siteQueryBuilder { - qb.offset = offset - return qb -} - -func (qb *siteQueryBuilder) WhereId(p mysql.Predicate, value int32) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", p), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereIdIn(value []int32) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereIdNotIn(value []int32) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "id", "NOT IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) OrderById(asc bool) *siteQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "id "+order) - return qb -} - -func (qb *siteQueryBuilder) WhereCategoryId(p mysql.Predicate, value int32) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "category_id", p), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereCategoryIdIn(value []int32) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "category_id", "IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereCategoryIdNotIn(value []int32) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "category_id", "NOT IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) OrderByCategoryId(asc bool) *siteQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "category_id "+order) - return qb -} - -func (qb *siteQueryBuilder) WhereIsUsed(p mysql.Predicate, value int32) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "is_used", p), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereTitle(p mysql.Predicate, value string) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "title", p), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereTitleLike(value string) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "title ", "LIKE"), - "%" + value + "%", - }) - return qb -} - -func (qb *siteQueryBuilder) WhereTitleIn(value []string) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "title", "IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereTitleNotIn(value []string) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "title", "NOT IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) OrderByTitle(asc bool) *siteQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "title "+order) - return qb -} - -func (qb *siteQueryBuilder) WhereThumb(p mysql.Predicate, value string) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "thumb", p), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereThumbIn(value []string) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "thumb", "IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereThumbNotIn(value []string) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "thumb", "NOT IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) OrderByThumb(asc bool) *siteQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "thumb "+order) - return qb -} - -func (qb *siteQueryBuilder) WhereDescription(p mysql.Predicate, value string) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "description", p), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereDescriptionIn(value []string) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "description", "IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereDescriptionNotIn(value []string) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "description", "NOT IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) OrderByDescription(asc bool) *siteQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "description "+order) - return qb -} - -func (qb *siteQueryBuilder) WhereUrl(p mysql.Predicate, value string) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "url", p), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereUrlIn(value []string) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "url", "IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereUrlNotIn(value []string) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "url", "NOT IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) OrderByUrl(asc bool) *siteQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "url "+order) - return qb -} - -func (qb *siteQueryBuilder) WhereCreateTime(p mysql.Predicate, value time.Time) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", p), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereCreateTimeIn(value []time.Time) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereCreateTimeNotIn(value []time.Time) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "created_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) OrderByCreateTime(asc bool) *siteQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "created"+ - "_at "+order) - return qb -} - -func (qb *siteQueryBuilder) WhereUpdateTime(p mysql.Predicate, value time.Time) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", p), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereUpdateTimeIn(value []time.Time) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) WhereUpdateTimeNotIn(value []time.Time) *siteQueryBuilder { - qb.where = append(qb.where, struct { - prefix string - value interface{} - }{ - fmt.Sprintf("%v %v ?", "updated_at", "NOT IN"), - value, - }) - return qb -} - -func (qb *siteQueryBuilder) OrderByUpdateTime(asc bool) *siteQueryBuilder { - order := "DESC" - if asc { - order = "ASC" - } - - qb.order = append(qb.order, "updated_at "+order) - return qb -} diff --git a/internal/repository/mysql/site/gen_table.md b/internal/repository/mysql/site/gen_table.md deleted file mode 100755 index ef8b37a..0000000 --- a/internal/repository/mysql/site/gen_table.md +++ /dev/null @@ -1,14 +0,0 @@ -#### go_gin_api.site -网站信息 - -| 序号 | 名称 | 描述 | 类型 | 键 | 为空 | 额外 | 默认值 | -| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | -| 1 | id | | int(10) unsigned | PRI | NO | auto_increment | | -| 2 | category_id | | int(11) | | YES | | | -| 3 | title | | varchar(50) | | YES | | | -| 4 | thumb | | varchar(100) | | YES | | | -| 5 | description | | varchar(300) | | YES | | | -| 6 | url | | varchar(100) | | YES | | | -| 7 | created_at | | timestamp | | NO | | CURRENT_TIMESTAMP | -| 8 | updated_at | | timestamp | | NO | | | -| 9 | is_used | 是否启用 1:是 -1:否 | tinyint(1) | | NO | | 1 | diff --git a/internal/router/interceptor/check_signature.go b/internal/router/interceptor/check_signature.go index 5e12097..1f06b76 100755 --- a/internal/router/interceptor/check_signature.go +++ b/internal/router/interceptor/check_signature.go @@ -1,6 +1,7 @@ package interceptor import ( + "github.com/ch3nnn/webstack-go/internal/repository/mysql/constant" "net/http" "strings" @@ -8,7 +9,6 @@ import ( "github.com/ch3nnn/webstack-go/internal/code" "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/pkg/env" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized" "github.com/xinliangnote/go-gin-api/pkg/errors" "github.com/xinliangnote/go-gin-api/pkg/signature" "github.com/xinliangnote/go-gin-api/pkg/urltable" @@ -69,7 +69,7 @@ func (i *interceptor) CheckSignature() core.HandlerFunc { return } - if data.IsUsed == authorized.IsUsedNo { + if data.IsUsed == constant.IsUsedNo { c.AbortWithError(core.Error( http.StatusBadRequest, code.AuthorizationError, diff --git a/internal/router/router_api.go b/internal/router/router_api.go index 4ae3f55..8b94f01 100755 --- a/internal/router/router_api.go +++ b/internal/router/router_api.go @@ -42,8 +42,8 @@ func setApiRouter(r *resource) { } // 需要签名验证、登录验证、RBAC 权限验证 TODO - api := r.mux.Group("/api", core.WrapAuthHandler(r.interceptors.CheckLogin), r.interceptors.CheckSignature(), r.interceptors.CheckRBAC()) - //api := r.mux.Group("/api") + //api := r.mux.Group("/api", core.WrapAuthHandler(r.interceptors.CheckLogin), r.interceptors.CheckSignature(), r.interceptors.CheckRBAC()) + api := r.mux.Group("/api") { // authorized authorizedHandler := authorized.New(r.logger, r.db, r.cache) diff --git a/internal/services/admin/service.go b/internal/services/admin/service.go index ec2a9d2..15bb485 100755 --- a/internal/services/admin/service.go +++ b/internal/services/admin/service.go @@ -3,7 +3,7 @@ package admin import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/admin" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" "github.com/ch3nnn/webstack-go/internal/repository/redis" ) @@ -12,15 +12,15 @@ var _ Service = (*service)(nil) type Service interface { i() - Create(ctx core.Context, adminData *CreateAdminData) (id int32, err error) - PageList(ctx core.Context, searchData *SearchData) (listData []*admin.Admin, err error) + Create(ctx core.Context, adminData *CreateAdminData) (id int64, err error) + PageList(ctx core.Context, searchData *SearchData) (admins []*model.Admin, err error) PageListCount(ctx core.Context, searchData *SearchData) (total int64, err error) - UpdateUsed(ctx core.Context, id int32, used int32) (err error) - Delete(ctx core.Context, id int32) (err error) - Detail(ctx core.Context, searchOneData *SearchOneData) (info *admin.Admin, err error) - ResetPassword(ctx core.Context, id int32) (err error) - ModifyPassword(ctx core.Context, id int32, newPassword string) (err error) - ModifyPersonalInfo(ctx core.Context, id int32, modifyData *ModifyData) (err error) + UpdateUsed(ctx core.Context, id, used int64) (err error) + Delete(ctx core.Context, id int64) (err error) + Detail(ctx core.Context, searchOneData *SearchOneData) (info *model.Admin, err error) + ResetPassword(ctx core.Context, id int64) (err error) + ModifyPassword(ctx core.Context, id int64, newPassword string) (err error) + ModifyPersonalInfo(ctx core.Context, id int64, modifyData *ModifyData) (err error) CreateMenu(ctx core.Context, menuData *CreateMenuData) (err error) ListMenu(ctx core.Context, searchData *SearchListMenuData) (menuData []ListMenuData, err error) diff --git a/internal/services/admin/service_create.go b/internal/services/admin/service_create.go index cb68125..9eee34a 100755 --- a/internal/services/admin/service_create.go +++ b/internal/services/admin/service_create.go @@ -3,7 +3,8 @@ package admin import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/pkg/password" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/admin" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type CreateAdminData struct { @@ -13,19 +14,18 @@ type CreateAdminData struct { Password string // 密码 } -func (s *service) Create(ctx core.Context, adminData *CreateAdminData) (id int32, err error) { - model := admin.NewModel() - model.Username = adminData.Username - model.Password = password.GeneratePassword(adminData.Password) - model.Nickname = adminData.Nickname - model.Mobile = adminData.Mobile - model.CreatedUser = ctx.SessionUserInfo().UserName - model.IsUsed = 1 - model.IsDeleted = -1 - - id, err = model.Create(s.db.GetDbW().WithContext(ctx.RequestContext())) +func (s *service) Create(ctx core.Context, adminData *CreateAdminData) (id int64, err error) { + err = query.Admin.WithContext(ctx.RequestContext()).Create(&model.Admin{ + Username: adminData.Username, + Password: password.GeneratePassword(adminData.Password), + Nickname: adminData.Nickname, + Mobile: adminData.Mobile, + IsUsed: 1, + IsDeleted: -1, + }) if err != nil { return 0, err } + return } diff --git a/internal/services/admin/service_createmenu.go b/internal/services/admin/service_createmenu.go index 6249ab1..047f874 100755 --- a/internal/services/admin/service_createmenu.go +++ b/internal/services/admin/service_createmenu.go @@ -1,38 +1,35 @@ package admin import ( - "strings" - "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/admin_menu" - + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "github.com/spf13/cast" + "strings" ) type CreateMenuData struct { - AdminId int32 `form:"admin_id"` // AdminID + AdminId int64 `form:"admin_id"` // AdminID Actions string `form:"actions"` // 功能权限ID,多个用,分割 } func (s *service) CreateMenu(ctx core.Context, menuData *CreateMenuData) (err error) { - qb := admin_menu.NewQueryBuilder() - qb.WhereAdminId(mysql.EqualPredicate, menuData.AdminId) - if err = qb.Delete(s.db.GetDbW().WithContext(ctx.RequestContext())); err != nil { - return + if _, err = query.AdminMenu.WithContext(ctx.RequestContext()). + Where(query.AdminMenu.AdminID.Eq(menuData.AdminId)). + Delete(); err != nil { + return err } - ActionArr := strings.Split(menuData.Actions, ",") - for _, v := range ActionArr { - createModel := admin_menu.NewModel() - createModel.AdminId = menuData.AdminId - createModel.MenuId = cast.ToInt32(v) - createModel.CreatedUser = ctx.SessionUserInfo().UserName - - _, err = createModel.Create(s.db.GetDbW().WithContext(ctx.RequestContext())) - if err != nil { - return - } + menus := make([]*model.AdminMenu, 0, 10) + for _, v := range strings.Split(menuData.Actions, ",") { + menus = append(menus, &model.AdminMenu{ + AdminID: menuData.AdminId, + MenuID: cast.ToInt64(v), + CreatedUser: ctx.SessionUserInfo().UserName, + }) + } + if err = query.AdminMenu.CreateInBatches(menus, len(menus)); err != nil { + return err } return diff --git a/internal/services/admin/service_delete.go b/internal/services/admin/service_delete.go index 7b50d10..1d91904 100755 --- a/internal/services/admin/service_delete.go +++ b/internal/services/admin/service_delete.go @@ -4,21 +4,16 @@ import ( "github.com/ch3nnn/webstack-go/configs" "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/pkg/password" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/admin" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "github.com/ch3nnn/webstack-go/internal/repository/redis" ) -func (s *service) Delete(ctx core.Context, id int32) (err error) { - data := map[string]interface{}{ - "is_deleted": 1, - "updated_user": ctx.SessionUserInfo().UserName, - } - - qb := admin.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) - if err != nil { +func (s *service) Delete(ctx core.Context, id int64) (err error) { + if _, err = query.Admin.WithContext(ctx.RequestContext()). + Where(query.Admin.ID.Eq(id)). + UpdateColumnSimple(query.Admin.IsDeleted.Value(1), + query.Admin.UpdatedUser.Value(ctx.SessionUserInfo().UserName), + ); err != nil { return err } diff --git a/internal/services/admin/service_detail.go b/internal/services/admin/service_detail.go index 2851631..f2574da 100755 --- a/internal/services/admin/service_detail.go +++ b/internal/services/admin/service_detail.go @@ -2,49 +2,48 @@ package admin import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/admin" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type SearchOneData struct { - Id int32 // 用户ID + Id int64 // 用户ID Username string // 用户名 Nickname string // 昵称 Mobile string // 手机号 Password string // 密码 - IsUsed int32 // 是否启用 1:是 -1:否 + IsUsed int64 // 是否启用 1:是 -1:否 } -func (s *service) Detail(ctx core.Context, searchOneData *SearchOneData) (info *admin.Admin, err error) { - - qb := admin.NewQueryBuilder() - qb.WhereIsDeleted(mysql.EqualPredicate, -1) +func (s *service) Detail(ctx core.Context, searchOneData *SearchOneData) (info *model.Admin, err error) { + iAdminDo := query.Admin.WithContext(ctx.RequestContext()) + iAdminDo = iAdminDo.Where(query.Admin.IsDeleted.Eq(-1)) if searchOneData.Id != 0 { - qb.WhereId(mysql.EqualPredicate, searchOneData.Id) + iAdminDo = iAdminDo.Where(query.Admin.ID.Eq(searchOneData.Id)) } if searchOneData.Username != "" { - qb.WhereUsername(mysql.EqualPredicate, searchOneData.Username) + iAdminDo = iAdminDo.Where(query.Admin.Username.Eq(searchOneData.Username)) } if searchOneData.Nickname != "" { - qb.WhereNickname(mysql.EqualPredicate, searchOneData.Nickname) + iAdminDo = iAdminDo.Where(query.Admin.Nickname.Eq(searchOneData.Nickname)) } if searchOneData.Mobile != "" { - qb.WhereMobile(mysql.EqualPredicate, searchOneData.Mobile) + iAdminDo = iAdminDo.Where(query.Admin.Mobile.Eq(searchOneData.Mobile)) } if searchOneData.Password != "" { - qb.WherePassword(mysql.EqualPredicate, searchOneData.Password) + iAdminDo = iAdminDo.Where(query.Admin.Password.Eq(searchOneData.Password)) } if searchOneData.IsUsed != 0 { - qb.WhereIsUsed(mysql.EqualPredicate, searchOneData.IsUsed) + iAdminDo = iAdminDo.Where(query.Admin.IsUsed.Eq(searchOneData.IsUsed)) } - info, err = qb.QueryOne(s.db.GetDbR().WithContext(ctx.RequestContext())) + info, err = iAdminDo.First() if err != nil { return nil, err } diff --git a/internal/services/admin/service_listmenu.go b/internal/services/admin/service_listmenu.go index b55295d..3ce73e0 100755 --- a/internal/services/admin/service_listmenu.go +++ b/internal/services/admin/service_listmenu.go @@ -2,67 +2,59 @@ package admin import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/admin_menu" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type SearchListMenuData struct { - AdminId int32 `json:"admin_id"` // 管理员ID + AdminId int64 `json:"admin_id"` // 管理员ID } type ListMenuData struct { - Id int32 `json:"id"` // ID - Pid int32 `json:"pid"` // 父类ID + Id int64 `json:"id"` // ID + Pid int64 `json:"pid"` // 父类ID Name string `json:"name"` // 菜单名称 - IsHave int32 `json:"is_have"` // 是否已拥有权限 + IsHave int64 `json:"is_have"` // 是否已拥有权限 } func (s *service) ListMenu(ctx core.Context, searchData *SearchListMenuData) (menuData []ListMenuData, err error) { - menuQb := menu.NewQueryBuilder() - menuQb.WhereIsDeleted(mysql.EqualPredicate, -1) - menuListData, err := menuQb. - OrderBySort(true). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + menus, err := query.Menu.WithContext(ctx.RequestContext()). + Where(query.Menu.IsDeleted.Eq(-1)). + Order(query.Menu.Sort). + Find() if err != nil { return nil, err } - if len(menuListData) <= 0 { + if len(menus) <= 0 { return } - menuData = make([]ListMenuData, len(menuListData)) - for k, v := range menuListData { - data := ListMenuData{ - Id: v.Id, + menuData = make([]ListMenuData, len(menus)) + for k, v := range menus { + menuData[k] = ListMenuData{ + Id: v.ID, Pid: v.Pid, Name: v.Name, IsHave: 0, } - - menuData[k] = data } - adminMenuQb := admin_menu.NewQueryBuilder() + iAdminMenuDo := query.AdminMenu.WithContext(ctx.RequestContext()) if searchData.AdminId != 0 { - adminMenuQb.WhereAdminId(mysql.EqualPredicate, searchData.AdminId) + iAdminMenuDo = iAdminMenuDo.Where(query.AdminMenu.AdminID.Eq(searchData.AdminId)) } - - adminMenuListData, err := adminMenuQb. - OrderById(false). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + adminMenus, err := iAdminMenuDo.Order(query.AdminMenu.ID.Desc()).Find() if err != nil { return nil, err } - if len(adminMenuListData) <= 0 { + if len(adminMenus) <= 0 { return } for k, v := range menuData { - for _, haveV := range adminMenuListData { - if haveV.MenuId == v.Id { + for _, haveV := range adminMenus { + if haveV.MenuID == v.Id { menuData[k].IsHave = 1 } } diff --git a/internal/services/admin/service_modifypassword.go b/internal/services/admin/service_modifypassword.go index bb30e9a..a44847b 100755 --- a/internal/services/admin/service_modifypassword.go +++ b/internal/services/admin/service_modifypassword.go @@ -4,21 +4,18 @@ import ( "github.com/ch3nnn/webstack-go/configs" "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/pkg/password" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/admin" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "github.com/ch3nnn/webstack-go/internal/repository/redis" ) -func (s *service) ModifyPassword(ctx core.Context, id int32, newPassword string) (err error) { - data := map[string]interface{}{ - "password": password.GeneratePassword(newPassword), - "updated_user": ctx.SessionUserInfo().UserName, - } +func (s *service) ModifyPassword(ctx core.Context, id int64, newPassword string) (err error) { - qb := admin.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) - if err != nil { + if _, err = query.Admin.WithContext(ctx.RequestContext()). + Where(query.Admin.ID.Eq(id)). + UpdateColumnSimple( + query.Admin.Password.Value(password.GeneratePassword(newPassword)), + query.Admin.UpdatedUser.Value(ctx.SessionUserInfo().UserName), + ); err != nil { return err } diff --git a/internal/services/admin/service_modifypersonalinfo.go b/internal/services/admin/service_modifypersonalinfo.go index 41121fa..17b5537 100755 --- a/internal/services/admin/service_modifypersonalinfo.go +++ b/internal/services/admin/service_modifypersonalinfo.go @@ -2,8 +2,7 @@ package admin import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/admin" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type ModifyData struct { @@ -11,17 +10,15 @@ type ModifyData struct { Mobile string // 手机号 } -func (s *service) ModifyPersonalInfo(ctx core.Context, id int32, modifyData *ModifyData) (err error) { - data := map[string]interface{}{ - "nickname": modifyData.Nickname, - "mobile": modifyData.Mobile, - "updated_user": ctx.SessionUserInfo().UserName, - } +func (s *service) ModifyPersonalInfo(ctx core.Context, id int64, modifyData *ModifyData) (err error) { - qb := admin.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) - if err != nil { + if _, err = query.Admin.WithContext(ctx.RequestContext()). + Where(query.Admin.ID.Eq(id)). + UpdateColumnSimple( + query.Admin.Nickname.Value(modifyData.Nickname), + query.Admin.Mobile.Value(modifyData.Mobile), + query.Admin.UpdatedUser.Value(ctx.SessionUserInfo().UserName), + ); err != nil { return err } diff --git a/internal/services/admin/service_myaction.go b/internal/services/admin/service_myaction.go index 5d3946f..e54ca9e 100755 --- a/internal/services/admin/service_myaction.go +++ b/internal/services/admin/service_myaction.go @@ -2,67 +2,58 @@ package admin import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/admin_menu" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu_action" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type SearchMyActionData struct { - AdminId int32 `json:"admin_id"` // 管理员ID + AdminId int64 `json:"admin_id"` // 管理员ID } type MyActionData struct { - Id int32 // 主键 - MenuId int32 // 菜单栏ID + Id int64 // 主键 + MenuId int64 // 菜单栏ID Method string // 请求方式 Api string // 请求地址 } func (s *service) MyAction(ctx core.Context, searchData *SearchMyActionData) (actionData []MyActionData, err error) { - adminMenuQb := admin_menu.NewQueryBuilder() + iAdminMenuDo := query.AdminMenu.WithContext(ctx.RequestContext()) if searchData.AdminId != 0 { - adminMenuQb.WhereAdminId(mysql.EqualPredicate, searchData.AdminId) + iAdminMenuDo = iAdminMenuDo.Where(query.AdminMenu.AdminID.Eq(searchData.AdminId)) } - - adminMenuListData, err := adminMenuQb. - OrderById(false). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + adminMenus, err := iAdminMenuDo.Order(query.AdminMenu.ID.Desc()).Find() if err != nil { return nil, err } - - if len(adminMenuListData) <= 0 { + if len(adminMenus) <= 0 { return } - var menuIds []int32 - for _, v := range adminMenuListData { - menuIds = append(menuIds, v.MenuId) + var menuIds []int64 + for _, v := range adminMenus { + menuIds = append(menuIds, v.MenuID) } - actionQb := menu_action.NewQueryBuilder() - actionQb.WhereIsDeleted(mysql.EqualPredicate, -1) - actionQb.WhereMenuIdIn(menuIds) - actionListData, err := actionQb.QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + menuActions, err := query.MenuAction.WithContext(ctx.RequestContext()). + Where(query.MenuAction.IsDeleted.Eq(-1)). + Where(query.MenuAction.ID.In(menuIds...)). + Find() if err != nil { return nil, err } - if len(actionListData) <= 0 { + if len(menuActions) <= 0 { return } - actionData = make([]MyActionData, len(actionListData)) - - for k, v := range actionListData { - data := MyActionData{ - Id: v.Id, - MenuId: v.MenuId, + actionData = make([]MyActionData, len(menuActions)) + for k, v := range menuActions { + actionData[k] = MyActionData{ + Id: v.ID, + MenuId: v.MenuID, Method: v.Method, - Api: v.Api, + Api: v.API, } - - actionData[k] = data } return diff --git a/internal/services/admin/service_mymenu.go b/internal/services/admin/service_mymenu.go index 31b1acd..a14ab14 100755 --- a/internal/services/admin/service_mymenu.go +++ b/internal/services/admin/service_mymenu.go @@ -2,65 +2,57 @@ package admin import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/admin_menu" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type SearchMyMenuData struct { - AdminId int32 `json:"admin_id"` // 管理员ID + AdminId int64 `json:"admin_id"` // 管理员ID } type ListMyMenuData struct { - Id int32 `json:"id"` // ID - Pid int32 `json:"pid"` // 父类ID + Id int64 `json:"id"` // ID + Pid int64 `json:"pid"` // 父类ID Name string `json:"name"` // 菜单名称 Link string `json:"link"` // 链接地址 Icon string `json:"icon"` // 图标 } func (s *service) MyMenu(ctx core.Context, searchData *SearchMyMenuData) (menuData []ListMyMenuData, err error) { - adminMenuQb := admin_menu.NewQueryBuilder() + iAdminMenuDo := query.AdminMenu.WithContext(ctx.RequestContext()) if searchData.AdminId != 0 { - adminMenuQb.WhereAdminId(mysql.EqualPredicate, searchData.AdminId) + iAdminMenuDo = iAdminMenuDo.Where(query.AdminMenu.AdminID.Eq(searchData.AdminId)) } - - adminMenuListData, err := adminMenuQb. - OrderById(false). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + adminMenus, err := iAdminMenuDo.Order(query.AdminMenu.ID.Desc()).Find() if err != nil { return nil, err } - if len(adminMenuListData) <= 0 { + if len(adminMenus) <= 0 { return } - menuQb := menu.NewQueryBuilder() - menuQb.WhereIsDeleted(mysql.EqualPredicate, -1) - menuListData, err := menuQb. - OrderBySort(true). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + menus, err := query.Menu.WithContext(ctx.RequestContext()). + Where(query.Menu.IsDeleted.Eq(-1)). + Order(query.Menu.Sort). + Find() if err != nil { return nil, err } - if len(menuListData) <= 0 { + if len(menus) <= 0 { return } - for _, menuAllV := range menuListData { - for _, v := range adminMenuListData { - if menuAllV.Id == v.MenuId { - data := ListMyMenuData{ - Id: menuAllV.Id, - Pid: menuAllV.Pid, - Name: menuAllV.Name, - Link: menuAllV.Link, - Icon: menuAllV.Icon, - } - - menuData = append(menuData, data) + for _, menu := range menus { + for _, adminMenu := range adminMenus { + if menu.ID == adminMenu.MenuID { + menuData = append(menuData, ListMyMenuData{ + Id: menu.ID, + Pid: menu.Pid, + Name: menu.Name, + Link: menu.Link, + Icon: menu.Icon, + }) } } } diff --git a/internal/services/admin/service_pagelist.go b/internal/services/admin/service_pagelist.go index bfbcb86..550a104 100755 --- a/internal/services/admin/service_pagelist.go +++ b/internal/services/admin/service_pagelist.go @@ -2,52 +2,34 @@ package admin import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/admin" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type SearchData struct { - Page int // 第几页 - PageSize int // 每页显示条数 + Page int64 // 第几页 + PageSize int64 // 每页显示条数 Username string // 用户名 Nickname string // 昵称 Mobile string // 手机号 } -func (s *service) PageList(ctx core.Context, searchData *SearchData) (listData []*admin.Admin, err error) { - - page := searchData.Page - if page == 0 { - page = 1 - } - - pageSize := searchData.PageSize - if pageSize == 0 { - pageSize = 10 - } - - offset := (page - 1) * pageSize - - qb := admin.NewQueryBuilder() - qb.WhereIsDeleted(mysql.EqualPredicate, -1) +func (s *service) PageList(ctx core.Context, searchData *SearchData) (admins []*model.Admin, err error) { + iAdminDo := query.Admin.WithContext(ctx.RequestContext()) + iAdminDo = iAdminDo.Where(query.Admin.IsDeleted.Eq(-1)) if searchData.Username != "" { - qb.WhereUsername(mysql.EqualPredicate, searchData.Username) + iAdminDo = iAdminDo.Where(query.Admin.Username.Eq(searchData.Username)) } - if searchData.Nickname != "" { - qb.WhereNickname(mysql.EqualPredicate, searchData.Nickname) + iAdminDo = iAdminDo.Where(query.Admin.Nickname.Eq(searchData.Nickname)) } - if searchData.Mobile != "" { - qb.WhereMobile(mysql.EqualPredicate, searchData.Mobile) + iAdminDo = iAdminDo.Where(query.Admin.Mobile.Eq(searchData.Mobile)) } - listData, err = qb. - Limit(pageSize). - Offset(offset). - OrderById(false). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + admins, _, err = iAdminDo.Order(query.Admin.ID.Desc()). + FindByPage(int((searchData.Page-1)*searchData.PageSize), int(searchData.PageSize)) if err != nil { return nil, err } diff --git a/internal/services/admin/service_pagelistcount.go b/internal/services/admin/service_pagelistcount.go index 5a6c6e3..17f28ce 100755 --- a/internal/services/admin/service_pagelistcount.go +++ b/internal/services/admin/service_pagelistcount.go @@ -2,27 +2,27 @@ package admin import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/admin" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) func (s *service) PageListCount(ctx core.Context, searchData *SearchData) (total int64, err error) { - qb := admin.NewQueryBuilder() - qb = qb.WhereIsDeleted(mysql.EqualPredicate, -1) + + iAdminDo := query.Admin.WithContext(ctx.RequestContext()) + iAdminDo = iAdminDo.Where(query.Admin.IsDeleted.Eq(-1)) if searchData.Username != "" { - qb.WhereUsername(mysql.EqualPredicate, searchData.Username) + iAdminDo.Where(query.Admin.Username.Eq(searchData.Username)) } if searchData.Nickname != "" { - qb.WhereNickname(mysql.EqualPredicate, searchData.Nickname) + iAdminDo.Where(query.Admin.Nickname.Eq(searchData.Nickname)) } if searchData.Mobile != "" { - qb.WhereMobile(mysql.EqualPredicate, searchData.Mobile) + iAdminDo.Where(query.Admin.Mobile.Eq(searchData.Mobile)) } - total, err = qb.Count(s.db.GetDbR().WithContext(ctx.RequestContext())) + total, err = iAdminDo.Count() if err != nil { return 0, err } diff --git a/internal/services/admin/service_resetpassword.go b/internal/services/admin/service_resetpassword.go index 36c6b43..21c6968 100755 --- a/internal/services/admin/service_resetpassword.go +++ b/internal/services/admin/service_resetpassword.go @@ -4,21 +4,17 @@ import ( "github.com/ch3nnn/webstack-go/configs" "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/pkg/password" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/admin" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "github.com/ch3nnn/webstack-go/internal/repository/redis" ) -func (s *service) ResetPassword(ctx core.Context, id int32) (err error) { - data := map[string]interface{}{ - "password": password.ResetPassword(), - "updated_user": ctx.SessionUserInfo().UserName, - } - - qb := admin.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) - if err != nil { +func (s *service) ResetPassword(ctx core.Context, id int64) (err error) { + if _, err = query.Admin.WithContext(ctx.RequestContext()). + Where(query.Admin.ID.Eq(id)). + UpdateColumnSimple( + query.Admin.Password.Value(password.ResetPassword()), + query.Admin.UpdatedUser.Value(ctx.SessionUserInfo().UserName), + ); err != nil { return err } diff --git a/internal/services/admin/service_updateused.go b/internal/services/admin/service_updateused.go index e70abfa..f95d482 100755 --- a/internal/services/admin/service_updateused.go +++ b/internal/services/admin/service_updateused.go @@ -4,21 +4,17 @@ import ( "github.com/ch3nnn/webstack-go/configs" "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/pkg/password" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/admin" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "github.com/ch3nnn/webstack-go/internal/repository/redis" ) -func (s *service) UpdateUsed(ctx core.Context, id int32, used int32) (err error) { - data := map[string]interface{}{ - "is_used": used, - "updated_user": ctx.SessionUserInfo().UserName, - } - - qb := admin.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) - if err != nil { +func (s *service) UpdateUsed(ctx core.Context, id, used int64) (err error) { + if _, err = query.Admin.WithContext(ctx.RequestContext()). + Where(query.Admin.ID.Eq(id)). + UpdateColumnSimple( + query.Admin.IsUsed.Value(used), + query.Admin.UpdatedUser.Value(ctx.SessionUserInfo().UserName), + ); err != nil { return err } diff --git a/internal/services/authorized/service.go b/internal/services/authorized/service.go index c3d983d..54c1307 100755 --- a/internal/services/authorized/service.go +++ b/internal/services/authorized/service.go @@ -3,8 +3,7 @@ package authorized import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized_api" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" "github.com/ch3nnn/webstack-go/internal/repository/redis" ) @@ -13,18 +12,18 @@ var _ Service = (*service)(nil) type Service interface { i() - Create(ctx core.Context, authorizedData *CreateAuthorizedData) (id int32, err error) - List(ctx core.Context, searchData *SearchData) (listData []*authorized.Authorized, err error) - PageList(ctx core.Context, searchData *SearchData) (listData []*authorized.Authorized, err error) + Create(ctx core.Context, authorizedData *CreateAuthorizedData) (id int64, err error) + List(ctx core.Context, searchData *SearchData) (authorizedList []*model.Authorized, err error) + PageList(ctx core.Context, searchData *SearchData) (authorizedList []*model.Authorized, err error) PageListCount(ctx core.Context, searchData *SearchData) (total int64, err error) - UpdateUsed(ctx core.Context, id int32, used int32) (err error) - Delete(ctx core.Context, id int32) (err error) - Detail(ctx core.Context, id int32) (info *authorized.Authorized, err error) + UpdateUsed(ctx core.Context, id, used int64) (err error) + Delete(ctx core.Context, id int64) (err error) + Detail(ctx core.Context, id int64) (authorizedInfo *model.Authorized, err error) DetailByKey(ctx core.Context, key string) (data *CacheAuthorizedData, err error) - CreateAPI(ctx core.Context, authorizedAPIData *CreateAuthorizedAPIData) (id int32, err error) - ListAPI(ctx core.Context, searchAPIData *SearchAPIData) (listData []*authorized_api.AuthorizedApi, err error) - DeleteAPI(ctx core.Context, id int32) (err error) + CreateAPI(ctx core.Context, authorizedAPIData *CreateAuthorizedAPIData) (id int64, err error) + ListAPI(ctx core.Context, searchAPIData *SearchAPIData) (authorizedAPIS []*model.AuthorizedAPI, err error) + DeleteAPI(ctx core.Context, id int64) (err error) } type service struct { diff --git a/internal/services/authorized/service_create.go b/internal/services/authorized/service_create.go index b50b469..acf867b 100755 --- a/internal/services/authorized/service_create.go +++ b/internal/services/authorized/service_create.go @@ -3,10 +3,10 @@ package authorized import ( "crypto/rand" "encoding/hex" - "io" - "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" + "io" ) type CreateAuthorizedData struct { @@ -15,21 +15,21 @@ type CreateAuthorizedData struct { Remark string `json:"remark"` // 备注 } -func (s *service) Create(ctx core.Context, authorizedData *CreateAuthorizedData) (id int32, err error) { +func (s *service) Create(ctx core.Context, authorizedData *CreateAuthorizedData) (id int64, err error) { buf := make([]byte, 10) io.ReadFull(rand.Reader, buf) secret := hex.EncodeToString(buf) - model := authorized.NewModel() - model.BusinessKey = authorizedData.BusinessKey - model.BusinessSecret = secret - model.BusinessDeveloper = authorizedData.BusinessDeveloper - model.Remark = authorizedData.Remark - model.CreatedUser = ctx.SessionUserInfo().UserName - model.IsUsed = 1 - model.IsDeleted = -1 + err = query.Authorized.WithContext(ctx.RequestContext()).Create(&model.Authorized{ + BusinessKey: authorizedData.BusinessKey, + BusinessSecret: secret, + BusinessDeveloper: authorizedData.BusinessDeveloper, + Remark: authorizedData.Remark, + IsUsed: 1, + IsDeleted: -1, + CreatedUser: ctx.SessionUserInfo().UserName, + }) - id, err = model.Create(s.db.GetDbW().WithContext(ctx.RequestContext())) if err != nil { return 0, err } diff --git a/internal/services/authorized/service_createapi.go b/internal/services/authorized/service_createapi.go index 28899d0..0b34f32 100755 --- a/internal/services/authorized/service_createapi.go +++ b/internal/services/authorized/service_createapi.go @@ -3,7 +3,8 @@ package authorized import ( "github.com/ch3nnn/webstack-go/configs" "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized_api" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "github.com/ch3nnn/webstack-go/internal/repository/redis" ) @@ -13,15 +14,14 @@ type CreateAuthorizedAPIData struct { API string `json:"api"` // 请求地址 } -func (s *service) CreateAPI(ctx core.Context, authorizedAPIData *CreateAuthorizedAPIData) (id int32, err error) { - model := authorized_api.NewModel() - model.BusinessKey = authorizedAPIData.BusinessKey - model.Method = authorizedAPIData.Method - model.Api = authorizedAPIData.API - model.CreatedUser = ctx.SessionUserInfo().UserName - model.IsDeleted = -1 - - id, err = model.Create(s.db.GetDbW().WithContext(ctx.RequestContext())) +func (s *service) CreateAPI(ctx core.Context, authorizedAPIData *CreateAuthorizedAPIData) (id int64, err error) { + err = query.AuthorizedAPI.WithContext(ctx.RequestContext()).Create(&model.AuthorizedAPI{ + BusinessKey: authorizedAPIData.BusinessKey, + Method: authorizedAPIData.Method, + API: authorizedAPIData.API, + IsDeleted: -1, + CreatedUser: ctx.SessionUserInfo().UserName, + }) if err != nil { return 0, err } diff --git a/internal/services/authorized/service_delete.go b/internal/services/authorized/service_delete.go index 49b061b..85961a4 100755 --- a/internal/services/authorized/service_delete.go +++ b/internal/services/authorized/service_delete.go @@ -3,32 +3,28 @@ package authorized import ( "github.com/ch3nnn/webstack-go/configs" "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "github.com/ch3nnn/webstack-go/internal/repository/redis" "gorm.io/gorm" ) -func (s *service) Delete(ctx core.Context, id int32) (err error) { +func (s *service) Delete(ctx core.Context, id int64) (err error) { // 先查询 id 是否存在 - authorizedInfo, err := authorized.NewQueryBuilder(). - WhereIsDeleted(mysql.EqualPredicate, -1). - WhereId(mysql.EqualPredicate, id). - First(s.db.GetDbR().WithContext(ctx.RequestContext())) - + authorizedInfo, err := query.Authorized.WithContext(ctx.RequestContext()). + Where(query.Authorized.IsDeleted.Eq(-1)). + Where(query.Authorized.ID.Eq(id)). + First() if err == gorm.ErrRecordNotFound { return nil } - data := map[string]interface{}{ - "is_deleted": 1, - "updated_user": ctx.SessionUserInfo().UserName, - } - - qb := authorized.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) + _, err = query.Authorized.WithContext(ctx.RequestContext()). + Where(query.Authorized.ID.Eq(id)). + UpdateColumnSimple( + query.Authorized.IsDeleted.Value(1), + query.Authorized.UpdatedUser.Value(ctx.SessionUserInfo().UserName), + ) if err != nil { return err } diff --git a/internal/services/authorized/service_deleteapi.go b/internal/services/authorized/service_deleteapi.go index 86ae396..e5b718c 100755 --- a/internal/services/authorized/service_deleteapi.go +++ b/internal/services/authorized/service_deleteapi.go @@ -3,36 +3,32 @@ package authorized import ( "github.com/ch3nnn/webstack-go/configs" "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized_api" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "github.com/ch3nnn/webstack-go/internal/repository/redis" "gorm.io/gorm" ) -func (s *service) DeleteAPI(ctx core.Context, id int32) (err error) { +func (s *service) DeleteAPI(ctx core.Context, id int64) (err error) { // 先查询 id 是否存在 - authorizedApiInfo, err := authorized_api.NewQueryBuilder(). - WhereIsDeleted(mysql.EqualPredicate, -1). - WhereId(mysql.EqualPredicate, id). - First(s.db.GetDbR().WithContext(ctx.RequestContext())) - + authorizedAPI, err := query.AuthorizedAPI.WithContext(ctx.RequestContext()). + Where(query.AuthorizedAPI.IsDeleted.Eq(-1)). + Where(query.AuthorizedAPI.ID.Eq(id)). + First() if err == gorm.ErrRecordNotFound { return nil } - data := map[string]interface{}{ - "is_deleted": 1, - "updated_user": ctx.SessionUserInfo().UserName, - } - - qb := authorized_api.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) + _, err = query.AuthorizedAPI.WithContext(ctx.RequestContext()). + Where(query.AuthorizedAPI.ID.Eq(id)). + UpdateColumnSimple( + query.AuthorizedAPI.IsDeleted.Value(1), + query.AuthorizedAPI.UpdatedUser.Value(ctx.SessionUserInfo().UserName), + ) if err != nil { return err } - s.cache.Del(configs.RedisKeyPrefixSignature+authorizedApiInfo.BusinessKey, redis.WithTrace(ctx.Trace())) + s.cache.Del(configs.RedisKeyPrefixSignature+authorizedAPI.BusinessKey, redis.WithTrace(ctx.Trace())) return } diff --git a/internal/services/authorized/service_detail.go b/internal/services/authorized/service_detail.go index bf5f1cb..cff855f 100755 --- a/internal/services/authorized/service_detail.go +++ b/internal/services/authorized/service_detail.go @@ -2,16 +2,15 @@ package authorized import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) -func (s *service) Detail(ctx core.Context, id int32) (info *authorized.Authorized, err error) { - qb := authorized.NewQueryBuilder() - qb.WhereIsDeleted(mysql.EqualPredicate, -1) - qb.WhereId(mysql.EqualPredicate, id) - - info, err = qb.First(s.db.GetDbR().WithContext(ctx.RequestContext())) +func (s *service) Detail(ctx core.Context, id int64) (authorizedInfo *model.Authorized, err error) { + authorizedInfo, err = query.Authorized.WithContext(ctx.RequestContext()). + Where(query.Authorized.IsDeleted.Eq(-1)). + Where(query.Authorized.ID.Eq(id)). + First() if err != nil { return nil, err } diff --git a/internal/services/authorized/service_detailbykey.go b/internal/services/authorized/service_detailbykey.go index 0d508f9..440cc2e 100755 --- a/internal/services/authorized/service_detailbykey.go +++ b/internal/services/authorized/service_detailbykey.go @@ -2,12 +2,10 @@ package authorized import ( "encoding/json" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "github.com/ch3nnn/webstack-go/configs" "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized_api" "github.com/ch3nnn/webstack-go/internal/repository/redis" ) @@ -15,7 +13,7 @@ import ( type CacheAuthorizedData struct { Key string `json:"key"` // 调用方 key Secret string `json:"secret"` // 调用方 secret - IsUsed int32 `json:"is_used"` // 调用方启用状态 1=启用 -1=禁用 + IsUsed int64 `json:"is_used"` // 调用方启用状态 1=启用 -1=禁用 Apis []cacheApiData `json:"apis"` // 调用方授权的 Apis } @@ -30,22 +28,20 @@ func (s *service) DetailByKey(ctx core.Context, key string) (cacheData *CacheAut if !s.cache.Exists(cacheKey) { // 查询调用方信息 - authorizedInfo, err := authorized.NewQueryBuilder(). - WhereIsDeleted(mysql.EqualPredicate, -1). - WhereBusinessKey(mysql.EqualPredicate, key). - First(s.db.GetDbR().WithContext(ctx.RequestContext())) - + authorizedInfo, err := query.Authorized.WithContext(ctx.RequestContext()). + Where(query.Authorized.IsDeleted.Eq(-1)). + Where(query.Authorized.BusinessKey.Eq(key)). + First() if err != nil { return nil, err } // 查询调用方授权 API 信息 - authorizedApiInfo, err := authorized_api.NewQueryBuilder(). - WhereIsDeleted(mysql.EqualPredicate, -1). - WhereBusinessKey(mysql.EqualPredicate, key). - OrderById(false). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) - + authorizedAPIS, err := query.AuthorizedAPI.WithContext(ctx.RequestContext()). + Where(query.AuthorizedAPI.IsDeleted.Eq(-1)). + Where(query.AuthorizedAPI.BusinessKey.Eq(key)). + Order(query.AuthorizedAPI.ID.Desc()). + Find() if err != nil { return nil, err } @@ -55,14 +51,13 @@ func (s *service) DetailByKey(ctx core.Context, key string) (cacheData *CacheAut cacheData.Key = key cacheData.Secret = authorizedInfo.BusinessSecret cacheData.IsUsed = authorizedInfo.IsUsed - cacheData.Apis = make([]cacheApiData, len(authorizedApiInfo)) + cacheData.Apis = make([]cacheApiData, len(authorizedAPIS)) - for k, v := range authorizedApiInfo { - data := cacheApiData{ + for k, v := range authorizedAPIS { + cacheData.Apis[k] = cacheApiData{ Method: v.Method, - Api: v.Api, + Api: v.API, } - cacheData.Apis[k] = data } cacheDataByte, _ := json.Marshal(cacheData) diff --git a/internal/services/authorized/service_list.go b/internal/services/authorized/service_list.go index cf5fbd6..b2ba647 100755 --- a/internal/services/authorized/service_list.go +++ b/internal/services/authorized/service_list.go @@ -2,30 +2,26 @@ package authorized import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) -func (s *service) List(ctx core.Context, searchData *SearchData) (listData []*authorized.Authorized, err error) { - - qb := authorized.NewQueryBuilder() - qb = qb.WhereIsDeleted(mysql.EqualPredicate, -1) +func (s *service) List(ctx core.Context, searchData *SearchData) (authorizedList []*model.Authorized, err error) { + iAuthorizedDo := query.Authorized.WithContext(ctx.RequestContext()) + iAuthorizedDo = iAuthorizedDo.Where(query.Authorized.IsDeleted.Eq(-1)) if searchData.BusinessKey != "" { - qb.WhereBusinessKey(mysql.EqualPredicate, searchData.BusinessKey) + iAuthorizedDo = iAuthorizedDo.Where(query.Authorized.BusinessKey.Eq(searchData.BusinessKey)) } if searchData.BusinessSecret != "" { - qb.WhereBusinessSecret(mysql.EqualPredicate, searchData.BusinessSecret) + iAuthorizedDo = iAuthorizedDo.Where(query.Authorized.BusinessSecret.Eq(searchData.BusinessSecret)) } if searchData.BusinessDeveloper != "" { - qb.WhereBusinessDeveloper(mysql.EqualPredicate, searchData.BusinessDeveloper) + iAuthorizedDo = iAuthorizedDo.Where(query.Authorized.BusinessDeveloper.Eq(searchData.BusinessDeveloper)) } - - listData, err = qb. - OrderById(false). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + authorizedList, err = iAuthorizedDo.Order(query.Authorized.ID.Desc()).Find() if err != nil { return nil, err } diff --git a/internal/services/authorized/service_listapi.go b/internal/services/authorized/service_listapi.go index 347b3f1..812f0f4 100755 --- a/internal/services/authorized/service_listapi.go +++ b/internal/services/authorized/service_listapi.go @@ -2,26 +2,22 @@ package authorized import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized_api" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type SearchAPIData struct { BusinessKey string `json:"business_key"` // 调用方key } -func (s *service) ListAPI(ctx core.Context, searchAPIData *SearchAPIData) (listData []*authorized_api.AuthorizedApi, err error) { - - qb := authorized_api.NewQueryBuilder() - qb = qb.WhereIsDeleted(mysql.EqualPredicate, -1) +func (s *service) ListAPI(ctx core.Context, searchAPIData *SearchAPIData) (authorizedAPIS []*model.AuthorizedAPI, err error) { + iAuthorizedAPIDo := query.AuthorizedAPI.WithContext(ctx.RequestContext()) + iAuthorizedAPIDo = iAuthorizedAPIDo.Where(query.AuthorizedAPI.IsDeleted.Eq(-1)) if searchAPIData.BusinessKey != "" { - qb.WhereBusinessKey(mysql.EqualPredicate, searchAPIData.BusinessKey) + iAuthorizedAPIDo = iAuthorizedAPIDo.Where(query.AuthorizedAPI.BusinessKey.Eq(searchAPIData.BusinessKey)) } - - listData, err = qb. - OrderById(false). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + authorizedAPIS, err = iAuthorizedAPIDo.Order(query.AuthorizedAPI.ID.Desc()).Find() if err != nil { return nil, err } diff --git a/internal/services/authorized/service_pagelist.go b/internal/services/authorized/service_pagelist.go index af7d0f1..4ebda24 100755 --- a/internal/services/authorized/service_pagelist.go +++ b/internal/services/authorized/service_pagelist.go @@ -2,53 +2,42 @@ package authorized import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type SearchData struct { - Page int `json:"page"` // 第几页 - PageSize int `json:"page_size"` // 每页显示条数 + Page int64 `json:"page"` // 第几页 + PageSize int64 `json:"page_size"` // 每页显示条数 BusinessKey string `json:"business_key"` // 调用方key BusinessSecret string `json:"business_secret"` // 调用方secret BusinessDeveloper string `json:"business_developer"` // 调用方对接人 Remark string `json:"remark"` // 备注 } -func (s *service) PageList(ctx core.Context, searchData *SearchData) (listData []*authorized.Authorized, err error) { +func (s *service) PageList(ctx core.Context, searchData *SearchData) (authorizedList []*model.Authorized, err error) { - page := searchData.Page - if page == 0 { - page = 1 - } - - pageSize := searchData.PageSize - if pageSize == 0 { - pageSize = 10 - } - - offset := (page - 1) * pageSize - - qb := authorized.NewQueryBuilder() - qb = qb.WhereIsDeleted(mysql.EqualPredicate, -1) + offset := (searchData.Page - 1) * searchData.PageSize + iAuthorizedDo := query.Authorized.WithContext(ctx.RequestContext()) + iAuthorizedDo = iAuthorizedDo.Where(query.Authorized.IsDeleted.Eq(-1)) if searchData.BusinessKey != "" { - qb.WhereBusinessKey(mysql.EqualPredicate, searchData.BusinessKey) + iAuthorizedDo = iAuthorizedDo.Where(query.Authorized.BusinessKey.Eq(searchData.BusinessKey)) } if searchData.BusinessSecret != "" { - qb.WhereBusinessSecret(mysql.EqualPredicate, searchData.BusinessSecret) + iAuthorizedDo = iAuthorizedDo.Where(query.Authorized.BusinessSecret.Eq(searchData.BusinessSecret)) } if searchData.BusinessDeveloper != "" { - qb.WhereBusinessDeveloper(mysql.EqualPredicate, searchData.BusinessDeveloper) + iAuthorizedDo = iAuthorizedDo.Where(query.Authorized.BusinessDeveloper.Eq(searchData.BusinessDeveloper)) } - listData, err = qb. - Limit(pageSize). - Offset(offset). - OrderById(false). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + authorizedList, err = iAuthorizedDo. + Limit(int(searchData.PageSize)). + Offset(int(offset)). + Order(query.Authorized.ID.Desc()). + Find() if err != nil { return nil, err } diff --git a/internal/services/authorized/service_pagelistcount.go b/internal/services/authorized/service_pagelistcount.go index c2a466c..77061fb 100755 --- a/internal/services/authorized/service_pagelistcount.go +++ b/internal/services/authorized/service_pagelistcount.go @@ -2,27 +2,27 @@ package authorized import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) func (s *service) PageListCount(ctx core.Context, searchData *SearchData) (total int64, err error) { - qb := authorized.NewQueryBuilder() - qb = qb.WhereIsDeleted(mysql.EqualPredicate, -1) + + iAuthorizedDo := query.Authorized.WithContext(ctx.RequestContext()) + iAuthorizedDo = iAuthorizedDo.Where(query.Authorized.IsDeleted.Eq(-1)) if searchData.BusinessKey != "" { - qb.WhereBusinessKey(mysql.EqualPredicate, searchData.BusinessKey) + iAuthorizedDo = iAuthorizedDo.Where(query.Authorized.BusinessKey.Eq(searchData.BusinessKey)) } if searchData.BusinessSecret != "" { - qb.WhereBusinessSecret(mysql.EqualPredicate, searchData.BusinessSecret) + iAuthorizedDo = iAuthorizedDo.Where(query.Authorized.BusinessSecret.Eq(searchData.BusinessSecret)) } if searchData.BusinessDeveloper != "" { - qb.WhereBusinessDeveloper(mysql.EqualPredicate, searchData.BusinessDeveloper) + iAuthorizedDo = iAuthorizedDo.Where(query.Authorized.BusinessDeveloper.Eq(searchData.BusinessDeveloper)) } - total, err = qb.Count(s.db.GetDbR().WithContext(ctx.RequestContext())) + total, err = iAuthorizedDo.Count() if err != nil { return 0, err } diff --git a/internal/services/authorized/service_updateused.go b/internal/services/authorized/service_updateused.go index 47b4122..eaaabbc 100755 --- a/internal/services/authorized/service_updateused.go +++ b/internal/services/authorized/service_updateused.go @@ -3,31 +3,28 @@ package authorized import ( "github.com/ch3nnn/webstack-go/configs" "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/authorized" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "github.com/ch3nnn/webstack-go/internal/repository/redis" "gorm.io/gorm" ) -func (s *service) UpdateUsed(ctx core.Context, id int32, used int32) (err error) { - authorizedInfo, err := authorized.NewQueryBuilder(). - WhereIsDeleted(mysql.EqualPredicate, -1). - WhereId(mysql.EqualPredicate, id). - First(s.db.GetDbR().WithContext(ctx.RequestContext())) - +func (s *service) UpdateUsed(ctx core.Context, id, used int64) (err error) { + authorizedInfo, err := query.Authorized.WithContext(ctx.RequestContext()). + Where(query.Authorized.IsDeleted.Eq(-1)). + Where(query.Authorized.ID.Eq(id)). + First() if err == gorm.ErrRecordNotFound { return nil } - data := map[string]interface{}{ - "is_used": used, - "updated_user": ctx.SessionUserInfo().UserName, - } + _, err = query.Authorized.WithContext(ctx.RequestContext()). + Where(query.Authorized.ID.Eq(id)). + UpdateColumnSimple( + query.Authorized.IsUsed.Value(used), + query.Authorized.UpdatedUser.Value(ctx.SessionUserInfo().UserName), + ) - qb := authorized.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) if err != nil { return err } diff --git a/internal/services/category/service_tree.go b/internal/services/category/service_tree.go index 36651b5..fd2b195 100644 --- a/internal/services/category/service_tree.go +++ b/internal/services/category/service_tree.go @@ -2,16 +2,14 @@ package category import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/category" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type TreeNode struct { - // Id 节点ID - Id int32 + Id int64 // Pid 父节点ID - Pid int32 + Pid int64 // Name 节点名称 Name string // Icon 图标 @@ -20,29 +18,7 @@ type TreeNode struct { Child []*TreeNode } -func (s *service) Tree(ctx core.Context) (nodes []*TreeNode, err error) { - qb := category.NewQueryBuilder() - listData, err := qb. - WhereIsUsed(mysql.EqualPredicate, 1). - OrderBySort(true). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) - if err != nil { - return nil, err - } - for _, v := range listData { - nodes = append(nodes, &TreeNode{ - Id: v.Id, - Pid: v.ParentId, - Name: v.Title, - Icon: v.Icon, - Child: nil, - }) - } - treeNode := buildTree(nodes, 0) - return treeNode, nil -} - -func buildTree(nodes []*TreeNode, pid int32) []*TreeNode { +func buildTree(nodes []*TreeNode, pid int64) []*TreeNode { res := make([]*TreeNode, 0) for _, v := range nodes { if v.Pid == pid { @@ -52,3 +28,22 @@ func buildTree(nodes []*TreeNode, pid int32) []*TreeNode { } return res } + +func (s *service) Tree(ctx core.Context) (nodes []*TreeNode, err error) { + categories, err := query.Category.WithContext(ctx.RequestContext()). + Where(query.Category.IsUsed.Eq(1)). + Order(query.Category.Sort).Find() + if err != nil { + return nil, err + } + for _, cat := range categories { + nodes = append(nodes, &TreeNode{ + Id: cat.ID, + Pid: cat.ParentID, + Name: cat.Title, + Icon: cat.Icon, + Child: nil, + }) + } + return buildTree(nodes, 0), nil +} diff --git a/internal/services/cron/service.go b/internal/services/cron/service.go index fb21831..03b75d5 100755 --- a/internal/services/cron/service.go +++ b/internal/services/cron/service.go @@ -4,7 +4,7 @@ import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/repository/cron" "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/cron_task" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" "github.com/ch3nnn/webstack-go/internal/repository/redis" ) @@ -13,13 +13,13 @@ var _ Service = (*service)(nil) type Service interface { i() - Create(ctx core.Context, createData *CreateCronTaskData) (id int32, err error) - Modify(ctx core.Context, id int32, modifyData *ModifyCronTaskData) (err error) - PageList(ctx core.Context, searchData *SearchData) (listData []*cron_task.CronTask, err error) + Create(ctx core.Context, createData *CreateCronTaskData) (id int64, err error) + Modify(ctx core.Context, id int64, modifyData *ModifyCronTaskData) (err error) + PageList(ctx core.Context, searchData *SearchData) (cronTasks []*model.CronTask, err error) PageListCount(ctx core.Context, searchData *SearchData) (total int64, err error) - UpdateUsed(ctx core.Context, id int32, used int32) (err error) - Execute(ctx core.Context, id int32) (err error) - Detail(ctx core.Context, searchOneData *SearchOneData) (info *cron_task.CronTask, err error) + UpdateUsed(ctx core.Context, id, used int64) (err error) + Execute(ctx core.Context, id int64) (err error) + Detail(ctx core.Context, searchOneData *SearchOneData) (cronTask *model.CronTask, err error) } type service struct { diff --git a/internal/services/cron/service_create.go b/internal/services/cron/service_create.go index 0cdd37f..8dcee7b 100755 --- a/internal/services/cron/service_create.go +++ b/internal/services/cron/service_create.go @@ -2,50 +2,50 @@ package cron import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/cron_task" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type CreateCronTaskData struct { Name string // 任务名称 Spec string // crontab 表达式 Command string // 执行命令 - Protocol int32 // 执行方式 1:shell 2:http - HttpMethod int32 // http 请求方式 1:get 2:post - Timeout int32 // 超时时间(单位:秒) - RetryTimes int32 // 重试次数 - RetryInterval int32 // 重试间隔(单位:秒) - NotifyStatus int32 // 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 - NotifyType int32 // 通知类型 1:邮件 2:webhook + Protocol int64 // 执行方式 1:shell 2:http + HttpMethod int64 // http 请求方式 1:get 2:post + Timeout int64 // 超时时间(单位:秒) + RetryTimes int64 // 重试次数 + RetryInterval int64 // 重试间隔(单位:秒) + NotifyStatus int64 // 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 + NotifyType int64 // 通知类型 1:邮件 2:webhook NotifyReceiverEmail string // 通知者邮箱地址(多个用,分割) NotifyKeyword string // 通知匹配关键字(多个用,分割) Remark string // 备注 - IsUsed int32 // 是否启用 1:是 -1:否 + IsUsed int64 // 是否启用 1:是 -1:否 } -func (s *service) Create(ctx core.Context, createData *CreateCronTaskData) (id int32, err error) { - model := cron_task.NewModel() - model.Name = createData.Name - model.Spec = createData.Spec - model.Command = createData.Command - model.Protocol = createData.Protocol - model.HttpMethod = createData.HttpMethod - model.Timeout = createData.Timeout - model.RetryTimes = createData.RetryTimes - model.RetryInterval = createData.RetryInterval - model.NotifyStatus = createData.NotifyStatus - model.NotifyType = createData.NotifyType - model.NotifyReceiverEmail = createData.NotifyReceiverEmail - model.NotifyKeyword = createData.NotifyKeyword - model.Remark = createData.Remark - model.IsUsed = createData.IsUsed - model.CreatedUser = ctx.SessionUserInfo().UserName - - id, err = model.Create(s.db.GetDbW().WithContext(ctx.RequestContext())) - if err != nil { +func (s *service) Create(ctx core.Context, createData *CreateCronTaskData) (id int64, err error) { + task := model.CronTask{ + Name: createData.Name, + Spec: createData.Spec, + Command: createData.Command, + Protocol: createData.Protocol, + HTTPMethod: createData.HttpMethod, + Timeout: createData.Timeout, + RetryTimes: createData.RetryTimes, + RetryInterval: createData.RetryInterval, + NotifyStatus: createData.NotifyStatus, + NotifyType: createData.NotifyType, + NotifyReceiverEmail: createData.NotifyReceiverEmail, + NotifyKeyword: createData.NotifyKeyword, + Remark: createData.Remark, + IsUsed: createData.IsUsed, + CreatedUser: ctx.SessionUserInfo().UserName, + } + if err = query.CronTask.Create(&task); err != nil { return 0, err } - s.cronServer.AddTask(model) + s.cronServer.AddTask(&task) return } diff --git a/internal/services/cron/service_detail.go b/internal/services/cron/service_detail.go index ba32155..42f65d4 100755 --- a/internal/services/cron/service_detail.go +++ b/internal/services/cron/service_detail.go @@ -2,22 +2,21 @@ package cron import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/cron_task" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type SearchOneData struct { - Id int32 // 任务ID + Id int64 // 任务ID } -func (s *service) Detail(ctx core.Context, searchOneData *SearchOneData) (info *cron_task.CronTask, err error) { - qb := cron_task.NewQueryBuilder() - +func (s *service) Detail(ctx core.Context, searchOneData *SearchOneData) (cronTask *model.CronTask, err error) { + iCronTaskDo := query.CronTask.WithContext(ctx.RequestContext()) if searchOneData.Id != 0 { - qb.WhereId(mysql.EqualPredicate, searchOneData.Id) + iCronTaskDo = iCronTaskDo.Where(query.CronTask.ID.Eq(searchOneData.Id)) } - info, err = qb.QueryOne(s.db.GetDbR().WithContext(ctx.RequestContext())) + cronTask, err = iCronTaskDo.First() if err != nil { return nil, err } diff --git a/internal/services/cron/service_execute.go b/internal/services/cron/service_execute.go index fa1d14d..96c0a0a 100755 --- a/internal/services/cron/service_execute.go +++ b/internal/services/cron/service_execute.go @@ -2,20 +2,18 @@ package cron import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/cron_task" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) -func (s *service) Execute(ctx core.Context, id int32) (err error) { - qb := cron_task.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - info, err := qb.QueryOne(s.db.GetDbR().WithContext(ctx.RequestContext())) +func (s *service) Execute(ctx core.Context, id int64) (err error) { + + cronTask, err := query.CronTask.WithContext(ctx.RequestContext()).Where(query.CronTask.ID.Eq(id)).First() if err != nil { return err } - info.Spec = "手动执行" - go s.cronServer.AddJob(info)() + cronTask.Spec = "手动执行" + go s.cronServer.AddJob(cronTask)() return nil } diff --git a/internal/services/cron/service_modify.go b/internal/services/cron/service_modify.go index 217a378..c688b5d 100755 --- a/internal/services/cron/service_modify.go +++ b/internal/services/cron/service_modify.go @@ -2,30 +2,28 @@ package cron import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/cron_task" - - "github.com/spf13/cast" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/constant" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type ModifyCronTaskData struct { Name string // 任务名称 Spec string // crontab 表达式 Command string // 执行命令 - Protocol int32 // 执行方式 1:shell 2:http - HttpMethod int32 // http 请求方式 1:get 2:post - Timeout int32 // 超时时间(单位:秒) - RetryTimes int32 // 重试次数 - RetryInterval int32 // 重试间隔(单位:秒) - NotifyStatus int32 // 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 - NotifyType int32 // 通知类型 1:邮件 2:webhook + Protocol int64 // 执行方式 1:shell 2:http + HttpMethod int64 // http 请求方式 1:get 2:post + Timeout int64 // 超时时间(单位:秒) + RetryTimes int64 // 重试次数 + RetryInterval int64 // 重试间隔(单位:秒) + NotifyStatus int64 // 执行结束是否通知 1:不通知 2:失败通知 3:结束通知 4:结果关键字匹配通知 + NotifyType int64 // 通知类型 1:邮件 2:webhook NotifyReceiverEmail string // 通知者邮箱地址(多个用,分割) NotifyKeyword string // 通知匹配关键字(多个用,分割) Remark string // 备注 - IsUsed int32 // 是否启用 1:是 -1:否 + IsUsed int64 // 是否启用 1:是 -1:否 } -func (s *service) Modify(ctx core.Context, id int32, modifyData *ModifyCronTaskData) (err error) { +func (s *service) Modify(ctx core.Context, id int64, modifyData *ModifyCronTaskData) (err error) { data := map[string]interface{}{ "name": modifyData.Name, "spec": modifyData.Spec, @@ -44,26 +42,24 @@ func (s *service) Modify(ctx core.Context, id int32, modifyData *ModifyCronTaskD "updated_user": ctx.SessionUserInfo().UserName, } - qb := cron_task.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) + _, err = query.CronTask.WithContext(ctx.RequestContext()). + Where(query.CronTask.ID.Eq(id)). + Updates(data) if err != nil { return err } // region 操作定时任务 避免主从同步延迟,在这需要查询主库 - if modifyData.IsUsed == cron_task.IsUsedNo { - s.cronServer.RemoveTask(cast.ToInt(id)) + if modifyData.IsUsed == constant.IsUsedNo { + s.cronServer.RemoveTask(id) } else { - qb = cron_task.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - info, err := qb.QueryOne(s.db.GetDbW().WithContext(ctx.RequestContext())) + cronTask, err := query.CronTask.WithContext(ctx.RequestContext()).Where(query.CronTask.ID.Eq(id)).First() if err != nil { return err } - s.cronServer.RemoveTask(cast.ToInt(id)) - s.cronServer.AddTask(info) + s.cronServer.RemoveTask(id) + s.cronServer.AddTask(cronTask) } // endregion diff --git a/internal/services/cron/service_pagelist.go b/internal/services/cron/service_pagelist.go index d54c30e..c44bac3 100755 --- a/internal/services/cron/service_pagelist.go +++ b/internal/services/cron/service_pagelist.go @@ -2,50 +2,30 @@ package cron import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/cron_task" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type SearchData struct { - Page int // 第几页 - PageSize int // 每页显示条数 + Page int64 // 第几页 + PageSize int64 // 每页显示条数 Name string // 任务名称 - Protocol int32 // 执行方式 - IsUsed int32 // 是否启用 + Protocol int64 // 执行方式 + IsUsed int64 // 是否启用 } -func (s *service) PageList(ctx core.Context, searchData *SearchData) (listData []*cron_task.CronTask, err error) { - page := searchData.Page - if page == 0 { - page = 1 - } - - pageSize := searchData.PageSize - if pageSize == 0 { - pageSize = 10 - } - - offset := (page - 1) * pageSize - - qb := cron_task.NewQueryBuilder() - +func (s *service) PageList(ctx core.Context, searchData *SearchData) (cronTasks []*model.CronTask, err error) { + iCronTaskDo := query.CronTask.WithContext(ctx.RequestContext()) if searchData.Name != "" { - qb.WhereName(mysql.EqualPredicate, searchData.Name) + iCronTaskDo = iCronTaskDo.Where(query.CronTask.Name.Eq(searchData.Name)) } - if searchData.Protocol != 0 { - qb.WhereProtocol(mysql.EqualPredicate, searchData.Protocol) + iCronTaskDo = iCronTaskDo.Where(query.CronTask.Protocol.Eq(searchData.Protocol)) } - if searchData.IsUsed != 0 { - qb.WhereIsUsed(mysql.EqualPredicate, searchData.IsUsed) + iCronTaskDo = iCronTaskDo.Where(query.CronTask.IsUsed.Eq(searchData.IsUsed)) } - - listData, err = qb. - Limit(pageSize). - Offset(offset). - OrderById(false). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + cronTasks, _, err = iCronTaskDo.Order(query.CronTask.ID.Desc()).FindByPage(int((searchData.Page-1)*searchData.PageSize), int(searchData.PageSize)) if err != nil { return nil, err } diff --git a/internal/services/cron/service_pagelistcount.go b/internal/services/cron/service_pagelistcount.go index 82490c1..f33adf9 100755 --- a/internal/services/cron/service_pagelistcount.go +++ b/internal/services/cron/service_pagelistcount.go @@ -2,26 +2,23 @@ package cron import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/cron_task" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) func (s *service) PageListCount(ctx core.Context, searchData *SearchData) (total int64, err error) { - qb := cron_task.NewQueryBuilder() - + iCronTaskDo := query.CronTask.WithContext(ctx.RequestContext()) if searchData.Name != "" { - qb.WhereName(mysql.EqualPredicate, searchData.Name) + iCronTaskDo = iCronTaskDo.Where(query.CronTask.Name.Eq(searchData.Name)) } - if searchData.Protocol != 0 { - qb.WhereProtocol(mysql.EqualPredicate, searchData.Protocol) + iCronTaskDo = iCronTaskDo.Where(query.CronTask.Protocol.Eq(searchData.Protocol)) } - if searchData.IsUsed != 0 { - qb.WhereIsUsed(mysql.EqualPredicate, searchData.IsUsed) + iCronTaskDo = iCronTaskDo.Where(query.CronTask.IsUsed.Eq(searchData.IsUsed)) + } - total, err = qb.Count(s.db.GetDbR().WithContext(ctx.RequestContext())) + total, err = iCronTaskDo.Count() if err != nil { return 0, err } diff --git a/internal/services/cron/service_updateused.go b/internal/services/cron/service_updateused.go index faa95f1..efbe0e6 100755 --- a/internal/services/cron/service_updateused.go +++ b/internal/services/cron/service_updateused.go @@ -2,41 +2,34 @@ package cron import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/cron_task" - - "github.com/spf13/cast" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/constant" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) -func (s *service) UpdateUsed(ctx core.Context, id int32, used int32) (err error) { - data := map[string]interface{}{ - "is_used": used, - "updated_user": ctx.SessionUserInfo().UserName, - } - - qb := cron_task.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) +func (s *service) UpdateUsed(ctx core.Context, id, used int64) (err error) { + _, err = query.CronTask.WithContext(ctx.RequestContext()). + Where(query.CronTask.ID.Eq(id)). + UpdateColumnSimple( + query.CronTask.IsUsed.Value(used), + query.CronTask.UpdatedUser.Value(ctx.SessionUserInfo().UserName), + ) if err != nil { return err } // region 操作定时任务 避免主从同步延迟,在这需要查询主库 - if used == cron_task.IsUsedNo { - s.cronServer.RemoveTask(cast.ToInt(id)) + if used == constant.IsUsedNo { + s.cronServer.RemoveTask(id) } else { - qb = cron_task.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - info, err := qb.QueryOne(s.db.GetDbW().WithContext(ctx.RequestContext())) + cronTask, err := query.CronTask.WithContext(ctx.RequestContext()).Where(query.CronTask.ID.Eq(id)).First() if err != nil { return err } - s.cronServer.RemoveTask(cast.ToInt(id)) - s.cronServer.AddTask(info) + s.cronServer.RemoveTask(id) + s.cronServer.AddTask(cronTask) } - // endregion return } diff --git a/internal/services/index/service.go b/internal/services/index/service.go index afb1be9..ed6cf80 100755 --- a/internal/services/index/service.go +++ b/internal/services/index/service.go @@ -3,7 +3,7 @@ package index import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" "github.com/ch3nnn/webstack-go/internal/repository/redis" ) @@ -12,7 +12,7 @@ var _ Service = (*service)(nil) type Service interface { i() - Index(ctx core.Context) (listData []*site.Site, err error) + Index(ctx core.Context) (sites []*model.Site, err error) } type service struct { diff --git a/internal/services/index/service_index.go b/internal/services/index/service_index.go index 7d8839c..b06f5f3 100644 --- a/internal/services/index/service_index.go +++ b/internal/services/index/service_index.go @@ -2,18 +2,14 @@ package index import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/site" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) -func (s *service) Index(ctx core.Context) (listData []*site.Site, err error) { - - qb := site.NewQueryBuilder() - - listData, err = qb. - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) +func (s *service) Index(ctx core.Context) (sites []*model.Site, err error) { + sites, err = query.Site.WithContext(ctx.RequestContext()).Find() if err != nil { return nil, err } - return } diff --git a/internal/services/menu/service.go b/internal/services/menu/service.go index 7914821..5f02b01 100755 --- a/internal/services/menu/service.go +++ b/internal/services/menu/service.go @@ -3,8 +3,7 @@ package menu import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu_action" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" "github.com/ch3nnn/webstack-go/internal/repository/redis" ) @@ -13,17 +12,17 @@ var _ Service = (*service)(nil) type Service interface { i() - Create(ctx core.Context, menuData *CreateMenuData) (id int32, err error) - Modify(ctx core.Context, id int32, menuData *UpdateMenuData) (err error) - List(ctx core.Context, searchData *SearchData) (listData []*menu.Menu, err error) - UpdateUsed(ctx core.Context, id int32, used int32) (err error) - UpdateSort(ctx core.Context, id int32, sort int32) (err error) - Delete(ctx core.Context, id int32) (err error) - Detail(ctx core.Context, searchOneData *SearchOneData) (info *menu.Menu, err error) + Create(ctx core.Context, menuData *CreateMenuData) (id int64, err error) + Modify(ctx core.Context, id int64, menuData *UpdateMenuData) (err error) + List(ctx core.Context, searchData *SearchData) (menus []*model.Menu, err error) + UpdateUsed(ctx core.Context, id, sort int64) (err error) + UpdateSort(ctx core.Context, id, sort int64) (err error) + Delete(ctx core.Context, id int64) (err error) + Detail(ctx core.Context, searchOneData *SearchOneData) (menu *model.Menu, err error) CreateAction(ctx core.Context, menuActionData *CreateMenuActionData) (id int32, err error) - ListAction(ctx core.Context, searchListActionData *SearchListActionData) (listData []*menu_action.MenuAction, err error) - DeleteAction(ctx core.Context, id int32) (err error) + ListAction(ctx core.Context, searchData *SearchListActionData) (menuActions []*model.MenuAction, err error) + DeleteAction(ctx core.Context, id int64) (err error) } type service struct { diff --git a/internal/services/menu/service_create.go b/internal/services/menu/service_create.go index d9614cb..7b6f1fd 100755 --- a/internal/services/menu/service_create.go +++ b/internal/services/menu/service_create.go @@ -2,30 +2,31 @@ package menu import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" + "time" ) type CreateMenuData struct { - Pid int32 // 父类ID + Pid int64 // 父类ID Name string // 菜单名称 Link string // 链接地址 Icon string // 图标 - Level int32 // 菜单类型 1:一级菜单 2:二级菜单 + Level int64 // 菜单类型 1:一级菜单 2:二级菜单 } -func (s *service) Create(ctx core.Context, menuData *CreateMenuData) (id int32, err error) { - model := menu.NewModel() - model.Pid = menuData.Pid - model.Name = menuData.Name - model.Link = menuData.Link - model.Icon = menuData.Icon - model.Level = menuData.Level - model.CreatedUser = ctx.SessionUserInfo().UserName - model.IsUsed = 1 - model.IsDeleted = -1 - - id, err = model.Create(s.db.GetDbW().WithContext(ctx.RequestContext())) - if err != nil { +func (s *service) Create(ctx core.Context, menuData *CreateMenuData) (id int64, err error) { + if err = query.Menu.WithContext(ctx.RequestContext()).Create(&model.Menu{ + Pid: menuData.Pid, + Name: menuData.Name, + Link: menuData.Link, + Icon: menuData.Icon, + Level: menuData.Level, + IsUsed: 1, + IsDeleted: -1, + CreatedAt: time.Time{}, + CreatedUser: ctx.SessionUserInfo().UserName, + }); err != nil { return 0, err } return diff --git a/internal/services/menu/service_createaction.go b/internal/services/menu/service_createaction.go index 0c65130..2011137 100755 --- a/internal/services/menu/service_createaction.go +++ b/internal/services/menu/service_createaction.go @@ -2,26 +2,29 @@ package menu import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu_action" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" + "time" ) type CreateMenuActionData struct { - MenuId int32 `json:"menu_id"` // 菜单栏ID + MenuId int64 `json:"menu_id"` // 菜单栏ID Method string `json:"method"` // 请求方法 API string `json:"api"` // 请求地址 } func (s *service) CreateAction(ctx core.Context, menuActionData *CreateMenuActionData) (id int32, err error) { - model := menu_action.NewModel() - model.MenuId = menuActionData.MenuId - model.Method = menuActionData.Method - model.Api = menuActionData.API - model.CreatedUser = ctx.SessionUserInfo().UserName - model.IsDeleted = -1 - - id, err = model.Create(s.db.GetDbW().WithContext(ctx.RequestContext())) - if err != nil { + if err = query.MenuAction.WithContext(ctx.RequestContext()). + Create(&model.MenuAction{ + MenuID: menuActionData.MenuId, + Method: menuActionData.Method, + API: menuActionData.API, + IsDeleted: -1, + CreatedAt: time.Time{}, + CreatedUser: ctx.SessionUserInfo().UserName, + }); err != nil { return 0, err } + return } diff --git a/internal/services/menu/service_delete.go b/internal/services/menu/service_delete.go index 1c0a2c2..5322950 100755 --- a/internal/services/menu/service_delete.go +++ b/internal/services/menu/service_delete.go @@ -2,20 +2,16 @@ package menu import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) -func (s *service) Delete(ctx core.Context, id int32) (err error) { - data := map[string]interface{}{ - "is_deleted": 1, - "updated_user": ctx.SessionUserInfo().UserName, - } - - qb := menu.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) - if err != nil { +func (s *service) Delete(ctx core.Context, id int64) (err error) { + if _, err = query.Menu.WithContext(ctx.RequestContext()). + Where(query.Menu.ID.Eq(id)). + UpdateSimple( + query.Menu.IsDeleted.Value(1), + query.Menu.UpdatedUser.Value(ctx.SessionUserInfo().UserName), + ); err != nil { return err } diff --git a/internal/services/menu/service_deleteaction.go b/internal/services/menu/service_deleteaction.go index 98f37fc..b78d361 100755 --- a/internal/services/menu/service_deleteaction.go +++ b/internal/services/menu/service_deleteaction.go @@ -2,32 +2,27 @@ package menu import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu_action" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" "gorm.io/gorm" ) -func (s *service) DeleteAction(ctx core.Context, id int32) (err error) { +func (s *service) DeleteAction(ctx core.Context, id int64) (err error) { // 先查询 id 是否存在 - _, err = menu_action.NewQueryBuilder(). - WhereIsDeleted(mysql.EqualPredicate, -1). - WhereId(mysql.EqualPredicate, id). - First(s.db.GetDbR().WithContext(ctx.RequestContext())) - + _, err = query.MenuAction.WithContext(ctx.RequestContext()). + Where(query.MenuAction.IsDeleted.Eq(-1)). + Where(query.MenuAction.ID.Eq(id)). + First() if err == gorm.ErrRecordNotFound { return nil } - data := map[string]interface{}{ - "is_deleted": 1, - "updated_user": ctx.SessionUserInfo().UserName, - } - - qb := menu_action.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) - if err != nil { + if _, err = query.MenuAction.WithContext(ctx.RequestContext()). + Where(query.MenuAction.ID.Eq(id)). + UpdateColumnSimple( + query.MenuAction.IsDeleted.Value(1), + query.MenuAction.UpdatedUser.Value(ctx.SessionUserInfo().UserName), + ); err != nil { return err } diff --git a/internal/services/menu/service_detail.go b/internal/services/menu/service_detail.go index b02f318..fa712a5 100755 --- a/internal/services/menu/service_detail.go +++ b/internal/services/menu/service_detail.go @@ -2,29 +2,25 @@ package menu import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type SearchOneData struct { - Id int32 // 用户ID - IsUsed int32 // 是否启用 1:是 -1:否 + Id int64 // 用户ID + IsUsed int64 // 是否启用 1:是 -1:否 } -func (s *service) Detail(ctx core.Context, searchOneData *SearchOneData) (info *menu.Menu, err error) { - - qb := menu.NewQueryBuilder() - qb.WhereIsDeleted(mysql.EqualPredicate, -1) - +func (s *service) Detail(ctx core.Context, searchOneData *SearchOneData) (menu *model.Menu, err error) { + iMenuDo := query.Menu.WithContext(ctx.RequestContext()) + iMenuDo = iMenuDo.Where(query.Menu.IsDeleted.Eq(-1)) if searchOneData.Id != 0 { - qb.WhereId(mysql.EqualPredicate, searchOneData.Id) + iMenuDo = iMenuDo.Where(query.Menu.ID.Eq(searchOneData.Id)) } - if searchOneData.IsUsed != 0 { - qb.WhereIsUsed(mysql.EqualPredicate, searchOneData.IsUsed) + iMenuDo = iMenuDo.Where(query.Menu.IsUsed.Eq(searchOneData.IsUsed)) } - - info, err = qb.QueryOne(s.db.GetDbR().WithContext(ctx.RequestContext())) + menu, err = iMenuDo.First() if err != nil { return nil, err } diff --git a/internal/services/menu/service_list.go b/internal/services/menu/service_list.go index ae9e942..53ed0f8 100755 --- a/internal/services/menu/service_list.go +++ b/internal/services/menu/service_list.go @@ -2,26 +2,20 @@ package menu import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type SearchData struct { - Pid int32 // 父类ID + Pid int64 // 父类ID } -func (s *service) List(ctx core.Context, searchData *SearchData) (listData []*menu.Menu, err error) { - - qb := menu.NewQueryBuilder() - qb.WhereIsDeleted(mysql.EqualPredicate, -1) - +func (s *service) List(ctx core.Context, searchData *SearchData) (menus []*model.Menu, err error) { + iMenuDo := query.Menu.WithContext(ctx.RequestContext()).Where(query.Menu.IsDeleted.Eq(-1)) if searchData.Pid != 0 { - qb.WherePid(mysql.EqualPredicate, searchData.Pid) + iMenuDo = iMenuDo.Where(query.Menu.Pid.Eq(searchData.Pid)) } - - listData, err = qb. - OrderBySort(true). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + menus, err = iMenuDo.Order(query.Menu.Sort).Find() if err != nil { return nil, err } diff --git a/internal/services/menu/service_listaction.go b/internal/services/menu/service_listaction.go index 44a4b60..5ba097b 100755 --- a/internal/services/menu/service_listaction.go +++ b/internal/services/menu/service_listaction.go @@ -2,26 +2,21 @@ package menu import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu_action" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/model" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type SearchListActionData struct { - MenuId int32 `json:"menu_id"` // 菜单栏ID + MenuId int64 `json:"menu_id"` // 菜单栏ID } -func (s *service) ListAction(ctx core.Context, searchData *SearchListActionData) (listData []*menu_action.MenuAction, err error) { - - qb := menu_action.NewQueryBuilder() - qb.WhereIsDeleted(mysql.EqualPredicate, -1) - +func (s *service) ListAction(ctx core.Context, searchData *SearchListActionData) (menuActions []*model.MenuAction, err error) { + iMenuActionDo := query.MenuAction.WithContext(ctx.RequestContext()) + iMenuActionDo = iMenuActionDo.Where(query.MenuAction.IsDeleted.Eq(-1)) if searchData.MenuId != 0 { - qb.WhereMenuId(mysql.EqualPredicate, searchData.MenuId) + iMenuActionDo = iMenuActionDo.Where(query.MenuAction.MenuID.Eq(searchData.MenuId)) } - - listData, err = qb. - OrderById(false). - QueryAll(s.db.GetDbR().WithContext(ctx.RequestContext())) + menuActions, err = iMenuActionDo.Order(query.MenuAction.ID.Desc()).Find() if err != nil { return nil, err } diff --git a/internal/services/menu/service_modify.go b/internal/services/menu/service_modify.go index 4685e5e..092300b 100755 --- a/internal/services/menu/service_modify.go +++ b/internal/services/menu/service_modify.go @@ -2,8 +2,7 @@ package menu import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) type UpdateMenuData struct { @@ -12,18 +11,16 @@ type UpdateMenuData struct { Icon string // 图标 } -func (s *service) Modify(ctx core.Context, id int32, menuData *UpdateMenuData) (err error) { - data := map[string]interface{}{ - "name": menuData.Name, - "link": menuData.Link, - "icon": menuData.Icon, - "updated_user": ctx.SessionUserInfo().UserName, - } +func (s *service) Modify(ctx core.Context, id int64, menuData *UpdateMenuData) (err error) { - qb := menu.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) - if err != nil { + if _, err = query.Menu.WithContext(ctx.RequestContext()). + Where(query.Menu.ID.Eq(id)). + UpdateColumnSimple( + query.Menu.Name.Value(menuData.Name), + query.Menu.Link.Value(menuData.Link), + query.Menu.Icon.Value(menuData.Icon), + query.Menu.UpdatedUser.Value(ctx.SessionUserInfo().UserName), + ); err != nil { return err } diff --git a/internal/services/menu/service_updatesort.go b/internal/services/menu/service_updatesort.go index 23f1117..0ace0ad 100755 --- a/internal/services/menu/service_updatesort.go +++ b/internal/services/menu/service_updatesort.go @@ -2,20 +2,16 @@ package menu import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) -func (s *service) UpdateSort(ctx core.Context, id int32, sort int32) (err error) { - data := map[string]interface{}{ - "sort": sort, - "updated_user": ctx.SessionUserInfo().UserName, - } - - qb := menu.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) - if err != nil { +func (s *service) UpdateSort(ctx core.Context, id, sort int64) (err error) { + if _, err = query.Menu.WithContext(ctx.RequestContext()). + Where(query.Menu.ID.Eq(id)). + UpdateColumnSimple( + query.Menu.Sort.Value(sort), + query.Menu.UpdatedUser.Value(ctx.SessionUserInfo().UserName), + ); err != nil { return err } diff --git a/internal/services/menu/service_updateused.go b/internal/services/menu/service_updateused.go index db34b1d..7d104e4 100755 --- a/internal/services/menu/service_updateused.go +++ b/internal/services/menu/service_updateused.go @@ -2,20 +2,16 @@ package menu import ( "github.com/ch3nnn/webstack-go/internal/pkg/core" - "github.com/ch3nnn/webstack-go/internal/repository/mysql" - "github.com/ch3nnn/webstack-go/internal/repository/mysql/menu" + "github.com/ch3nnn/webstack-go/internal/repository/mysql/query" ) -func (s *service) UpdateUsed(ctx core.Context, id int32, used int32) (err error) { - data := map[string]interface{}{ - "is_used": used, - "updated_user": ctx.SessionUserInfo().UserName, - } - - qb := menu.NewQueryBuilder() - qb.WhereId(mysql.EqualPredicate, id) - err = qb.Updates(s.db.GetDbW().WithContext(ctx.RequestContext()), data) - if err != nil { +func (s *service) UpdateUsed(ctx core.Context, id, used int64) (err error) { + if _, err = query.Menu.WithContext(ctx.RequestContext()). + Where(query.Menu.ID.Eq(id)). + UpdateColumnSimple( + query.Menu.IsUsed.Value(used), + query.Menu.UpdatedUser.Value(ctx.SessionUserInfo().UserName), + ); err != nil { return err } From 8a2bc82c15e29fad458e09388c715b428b6b0ed6 Mon Sep 17 00:00:00 2001 From: ch3nnn Date: Sun, 4 Jun 2023 22:06:08 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=20handlergen=20?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/handlergen/generate_handler.go | 106 +++++++++++++++++++ internal/render/generator/handler_execute.go | 35 +----- scripts/gormgen.bat | 50 --------- scripts/gormgen.sh | 33 ------ scripts/handlergen.bat | 22 ---- scripts/handlergen.sh | 19 ---- 6 files changed, 110 insertions(+), 155 deletions(-) create mode 100644 cmd/handlergen/generate_handler.go delete mode 100644 scripts/gormgen.bat delete mode 100644 scripts/gormgen.sh delete mode 100644 scripts/handlergen.bat delete mode 100644 scripts/handlergen.sh diff --git a/cmd/handlergen/generate_handler.go b/cmd/handlergen/generate_handler.go new file mode 100644 index 0000000..38082c2 --- /dev/null +++ b/cmd/handlergen/generate_handler.go @@ -0,0 +1,106 @@ +package handlergen + +import ( + "fmt" + "github.com/xinliangnote/go-gin-api/pkg/errors" + "go/token" + "io/ioutil" + "os" + "strings" + "unicode" + + "github.com/dave/dst" + "github.com/dave/dst/decorator" +) + +func Lcfirst(str string) string { + for i, v := range str { + return string(unicode.ToLower(v)) + str[i+1:] + } + return "" +} + +func GenerateHandler(handlerName string) (err error) { + fs := token.NewFileSet() + filePath := fmt.Sprintf("./internal/api/%s", handlerName) + parsedFile, err := decorator.ParseFile(fs, filePath+"/handler.go", nil, 0) + if err != nil { + return errors.New(fmt.Sprintf("parsing package: %s: %s\n", filePath, err)) + } + + files, _ := ioutil.ReadDir(filePath) + if len(files) > 1 { + return errors.New(fmt.Sprintf("请先确保 %s 目录中,有且仅有 handler.go 一个文件。", filePath)) + } + + dst.Inspect(parsedFile, func(n dst.Node) bool { + decl, ok := n.(*dst.GenDecl) + if !ok || decl.Tok != token.TYPE { + return true + } + + for _, spec := range decl.Specs { + typeSpec, _ok := spec.(*dst.TypeSpec) + if !_ok { + continue + } + + var interfaceType *dst.InterfaceType + if interfaceType, ok = typeSpec.Type.(*dst.InterfaceType); !ok { + continue + } + + for _, v := range interfaceType.Methods.List { + if len(v.Names) > 0 { + if v.Names[0].String() == "i" { + continue + } + + filepath := "./internal/api/" + handlerName + filename := fmt.Sprintf("%s/func_%s.go", filepath, strings.ToLower(v.Names[0].String())) + funcFile, err := os.OpenFile(filename, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0766) + if err != nil { + fmt.Printf("create and open func file error %v\n", err.Error()) + continue + } + + if funcFile == nil { + fmt.Printf("func file is nil \n") + continue + } + + fmt.Println(" └── file : ", filename) + + funcContent := fmt.Sprintf("package %s\n\n", handlerName) + funcContent += "import (\n" + funcContent += `"github.com/xinliangnote/go-gin-api/internal/pkg/core"` + funcContent += "\n)\n\n" + funcContent += fmt.Sprintf("\n\ntype %sRequest struct {}\n\n", Lcfirst(v.Names[0].String())) + funcContent += fmt.Sprintf("type %sResponse struct {}\n\n", Lcfirst(v.Names[0].String())) + + // 首行注释 + funcContent += fmt.Sprintf("%s\n", v.Decorations().Start.All()[0]) + + nameArr := strings.Split(v.Decorations().Start.All()[0], v.Names[0].String()) + funcContent += fmt.Sprintf("// @Summary%s \n", nameArr[1]) + funcContent += fmt.Sprintf("// @Description%s \n", nameArr[1]) + // Tags + funcContent += fmt.Sprintf("%s \n", v.Decorations().Start.All()[1]) + funcContent += fmt.Sprintf("// @Accept application/x-www-form-urlencoded \n") + funcContent += fmt.Sprintf("// @Produce json \n") + funcContent += fmt.Sprintf("// @Param Request body %sRequest true \"请求信息\" \n", Lcfirst(v.Names[0].String())) + funcContent += fmt.Sprintf("// @Success 200 {object} %sResponse \n", Lcfirst(v.Names[0].String())) + funcContent += fmt.Sprintf("// @Failure 400 {object} code.Failure \n") + // Router + funcContent += fmt.Sprintf("%s \n", v.Decorations().Start.All()[2]) + funcContent += fmt.Sprintf("func (h *handler) %s() core.HandlerFunc { \n return func(ctx core.Context) {\n\n}}", v.Names[0].String()) + + funcFile.WriteString(funcContent) + funcFile.Close() + } + } + } + return true + }) + return +} diff --git a/internal/render/generator/handler_execute.go b/internal/render/generator/handler_execute.go index d989a4e..db291c9 100755 --- a/internal/render/generator/handler_execute.go +++ b/internal/render/generator/handler_execute.go @@ -1,13 +1,7 @@ package generator_handler import ( - "bytes" - "fmt" - "os" - "os/exec" - "runtime" - "strings" - + "github.com/ch3nnn/webstack-go/cmd/handlergen" "github.com/ch3nnn/webstack-go/internal/pkg/core" ) @@ -16,10 +10,6 @@ type handlerExecuteRequest struct { } func (h *handler) HandlerExecute() core.HandlerFunc { - dir, _ := os.Getwd() - projectPath := strings.Replace(dir, "\\", "/", -1) - handlergenSh := projectPath + "/scripts/handlergen.sh" - handlergenBat := projectPath + "/scripts/handlergen.bat" return func(c core.Context) { req := new(handlerExecuteRequest) @@ -27,27 +17,10 @@ func (h *handler) HandlerExecute() core.HandlerFunc { c.Payload("参数传递有误") return } - shellPath := fmt.Sprintf("%s %s", handlergenSh, req.Name) - batPath := fmt.Sprintf("%s %s", handlergenBat, req.Name) - - command := new(exec.Cmd) - - if runtime.GOOS == "windows" { - command = exec.Command("cmd", "/C", batPath) - } else { - // runtime.GOOS = linux or darwin - command = exec.Command("/bin/bash", "-c", shellPath) - } - - var stderr bytes.Buffer - command.Stderr = &stderr - - output, err := command.Output() - if err != nil { - c.Payload(stderr.String()) + if err := handlergen.GenerateHandler(req.Name); err != nil { + c.Payload(err.Error()) return } - - c.Payload(string(output)) + c.Payload("创建成功!") } } diff --git a/scripts/gormgen.bat b/scripts/gormgen.bat deleted file mode 100644 index 149dbff..0000000 --- a/scripts/gormgen.bat +++ /dev/null @@ -1,50 +0,0 @@ -@echo off -chcp 65001 -echo. -echo Regenerating file -echo. -go run -v .\cmd\mysqlmd\main.go -addr %1 -user %2 -pass %3 -name %4 -tables %5 -if %errorlevel% == 1 ( -echo. -echo failed!!! -exit 1 -) -echo. -echo create curd code : -echo. -go build -o gormgen .\cmd\gormgen\main.go -if %errorlevel% == 1 ( -echo. -echo failed!!! -exit 1 -) - -if exist %GOPATH%\bin ( -move gormgen %GOPATH%\bin\gormgen.exe -) else ( -md %GOPATH%\bin -move gormgen %GOPATH%\bin\gormgen.exe -) -if %errorlevel% == 1 ( -echo. -echo failed!!! -exit 1 -) - -go generate .\... -if %errorlevel% == 1 ( -echo. -echo failed!!! -exit 1 -) -echo. -echo Formatting code -echo. -go run -v .\cmd\mfmt\main.go -if %errorlevel% == 1 ( -echo. -echo failed!!! -exit 1 -) -echo. -echo Done. diff --git a/scripts/gormgen.sh b/scripts/gormgen.sh deleted file mode 100644 index 4a867fa..0000000 --- a/scripts/gormgen.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -shellExit() -{ -if [ $1 -eq 1 ]; then - printf "\nfailed!!!\n\n" - exit 1 -fi -} - -printf "\nRegenerating file\n\n" -time go run -v ./cmd/mysqlmd/main.go -addr $1 -user $2 -pass $3 -name $4 -tables $5 -shellExit $? - -printf "\ncreate curd code : \n" -time go build -o gormgen ./cmd/gormgen/main.go -shellExit $? - -if [ ! -d $GOPATH/bin ];then - mkdir -p $GOPATH/bin -fi - -mv gormgen $GOPATH/bin -shellExit $? - -go generate ./... -shellExit $? - -printf "\nFormatting code\n\n" -time go run -v ./cmd/mfmt/main.go -shellExit $? - -printf "\nDone.\n\n" diff --git a/scripts/handlergen.bat b/scripts/handlergen.bat deleted file mode 100644 index 75688e5..0000000 --- a/scripts/handlergen.bat +++ /dev/null @@ -1,22 +0,0 @@ -@echo off -chcp 65001 -echo. -echo Regenerating handler file -echo. -go run -v .\cmd\handlergen\main.go -handler %1 -if %errorlevel% == 1 ( -echo. -echo failed!!! -exit 1 -) -echo. -echo Formatting code -echo. -go run -v .\cmd\mfmt\main.go -if %errorlevel% == 1 ( -echo. -echo failed!!! -exit 1 -) -echo. -echo Done. diff --git a/scripts/handlergen.sh b/scripts/handlergen.sh deleted file mode 100644 index d02d8aa..0000000 --- a/scripts/handlergen.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -shellExit() -{ -if [ $1 -eq 1 ]; then - printf "\nfailed!!!\n\n" - exit 1 -fi -} - -printf "\nRegenerating handler file\n\n" -time go run -v ./cmd/handlergen/main.go -handler $1 -shellExit $? - -printf "\nFormatting code\n\n" -time go run -v ./cmd/mfmt/main.go -shellExit $? - -printf "\nDone.\n\n"