diff --git a/.gitignore b/.gitignore
index 3233824..1428acd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,8 @@
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
out/
+logs/
+wachat/
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
diff --git a/.idea/GOHCache.xml b/.idea/GOHCache.xml
index 9542f22..5f92c90 100644
--- a/.idea/GOHCache.xml
+++ b/.idea/GOHCache.xml
@@ -7,6 +7,7 @@
+
@@ -14,12 +15,14 @@
+
+
@@ -27,6 +30,7 @@
+
@@ -34,6 +38,7 @@
+
@@ -41,6 +46,7 @@
+
@@ -48,6 +54,9 @@
+
+
+
@@ -55,13 +64,19 @@
+
+
+
+
+
+
@@ -70,12 +85,16 @@
+
+
+
+
@@ -83,6 +102,8 @@
+
+
@@ -90,6 +111,8 @@
+
+
@@ -97,6 +120,8 @@
+
+
@@ -104,6 +129,9 @@
+
+
+
@@ -111,6 +139,8 @@
+
+
@@ -118,6 +148,8 @@
+
+
@@ -125,6 +157,8 @@
+
+
@@ -132,6 +166,9 @@
+
+
+
@@ -139,13 +176,20 @@
+
+
+
+
+
+
+
@@ -153,20 +197,25 @@
+
+
+
+
+
@@ -174,6 +223,7 @@
+
@@ -181,6 +231,7 @@
+
@@ -188,6 +239,9 @@
+
+
+
@@ -195,6 +249,7 @@
+
@@ -202,6 +257,7 @@
+
@@ -209,6 +265,7 @@
+
@@ -216,35 +273,25 @@
+
+
+
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
+
@@ -252,6 +299,7 @@
+
@@ -259,6 +307,7 @@
+
@@ -266,6 +315,7 @@
+
@@ -274,6 +324,7 @@
+
@@ -281,12 +332,16 @@
+
+
+
+
@@ -294,6 +349,7 @@
+
@@ -301,7 +357,7 @@
-
+
@@ -309,6 +365,7 @@
+
@@ -316,6 +373,7 @@
+
@@ -323,13 +381,18 @@
+
+
+
+
+
@@ -337,6 +400,7 @@
+
@@ -344,6 +408,7 @@
+
@@ -352,12 +417,14 @@
+
+
@@ -365,6 +432,7 @@
+
@@ -372,6 +440,7 @@
+
@@ -379,6 +448,7 @@
+
@@ -386,6 +456,7 @@
+
@@ -393,6 +464,7 @@
+
@@ -400,6 +472,7 @@
+
@@ -407,20 +480,29 @@
+
+
+
+
+
+
+
+
+
@@ -429,6 +511,7 @@
+
@@ -436,19 +519,30 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -456,6 +550,8 @@
+
+
@@ -463,6 +559,8 @@
+
+
@@ -470,6 +568,8 @@
+
+
@@ -477,6 +577,7 @@
+
@@ -484,6 +585,7 @@
+
@@ -491,139 +593,207 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
@@ -631,6 +801,7 @@
+
@@ -638,6 +809,7 @@
+
@@ -645,13 +817,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -659,6 +843,9 @@
+
+
+
@@ -666,6 +853,9 @@
+
+
+
@@ -673,6 +863,9 @@
+
+
+
@@ -680,6 +873,7 @@
+
@@ -687,21 +881,18 @@
+
+
+
-
-
-
-
-
-
-
+
@@ -719,23 +910,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -743,6 +921,7 @@
+
@@ -750,6 +929,7 @@
+
@@ -757,6 +937,7 @@
+
@@ -764,238 +945,389 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1003,6 +1335,2320 @@
-
+
\ No newline at end of file
diff --git a/app/core/api/Dockerfile b/app/auth/api/Dockerfile
similarity index 100%
rename from app/core/api/Dockerfile
rename to app/auth/api/Dockerfile
diff --git a/app/core/api/core.api b/app/auth/api/auth.api
similarity index 53%
rename from app/core/api/core.api
rename to app/auth/api/auth.api
index a3df677..8331e72 100644
--- a/app/core/api/core.api
+++ b/app/auth/api/auth.api
@@ -1,8 +1,8 @@
syntax = "v1"
info (
- title: "核心服务"
- desc: "核心服务"
+ title: "鉴权服务"
+ desc: "鉴权服务"
author: "landaiqing"
email: "landaiqing@126.com"
version: "v1.0.0"
@@ -71,80 +71,29 @@ type (
}
)
-// 评论请求参数
+// 刷新token响应参数
type (
- // 评论提交请求参数
- CommentRequest {
- Content string `json:"content"`
- Images []string `json:"images,optional"`
- TopicId string `json:"topic_id"`
- Author string `json:"author"`
- Key string `json:"key"`
- Point []int64 `json:"point"`
- }
- // 回复评论提交请求参数
- ReplyCommentRequest {
- Content string `json:"content"`
- Images []string `json:"images,optional"`
- TopicId string `json:"topic_id" `
- ReplyId int64 `json:"reply_id" `
- ReplyUser string `json:"reply_user" `
- Author string `json:"author"`
- Key string `json:"key"`
- Point []int64 `json:"point"`
- }
- // 回复回复请求参数
- ReplyReplyRequest {
- Content string `json:"content"`
- Images []string `json:"images,optional"`
- TopicId string `json:"topic_id"`
- ReplyTo int64 `json:"reply_to"`
- ReplyId int64 `json:"reply_id"`
- ReplyUser string `json:"reply_user" `
- Author string `json:"author"`
- Key string `json:"key"`
- Point []int64 `json:"point"`
- }
- // 评论列表请求参数
- CommentListRequest {
- TopicId string `json:"topic_id"`
- Page int `json:"page,default=1,optional"`
- Size int `json:"size,default=5,optional"`
- IsHot bool `json:"is_hot,default=true,optional"`
- }
- // 回复列表请求参数
- ReplyListRequest {
- TopicId string `json:"topic_id"`
- CommentId int64 `json:"comment_id"`
- Page int `json:"page,default=1,optional"`
- Size int `json:"size,default=5,optional"`
- }
- // 点赞评论的请求参数
- CommentLikeRequest {
- TopicId string `json:"topic_id"`
- CommentId int64 `json:"comment_id"`
- }
- CommentDisLikeRequest {
- TopicId string `json:"topic_id"`
- CommentId int64 `json:"comment_id"`
- }
-)
-
-// 上传图片请求参数
-type (
- UploadRequest {
- Image string `json:"image"`
+ RefreshTokenResponse {
AccessToken string `json:"access_token"`
- userId string `json:"user_id"`
+ ExpireAt int64 `json:"expire_at"`
}
)
-// 统一响应参数
+// 验证码响应参数
type (
- Response {
- Code int64 `json:"code"`
- Message string `json:"message"`
- Data interface{} `json:"data,optional"`
+ RotateCaptchaResponse {
+ Key string `json:"key"`
+ Image string `json:"image"`
+ Thumb string `json:"thumb"`
+ }
+ SlideCaptchaResponse {
+ Key string `json:"key"`
+ Image string `json:"image"`
+ Thumb string `json:"thumb"`
+ ThumbWidth int64 `json:"thumb_width"`
+ ThumbHeight int64 `json:"thumb_height"`
+ ThumbX int64 `json:"thumb_x"`
+ ThumbY int64 `json:"thumb_y"`
}
)
@@ -159,26 +108,26 @@ type (
MaxConns: true // 是否开启最大连接数限制
Recover: true // 是否开启自动恢复
)
-service core {
+service auth {
// 账户登录
@handler accountLogin
- post /login (AccountLoginRequest) returns (Response)
+ post /login (AccountLoginRequest) returns (LoginResponse)
// 手机号登录
@handler phoneLogin
- post /phone/login (PhoneLoginRequest) returns (Response)
+ post /phone/login (PhoneLoginRequest) returns (LoginResponse)
// 重置密码
@handler resetPassword
- post /reset/password (ResetPasswordRequest) returns (Response)
+ post /reset/password (ResetPasswordRequest)
// 微信公众号登录
@handler wechatOffiaccountLogin
- post /wechat/offiaccount/login (WechatOffiaccountLoginRequest) returns (Response)
+ post /wechat/offiaccount/login (WechatOffiaccountLoginRequest) returns (LoginResponse)
// 获取微信公众号二维码
@handler getWechatOffiaccountQrcode
- post /wechat/offiaccount/qrcode (OAuthWechatRequest) returns (Response)
+ post /wechat/offiaccount/qrcode (OAuthWechatRequest) returns (string)
}
@server (
@@ -191,9 +140,9 @@ service core {
MaxConns: true // 是否开启最大连接数限制
Recover: true // 是否开启自动恢复
)
-service core {
+service auth {
@handler refreshToken
- post /token/refresh returns (Response)
+ post /token/refresh returns (RefreshTokenResponse)
}
// 客户端服务
@@ -207,24 +156,21 @@ service core {
MaxConns: true // 是否开启最大连接数限制
Recover: true // 是否开启自动恢复
)
-service core {
+service auth {
@handler generateClientId
- get /generate returns (Response)
+ get /generate returns (string)
}
@server (
group: websocket // 微服务分组
prefix: /api/ws // 微服务前缀
)
-service core {
+service auth {
@handler qrcodeWebsocket
get /qrcode
@handler messageWebsocket
get /message
-
- @handler fileWebsocket
- get /file
}
@server (
@@ -233,19 +179,19 @@ service core {
timeout: 10s // 超时时间
maxBytes: 1048576 // 最大请求大小
signature: false // 是否开启签名验证
- middleware: SecurityHeadersMiddleware,NonceMiddleware // 注册中间件
+ middleware: SecurityHeadersMiddleware // 注册中间件
MaxConns: true // 是否开启最大连接数限制
Recover: true // 是否开启自动恢复
)
-service core {
+service auth {
@handler getGiteeOauthUrl
- get /gitee/url returns (Response)
+ get /gitee/url returns (string)
@handler getGithubOauthUrl
- get /github/url (OAuthRequest) returns (Response)
+ get /github/url (OAuthRequest) returns (string)
@handler getQqOauthUrl
- get /qq/url (OAuthRequest) returns (Response)
+ get /qq/url (OAuthRequest) returns (string)
@handler giteeCallback
get /gitee/callback (OAuthCallbackRequest) returns (string)
@@ -274,15 +220,15 @@ service core {
MaxConns: true // 是否开启最大连接数限制
Recover: true // 是否开启自动恢复
)
-service core {
+service auth {
@handler sendSmsByAliyun
- post /ali/send (SmsSendRequest) returns (Response)
+ post /ali/send (SmsSendRequest)
@handler sendSmsBySmsbao
- post /smsbao/send (SmsSendRequest) returns (Response)
+ post /smsbao/send (SmsSendRequest)
@handler sendSmsByTest
- post /test/send (SmsSendRequest) returns (Response)
+ post /test/send (SmsSendRequest) returns (string)
}
@server (
@@ -295,60 +241,11 @@ service core {
MaxConns: true // 是否开启最大连接数限制
Recover: true // 是否开启自动恢复
)
-service core {
+service auth {
@handler generateRotateCaptcha
- get /rotate/generate returns (Response)
+ get /rotate/generate returns (RotateCaptchaResponse)
@handler generateSlideBasicCaptcha
- get /slide/generate returns (Response)
-}
-
-@server (
- group: comment // 微服务分组
- prefix: /api/auth/comment // 微服务前缀
- timeout: 10s // 超时时间
- maxBytes: 1048576 // 最大请求大小
- signature: false // 是否开启签名验证
- middleware: SecurityHeadersMiddleware,CasbinVerifyMiddleware,AuthorizationMiddleware,NonceMiddleware // 注册中间件
- MaxConns: true // 是否开启最大连接数限制
- Recover: true // 是否开启自动恢复
- jwt: Auth // 是否开启jwt验证
-)
-service core {
- @handler getCommentList
- post /list (CommentListRequest) returns (Response)
-
- @handler getReplyList
- post /reply/list (ReplyListRequest) returns (Response)
-
- @handler submitComment
- post /submit (CommentRequest) returns (Response)
-
- @handler submitReplyComment
- post /reply/submit (ReplyCommentRequest) returns (Response)
-
- @handler submitReplyReply
- post /reply/reply/submit (ReplyReplyRequest) returns (Response)
-
- @handler likeComment
- post /like (CommentLikeRequest) returns (Response)
-
- @handler dislikeComment
- post /dislike (CommentDisLikeRequest) returns (Response)
-}
-
-@server (
- group: upscale // 微服务分组
- prefix: /api/auth/upscale // 微服务前缀
- timeout: 10s // 超时时间
- maxBytes: 10485760 // 最大请求大小
- signature: false // 是否开启签名验证
- middleware: SecurityHeadersMiddleware,NonceMiddleware // 注册中间件
- MaxConns: true // 是否开启最大连接数限制
- Recover: true // 是否开启自动恢复
-)
-service core {
- @handler uploadImage
- post /upload (UploadRequest) returns (Response)
+ get /slide/generate returns (SlideCaptchaResponse)
}
diff --git a/app/core/api/core.go b/app/auth/api/auth.go
similarity index 60%
rename from app/core/api/core.go
rename to app/auth/api/auth.go
index 0d7e5c4..fa76992 100644
--- a/app/core/api/core.go
+++ b/app/auth/api/auth.go
@@ -3,18 +3,17 @@ package main
import (
"flag"
"fmt"
-
"github.com/zeromicro/go-zero/core/conf"
"github.com/zeromicro/go-zero/rest"
+ "schisandra-album-cloud-microservices/common/idgenerator"
+ "schisandra-album-cloud-microservices/common/middleware"
- "schisandra-album-cloud-microservices/app/core/api/common/middleware"
- "schisandra-album-cloud-microservices/app/core/api/internal/config"
- "schisandra-album-cloud-microservices/app/core/api/internal/handler"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/repository/idgenerator"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/config"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/handler"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
)
-var configFile = flag.String("f", "etc/core.yaml", "the config file")
+var configFile = flag.String("f", "etc/auth.yaml", "the config file")
func main() {
flag.Parse()
@@ -32,8 +31,8 @@ func main() {
server.Use(middleware.I18nMiddleware)
ctx := svc.NewServiceContext(c)
handler.RegisterHandlers(server, ctx)
- // init id generator
- idgenerator.NewIDGenerator()
+ // initialize id generator
+ idgenerator.NewIDGenerator(0)
fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
server.Start()
}
diff --git a/app/core/api/etc/core.yaml b/app/auth/api/etc/auth.yaml
similarity index 92%
rename from app/core/api/etc/core.yaml
rename to app/auth/api/etc/auth.yaml
index 6b2ad92..2e69b7e 100644
--- a/app/core/api/etc/core.yaml
+++ b/app/auth/api/etc/auth.yaml
@@ -1,9 +1,9 @@
# 定义服务的名称,会出现在 log 和 tracer 中
-Name: schisandra-cloud-album
+Name: schisandra-auth-service
# 监听地址
Host: 0.0.0.0
# 监听端口
-Port: 80
+Port: 8080
# 服务的环境,目前我们预定义了 dev。在dev 环境我们会开启反射 dev,test,rt,pre, pro
Mode: pro
# 打点上报,将一些 metrics 上报到对应的地址,如果为空,则不上报
@@ -21,7 +21,7 @@ Verbose: false
# 日志配置
Log:
# 服务名称
- ServiceName: schisandra-cloud-album
+ ServiceName: schisandra-auth-service
# 日志打印模式,console 控制台 file, console
Mode: console
# 日志格式, json 格式 或者 plain 纯文本
@@ -92,18 +92,6 @@ Redis:
Pass: LDQ20020618xxx
# Redis 数据库
DB: 0
-# Mongo 配置
-Mongo:
- # MongoDB 地址
- Uri: mongodb://1.95.0.111:27017
- # MongoDB 用户名
- Username: landaiqing
- # MongoDB 密码
- Password: LDQ20020618xxx
- # MongoDB 数据库
- Database: schisandra-cloud-album
- # MongoDB 认证源
- AuthSource: admin
# 微信配置
Wechat:
# 微信公众号APPID
diff --git a/app/core/api/etc/rbac_model.conf b/app/auth/api/etc/rbac_model.conf
similarity index 100%
rename from app/core/api/etc/rbac_model.conf
rename to app/auth/api/etc/rbac_model.conf
diff --git a/app/core/api/etc/rsa_private_key.pem b/app/auth/api/etc/rsa_private_key.pem
similarity index 100%
rename from app/core/api/etc/rsa_private_key.pem
rename to app/auth/api/etc/rsa_private_key.pem
diff --git a/app/auth/api/generate.go b/app/auth/api/generate.go
new file mode 100644
index 0000000..3a90a63
--- /dev/null
+++ b/app/auth/api/generate.go
@@ -0,0 +1,3 @@
+package main
+
+//go:generate goctl api go -api auth.api -dir . --style=go_zero
diff --git a/app/core/api/internal/config/config.go b/app/auth/api/internal/config/config.go
similarity index 88%
rename from app/core/api/internal/config/config.go
rename to app/auth/api/internal/config/config.go
index 2c6b0b1..47bb54a 100644
--- a/app/core/api/internal/config/config.go
+++ b/app/auth/api/internal/config/config.go
@@ -10,7 +10,6 @@ type Config struct {
Auth struct {
AccessSecret string
}
-
Encrypt struct {
Key string
IV string
@@ -25,13 +24,6 @@ type Config struct {
Pass string
DB int
}
- Mongo struct {
- Uri string
- Username string
- Password string
- AuthSource string
- Database string
- }
Wechat struct {
AppID string
AppSecret string
diff --git a/app/auth/api/internal/handler/captcha/generate_rotate_captcha_handler.go b/app/auth/api/internal/handler/captcha/generate_rotate_captcha_handler.go
new file mode 100644
index 0000000..6a63af9
--- /dev/null
+++ b/app/auth/api/internal/handler/captcha/generate_rotate_captcha_handler.go
@@ -0,0 +1,21 @@
+package captcha
+
+import (
+ "net/http"
+ "schisandra-album-cloud-microservices/common/xhttp"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/captcha"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+)
+
+func GenerateRotateCaptchaHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ l := captcha.NewGenerateRotateCaptchaLogic(r.Context(), svcCtx)
+ resp, err := l.GenerateRotateCaptcha()
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/auth/api/internal/handler/captcha/generate_slide_basic_captcha_handler.go b/app/auth/api/internal/handler/captcha/generate_slide_basic_captcha_handler.go
new file mode 100644
index 0000000..13f7992
--- /dev/null
+++ b/app/auth/api/internal/handler/captcha/generate_slide_basic_captcha_handler.go
@@ -0,0 +1,21 @@
+package captcha
+
+import (
+ "net/http"
+ "schisandra-album-cloud-microservices/common/xhttp"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/captcha"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+)
+
+func GenerateSlideBasicCaptchaHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ l := captcha.NewGenerateSlideBasicCaptchaLogic(r.Context(), svcCtx)
+ resp, err := l.GenerateSlideBasicCaptcha()
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/auth/api/internal/handler/client/generate_client_id_handler.go b/app/auth/api/internal/handler/client/generate_client_id_handler.go
new file mode 100644
index 0000000..fa6eeb1
--- /dev/null
+++ b/app/auth/api/internal/handler/client/generate_client_id_handler.go
@@ -0,0 +1,23 @@
+package client
+
+import (
+ "net/http"
+ "schisandra-album-cloud-microservices/common/utils"
+ "schisandra-album-cloud-microservices/common/xhttp"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/client"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+)
+
+func GenerateClientIdHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ clientIP := utils.GetClientIP(r)
+ l := client.NewGenerateClientIdLogic(r.Context(), svcCtx)
+ resp, err := l.GenerateClientId(clientIP)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/auth/api/internal/handler/oauth/get_gitee_oauth_url_handler.go b/app/auth/api/internal/handler/oauth/get_gitee_oauth_url_handler.go
new file mode 100644
index 0000000..0656e94
--- /dev/null
+++ b/app/auth/api/internal/handler/oauth/get_gitee_oauth_url_handler.go
@@ -0,0 +1,21 @@
+package oauth
+
+import (
+ "net/http"
+ "schisandra-album-cloud-microservices/common/xhttp"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/oauth"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+)
+
+func GetGiteeOauthUrlHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ l := oauth.NewGetGiteeOauthUrlLogic(r.Context(), svcCtx)
+ resp, err := l.GetGiteeOauthUrl()
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/auth/api/internal/handler/oauth/get_github_oauth_url_handler.go b/app/auth/api/internal/handler/oauth/get_github_oauth_url_handler.go
new file mode 100644
index 0000000..a2bae68
--- /dev/null
+++ b/app/auth/api/internal/handler/oauth/get_github_oauth_url_handler.go
@@ -0,0 +1,29 @@
+package oauth
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/xhttp"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/oauth"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
+)
+
+func GetGithubOauthUrlHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.OAuthRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ httpx.ErrorCtx(r.Context(), w, err)
+ return
+ }
+
+ l := oauth.NewGetGithubOauthUrlLogic(r.Context(), svcCtx)
+ resp, err := l.GetGithubOauthUrl(&req)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/auth/api/internal/handler/oauth/get_qq_oauth_url_handler.go b/app/auth/api/internal/handler/oauth/get_qq_oauth_url_handler.go
new file mode 100644
index 0000000..587b185
--- /dev/null
+++ b/app/auth/api/internal/handler/oauth/get_qq_oauth_url_handler.go
@@ -0,0 +1,29 @@
+package oauth
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/xhttp"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/oauth"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
+)
+
+func GetQqOauthUrlHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.OAuthRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ httpx.ErrorCtx(r.Context(), w, err)
+ return
+ }
+
+ l := oauth.NewGetQqOauthUrlLogic(r.Context(), svcCtx)
+ resp, err := l.GetQqOauthUrl(&req)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/auth/api/internal/handler/oauth/gitee_callback_handler.go b/app/auth/api/internal/handler/oauth/gitee_callback_handler.go
new file mode 100644
index 0000000..8eef64e
--- /dev/null
+++ b/app/auth/api/internal/handler/oauth/gitee_callback_handler.go
@@ -0,0 +1,29 @@
+package oauth
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/xhttp"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/oauth"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
+)
+
+func GiteeCallbackHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.OAuthCallbackRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := oauth.NewGiteeCallbackLogic(r.Context(), svcCtx)
+ data, err := l.GiteeCallback(r, &req)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.OkHTML(w, data)
+ }
+ }
+}
diff --git a/app/auth/api/internal/handler/oauth/github_callback_handler.go b/app/auth/api/internal/handler/oauth/github_callback_handler.go
new file mode 100644
index 0000000..c5ee3e1
--- /dev/null
+++ b/app/auth/api/internal/handler/oauth/github_callback_handler.go
@@ -0,0 +1,28 @@
+package oauth
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/oauth"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
+ "schisandra-album-cloud-microservices/common/xhttp"
+)
+
+func GithubCallbackHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.OAuthCallbackRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := oauth.NewGithubCallbackLogic(r.Context(), svcCtx)
+ data, err := l.GithubCallback(r, &req)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.OkHTML(w, data)
+ }
+ }
+}
diff --git a/app/auth/api/internal/handler/oauth/qq_callback_handler.go b/app/auth/api/internal/handler/oauth/qq_callback_handler.go
new file mode 100644
index 0000000..97079b5
--- /dev/null
+++ b/app/auth/api/internal/handler/oauth/qq_callback_handler.go
@@ -0,0 +1,28 @@
+package oauth
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/oauth"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
+ "schisandra-album-cloud-microservices/common/xhttp"
+)
+
+func QqCallbackHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.OAuthCallbackRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := oauth.NewQqCallbackLogic(r.Context(), svcCtx)
+ data, err := l.QqCallback(r, &req)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.OkHTML(w, data)
+ }
+ }
+}
diff --git a/app/auth/api/internal/handler/oauth/wechat_offiaccount_callback_handler.go b/app/auth/api/internal/handler/oauth/wechat_offiaccount_callback_handler.go
new file mode 100644
index 0000000..5ef0d4e
--- /dev/null
+++ b/app/auth/api/internal/handler/oauth/wechat_offiaccount_callback_handler.go
@@ -0,0 +1,21 @@
+package oauth
+
+import (
+ "github.com/ArtisanCloud/PowerLibs/v3/http/helper"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/oauth"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/common/xhttp"
+)
+
+func WechatOffiaccountCallbackHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ l := oauth.NewWechatOffiaccountCallbackLogic(r.Context(), svcCtx)
+ res, err := l.WechatOffiaccountCallback(r)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ _ = helper.HttpResponseSend(res, w)
+ }
+ }
+}
diff --git a/app/core/api/internal/handler/oauth/wechat_offiaccount_callback_verify_handler.go b/app/auth/api/internal/handler/oauth/wechat_offiaccount_callback_verify_handler.go
similarity index 50%
rename from app/core/api/internal/handler/oauth/wechat_offiaccount_callback_verify_handler.go
rename to app/auth/api/internal/handler/oauth/wechat_offiaccount_callback_verify_handler.go
index 3dd40fb..f611993 100644
--- a/app/core/api/internal/handler/oauth/wechat_offiaccount_callback_verify_handler.go
+++ b/app/auth/api/internal/handler/oauth/wechat_offiaccount_callback_verify_handler.go
@@ -2,13 +2,10 @@ package oauth
import (
"github.com/ArtisanCloud/PowerLibs/v3/http/helper"
- "github.com/zeromicro/go-zero/core/logx"
"net/http"
-
- "github.com/zeromicro/go-zero/rest/httpx"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/oauth"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/oauth"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/common/xhttp"
)
func WechatOffiaccountCallbackVerifyHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
@@ -16,12 +13,7 @@ func WechatOffiaccountCallbackVerifyHandler(svcCtx *svc.ServiceContext) http.Han
l := oauth.NewWechatOffiaccountCallbackVerifyLogic(r.Context(), svcCtx)
res, err := l.WechatOffiaccountCallbackVerify(r)
if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
} else {
_ = helper.HttpResponseSend(res, w)
}
diff --git a/app/core/api/internal/handler/routes.go b/app/auth/api/internal/handler/routes.go
similarity index 65%
rename from app/core/api/internal/handler/routes.go
rename to app/auth/api/internal/handler/routes.go
index f73194d..951bc6b 100644
--- a/app/core/api/internal/handler/routes.go
+++ b/app/auth/api/internal/handler/routes.go
@@ -7,16 +7,14 @@ import (
"net/http"
"time"
- captcha "schisandra-album-cloud-microservices/app/core/api/internal/handler/captcha"
- client "schisandra-album-cloud-microservices/app/core/api/internal/handler/client"
- comment "schisandra-album-cloud-microservices/app/core/api/internal/handler/comment"
- oauth "schisandra-album-cloud-microservices/app/core/api/internal/handler/oauth"
- sms "schisandra-album-cloud-microservices/app/core/api/internal/handler/sms"
- token "schisandra-album-cloud-microservices/app/core/api/internal/handler/token"
- upscale "schisandra-album-cloud-microservices/app/core/api/internal/handler/upscale"
- user "schisandra-album-cloud-microservices/app/core/api/internal/handler/user"
- websocket "schisandra-album-cloud-microservices/app/core/api/internal/handler/websocket"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
+ captcha "schisandra-album-cloud-microservices/app/auth/api/internal/handler/captcha"
+ client "schisandra-album-cloud-microservices/app/auth/api/internal/handler/client"
+ oauth "schisandra-album-cloud-microservices/app/auth/api/internal/handler/oauth"
+ sms "schisandra-album-cloud-microservices/app/auth/api/internal/handler/sms"
+ token "schisandra-album-cloud-microservices/app/auth/api/internal/handler/token"
+ user "schisandra-album-cloud-microservices/app/auth/api/internal/handler/user"
+ websocket "schisandra-album-cloud-microservices/app/auth/api/internal/handler/websocket"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
"github.com/zeromicro/go-zero/rest"
)
@@ -61,54 +59,7 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
server.AddRoutes(
rest.WithMiddlewares(
- []rest.Middleware{serverCtx.SecurityHeadersMiddleware, serverCtx.CasbinVerifyMiddleware, serverCtx.AuthorizationMiddleware, serverCtx.NonceMiddleware},
- []rest.Route{
- {
- Method: http.MethodPost,
- Path: "/dislike",
- Handler: comment.DislikeCommentHandler(serverCtx),
- },
- {
- Method: http.MethodPost,
- Path: "/like",
- Handler: comment.LikeCommentHandler(serverCtx),
- },
- {
- Method: http.MethodPost,
- Path: "/list",
- Handler: comment.GetCommentListHandler(serverCtx),
- },
- {
- Method: http.MethodPost,
- Path: "/reply/list",
- Handler: comment.GetReplyListHandler(serverCtx),
- },
- {
- Method: http.MethodPost,
- Path: "/reply/reply/submit",
- Handler: comment.SubmitReplyReplyHandler(serverCtx),
- },
- {
- Method: http.MethodPost,
- Path: "/reply/submit",
- Handler: comment.SubmitReplyCommentHandler(serverCtx),
- },
- {
- Method: http.MethodPost,
- Path: "/submit",
- Handler: comment.SubmitCommentHandler(serverCtx),
- },
- }...,
- ),
- rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
- rest.WithPrefix("/api/auth/comment"),
- rest.WithTimeout(10000*time.Millisecond),
- rest.WithMaxBytes(1048576),
- )
-
- server.AddRoutes(
- rest.WithMiddlewares(
- []rest.Middleware{serverCtx.SecurityHeadersMiddleware, serverCtx.NonceMiddleware},
+ []rest.Middleware{serverCtx.SecurityHeadersMiddleware},
[]rest.Route{
{
Method: http.MethodGet,
@@ -200,22 +151,6 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
rest.WithMaxBytes(1048576),
)
- server.AddRoutes(
- rest.WithMiddlewares(
- []rest.Middleware{serverCtx.SecurityHeadersMiddleware, serverCtx.NonceMiddleware},
- []rest.Route{
- {
- Method: http.MethodPost,
- Path: "/upload",
- Handler: upscale.UploadImageHandler(serverCtx),
- },
- }...,
- ),
- rest.WithPrefix("/api/auth/upscale"),
- rest.WithTimeout(10000*time.Millisecond),
- rest.WithMaxBytes(10485760),
- )
-
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.SecurityHeadersMiddleware, serverCtx.NonceMiddleware},
@@ -255,11 +190,6 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
server.AddRoutes(
[]rest.Route{
- {
- Method: http.MethodGet,
- Path: "/file",
- Handler: websocket.FileWebsocketHandler(serverCtx),
- },
{
Method: http.MethodGet,
Path: "/message",
diff --git a/app/auth/api/internal/handler/sms/send_sms_by_aliyun_handler.go b/app/auth/api/internal/handler/sms/send_sms_by_aliyun_handler.go
new file mode 100644
index 0000000..cac58bb
--- /dev/null
+++ b/app/auth/api/internal/handler/sms/send_sms_by_aliyun_handler.go
@@ -0,0 +1,25 @@
+package sms
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/xhttp"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/sms"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
+)
+
+func SendSmsByAliyunHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.SmsSendRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := sms.NewSendSmsByAliyunLogic(r.Context(), svcCtx)
+ err := l.SendSmsByAliyun(&req)
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ }
+}
diff --git a/app/auth/api/internal/handler/sms/send_sms_by_smsbao_handler.go b/app/auth/api/internal/handler/sms/send_sms_by_smsbao_handler.go
new file mode 100644
index 0000000..f347ec4
--- /dev/null
+++ b/app/auth/api/internal/handler/sms/send_sms_by_smsbao_handler.go
@@ -0,0 +1,25 @@
+package sms
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/xhttp"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/sms"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
+)
+
+func SendSmsBySmsbaoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.SmsSendRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+ l := sms.NewSendSmsBySmsbaoLogic(r.Context(), svcCtx)
+ err := l.SendSmsBySmsbao(&req)
+
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ }
+}
diff --git a/app/auth/api/internal/handler/sms/send_sms_by_test_handler.go b/app/auth/api/internal/handler/sms/send_sms_by_test_handler.go
new file mode 100644
index 0000000..8ed7a84
--- /dev/null
+++ b/app/auth/api/internal/handler/sms/send_sms_by_test_handler.go
@@ -0,0 +1,25 @@
+package sms
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/xhttp"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/sms"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
+)
+
+func SendSmsByTestHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.SmsSendRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := sms.NewSendSmsByTestLogic(r.Context(), svcCtx)
+ err := l.SendSmsByTest(&req)
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ }
+}
diff --git a/app/auth/api/internal/handler/token/refresh_token_handler.go b/app/auth/api/internal/handler/token/refresh_token_handler.go
new file mode 100644
index 0000000..3e03124
--- /dev/null
+++ b/app/auth/api/internal/handler/token/refresh_token_handler.go
@@ -0,0 +1,21 @@
+package token
+
+import (
+ "net/http"
+ "schisandra-album-cloud-microservices/common/xhttp"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/token"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+)
+
+func RefreshTokenHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ l := token.NewRefreshTokenLogic(r.Context(), svcCtx)
+ resp, err := l.RefreshToken(r)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/auth/api/internal/handler/user/account_login_handler.go b/app/auth/api/internal/handler/user/account_login_handler.go
new file mode 100644
index 0000000..2157da3
--- /dev/null
+++ b/app/auth/api/internal/handler/user/account_login_handler.go
@@ -0,0 +1,29 @@
+package user
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/xhttp"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/user"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
+)
+
+func AccountLoginHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.AccountLoginRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := user.NewAccountLoginLogic(r.Context(), svcCtx)
+ resp, err := l.AccountLogin(r, &req)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/auth/api/internal/handler/user/get_wechat_offiaccount_qrcode_handler.go b/app/auth/api/internal/handler/user/get_wechat_offiaccount_qrcode_handler.go
new file mode 100644
index 0000000..9b28567
--- /dev/null
+++ b/app/auth/api/internal/handler/user/get_wechat_offiaccount_qrcode_handler.go
@@ -0,0 +1,28 @@
+package user
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/user"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
+ "schisandra-album-cloud-microservices/common/xhttp"
+)
+
+func GetWechatOffiaccountQrcodeHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.OAuthWechatRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := user.NewGetWechatOffiaccountQrcodeLogic(r.Context(), svcCtx)
+ resp, err := l.GetWechatOffiaccountQrcode(r, &req)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/auth/api/internal/handler/user/phone_login_handler.go b/app/auth/api/internal/handler/user/phone_login_handler.go
new file mode 100644
index 0000000..d7aa079
--- /dev/null
+++ b/app/auth/api/internal/handler/user/phone_login_handler.go
@@ -0,0 +1,29 @@
+package user
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/xhttp"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/user"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
+)
+
+func PhoneLoginHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.PhoneLoginRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := user.NewPhoneLoginLogic(r.Context(), svcCtx)
+ resp, err := l.PhoneLogin(r, &req)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/auth/api/internal/handler/user/reset_password_handler.go b/app/auth/api/internal/handler/user/reset_password_handler.go
new file mode 100644
index 0000000..605a04d
--- /dev/null
+++ b/app/auth/api/internal/handler/user/reset_password_handler.go
@@ -0,0 +1,24 @@
+package user
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/xhttp"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/user"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
+)
+
+func ResetPasswordHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.ResetPasswordRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+ l := user.NewResetPasswordLogic(r.Context(), svcCtx)
+ err := l.ResetPassword(&req)
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ }
+}
diff --git a/app/auth/api/internal/handler/user/wechat_offiaccount_login_handler.go b/app/auth/api/internal/handler/user/wechat_offiaccount_login_handler.go
new file mode 100644
index 0000000..456466b
--- /dev/null
+++ b/app/auth/api/internal/handler/user/wechat_offiaccount_login_handler.go
@@ -0,0 +1,28 @@
+package user
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/user"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
+ "schisandra-album-cloud-microservices/common/xhttp"
+)
+
+func WechatOffiaccountLoginHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.WechatOffiaccountLoginRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := user.NewWechatOffiaccountLoginLogic(r.Context(), svcCtx)
+ resp, err := l.WechatOffiaccountLogin(r, &req)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/core/api/internal/handler/websocket/message_websocket_handler.go b/app/auth/api/internal/handler/websocket/message_websocket_handler.go
similarity index 69%
rename from app/core/api/internal/handler/websocket/message_websocket_handler.go
rename to app/auth/api/internal/handler/websocket/message_websocket_handler.go
index 0fc8350..e6c2ec3 100644
--- a/app/core/api/internal/handler/websocket/message_websocket_handler.go
+++ b/app/auth/api/internal/handler/websocket/message_websocket_handler.go
@@ -3,8 +3,8 @@ package websocket
import (
"net/http"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/websocket"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/websocket"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
)
func MessageWebsocketHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
diff --git a/app/core/api/internal/handler/websocket/qrcode_websocket_handler.go b/app/auth/api/internal/handler/websocket/qrcode_websocket_handler.go
similarity index 68%
rename from app/core/api/internal/handler/websocket/qrcode_websocket_handler.go
rename to app/auth/api/internal/handler/websocket/qrcode_websocket_handler.go
index acfd354..8bffa37 100644
--- a/app/core/api/internal/handler/websocket/qrcode_websocket_handler.go
+++ b/app/auth/api/internal/handler/websocket/qrcode_websocket_handler.go
@@ -3,8 +3,8 @@ package websocket
import (
"net/http"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/websocket"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/websocket"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
)
func QrcodeWebsocketHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
diff --git a/app/core/api/internal/logic/captcha/generate_rotate_captcha_logic.go b/app/auth/api/internal/logic/captcha/generate_rotate_captcha_logic.go
similarity index 61%
rename from app/core/api/internal/logic/captcha/generate_rotate_captcha_logic.go
rename to app/auth/api/internal/logic/captcha/generate_rotate_captcha_logic.go
index 24cb622..cc44b33 100644
--- a/app/core/api/internal/logic/captcha/generate_rotate_captcha_logic.go
+++ b/app/auth/api/internal/logic/captcha/generate_rotate_captcha_logic.go
@@ -2,11 +2,10 @@ package captcha
import (
"context"
-
- "schisandra-album-cloud-microservices/app/core/api/common/captcha/generate"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/common/captcha/generate"
+ "schisandra-album-cloud-microservices/common/errors"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -25,10 +24,10 @@ func NewGenerateRotateCaptchaLogic(ctx context.Context, svcCtx *svc.ServiceConte
}
}
-func (l *GenerateRotateCaptchaLogic) GenerateRotateCaptcha() (resp *types.Response, err error) {
+func (l *GenerateRotateCaptchaLogic) GenerateRotateCaptcha() (resp map[string]interface{}, err error) {
captcha, err := generate.GenerateRotateCaptcha(l.svcCtx.RotateCaptcha, l.svcCtx.RedisClient, l.ctx)
if err != nil {
- return nil, err
+ return nil, errors.New(http.StatusInternalServerError, err.Error())
}
- return response.SuccessWithData(captcha), nil
+ return captcha, nil
}
diff --git a/app/core/api/internal/logic/captcha/generate_slide_basic_captcha_logic.go b/app/auth/api/internal/logic/captcha/generate_slide_basic_captcha_logic.go
similarity index 61%
rename from app/core/api/internal/logic/captcha/generate_slide_basic_captcha_logic.go
rename to app/auth/api/internal/logic/captcha/generate_slide_basic_captcha_logic.go
index fcd2aa7..7c97e95 100644
--- a/app/core/api/internal/logic/captcha/generate_slide_basic_captcha_logic.go
+++ b/app/auth/api/internal/logic/captcha/generate_slide_basic_captcha_logic.go
@@ -2,11 +2,10 @@ package captcha
import (
"context"
-
- "schisandra-album-cloud-microservices/app/core/api/common/captcha/generate"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/common/captcha/generate"
+ "schisandra-album-cloud-microservices/common/errors"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -25,10 +24,10 @@ func NewGenerateSlideBasicCaptchaLogic(ctx context.Context, svcCtx *svc.ServiceC
}
}
-func (l *GenerateSlideBasicCaptchaLogic) GenerateSlideBasicCaptcha() (resp *types.Response, err error) {
+func (l *GenerateSlideBasicCaptchaLogic) GenerateSlideBasicCaptcha() (resp map[string]interface{}, err error) {
captcha, err := generate.GenerateSlideBasicCaptcha(l.svcCtx.SlideCaptcha, l.svcCtx.RedisClient, l.ctx)
if err != nil {
- return nil, err
+ return nil, errors.New(http.StatusInternalServerError, err.Error())
}
- return response.SuccessWithData(captcha), nil
+ return captcha, nil
}
diff --git a/app/core/api/internal/logic/client/generate_client_id_logic.go b/app/auth/api/internal/logic/client/generate_client_id_logic.go
similarity index 64%
rename from app/core/api/internal/logic/client/generate_client_id_logic.go
rename to app/auth/api/internal/logic/client/generate_client_id_logic.go
index 1b54784..acac2ed 100644
--- a/app/core/api/internal/logic/client/generate_client_id_logic.go
+++ b/app/auth/api/internal/logic/client/generate_client_id_logic.go
@@ -2,16 +2,15 @@ package client
import (
"context"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/constant"
+ "schisandra-album-cloud-microservices/common/errors"
"time"
"github.com/ccpwcn/kgo"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-
"github.com/zeromicro/go-zero/core/logx"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
)
type GenerateClientIdLogic struct {
@@ -28,15 +27,15 @@ func NewGenerateClientIdLogic(ctx context.Context, svcCtx *svc.ServiceContext) *
}
}
-func (l *GenerateClientIdLogic) GenerateClientId(clientIP string) (resp *types.Response, err error) {
+func (l *GenerateClientIdLogic) GenerateClientId(clientIP string) (resp string, err error) {
clientId := l.svcCtx.RedisClient.Get(l.ctx, constant.UserClientPrefix+clientIP).Val()
if clientId != "" {
- return response.SuccessWithData(clientId), nil
+ return clientId, nil
}
simpleUuid := kgo.SimpleUuid()
if err = l.svcCtx.RedisClient.SetEx(l.ctx, constant.UserClientPrefix+clientIP, simpleUuid, time.Hour*24*7).Err(); err != nil {
- return nil, err
+ return "", errors.New(http.StatusInternalServerError, err.Error())
}
- return response.SuccessWithData(simpleUuid), nil
+ return simpleUuid, nil
}
diff --git a/app/core/api/internal/logic/oauth/get_gitee_oauth_url_logic.go b/app/auth/api/internal/logic/oauth/get_gitee_oauth_url_logic.go
similarity index 65%
rename from app/core/api/internal/logic/oauth/get_gitee_oauth_url_logic.go
rename to app/auth/api/internal/logic/oauth/get_gitee_oauth_url_logic.go
index 699cd11..e2b49a7 100644
--- a/app/core/api/internal/logic/oauth/get_gitee_oauth_url_logic.go
+++ b/app/auth/api/internal/logic/oauth/get_gitee_oauth_url_logic.go
@@ -2,12 +2,8 @@ package oauth
import (
"context"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-
"github.com/zeromicro/go-zero/core/logx"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
)
type GetGiteeOauthUrlLogic struct {
@@ -24,9 +20,9 @@ func NewGetGiteeOauthUrlLogic(ctx context.Context, svcCtx *svc.ServiceContext) *
}
}
-func (l *GetGiteeOauthUrlLogic) GetGiteeOauthUrl() (resp *types.Response, err error) {
+func (l *GetGiteeOauthUrlLogic) GetGiteeOauthUrl() (resp string, err error) {
clientID := l.svcCtx.Config.OAuth.Gitee.ClientID
redirectURI := l.svcCtx.Config.OAuth.Gitee.RedirectURI
url := "https://gitee.com/oauth/authorize?client_id=" + clientID + "&redirect_uri=" + redirectURI + "&response_type=code"
- return response.SuccessWithData(url), nil
+ return url, nil
}
diff --git a/app/core/api/internal/logic/oauth/get_github_oauth_url_logic.go b/app/auth/api/internal/logic/oauth/get_github_oauth_url_logic.go
similarity index 70%
rename from app/core/api/internal/logic/oauth/get_github_oauth_url_logic.go
rename to app/auth/api/internal/logic/oauth/get_github_oauth_url_logic.go
index 58c3ea5..a1caced 100644
--- a/app/core/api/internal/logic/oauth/get_github_oauth_url_logic.go
+++ b/app/auth/api/internal/logic/oauth/get_github_oauth_url_logic.go
@@ -2,12 +2,9 @@ package oauth
import (
"context"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-
"github.com/zeromicro/go-zero/core/logx"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
)
type GetGithubOauthUrlLogic struct {
@@ -24,9 +21,9 @@ func NewGetGithubOauthUrlLogic(ctx context.Context, svcCtx *svc.ServiceContext)
}
}
-func (l *GetGithubOauthUrlLogic) GetGithubOauthUrl(req *types.OAuthRequest) (resp *types.Response, err error) {
+func (l *GetGithubOauthUrlLogic) GetGithubOauthUrl(req *types.OAuthRequest) (resp string, err error) {
clientId := l.svcCtx.Config.OAuth.Github.ClientID
redirectUrl := l.svcCtx.Config.OAuth.Github.RedirectURI
url := "https://github.com/login/oauth/authorize?client_id=" + clientId + "&redirect_uri=" + redirectUrl + "&state=" + req.State
- return response.SuccessWithData(url), nil
+ return url, nil
}
diff --git a/app/core/api/internal/logic/oauth/get_qq_oauth_url_logic.go b/app/auth/api/internal/logic/oauth/get_qq_oauth_url_logic.go
similarity index 71%
rename from app/core/api/internal/logic/oauth/get_qq_oauth_url_logic.go
rename to app/auth/api/internal/logic/oauth/get_qq_oauth_url_logic.go
index 6f65497..acf6180 100644
--- a/app/core/api/internal/logic/oauth/get_qq_oauth_url_logic.go
+++ b/app/auth/api/internal/logic/oauth/get_qq_oauth_url_logic.go
@@ -2,12 +2,9 @@ package oauth
import (
"context"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-
"github.com/zeromicro/go-zero/core/logx"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
)
type GetQqOauthUrlLogic struct {
@@ -24,9 +21,9 @@ func NewGetQqOauthUrlLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Get
}
}
-func (l *GetQqOauthUrlLogic) GetQqOauthUrl(req *types.OAuthRequest) (resp *types.Response, err error) {
+func (l *GetQqOauthUrlLogic) GetQqOauthUrl(req *types.OAuthRequest) (resp string, err error) {
clientId := l.svcCtx.Config.OAuth.QQ.ClientID
redirectURI := l.svcCtx.Config.OAuth.QQ.RedirectURI
url := "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=" + clientId + "&redirect_uri=" + redirectURI + "&state=" + req.State
- return response.SuccessWithData(url), nil
+ return url, nil
}
diff --git a/app/core/api/internal/logic/oauth/gitee_callback_logic.go b/app/auth/api/internal/logic/oauth/gitee_callback_logic.go
similarity index 91%
rename from app/core/api/internal/logic/oauth/gitee_callback_logic.go
rename to app/auth/api/internal/logic/oauth/gitee_callback_logic.go
index 6efb09a..f47e7c9 100644
--- a/app/core/api/internal/logic/oauth/gitee_callback_logic.go
+++ b/app/auth/api/internal/logic/oauth/gitee_callback_logic.go
@@ -6,6 +6,9 @@ import (
"errors"
"fmt"
"net/http"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/model"
+ "schisandra-album-cloud-microservices/common/constant"
+ "schisandra-album-cloud-microservices/common/xhttp"
"strconv"
"time"
@@ -14,12 +17,9 @@ import (
"github.com/zeromicro/go-zero/core/logx"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/user"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/user"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
)
type GiteeCallbackLogic struct {
@@ -77,7 +77,7 @@ func NewGiteeCallbackLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Git
}
}
-func (l *GiteeCallbackLogic) GiteeCallback(w http.ResponseWriter, r *http.Request, req *types.OAuthCallbackRequest) (string, error) {
+func (l *GiteeCallbackLogic) GiteeCallback(r *http.Request, req *types.OAuthCallbackRequest) (string, error) {
// 获取 token
tokenAuthUrl := l.GetGiteeTokenAuthUrl(req.Code)
token, err := l.GetGiteeToken(tokenAuthUrl)
@@ -185,7 +185,11 @@ func HandleOauthLoginResponse(scaAuthUser *model.ScaAuthUser, svcCtx *svc.Servic
if err != nil {
return "", err
}
- marshalData, err := json.Marshal(response.SuccessWithData(data))
+ marshalData, err := json.Marshal(xhttp.BaseResponse[*types.LoginResponse]{
+ Data: data,
+ Code: 200,
+ Msg: "success",
+ })
if err != nil {
return "", err
}
diff --git a/app/core/api/internal/logic/oauth/github_callback_logic.go b/app/auth/api/internal/logic/oauth/github_callback_logic.go
similarity index 94%
rename from app/core/api/internal/logic/oauth/github_callback_logic.go
rename to app/auth/api/internal/logic/oauth/github_callback_logic.go
index 89fcf0e..0ff8fdc 100644
--- a/app/core/api/internal/logic/oauth/github_callback_logic.go
+++ b/app/auth/api/internal/logic/oauth/github_callback_logic.go
@@ -6,6 +6,8 @@ import (
"errors"
"fmt"
"net/http"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/model"
+ "schisandra-album-cloud-microservices/common/constant"
"strconv"
"github.com/yitter/idgenerator-go/idgen"
@@ -13,10 +15,8 @@ import (
"github.com/zeromicro/go-zero/core/logx"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
)
type GithubCallbackLogic struct {
@@ -68,7 +68,7 @@ func NewGithubCallbackLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Gi
}
}
-func (l *GithubCallbackLogic) GithubCallback(w http.ResponseWriter, r *http.Request, req *types.OAuthCallbackRequest) (string, error) {
+func (l *GithubCallbackLogic) GithubCallback(r *http.Request, req *types.OAuthCallbackRequest) (string, error) {
// 获取 token
tokenAuthUrl := l.GetTokenAuthUrl(req.Code)
diff --git a/app/core/api/internal/logic/oauth/qq_callback_logic.go b/app/auth/api/internal/logic/oauth/qq_callback_logic.go
similarity index 94%
rename from app/core/api/internal/logic/oauth/qq_callback_logic.go
rename to app/auth/api/internal/logic/oauth/qq_callback_logic.go
index 63fb2ff..4a86da1 100644
--- a/app/core/api/internal/logic/oauth/qq_callback_logic.go
+++ b/app/auth/api/internal/logic/oauth/qq_callback_logic.go
@@ -6,6 +6,8 @@ import (
"errors"
"fmt"
"net/http"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/model"
+ "schisandra-album-cloud-microservices/common/constant"
"strconv"
"strings"
@@ -14,10 +16,8 @@ import (
"github.com/zeromicro/go-zero/core/logx"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
)
type QqCallbackLogic struct {
@@ -66,7 +66,7 @@ func NewQqCallbackLogic(ctx context.Context, svcCtx *svc.ServiceContext) *QqCall
}
}
-func (l *QqCallbackLogic) QqCallback(w http.ResponseWriter, r *http.Request, req *types.OAuthCallbackRequest) (string, error) {
+func (l *QqCallbackLogic) QqCallback(r *http.Request, req *types.OAuthCallbackRequest) (string, error) {
tokenAuthUrl := l.GetQQTokenAuthUrl(req.Code)
token, err := l.GetQQToken(tokenAuthUrl)
diff --git a/app/core/api/internal/logic/oauth/wechat_offiaccount_callback_logic.go b/app/auth/api/internal/logic/oauth/wechat_offiaccount_callback_logic.go
similarity index 88%
rename from app/core/api/internal/logic/oauth/wechat_offiaccount_callback_logic.go
rename to app/auth/api/internal/logic/oauth/wechat_offiaccount_callback_logic.go
index 9ae72ff..f8adc3a 100644
--- a/app/core/api/internal/logic/oauth/wechat_offiaccount_callback_logic.go
+++ b/app/auth/api/internal/logic/oauth/wechat_offiaccount_callback_logic.go
@@ -8,14 +8,14 @@ import (
models2 "github.com/ArtisanCloud/PowerWeChat/v3/src/kernel/models"
"github.com/ArtisanCloud/PowerWeChat/v3/src/officialAccount/server/handlers/models"
"net/http"
- "schisandra-album-cloud-microservices/app/core/api/common/encrypt"
- "schisandra-album-cloud-microservices/app/core/api/common/i18n"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/websocket"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/logic/websocket"
+ "schisandra-album-cloud-microservices/common/encrypt"
+ "schisandra-album-cloud-microservices/common/i18n"
+ "schisandra-album-cloud-microservices/common/xhttp"
"strings"
"github.com/zeromicro/go-zero/core/logx"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
)
type WechatOffiaccountCallbackLogic struct {
@@ -109,7 +109,11 @@ func (l *WechatOffiaccountCallbackLogic) SendMessage(openId string, clientId str
Openid: encryptOpenId,
ClientId: encryptClientId,
}
- jsonData, err := json.Marshal(response.SuccessWithData(messageData))
+ jsonData, err := json.Marshal(xhttp.BaseResponse[MessageData]{
+ Code: 200,
+ Data: messageData,
+ Msg: "success",
+ })
if err != nil {
return err
}
diff --git a/app/core/api/internal/logic/oauth/wechat_offiaccount_callback_verify_logic.go b/app/auth/api/internal/logic/oauth/wechat_offiaccount_callback_verify_logic.go
similarity index 91%
rename from app/core/api/internal/logic/oauth/wechat_offiaccount_callback_verify_logic.go
rename to app/auth/api/internal/logic/oauth/wechat_offiaccount_callback_verify_logic.go
index 3bb5bda..83220c6 100644
--- a/app/core/api/internal/logic/oauth/wechat_offiaccount_callback_verify_logic.go
+++ b/app/auth/api/internal/logic/oauth/wechat_offiaccount_callback_verify_logic.go
@@ -5,7 +5,7 @@ import (
"net/http"
"github.com/zeromicro/go-zero/core/logx"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
)
type WechatOffiaccountCallbackVerifyLogic struct {
diff --git a/app/core/api/internal/logic/sms/send_sms_by_aliyun_logic.go b/app/auth/api/internal/logic/sms/send_sms_by_aliyun_logic.go
similarity index 61%
rename from app/core/api/internal/logic/sms/send_sms_by_aliyun_logic.go
rename to app/auth/api/internal/logic/sms/send_sms_by_aliyun_logic.go
index bb9db62..e059b52 100644
--- a/app/core/api/internal/logic/sms/send_sms_by_aliyun_logic.go
+++ b/app/auth/api/internal/logic/sms/send_sms_by_aliyun_logic.go
@@ -2,18 +2,19 @@ package sms
import (
"context"
- "time"
-
gosms "github.com/pkg6/go-sms"
"github.com/pkg6/go-sms/gateways"
"github.com/pkg6/go-sms/gateways/aliyun"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/captcha/verify"
+ "schisandra-album-cloud-microservices/common/constant"
+ "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/i18n"
+ "schisandra-album-cloud-microservices/common/utils"
+ "time"
- "schisandra-album-cloud-microservices/app/core/api/common/captcha/verify"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -32,19 +33,18 @@ func NewSendSmsByAliyunLogic(ctx context.Context, svcCtx *svc.ServiceContext) *S
}
}
-func (l *SendSmsByAliyunLogic) SendSmsByAliyun(req *types.SmsSendRequest) (resp *types.Response, err error) {
-
+func (l *SendSmsByAliyunLogic) SendSmsByAliyun(req *types.SmsSendRequest) error {
checkRotateData := verify.VerifyRotateCaptcha(l.ctx, l.svcCtx.RedisClient, req.Angle, req.Key)
if !checkRotateData {
- return response.ErrorWithI18n(l.ctx, "captcha.verificationFailure"), nil
+ return errors.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, i18n.FormatText(l.ctx, "sms.verificationFailure")))
}
isPhone := utils.IsPhone(req.Phone)
if !isPhone {
- return response.ErrorWithI18n(l.ctx, "login.phoneFormatError"), nil
+ return errors.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.phoneFormatError"))
}
val := l.svcCtx.RedisClient.Get(l.ctx, constant.UserSmsRedisPrefix+req.Phone).Val()
if val != "" {
- return response.ErrorWithI18n(l.ctx, "sms.smsSendTooFrequently"), nil
+ return errors.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "sms.smsSendTooFrequently"))
}
sms := gosms.NewParser(gateways.Gateways{
ALiYun: aliyun.ALiYun{
@@ -56,9 +56,9 @@ func (l *SendSmsByAliyunLogic) SendSmsByAliyun(req *types.SmsSendRequest) (resp
code := utils.GenValidateCode(6)
wrong := l.svcCtx.RedisClient.Set(l.ctx, constant.UserSmsRedisPrefix+req.Phone, code, time.Minute).Err()
if wrong != nil {
- return nil, wrong
+ return errors.New(http.StatusInternalServerError, wrong.Error())
}
- _, err = sms.Send(req.Phone, gosms.MapStringAny{
+ _, err := sms.Send(req.Phone, gosms.MapStringAny{
"content": "您的验证码是:****。请不要把验证码泄露给其他人。",
"template": l.svcCtx.Config.SMS.Ali.TemplateCode,
"signName": l.svcCtx.Config.SMS.Ali.Signature,
@@ -67,7 +67,8 @@ func (l *SendSmsByAliyunLogic) SendSmsByAliyun(req *types.SmsSendRequest) (resp
},
}, nil)
if err != nil {
- return nil, err
+ return errors.New(http.StatusInternalServerError, err.Error())
}
- return response.Success(), nil
+ return nil
+
}
diff --git a/app/core/api/internal/logic/sms/send_sms_by_smsbao_logic.go b/app/auth/api/internal/logic/sms/send_sms_by_smsbao_logic.go
similarity index 57%
rename from app/core/api/internal/logic/sms/send_sms_by_smsbao_logic.go
rename to app/auth/api/internal/logic/sms/send_sms_by_smsbao_logic.go
index faaa0ce..03d7086 100644
--- a/app/core/api/internal/logic/sms/send_sms_by_smsbao_logic.go
+++ b/app/auth/api/internal/logic/sms/send_sms_by_smsbao_logic.go
@@ -2,18 +2,20 @@ package sms
import (
"context"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/captcha/verify"
+ "schisandra-album-cloud-microservices/common/constant"
+ "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/i18n"
+ utils2 "schisandra-album-cloud-microservices/common/utils"
"time"
gosms "github.com/pkg6/go-sms"
"github.com/pkg6/go-sms/gateways"
"github.com/pkg6/go-sms/gateways/smsbao"
- "schisandra-album-cloud-microservices/app/core/api/common/captcha/verify"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -32,18 +34,18 @@ func NewSendSmsBySmsbaoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *S
}
}
-func (l *SendSmsBySmsbaoLogic) SendSmsBySmsbao(req *types.SmsSendRequest) (resp *types.Response, err error) {
+func (l *SendSmsBySmsbaoLogic) SendSmsBySmsbao(req *types.SmsSendRequest) (err error) {
checkRotateData := verify.VerifyRotateCaptcha(l.ctx, l.svcCtx.RedisClient, req.Angle, req.Key)
if !checkRotateData {
- return response.ErrorWithI18n(l.ctx, "captcha.verificationFailure"), nil
+ return errors.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "captcha.verificationFailure"))
}
- isPhone := utils.IsPhone(req.Phone)
+ isPhone := utils2.IsPhone(req.Phone)
if !isPhone {
- return response.ErrorWithI18n(l.ctx, "login.phoneFormatError"), nil
+ return errors.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.phoneFormatError"))
}
val := l.svcCtx.RedisClient.Get(l.ctx, constant.UserSmsRedisPrefix+req.Phone).Val()
if val != "" {
- return response.ErrorWithI18n(l.ctx, "sms.smsSendTooFrequently"), nil
+ return errors.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "sms.smsSendTooFrequently"))
}
sms := gosms.NewParser(gateways.Gateways{
SmsBao: smsbao.SmsBao{
@@ -51,16 +53,16 @@ func (l *SendSmsBySmsbaoLogic) SendSmsBySmsbao(req *types.SmsSendRequest) (resp
Password: l.svcCtx.Config.SMS.SMSBao.Password,
},
})
- code := utils.GenValidateCode(6)
+ code := utils2.GenValidateCode(6)
wrong := l.svcCtx.RedisClient.Set(l.ctx, constant.UserSmsRedisPrefix+req.Phone, code, time.Minute).Err()
if wrong != nil {
- return nil, wrong
+ return errors.New(http.StatusInternalServerError, wrong.Error())
}
_, err = sms.Send(req.Phone, gosms.MapStringAny{
"content": "您的验证码是:" + code + "。请不要把验证码泄露给其他人。",
}, nil)
if err != nil {
- return nil, err
+ return errors.New(http.StatusInternalServerError, err.Error())
}
- return response.Success(), nil
+ return nil
}
diff --git a/app/core/api/internal/logic/sms/send_sms_by_test_logic.go b/app/auth/api/internal/logic/sms/send_sms_by_test_logic.go
similarity index 52%
rename from app/core/api/internal/logic/sms/send_sms_by_test_logic.go
rename to app/auth/api/internal/logic/sms/send_sms_by_test_logic.go
index 982150b..3a94e86 100644
--- a/app/core/api/internal/logic/sms/send_sms_by_test_logic.go
+++ b/app/auth/api/internal/logic/sms/send_sms_by_test_logic.go
@@ -2,14 +2,16 @@ package sms
import (
"context"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/captcha/verify"
+ "schisandra-album-cloud-microservices/common/constant"
+ "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/i18n"
+ "schisandra-album-cloud-microservices/common/utils"
"time"
- "schisandra-album-cloud-microservices/app/core/api/common/captcha/verify"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -28,23 +30,23 @@ func NewSendSmsByTestLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Sen
}
}
-func (l *SendSmsByTestLogic) SendSmsByTest(req *types.SmsSendRequest) (resp *types.Response, err error) {
+func (l *SendSmsByTestLogic) SendSmsByTest(req *types.SmsSendRequest) (err error) {
checkRotateData := verify.VerifyRotateCaptcha(l.ctx, l.svcCtx.RedisClient, req.Angle, req.Key)
if !checkRotateData {
- return response.ErrorWithI18n(l.ctx, "captcha.verificationFailure"), nil
+ return errors.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "captcha.verificationFailure"))
}
isPhone := utils.IsPhone(req.Phone)
if !isPhone {
- return response.ErrorWithI18n(l.ctx, "login.phoneFormatError"), nil
+ return errors.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.phoneFormatError"))
}
val := l.svcCtx.RedisClient.Get(l.ctx, constant.UserSmsRedisPrefix+req.Phone).Val()
if val != "" {
- return response.ErrorWithI18n(l.ctx, "sms.smsSendTooFrequently"), nil
+ return errors.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "sms.smsSendTooFrequently"))
}
code := utils.GenValidateCode(6)
wrong := l.svcCtx.RedisClient.Set(l.ctx, constant.UserSmsRedisPrefix+req.Phone, code, time.Minute).Err()
if wrong != nil {
- return nil, wrong
+ return errors.New(http.StatusInternalServerError, wrong.Error())
}
- return response.Success(), nil
+ return nil
}
diff --git a/app/core/api/internal/logic/token/refresh_token_logic.go b/app/auth/api/internal/logic/token/refresh_token_logic.go
similarity index 63%
rename from app/core/api/internal/logic/token/refresh_token_logic.go
rename to app/auth/api/internal/logic/token/refresh_token_logic.go
index 261a71b..bd0ba68 100644
--- a/app/core/api/internal/logic/token/refresh_token_logic.go
+++ b/app/auth/api/internal/logic/token/refresh_token_logic.go
@@ -4,13 +4,13 @@ import (
"context"
"encoding/json"
"net/http"
+ "schisandra-album-cloud-microservices/common/constant"
+ "schisandra-album-cloud-microservices/common/errors"
+ jwt2 "schisandra-album-cloud-microservices/common/jwt"
"time"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/jwt"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -20,10 +20,6 @@ type RefreshTokenLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
}
-type AccessToken struct {
- AccessToken string `json:"access_token"`
- ExpireAt int64 `json:"expire_at"`
-}
func NewRefreshTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RefreshTokenLogic {
return &RefreshTokenLogic{
@@ -33,15 +29,15 @@ func NewRefreshTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Refr
}
}
-func (l *RefreshTokenLogic) RefreshToken(r *http.Request) (resp *types.Response, err error) {
+func (l *RefreshTokenLogic) RefreshToken(r *http.Request) (resp *types.RefreshTokenResponse, err error) {
userId := r.Header.Get(constant.UID_HEADER_KEY)
if userId == "" {
- return response.ErrorWithCode(403), nil
+ return nil, errors.New(http.StatusForbidden, "user id is empty")
}
// 从redis中获取refresh token
tokenData := l.svcCtx.RedisClient.Get(l.ctx, constant.UserTokenPrefix+userId).Val()
if tokenData == "" {
- return response.ErrorWithCode(403), nil
+ return nil, errors.New(http.StatusForbidden, "refresh token is empty")
}
redisTokenData := types.RedisToken{}
err = json.Unmarshal([]byte(tokenData), &redisTokenData)
@@ -50,19 +46,19 @@ func (l *RefreshTokenLogic) RefreshToken(r *http.Request) (resp *types.Response,
}
// 判断是否已经被吊销
if redisTokenData.Revoked {
- return response.ErrorWithCode(403), nil
+ return nil, errors.New(http.StatusForbidden, "refresh token is revoked")
}
// 判断是否是同一个设备
if redisTokenData.AllowAgent != r.UserAgent() {
- return response.ErrorWithCode(403), nil
+ return nil, errors.New(http.StatusForbidden, "refresh token is not allowed for this agent")
}
// 判断refresh token是否在有效期内
- refreshToken, result := jwt.ParseRefreshToken(l.svcCtx.Config.Auth.AccessSecret, redisTokenData.RefreshToken)
+ refreshToken, result := jwt2.ParseRefreshToken(l.svcCtx.Config.Auth.AccessSecret, redisTokenData.RefreshToken)
if !result {
- return response.ErrorWithCode(403), nil
+ return nil, errors.New(http.StatusForbidden, "refresh token is invalid")
}
// 生成新的access token
- accessToken, expireAt := jwt.GenerateAccessToken(l.svcCtx.Config.Auth.AccessSecret, jwt.AccessJWTPayload{
+ accessToken, expireAt := jwt2.GenerateAccessToken(l.svcCtx.Config.Auth.AccessSecret, jwt2.AccessJWTPayload{
UserID: refreshToken.UserID,
Type: constant.JWT_TYPE_ACCESS,
})
@@ -81,9 +77,9 @@ func (l *RefreshTokenLogic) RefreshToken(r *http.Request) (resp *types.Response,
if err != nil {
return nil, err
}
- token := AccessToken{
+ token := &types.RefreshTokenResponse{
AccessToken: accessToken,
ExpireAt: expireAt,
}
- return response.SuccessWithData(token), nil
+ return token, nil
}
diff --git a/app/core/api/internal/logic/user/account_login_logic.go b/app/auth/api/internal/logic/user/account_login_logic.go
similarity index 75%
rename from app/core/api/internal/logic/user/account_login_logic.go
rename to app/auth/api/internal/logic/user/account_login_logic.go
index 72a0361..b52a439 100644
--- a/app/core/api/internal/logic/user/account_login_logic.go
+++ b/app/auth/api/internal/logic/user/account_login_logic.go
@@ -2,24 +2,25 @@ package user
import (
"context"
- "errors"
+ errors2 "errors"
"github.com/lionsoul2014/ip2region/binding/golang/xdb"
"github.com/mssola/useragent"
"net/http"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/model"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/query"
+ "schisandra-album-cloud-microservices/common/captcha/verify"
+ "schisandra-album-cloud-microservices/common/constant"
+ "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/i18n"
+ "schisandra-album-cloud-microservices/common/jwt"
+ "schisandra-album-cloud-microservices/common/utils"
"time"
"github.com/zeromicro/go-zero/core/logx"
"gorm.io/gorm"
- "schisandra-album-cloud-microservices/app/core/api/common/captcha/verify"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/jwt"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/query"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
)
type AccountLoginLogic struct {
@@ -36,10 +37,10 @@ func NewAccountLoginLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Acco
}
}
-func (l *AccountLoginLogic) AccountLogin(w http.ResponseWriter, r *http.Request, req *types.AccountLoginRequest) (resp *types.Response, err error) {
+func (l *AccountLoginLogic) AccountLogin(r *http.Request, req *types.AccountLoginRequest) (resp *types.LoginResponse, err error) {
verifyResult := verify.VerifyRotateCaptcha(l.ctx, l.svcCtx.RedisClient, req.Angle, req.Key)
if !verifyResult {
- return response.ErrorWithI18n(l.ctx, "captcha.verificationFailure"), nil
+ return nil, errors.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "captcha.verificationFailure"))
}
user := l.svcCtx.DB.ScaAuthUser
@@ -53,24 +54,24 @@ func (l *AccountLoginLogic) AccountLogin(w http.ResponseWriter, r *http.Request,
case utils.IsUsername(req.Account):
selectedUser = user.Where(user.Username.Eq(req.Account))
default:
- return response.ErrorWithI18n(l.ctx, "login.invalidAccount"), nil
+ return nil, errors.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.invalidAccount"))
}
userInfo, err := selectedUser.First()
if err != nil {
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return response.ErrorWithI18n(l.ctx, "login.userNotRegistered"), nil
+ if errors2.Is(err, gorm.ErrRecordNotFound) {
+ return nil, errors.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.notFoundAccount"))
}
return nil, err
}
if !utils.Verify(userInfo.Password, req.Password) {
- return response.ErrorWithI18n(l.ctx, "login.invalidPassword"), nil
+ return nil, errors.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.invalidPassword"))
}
data, err := HandleLoginJWT(userInfo, l.svcCtx, req.AutoLogin, r, l.ctx)
if err != nil {
return nil, err
}
- return response.SuccessWithData(data), nil
+ return data, nil
}
// HandleLoginJWT 处理用户登录
@@ -126,7 +127,7 @@ func HandleLoginJWT(user *model.ScaAuthUser, svcCtx *svc.ServiceContext, autoLog
func GetUserLoginDevice(userId string, r *http.Request, ip2location *xdb.Searcher, DB *query.Query) error {
userAgent := r.UserAgent()
if userAgent == "" {
- return errors.New("user agent not found")
+ return errors2.New("user agent not found")
}
ip := utils.GetClientIP(r)
location, err := ip2location.SearchByStr(ip)
@@ -153,7 +154,7 @@ func GetUserLoginDevice(userId string, r *http.Request, ip2location *xdb.Searche
}
userDevice := DB.ScaAuthUserDevice
device, err := userDevice.Where(userDevice.UserID.Eq(userId), userDevice.IP.Eq(ip), userDevice.Agent.Eq(userAgent)).First()
- if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
+ if err != nil && !errors2.Is(err, gorm.ErrRecordNotFound) {
return err
}
newDevice := &model.ScaAuthUserDevice{
@@ -181,7 +182,7 @@ func GetUserLoginDevice(userId string, r *http.Request, ip2location *xdb.Searche
} else {
resultInfo, err := userDevice.Where(userDevice.ID.Eq(device.ID)).Updates(newDevice)
if err != nil || resultInfo.RowsAffected == 0 {
- return errors.New("update device failed")
+ return errors2.New("update device failed")
}
return nil
}
diff --git a/app/core/api/internal/logic/user/get_wechat_offiaccount_qrcode_logic.go b/app/auth/api/internal/logic/user/get_wechat_offiaccount_qrcode_logic.go
similarity index 67%
rename from app/core/api/internal/logic/user/get_wechat_offiaccount_qrcode_logic.go
rename to app/auth/api/internal/logic/user/get_wechat_offiaccount_qrcode_logic.go
index e4990e5..0d54b71 100644
--- a/app/core/api/internal/logic/user/get_wechat_offiaccount_qrcode_logic.go
+++ b/app/auth/api/internal/logic/user/get_wechat_offiaccount_qrcode_logic.go
@@ -5,13 +5,12 @@ import (
"encoding/json"
"github.com/ArtisanCloud/PowerWeChat/v3/src/basicService/qrCode/response"
"net/http"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- response2 "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
+ "schisandra-album-cloud-microservices/common/constant"
+ "schisandra-album-cloud-microservices/common/utils"
"time"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -30,7 +29,7 @@ func NewGetWechatOffiaccountQrcodeLogic(ctx context.Context, svcCtx *svc.Service
}
}
-func (l *GetWechatOffiaccountQrcodeLogic) GetWechatOffiaccountQrcode(r *http.Request, req *types.OAuthWechatRequest) (resp *types.Response, err error) {
+func (l *GetWechatOffiaccountQrcodeLogic) GetWechatOffiaccountQrcode(r *http.Request, req *types.OAuthWechatRequest) (resp string, err error) {
ip := utils.GetClientIP(r)
key := constant.UserQrcodePrefix + ip
@@ -39,25 +38,25 @@ func (l *GetWechatOffiaccountQrcodeLogic) GetWechatOffiaccountQrcode(r *http.Req
if qrcode != "" {
data := new(response.ResponseQRCodeCreate)
if err = json.Unmarshal([]byte(qrcode), data); err != nil {
- return nil, err
+ return "", err
}
- return response2.SuccessWithData(data.Url), nil
+ return data.Url, nil
}
// 生成临时二维码
data, err := l.svcCtx.WechatOfficial.QRCode.Temporary(l.ctx, req.ClientId, 7*24*3600)
if err != nil {
- return nil, err
+ return "", err
}
// 序列化数据并存储到Redis
serializedData, err := json.Marshal(data)
if err != nil {
- return nil, err
+ return "", err
}
if err = l.svcCtx.RedisClient.Set(l.ctx, key, serializedData, time.Hour*24*7).Err(); err != nil {
- return nil, err
+ return "", err
}
- return response2.SuccessWithData(data.Url), nil
+ return data.Url, nil
}
diff --git a/app/core/api/internal/logic/user/phone_login_logic.go b/app/auth/api/internal/logic/user/phone_login_logic.go
similarity index 57%
rename from app/core/api/internal/logic/user/phone_login_logic.go
rename to app/auth/api/internal/logic/user/phone_login_logic.go
index e40019a..064f27e 100644
--- a/app/core/api/internal/logic/user/phone_login_logic.go
+++ b/app/auth/api/internal/logic/user/phone_login_logic.go
@@ -4,19 +4,20 @@ import (
"context"
"errors"
"net/http"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/model"
+ constant2 "schisandra-album-cloud-microservices/common/constant"
+ errors2 "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/i18n"
+ "schisandra-album-cloud-microservices/common/random_name"
+ utils2 "schisandra-album-cloud-microservices/common/utils"
"strconv"
"github.com/yitter/idgenerator-go/idgen"
"github.com/zeromicro/go-zero/core/logx"
"gorm.io/gorm"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- randomname "schisandra-album-cloud-microservices/app/core/api/common/random_name"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
)
type PhoneLoginLogic struct {
@@ -33,16 +34,16 @@ func NewPhoneLoginLogic(ctx context.Context, svcCtx *svc.ServiceContext) *PhoneL
}
}
-func (l *PhoneLoginLogic) PhoneLogin(r *http.Request, w http.ResponseWriter, req *types.PhoneLoginRequest) (resp *types.Response, err error) {
- if !utils.IsPhone(req.Phone) {
- return response.ErrorWithI18n(l.ctx, "login.phoneFormatError"), nil
+func (l *PhoneLoginLogic) PhoneLogin(r *http.Request, req *types.PhoneLoginRequest) (resp *types.LoginResponse, err error) {
+ if !utils2.IsPhone(req.Phone) {
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "captcha.verificationFailure"))
}
- code := l.svcCtx.RedisClient.Get(l.ctx, constant.UserSmsRedisPrefix+req.Phone).Val()
+ code := l.svcCtx.RedisClient.Get(l.ctx, constant2.UserSmsRedisPrefix+req.Phone).Val()
if code == "" {
- return response.ErrorWithI18n(l.ctx, "login.captchaExpired"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.captchaExpired"))
}
if req.Captcha != code {
- return response.ErrorWithI18n(l.ctx, "login.captchaError"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.captchaError"))
}
authUser := l.svcCtx.DB.ScaAuthUser
userInfo, err := authUser.Where(authUser.Phone.Eq(req.Phone)).First()
@@ -59,9 +60,9 @@ func (l *PhoneLoginLogic) PhoneLogin(r *http.Request, w http.ResponseWriter, req
if userInfo == nil {
uid := idgen.NextId()
uidStr := strconv.FormatInt(uid, 10)
- avatar := utils.GenerateAvatar(uidStr)
+ avatar := utils2.GenerateAvatar(uidStr)
name := randomname.GenerateName()
- male := constant.Male
+ male := constant2.Male
user := &model.ScaAuthUser{
UID: uidStr,
Phone: req.Phone,
@@ -69,12 +70,12 @@ func (l *PhoneLoginLogic) PhoneLogin(r *http.Request, w http.ResponseWriter, req
Nickname: name,
Gender: male,
}
- err := tx.ScaAuthUser.Create(user)
+ err = tx.ScaAuthUser.Create(user)
if err != nil {
_ = tx.Rollback()
return nil, err
}
- _, err = l.svcCtx.CasbinEnforcer.AddRoleForUser(uidStr, constant.User)
+ _, err = l.svcCtx.CasbinEnforcer.AddRoleForUser(uidStr, constant2.User)
if err != nil {
_ = tx.Rollback()
return nil, err
@@ -88,7 +89,7 @@ func (l *PhoneLoginLogic) PhoneLogin(r *http.Request, w http.ResponseWriter, req
if err != nil {
return nil, err
}
- return response.SuccessWithData(data), nil
+ return data, nil
} else {
data, err := HandleLoginJWT(userInfo, l.svcCtx, req.AutoLogin, r, l.ctx)
if err != nil {
@@ -99,6 +100,6 @@ func (l *PhoneLoginLogic) PhoneLogin(r *http.Request, w http.ResponseWriter, req
if err != nil {
return nil, err
}
- return response.SuccessWithData(data), nil
+ return data, nil
}
}
diff --git a/app/auth/api/internal/logic/user/reset_password_logic.go b/app/auth/api/internal/logic/user/reset_password_logic.go
new file mode 100644
index 0000000..51b8808
--- /dev/null
+++ b/app/auth/api/internal/logic/user/reset_password_logic.go
@@ -0,0 +1,76 @@
+package user
+
+import (
+ "context"
+ "errors"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/constant"
+ errors2 "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/i18n"
+ utils2 "schisandra-album-cloud-microservices/common/utils"
+
+ "github.com/zeromicro/go-zero/core/logx"
+ "gorm.io/gorm"
+
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
+)
+
+type ResetPasswordLogic struct {
+ logx.Logger
+ ctx context.Context
+ svcCtx *svc.ServiceContext
+}
+
+func NewResetPasswordLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ResetPasswordLogic {
+ return &ResetPasswordLogic{
+ Logger: logx.WithContext(ctx),
+ ctx: ctx,
+ svcCtx: svcCtx,
+ }
+}
+
+func (l *ResetPasswordLogic) ResetPassword(req *types.ResetPasswordRequest) (err error) {
+ if !utils2.IsPhone(req.Phone) {
+ return errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.phoneFormatError"))
+ }
+ if req.Password != req.Repassword {
+ return errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.passwordNotMatch"))
+ }
+ if !utils2.IsPassword(req.Password) {
+ return errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.passwordFormatError"))
+ }
+ code := l.svcCtx.RedisClient.Get(l.ctx, constant.UserSmsRedisPrefix+req.Phone).Val()
+ if code == "" {
+ return errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.captchaExpired"))
+ }
+ if req.Captcha != code {
+ return errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.captchaError"))
+ }
+ // 验证码检查通过后立即删除或标记为已使用
+ if err = l.svcCtx.RedisClient.Del(l.ctx, constant.UserSmsRedisPrefix+req.Phone).Err(); err != nil {
+ return errors2.New(http.StatusInternalServerError, err.Error())
+ }
+ authUser := l.svcCtx.DB.ScaAuthUser
+
+ userInfo, err := authUser.Where(authUser.Phone.Eq(req.Phone)).First()
+ if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
+ return errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.userNotRegistered"))
+ }
+ if err != nil {
+ return errors2.New(http.StatusInternalServerError, err.Error())
+ }
+ encrypt, err := utils2.Encrypt(req.Password)
+ if err != nil {
+ return errors2.New(http.StatusInternalServerError, err.Error())
+ }
+
+ affected, err := authUser.Where(authUser.ID.Eq(userInfo.ID), authUser.Phone.Eq(req.Phone)).Update(authUser.Password, encrypt)
+ if err != nil {
+ return errors2.New(http.StatusInternalServerError, err.Error())
+ }
+ if affected.RowsAffected == 0 {
+ return errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "login.resetPasswordError"))
+ }
+ return nil
+}
diff --git a/app/core/api/internal/logic/user/wechat_offiaccount_login_logic.go b/app/auth/api/internal/logic/user/wechat_offiaccount_login_logic.go
similarity index 75%
rename from app/core/api/internal/logic/user/wechat_offiaccount_login_logic.go
rename to app/auth/api/internal/logic/user/wechat_offiaccount_login_logic.go
index 2599b87..7c9b6e1 100644
--- a/app/core/api/internal/logic/user/wechat_offiaccount_login_logic.go
+++ b/app/auth/api/internal/logic/user/wechat_offiaccount_login_logic.go
@@ -6,16 +6,17 @@ import (
"github.com/yitter/idgenerator-go/idgen"
"gorm.io/gorm"
"net/http"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/encrypt"
- randomname "schisandra-album-cloud-microservices/app/core/api/common/random_name"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/model"
+ "schisandra-album-cloud-microservices/common/constant"
+ "schisandra-album-cloud-microservices/common/encrypt"
+ errors2 "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/i18n"
+ "schisandra-album-cloud-microservices/common/random_name"
+ "schisandra-album-cloud-microservices/common/utils"
"strconv"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -34,18 +35,18 @@ func NewWechatOffiaccountLoginLogic(ctx context.Context, svcCtx *svc.ServiceCont
}
}
-func (l *WechatOffiaccountLoginLogic) WechatOffiaccountLogin(r *http.Request, req *types.WechatOffiaccountLoginRequest) (resp *types.Response, err error) {
+func (l *WechatOffiaccountLoginLogic) WechatOffiaccountLogin(r *http.Request, req *types.WechatOffiaccountLoginRequest) (resp *types.LoginResponse, err error) {
decryptedClientId, err := encrypt.Decrypt(req.ClientId, l.svcCtx.Config.Encrypt.Key, l.svcCtx.Config.Encrypt.IV)
if err != nil {
- return response.ErrorWithI18n(l.ctx, "login.loginFailed"), nil
+ return nil, err
}
clientId := l.svcCtx.RedisClient.Get(r.Context(), constant.UserClientPrefix+decryptedClientId).Val()
if clientId == "" {
- return response.ErrorWithI18n(l.ctx, "login.loginFailed"), nil
+ return nil, errors2.New(http.StatusUnauthorized, i18n.FormatText(l.ctx, "login.loginFailed"))
}
Openid, err := encrypt.Decrypt(req.Openid, l.svcCtx.Config.Encrypt.Key, l.svcCtx.Config.Encrypt.IV)
if err != nil {
- return response.ErrorWithI18n(l.ctx, "login.loginFailed"), nil
+ return nil, err
}
tx := l.svcCtx.DB.Begin()
userSocial := l.svcCtx.DB.ScaAuthUserSocial
@@ -97,7 +98,7 @@ func (l *WechatOffiaccountLoginLogic) WechatOffiaccountLogin(r *http.Request, re
if err = tx.Commit(); err != nil {
return nil, err
}
- return response.SuccessWithData(data), nil
+ return data, nil
} else {
authUser := l.svcCtx.DB.ScaAuthUser
@@ -114,7 +115,7 @@ func (l *WechatOffiaccountLoginLogic) WechatOffiaccountLogin(r *http.Request, re
if err = tx.Commit(); err != nil {
return nil, err
}
- return response.SuccessWithData(data), nil
+ return data, nil
}
}
diff --git a/app/core/api/internal/logic/websocket/message_websocket_logic.go b/app/auth/api/internal/logic/websocket/message_websocket_logic.go
similarity index 96%
rename from app/core/api/internal/logic/websocket/message_websocket_logic.go
rename to app/auth/api/internal/logic/websocket/message_websocket_logic.go
index a68a7ff..2aa360f 100644
--- a/app/core/api/internal/logic/websocket/message_websocket_logic.go
+++ b/app/auth/api/internal/logic/websocket/message_websocket_logic.go
@@ -4,13 +4,13 @@ import (
"context"
"fmt"
"net/http"
+ "schisandra-album-cloud-microservices/common/jwt"
"time"
"github.com/lxzan/gws"
"github.com/zeromicro/go-zero/core/logx"
- "schisandra-album-cloud-microservices/app/core/api/common/jwt"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
)
type MessageWebsocketLogic struct {
diff --git a/app/core/api/internal/logic/websocket/qrcode_websocket_logic.go b/app/auth/api/internal/logic/websocket/qrcode_websocket_logic.go
similarity index 94%
rename from app/core/api/internal/logic/websocket/qrcode_websocket_logic.go
rename to app/auth/api/internal/logic/websocket/qrcode_websocket_logic.go
index 5e84e33..7a75709 100644
--- a/app/core/api/internal/logic/websocket/qrcode_websocket_logic.go
+++ b/app/auth/api/internal/logic/websocket/qrcode_websocket_logic.go
@@ -4,14 +4,14 @@ import (
"context"
"fmt"
"net/http"
+ "schisandra-album-cloud-microservices/common/constant"
+ "schisandra-album-cloud-microservices/common/utils"
"time"
"github.com/lxzan/gws"
"github.com/zeromicro/go-zero/core/logx"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/svc"
)
type QrcodeWebsocketLogic struct {
diff --git a/app/auth/api/internal/middleware/authorization_middleware.go b/app/auth/api/internal/middleware/authorization_middleware.go
new file mode 100644
index 0000000..c5b8bbc
--- /dev/null
+++ b/app/auth/api/internal/middleware/authorization_middleware.go
@@ -0,0 +1,20 @@
+package middleware
+
+import (
+ "net/http"
+ "schisandra-album-cloud-microservices/common/middleware"
+)
+
+type AuthorizationMiddleware struct {
+}
+
+func NewAuthorizationMiddleware() *AuthorizationMiddleware {
+ return &AuthorizationMiddleware{}
+}
+
+func (m *AuthorizationMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ middleware.AuthorizationMiddleware(w, r)
+ next(w, r)
+ }
+}
diff --git a/app/core/api/internal/middleware/casbinverify_middleware.go b/app/auth/api/internal/middleware/casbinverify_middleware.go
similarity index 59%
rename from app/core/api/internal/middleware/casbinverify_middleware.go
rename to app/auth/api/internal/middleware/casbinverify_middleware.go
index ab0019d..df91e5b 100644
--- a/app/core/api/internal/middleware/casbinverify_middleware.go
+++ b/app/auth/api/internal/middleware/casbinverify_middleware.go
@@ -3,7 +3,7 @@ package middleware
import (
"github.com/casbin/casbin/v2"
"net/http"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
+ "schisandra-album-cloud-microservices/common/middleware"
)
type CasbinVerifyMiddleware struct {
@@ -18,12 +18,7 @@ func NewCasbinVerifyMiddleware(casbin *casbin.SyncedCachedEnforcer) *CasbinVerif
func (m *CasbinVerifyMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
- userId := r.Header.Get(constant.UID_HEADER_KEY)
- correct, err := m.casbin.Enforce(userId, r.URL.Path, r.Method)
- if err != nil || !correct {
- http.Error(w, http.StatusText(http.StatusForbidden), http.StatusForbidden)
- return
- }
+ middleware.CasbinMiddleware(w, r, m.casbin)
next(w, r)
}
}
diff --git a/app/auth/api/internal/middleware/nonce_middleware.go b/app/auth/api/internal/middleware/nonce_middleware.go
new file mode 100644
index 0000000..a50274c
--- /dev/null
+++ b/app/auth/api/internal/middleware/nonce_middleware.go
@@ -0,0 +1,24 @@
+package middleware
+
+import (
+ "github.com/redis/go-redis/v9"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/middleware"
+)
+
+type NonceMiddleware struct {
+ RedisClient *redis.Client
+}
+
+func NewNonceMiddleware(redisClient *redis.Client) *NonceMiddleware {
+ return &NonceMiddleware{
+ RedisClient: redisClient,
+ }
+}
+
+func (m *NonceMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ middleware.NonceMiddleware(w, r, m.RedisClient)
+ next(w, r)
+ }
+}
diff --git a/app/core/api/internal/middleware/securityheaders_middleware.go b/app/auth/api/internal/middleware/securityheaders_middleware.go
similarity index 84%
rename from app/core/api/internal/middleware/securityheaders_middleware.go
rename to app/auth/api/internal/middleware/securityheaders_middleware.go
index 3b58cfe..6faf51a 100644
--- a/app/core/api/internal/middleware/securityheaders_middleware.go
+++ b/app/auth/api/internal/middleware/securityheaders_middleware.go
@@ -2,8 +2,7 @@ package middleware
import (
"net/http"
-
- "schisandra-album-cloud-microservices/app/core/api/common/middleware"
+ "schisandra-album-cloud-microservices/common/middleware"
)
type SecurityHeadersMiddleware struct {
diff --git a/app/auth/api/internal/svc/service_context.go b/app/auth/api/internal/svc/service_context.go
new file mode 100644
index 0000000..6c1d3bf
--- /dev/null
+++ b/app/auth/api/internal/svc/service_context.go
@@ -0,0 +1,56 @@
+package svc
+
+import (
+ "github.com/ArtisanCloud/PowerWeChat/v3/src/officialAccount"
+ "github.com/casbin/casbin/v2"
+ "github.com/lionsoul2014/ip2region/binding/golang/xdb"
+ "github.com/redis/go-redis/v9"
+ "github.com/wenlng/go-captcha/v2/rotate"
+ "github.com/wenlng/go-captcha/v2/slide"
+ "github.com/zeromicro/go-zero/rest"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/config"
+ "schisandra-album-cloud-microservices/app/auth/api/internal/middleware"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/query"
+ "schisandra-album-cloud-microservices/common/captcha/initialize"
+ "schisandra-album-cloud-microservices/common/casbinx"
+ "schisandra-album-cloud-microservices/common/ip2region"
+ "schisandra-album-cloud-microservices/common/redisx"
+ "schisandra-album-cloud-microservices/common/wechat_official"
+)
+
+type ServiceContext struct {
+ Config config.Config
+ SecurityHeadersMiddleware rest.Middleware
+ CasbinVerifyMiddleware rest.Middleware
+ AuthorizationMiddleware rest.Middleware
+ NonceMiddleware rest.Middleware
+ DB *query.Query
+ RedisClient *redis.Client
+ Ip2Region *xdb.Searcher
+ CasbinEnforcer *casbin.SyncedCachedEnforcer
+ WechatOfficial *officialAccount.OfficialAccount
+
+ RotateCaptcha rotate.Captcha
+ SlideCaptcha slide.Captcha
+}
+
+func NewServiceContext(c config.Config) *ServiceContext {
+ redisClient := redisx.NewRedis(c.Redis.Host, c.Redis.Pass, c.Redis.DB)
+ db, queryDB := mysql.NewMySQL(c.Mysql.DataSource, c.Mysql.MaxOpenConn, c.Mysql.MaxIdleConn, redisClient)
+ casbinEnforcer := casbinx.NewCasbin(db)
+ return &ServiceContext{
+ Config: c,
+ SecurityHeadersMiddleware: middleware.NewSecurityHeadersMiddleware().Handle,
+ CasbinVerifyMiddleware: middleware.NewCasbinVerifyMiddleware(casbinEnforcer).Handle,
+ AuthorizationMiddleware: middleware.NewAuthorizationMiddleware().Handle,
+ NonceMiddleware: middleware.NewNonceMiddleware(redisClient).Handle,
+ DB: queryDB,
+ RedisClient: redisClient,
+ Ip2Region: ip2region.NewIP2Region(),
+ CasbinEnforcer: casbinEnforcer,
+ WechatOfficial: wechat_official.NewWechatPublic(c.Wechat.AppID, c.Wechat.AppSecret, c.Wechat.Token, c.Wechat.AESKey, c.Redis.Host, c.Redis.Pass, c.Redis.DB),
+ RotateCaptcha: initialize.NewRotateCaptcha(),
+ SlideCaptcha: initialize.NewSlideCaptcha(),
+ }
+}
diff --git a/app/core/api/internal/types/token.go b/app/auth/api/internal/types/token.go
similarity index 100%
rename from app/core/api/internal/types/token.go
rename to app/auth/api/internal/types/token.go
diff --git a/app/auth/api/internal/types/types.go b/app/auth/api/internal/types/types.go
new file mode 100644
index 0000000..9337294
--- /dev/null
+++ b/app/auth/api/internal/types/types.go
@@ -0,0 +1,79 @@
+// Code generated by goctl. DO NOT EDIT.
+// goctl 1.7.3
+
+package types
+
+type AccountLoginRequest struct {
+ Account string `json:"account"`
+ Password string `json:"password"`
+ AutoLogin bool `json:"auto_login"`
+ Angle int64 `json:"angle"`
+ Key string `json:"key"`
+}
+
+type LoginResponse struct {
+ AccessToken string `json:"access_token"`
+ ExpireAt int64 `json:"expire_at"`
+ UID string `json:"uid"`
+ Username string `json:"username,omitempty"`
+ Nickname string `json:"nickname"`
+ Avatar string `json:"avatar"`
+ Status int64 `json:"status"`
+}
+
+type OAuthCallbackRequest struct {
+ Code string `form:"code"`
+}
+
+type OAuthRequest struct {
+ State string `form:"state"`
+}
+
+type OAuthWechatRequest struct {
+ ClientId string `json:"client_id"`
+}
+
+type PhoneLoginRequest struct {
+ Phone string `json:"phone"`
+ Captcha string `json:"captcha"`
+ AutoLogin bool `json:"auto_login"`
+}
+
+type RefreshTokenResponse struct {
+ AccessToken string `json:"access_token"`
+ ExpireAt int64 `json:"expire_at"`
+}
+
+type ResetPasswordRequest struct {
+ Phone string `json:"phone"`
+ Captcha string `json:"captcha"`
+ Password string `json:"password"`
+ Repassword string `json:"repassword"`
+}
+
+type RotateCaptchaResponse struct {
+ Key string `json:"key"`
+ Image string `json:"image"`
+ Thumb string `json:"thumb"`
+}
+
+type SlideCaptchaResponse struct {
+ Key string `json:"key"`
+ Image string `json:"image"`
+ Thumb string `json:"thumb"`
+ ThumbWidth int64 `json:"thumb_width"`
+ ThumbHeight int64 `json:"thumb_height"`
+ ThumbX int64 `json:"thumb_x"`
+ ThumbY int64 `json:"thumb_y"`
+}
+
+type SmsSendRequest struct {
+ Phone string `json:"phone"`
+ Angle int64 `json:"angle"`
+ Key string `json:"key"`
+}
+
+type WechatOffiaccountLoginRequest struct {
+ Openid string `json:"openid"`
+ ClientId string `json:"client_id"`
+}
diff --git a/app/auth/api/model/mysql/generate/generate.go b/app/auth/api/model/mysql/generate/generate.go
new file mode 100644
index 0000000..cf5267d
--- /dev/null
+++ b/app/auth/api/model/mysql/generate/generate.go
@@ -0,0 +1,107 @@
+package main
+
+import (
+ "os"
+ "path/filepath"
+ "strings"
+
+ "gorm.io/driver/mysql"
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+ "gorm.io/gorm"
+)
+
+const MySQLDSN = "root:1611@(localhost:3306)/schisandra-cloud-album?charset=utf8mb4&parseTime=True&loc=Local"
+
+func main() {
+
+ // 连接数据库
+ db, err := gorm.Open(mysql.Open(MySQLDSN))
+ if err != nil {
+ panic(err)
+ }
+
+ dir, err := os.Getwd()
+ if err != nil {
+ panic(err)
+ }
+ path := filepath.Join(dir, "app/auth/api/model/mysql/", "query")
+ // 生成实例
+ g := gen.NewGenerator(gen.Config{
+ // 相对执行`go run`时的路径, 会自动创建目录
+ OutPath: path,
+ // 生成的文件名,默认gen.go
+ OutFile: "gen.go",
+ // 生成DAO代码的包名,默认是:model
+ ModelPkgPath: "model",
+ // 是否为DAO包生成单元测试代码,默认:false
+ WithUnitTest: false,
+
+ // WithDefaultQuery 生成默认查询结构体(作为全局变量使用), 即`Q`结构体和其字段(各表模型)
+ // WithoutContext 生成没有context调用限制的代码供查询
+ // WithQueryInterface 生成interface形式的查询代码(可导出), 如`Where()`方法返回的就是一个可导出的接口类型
+ Mode: gen.WithDefaultQuery | gen.WithQueryInterface | gen.WithoutContext,
+
+ // 表字段可为 null 值时, 对应结体字段使用指针类型
+ FieldNullable: false, // generate pointer when field is nullable
+
+ // 表字段默认值与模型结构体字段零值不一致的字段, 在插入数据时需要赋值该字段值为零值的, 结构体字段须是指针类型才能成功, 即`FieldCoverable:true`配置下生成的结构体字段.
+ // 因为在插入时遇到字段为零值的会被GORM赋予默认值. 如字段`age`表默认值为10, 即使你显式设置为0最后也会被GORM设为10提交.
+ // 如果该字段没有上面提到的插入时赋零值的特殊需要, 则字段为非指针类型使用起来会比较方便.
+ FieldCoverable: true,
+
+ // 模型结构体字段的数字类型的符号表示是否与表字段的一致, `false`指示都用有符号类型
+ FieldSignable: false,
+ // 生成 gorm 标签的字段索引属性
+ FieldWithIndexTag: true,
+ // 生成 gorm 标签的字段类型属性
+ FieldWithTypeTag: true,
+ })
+ // 设置目标 db
+ g.UseDB(db)
+
+ // 自定义字段的数据类型
+ // 统一数字类型为int64,兼容protobuf
+ 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" },
+ }
+ // 要先于`ApplyBasic`执行
+ g.WithDataTypeMap(dataMap)
+
+ // 自定义模型结体字段的标签
+ // 将特定字段名的 json 标签加上`string`属性,即 MarshalJSON 时该字段由数字类型转成字符串类型
+ jsonField := gen.FieldJSONTagWithNS(func(columnName string) (tagContent string) {
+ toStringField := `id, `
+ if strings.Contains(toStringField, columnName) {
+ return columnName + ",string"
+ }
+ return columnName
+ })
+ // 将非默认字段名的字段定义为自动时间戳和软删除字段;
+ // 自动时间戳默认字段名为:`updated_at`、`created_at, 表字段数据类型为: INT 或 DATETIME
+ // 软删除默认字段名为:`deleted_at`, 表字段数据类型为: DATETIME
+ idField := gen.FieldGORMTag("id", func(tag field.GormTag) field.GormTag {
+ return tag.Append("primary_key")
+ })
+ autoUpdateTimeField := gen.FieldGORMTag("updated_at", func(tag field.GormTag) field.GormTag {
+ return tag.Append("autoUpdateTime")
+ })
+ autoCreateTimeField := gen.FieldGORMTag("created_at", func(tag field.GormTag) field.GormTag {
+ return tag.Append("autoCreateTime")
+ })
+ softDeleteField := gen.FieldType("delete_at", "gorm.DeletedAt")
+ versionField := gen.FieldType("version", "optimisticlock.Version")
+ // 模型自定义选项组
+ fieldOpts := []gen.ModelOpt{jsonField, idField, autoUpdateTimeField, autoCreateTimeField, softDeleteField, versionField}
+
+ // 创建全部模型文件, 并覆盖前面创建的同名模型
+ allModel := g.GenerateAllTable(fieldOpts...)
+
+ g.ApplyBasic(allModel...)
+
+ g.Execute()
+}
diff --git a/app/core/api/repository/mysql/model/sca_auth_menu.gen.go b/app/auth/api/model/mysql/model/sca_auth_menu.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_auth_menu.gen.go
rename to app/auth/api/model/mysql/model/sca_auth_menu.gen.go
diff --git a/app/core/api/repository/mysql/model/sca_auth_permission_rule.gen.go b/app/auth/api/model/mysql/model/sca_auth_permission_rule.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_auth_permission_rule.gen.go
rename to app/auth/api/model/mysql/model/sca_auth_permission_rule.gen.go
diff --git a/app/core/api/repository/mysql/model/sca_auth_role.gen.go b/app/auth/api/model/mysql/model/sca_auth_role.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_auth_role.gen.go
rename to app/auth/api/model/mysql/model/sca_auth_role.gen.go
diff --git a/app/core/api/repository/mysql/model/sca_auth_user.gen.go b/app/auth/api/model/mysql/model/sca_auth_user.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_auth_user.gen.go
rename to app/auth/api/model/mysql/model/sca_auth_user.gen.go
diff --git a/app/core/api/repository/mysql/model/sca_auth_user_device.gen.go b/app/auth/api/model/mysql/model/sca_auth_user_device.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_auth_user_device.gen.go
rename to app/auth/api/model/mysql/model/sca_auth_user_device.gen.go
diff --git a/app/core/api/repository/mysql/model/sca_auth_user_social.gen.go b/app/auth/api/model/mysql/model/sca_auth_user_social.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_auth_user_social.gen.go
rename to app/auth/api/model/mysql/model/sca_auth_user_social.gen.go
diff --git a/app/core/api/repository/mysql/model/sca_user_level.gen.go b/app/auth/api/model/mysql/model/sca_user_level.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_user_level.gen.go
rename to app/auth/api/model/mysql/model/sca_user_level.gen.go
diff --git a/app/core/api/repository/mysql/model/sca_user_message.gen.go b/app/auth/api/model/mysql/model/sca_user_message.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_user_message.gen.go
rename to app/auth/api/model/mysql/model/sca_user_message.gen.go
diff --git a/app/auth/api/model/mysql/mysql.go b/app/auth/api/model/mysql/mysql.go
new file mode 100644
index 0000000..c635322
--- /dev/null
+++ b/app/auth/api/model/mysql/mysql.go
@@ -0,0 +1,64 @@
+package mysql
+
+import (
+ "github.com/asjdf/gorm-cache/cache"
+ "github.com/asjdf/gorm-cache/config"
+ "github.com/asjdf/gorm-cache/storage"
+ "github.com/redis/go-redis/v9"
+ "gorm.io/driver/mysql"
+ "gorm.io/gorm"
+ "gorm.io/gorm/logger"
+ "log"
+ "os"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/query"
+ "time"
+)
+
+func NewMySQL(url string, maxOpenConn int, maxIdleConn int, client *redis.Client) (*gorm.DB, *query.Query) {
+ db, err := gorm.Open(mysql.Open(url), &gorm.Config{
+ SkipDefaultTransaction: true,
+ PrepareStmt: true,
+ Logger: logger.New(
+ log.New(os.Stdout, "\r\n", log.LstdFlags),
+ logger.Config{
+ SlowThreshold: time.Second, // 慢sql日志
+ LogLevel: logger.Error, // 级别
+ Colorful: true, // 颜色
+ IgnoreRecordNotFoundError: true, // 忽略RecordNotFoundError
+ ParameterizedQueries: true, // 格式化SQL语句
+ }),
+ })
+ if err != nil {
+ panic(err)
+ }
+ sqlDB, err := db.DB()
+ if err != nil {
+ panic(err)
+ }
+ sqlDB.SetMaxOpenConns(maxOpenConn)
+ sqlDB.SetMaxIdleConns(maxIdleConn)
+ useDB := query.Use(db)
+ // cache
+ gormCache, err := cache.NewGorm2Cache(&config.CacheConfig{
+ CacheLevel: config.CacheLevelAll,
+ CacheStorage: storage.NewRedis(&storage.RedisStoreConfig{
+ KeyPrefix: "cache",
+ Client: client,
+ }),
+ InvalidateWhenUpdate: true, // when you create/update/delete objects, invalidate cache
+ CacheTTL: 10000, // 5000 ms
+ CacheMaxItemCnt: 0, // if length of objects retrieved one single time
+ AsyncWrite: true, // async write to cache
+ DebugMode: false,
+ DisableCachePenetrationProtect: true, // disable cache penetration protect
+ })
+ if err != nil {
+ panic(err)
+ }
+ err = db.Use(gormCache)
+ if err != nil {
+ panic(err)
+ }
+
+ return db, useDB
+}
diff --git a/app/auth/api/model/mysql/query/gen.go b/app/auth/api/model/mysql/query/gen.go
new file mode 100644
index 0000000..b13cbed
--- /dev/null
+++ b/app/auth/api/model/mysql/query/gen.go
@@ -0,0 +1,159 @@
+// 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)
+ ScaAuthMenu *scaAuthMenu
+ ScaAuthPermissionRule *scaAuthPermissionRule
+ ScaAuthRole *scaAuthRole
+ ScaAuthUser *scaAuthUser
+ ScaAuthUserDevice *scaAuthUserDevice
+ ScaAuthUserSocial *scaAuthUserSocial
+ ScaUserLevel *scaUserLevel
+ ScaUserMessage *scaUserMessage
+)
+
+func SetDefault(db *gorm.DB, opts ...gen.DOOption) {
+ *Q = *Use(db, opts...)
+ ScaAuthMenu = &Q.ScaAuthMenu
+ ScaAuthPermissionRule = &Q.ScaAuthPermissionRule
+ ScaAuthRole = &Q.ScaAuthRole
+ ScaAuthUser = &Q.ScaAuthUser
+ ScaAuthUserDevice = &Q.ScaAuthUserDevice
+ ScaAuthUserSocial = &Q.ScaAuthUserSocial
+ ScaUserLevel = &Q.ScaUserLevel
+ ScaUserMessage = &Q.ScaUserMessage
+}
+
+func Use(db *gorm.DB, opts ...gen.DOOption) *Query {
+ return &Query{
+ db: db,
+ ScaAuthMenu: newScaAuthMenu(db, opts...),
+ ScaAuthPermissionRule: newScaAuthPermissionRule(db, opts...),
+ ScaAuthRole: newScaAuthRole(db, opts...),
+ ScaAuthUser: newScaAuthUser(db, opts...),
+ ScaAuthUserDevice: newScaAuthUserDevice(db, opts...),
+ ScaAuthUserSocial: newScaAuthUserSocial(db, opts...),
+ ScaUserLevel: newScaUserLevel(db, opts...),
+ ScaUserMessage: newScaUserMessage(db, opts...),
+ }
+}
+
+type Query struct {
+ db *gorm.DB
+
+ ScaAuthMenu scaAuthMenu
+ ScaAuthPermissionRule scaAuthPermissionRule
+ ScaAuthRole scaAuthRole
+ ScaAuthUser scaAuthUser
+ ScaAuthUserDevice scaAuthUserDevice
+ ScaAuthUserSocial scaAuthUserSocial
+ ScaUserLevel scaUserLevel
+ ScaUserMessage scaUserMessage
+}
+
+func (q *Query) Available() bool { return q.db != nil }
+
+func (q *Query) clone(db *gorm.DB) *Query {
+ return &Query{
+ db: db,
+ ScaAuthMenu: q.ScaAuthMenu.clone(db),
+ ScaAuthPermissionRule: q.ScaAuthPermissionRule.clone(db),
+ ScaAuthRole: q.ScaAuthRole.clone(db),
+ ScaAuthUser: q.ScaAuthUser.clone(db),
+ ScaAuthUserDevice: q.ScaAuthUserDevice.clone(db),
+ ScaAuthUserSocial: q.ScaAuthUserSocial.clone(db),
+ ScaUserLevel: q.ScaUserLevel.clone(db),
+ ScaUserMessage: q.ScaUserMessage.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,
+ ScaAuthMenu: q.ScaAuthMenu.replaceDB(db),
+ ScaAuthPermissionRule: q.ScaAuthPermissionRule.replaceDB(db),
+ ScaAuthRole: q.ScaAuthRole.replaceDB(db),
+ ScaAuthUser: q.ScaAuthUser.replaceDB(db),
+ ScaAuthUserDevice: q.ScaAuthUserDevice.replaceDB(db),
+ ScaAuthUserSocial: q.ScaAuthUserSocial.replaceDB(db),
+ ScaUserLevel: q.ScaUserLevel.replaceDB(db),
+ ScaUserMessage: q.ScaUserMessage.replaceDB(db),
+ }
+}
+
+type queryCtx struct {
+ ScaAuthMenu IScaAuthMenuDo
+ ScaAuthPermissionRule IScaAuthPermissionRuleDo
+ ScaAuthRole IScaAuthRoleDo
+ ScaAuthUser IScaAuthUserDo
+ ScaAuthUserDevice IScaAuthUserDeviceDo
+ ScaAuthUserSocial IScaAuthUserSocialDo
+ ScaUserLevel IScaUserLevelDo
+ ScaUserMessage IScaUserMessageDo
+}
+
+func (q *Query) WithContext(ctx context.Context) *queryCtx {
+ return &queryCtx{
+ ScaAuthMenu: q.ScaAuthMenu.WithContext(ctx),
+ ScaAuthPermissionRule: q.ScaAuthPermissionRule.WithContext(ctx),
+ ScaAuthRole: q.ScaAuthRole.WithContext(ctx),
+ ScaAuthUser: q.ScaAuthUser.WithContext(ctx),
+ ScaAuthUserDevice: q.ScaAuthUserDevice.WithContext(ctx),
+ ScaAuthUserSocial: q.ScaAuthUserSocial.WithContext(ctx),
+ ScaUserLevel: q.ScaUserLevel.WithContext(ctx),
+ ScaUserMessage: q.ScaUserMessage.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/app/auth/api/model/mysql/query/sca_auth_menu.gen.go b/app/auth/api/model/mysql/query/sca_auth_menu.gen.go
new file mode 100644
index 0000000..245c2e7
--- /dev/null
+++ b/app/auth/api/model/mysql/query/sca_auth_menu.gen.go
@@ -0,0 +1,427 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/model"
+
+ "gorm.io/gorm"
+ "gorm.io/gorm/clause"
+ "gorm.io/gorm/schema"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaAuthMenu(db *gorm.DB, opts ...gen.DOOption) scaAuthMenu {
+ _scaAuthMenu := scaAuthMenu{}
+
+ _scaAuthMenu.scaAuthMenuDo.UseDB(db, opts...)
+ _scaAuthMenu.scaAuthMenuDo.UseModel(&model.ScaAuthMenu{})
+
+ tableName := _scaAuthMenu.scaAuthMenuDo.TableName()
+ _scaAuthMenu.ALL = field.NewAsterisk(tableName)
+ _scaAuthMenu.ID = field.NewInt64(tableName, "id")
+ _scaAuthMenu.MenuName = field.NewString(tableName, "menu_name")
+ _scaAuthMenu.ParentID = field.NewInt64(tableName, "parent_id")
+ _scaAuthMenu.Type = field.NewInt64(tableName, "type")
+ _scaAuthMenu.Path = field.NewString(tableName, "path")
+ _scaAuthMenu.Status = field.NewInt64(tableName, "status")
+ _scaAuthMenu.Icon = field.NewString(tableName, "icon")
+ _scaAuthMenu.MenuKey = field.NewString(tableName, "menu_key")
+ _scaAuthMenu.Order_ = field.NewInt64(tableName, "order")
+ _scaAuthMenu.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaAuthMenu.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaAuthMenu.Remark = field.NewString(tableName, "remark")
+ _scaAuthMenu.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaAuthMenu.fillFieldMap()
+
+ return _scaAuthMenu
+}
+
+type scaAuthMenu struct {
+ scaAuthMenuDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键ID
+ MenuName field.String // 名称
+ ParentID field.Int64 // 父ID
+ Type field.Int64 // 类型
+ Path field.String // 路径
+ Status field.Int64 // 状态 0 启用 1 停用
+ Icon field.String // 图标
+ MenuKey field.String // 关键字
+ Order_ field.Int64 // 排序
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ Remark field.String // 备注 描述
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaAuthMenu) Table(newTableName string) *scaAuthMenu {
+ s.scaAuthMenuDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaAuthMenu) As(alias string) *scaAuthMenu {
+ s.scaAuthMenuDo.DO = *(s.scaAuthMenuDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaAuthMenu) updateTableName(table string) *scaAuthMenu {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.MenuName = field.NewString(table, "menu_name")
+ s.ParentID = field.NewInt64(table, "parent_id")
+ s.Type = field.NewInt64(table, "type")
+ s.Path = field.NewString(table, "path")
+ s.Status = field.NewInt64(table, "status")
+ s.Icon = field.NewString(table, "icon")
+ s.MenuKey = field.NewString(table, "menu_key")
+ s.Order_ = field.NewInt64(table, "order")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.Remark = field.NewString(table, "remark")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaAuthMenu) 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 *scaAuthMenu) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 13)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["menu_name"] = s.MenuName
+ s.fieldMap["parent_id"] = s.ParentID
+ s.fieldMap["type"] = s.Type
+ s.fieldMap["path"] = s.Path
+ s.fieldMap["status"] = s.Status
+ s.fieldMap["icon"] = s.Icon
+ s.fieldMap["menu_key"] = s.MenuKey
+ s.fieldMap["order"] = s.Order_
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["remark"] = s.Remark
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaAuthMenu) clone(db *gorm.DB) scaAuthMenu {
+ s.scaAuthMenuDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaAuthMenu) replaceDB(db *gorm.DB) scaAuthMenu {
+ s.scaAuthMenuDo.ReplaceDB(db)
+ return s
+}
+
+type scaAuthMenuDo struct{ gen.DO }
+
+type IScaAuthMenuDo interface {
+ gen.SubQuery
+ Debug() IScaAuthMenuDo
+ WithContext(ctx context.Context) IScaAuthMenuDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaAuthMenuDo
+ WriteDB() IScaAuthMenuDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaAuthMenuDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaAuthMenuDo
+ Not(conds ...gen.Condition) IScaAuthMenuDo
+ Or(conds ...gen.Condition) IScaAuthMenuDo
+ Select(conds ...field.Expr) IScaAuthMenuDo
+ Where(conds ...gen.Condition) IScaAuthMenuDo
+ Order(conds ...field.Expr) IScaAuthMenuDo
+ Distinct(cols ...field.Expr) IScaAuthMenuDo
+ Omit(cols ...field.Expr) IScaAuthMenuDo
+ Join(table schema.Tabler, on ...field.Expr) IScaAuthMenuDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthMenuDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthMenuDo
+ Group(cols ...field.Expr) IScaAuthMenuDo
+ Having(conds ...gen.Condition) IScaAuthMenuDo
+ Limit(limit int) IScaAuthMenuDo
+ Offset(offset int) IScaAuthMenuDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthMenuDo
+ Unscoped() IScaAuthMenuDo
+ Create(values ...*model.ScaAuthMenu) error
+ CreateInBatches(values []*model.ScaAuthMenu, batchSize int) error
+ Save(values ...*model.ScaAuthMenu) error
+ First() (*model.ScaAuthMenu, error)
+ Take() (*model.ScaAuthMenu, error)
+ Last() (*model.ScaAuthMenu, error)
+ Find() ([]*model.ScaAuthMenu, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthMenu, err error)
+ FindInBatches(result *[]*model.ScaAuthMenu, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaAuthMenu) (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) IScaAuthMenuDo
+ Assign(attrs ...field.AssignExpr) IScaAuthMenuDo
+ Joins(fields ...field.RelationField) IScaAuthMenuDo
+ Preload(fields ...field.RelationField) IScaAuthMenuDo
+ FirstOrInit() (*model.ScaAuthMenu, error)
+ FirstOrCreate() (*model.ScaAuthMenu, error)
+ FindByPage(offset int, limit int) (result []*model.ScaAuthMenu, 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) IScaAuthMenuDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaAuthMenuDo) Debug() IScaAuthMenuDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaAuthMenuDo) WithContext(ctx context.Context) IScaAuthMenuDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaAuthMenuDo) ReadDB() IScaAuthMenuDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaAuthMenuDo) WriteDB() IScaAuthMenuDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaAuthMenuDo) Session(config *gorm.Session) IScaAuthMenuDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaAuthMenuDo) Clauses(conds ...clause.Expression) IScaAuthMenuDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaAuthMenuDo) Returning(value interface{}, columns ...string) IScaAuthMenuDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaAuthMenuDo) Not(conds ...gen.Condition) IScaAuthMenuDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaAuthMenuDo) Or(conds ...gen.Condition) IScaAuthMenuDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaAuthMenuDo) Select(conds ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaAuthMenuDo) Where(conds ...gen.Condition) IScaAuthMenuDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaAuthMenuDo) Order(conds ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaAuthMenuDo) Distinct(cols ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaAuthMenuDo) Omit(cols ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaAuthMenuDo) Join(table schema.Tabler, on ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaAuthMenuDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaAuthMenuDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaAuthMenuDo) Group(cols ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaAuthMenuDo) Having(conds ...gen.Condition) IScaAuthMenuDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaAuthMenuDo) Limit(limit int) IScaAuthMenuDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaAuthMenuDo) Offset(offset int) IScaAuthMenuDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaAuthMenuDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthMenuDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaAuthMenuDo) Unscoped() IScaAuthMenuDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaAuthMenuDo) Create(values ...*model.ScaAuthMenu) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaAuthMenuDo) CreateInBatches(values []*model.ScaAuthMenu, 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 scaAuthMenuDo) Save(values ...*model.ScaAuthMenu) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaAuthMenuDo) First() (*model.ScaAuthMenu, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthMenu), nil
+ }
+}
+
+func (s scaAuthMenuDo) Take() (*model.ScaAuthMenu, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthMenu), nil
+ }
+}
+
+func (s scaAuthMenuDo) Last() (*model.ScaAuthMenu, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthMenu), nil
+ }
+}
+
+func (s scaAuthMenuDo) Find() ([]*model.ScaAuthMenu, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaAuthMenu), err
+}
+
+func (s scaAuthMenuDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthMenu, err error) {
+ buf := make([]*model.ScaAuthMenu, 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 scaAuthMenuDo) FindInBatches(result *[]*model.ScaAuthMenu, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaAuthMenuDo) Attrs(attrs ...field.AssignExpr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaAuthMenuDo) Assign(attrs ...field.AssignExpr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaAuthMenuDo) Joins(fields ...field.RelationField) IScaAuthMenuDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaAuthMenuDo) Preload(fields ...field.RelationField) IScaAuthMenuDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaAuthMenuDo) FirstOrInit() (*model.ScaAuthMenu, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthMenu), nil
+ }
+}
+
+func (s scaAuthMenuDo) FirstOrCreate() (*model.ScaAuthMenu, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthMenu), nil
+ }
+}
+
+func (s scaAuthMenuDo) FindByPage(offset int, limit int) (result []*model.ScaAuthMenu, 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 scaAuthMenuDo) 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 scaAuthMenuDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaAuthMenuDo) Delete(models ...*model.ScaAuthMenu) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaAuthMenuDo) withDO(do gen.Dao) *scaAuthMenuDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/auth/api/model/mysql/query/sca_auth_permission_rule.gen.go b/app/auth/api/model/mysql/query/sca_auth_permission_rule.gen.go
new file mode 100644
index 0000000..c5a2f71
--- /dev/null
+++ b/app/auth/api/model/mysql/query/sca_auth_permission_rule.gen.go
@@ -0,0 +1,407 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/model"
+
+ "gorm.io/gorm"
+ "gorm.io/gorm/clause"
+ "gorm.io/gorm/schema"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaAuthPermissionRule(db *gorm.DB, opts ...gen.DOOption) scaAuthPermissionRule {
+ _scaAuthPermissionRule := scaAuthPermissionRule{}
+
+ _scaAuthPermissionRule.scaAuthPermissionRuleDo.UseDB(db, opts...)
+ _scaAuthPermissionRule.scaAuthPermissionRuleDo.UseModel(&model.ScaAuthPermissionRule{})
+
+ tableName := _scaAuthPermissionRule.scaAuthPermissionRuleDo.TableName()
+ _scaAuthPermissionRule.ALL = field.NewAsterisk(tableName)
+ _scaAuthPermissionRule.ID = field.NewInt64(tableName, "id")
+ _scaAuthPermissionRule.Ptype = field.NewString(tableName, "ptype")
+ _scaAuthPermissionRule.V0 = field.NewString(tableName, "v0")
+ _scaAuthPermissionRule.V1 = field.NewString(tableName, "v1")
+ _scaAuthPermissionRule.V2 = field.NewString(tableName, "v2")
+ _scaAuthPermissionRule.V3 = field.NewString(tableName, "v3")
+ _scaAuthPermissionRule.V4 = field.NewString(tableName, "v4")
+ _scaAuthPermissionRule.V5 = field.NewString(tableName, "v5")
+
+ _scaAuthPermissionRule.fillFieldMap()
+
+ return _scaAuthPermissionRule
+}
+
+type scaAuthPermissionRule struct {
+ scaAuthPermissionRuleDo
+
+ ALL field.Asterisk
+ ID field.Int64
+ Ptype field.String
+ V0 field.String
+ V1 field.String
+ V2 field.String
+ V3 field.String
+ V4 field.String
+ V5 field.String
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaAuthPermissionRule) Table(newTableName string) *scaAuthPermissionRule {
+ s.scaAuthPermissionRuleDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaAuthPermissionRule) As(alias string) *scaAuthPermissionRule {
+ s.scaAuthPermissionRuleDo.DO = *(s.scaAuthPermissionRuleDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaAuthPermissionRule) updateTableName(table string) *scaAuthPermissionRule {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.Ptype = field.NewString(table, "ptype")
+ s.V0 = field.NewString(table, "v0")
+ s.V1 = field.NewString(table, "v1")
+ s.V2 = field.NewString(table, "v2")
+ s.V3 = field.NewString(table, "v3")
+ s.V4 = field.NewString(table, "v4")
+ s.V5 = field.NewString(table, "v5")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaAuthPermissionRule) 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 *scaAuthPermissionRule) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 8)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["ptype"] = s.Ptype
+ s.fieldMap["v0"] = s.V0
+ s.fieldMap["v1"] = s.V1
+ s.fieldMap["v2"] = s.V2
+ s.fieldMap["v3"] = s.V3
+ s.fieldMap["v4"] = s.V4
+ s.fieldMap["v5"] = s.V5
+}
+
+func (s scaAuthPermissionRule) clone(db *gorm.DB) scaAuthPermissionRule {
+ s.scaAuthPermissionRuleDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaAuthPermissionRule) replaceDB(db *gorm.DB) scaAuthPermissionRule {
+ s.scaAuthPermissionRuleDo.ReplaceDB(db)
+ return s
+}
+
+type scaAuthPermissionRuleDo struct{ gen.DO }
+
+type IScaAuthPermissionRuleDo interface {
+ gen.SubQuery
+ Debug() IScaAuthPermissionRuleDo
+ WithContext(ctx context.Context) IScaAuthPermissionRuleDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaAuthPermissionRuleDo
+ WriteDB() IScaAuthPermissionRuleDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaAuthPermissionRuleDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaAuthPermissionRuleDo
+ Not(conds ...gen.Condition) IScaAuthPermissionRuleDo
+ Or(conds ...gen.Condition) IScaAuthPermissionRuleDo
+ Select(conds ...field.Expr) IScaAuthPermissionRuleDo
+ Where(conds ...gen.Condition) IScaAuthPermissionRuleDo
+ Order(conds ...field.Expr) IScaAuthPermissionRuleDo
+ Distinct(cols ...field.Expr) IScaAuthPermissionRuleDo
+ Omit(cols ...field.Expr) IScaAuthPermissionRuleDo
+ Join(table schema.Tabler, on ...field.Expr) IScaAuthPermissionRuleDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthPermissionRuleDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthPermissionRuleDo
+ Group(cols ...field.Expr) IScaAuthPermissionRuleDo
+ Having(conds ...gen.Condition) IScaAuthPermissionRuleDo
+ Limit(limit int) IScaAuthPermissionRuleDo
+ Offset(offset int) IScaAuthPermissionRuleDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthPermissionRuleDo
+ Unscoped() IScaAuthPermissionRuleDo
+ Create(values ...*model.ScaAuthPermissionRule) error
+ CreateInBatches(values []*model.ScaAuthPermissionRule, batchSize int) error
+ Save(values ...*model.ScaAuthPermissionRule) error
+ First() (*model.ScaAuthPermissionRule, error)
+ Take() (*model.ScaAuthPermissionRule, error)
+ Last() (*model.ScaAuthPermissionRule, error)
+ Find() ([]*model.ScaAuthPermissionRule, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthPermissionRule, err error)
+ FindInBatches(result *[]*model.ScaAuthPermissionRule, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaAuthPermissionRule) (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) IScaAuthPermissionRuleDo
+ Assign(attrs ...field.AssignExpr) IScaAuthPermissionRuleDo
+ Joins(fields ...field.RelationField) IScaAuthPermissionRuleDo
+ Preload(fields ...field.RelationField) IScaAuthPermissionRuleDo
+ FirstOrInit() (*model.ScaAuthPermissionRule, error)
+ FirstOrCreate() (*model.ScaAuthPermissionRule, error)
+ FindByPage(offset int, limit int) (result []*model.ScaAuthPermissionRule, 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) IScaAuthPermissionRuleDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaAuthPermissionRuleDo) Debug() IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaAuthPermissionRuleDo) WithContext(ctx context.Context) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaAuthPermissionRuleDo) ReadDB() IScaAuthPermissionRuleDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaAuthPermissionRuleDo) WriteDB() IScaAuthPermissionRuleDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaAuthPermissionRuleDo) Session(config *gorm.Session) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaAuthPermissionRuleDo) Clauses(conds ...clause.Expression) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaAuthPermissionRuleDo) Returning(value interface{}, columns ...string) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaAuthPermissionRuleDo) Not(conds ...gen.Condition) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaAuthPermissionRuleDo) Or(conds ...gen.Condition) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaAuthPermissionRuleDo) Select(conds ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaAuthPermissionRuleDo) Where(conds ...gen.Condition) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaAuthPermissionRuleDo) Order(conds ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaAuthPermissionRuleDo) Distinct(cols ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaAuthPermissionRuleDo) Omit(cols ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaAuthPermissionRuleDo) Join(table schema.Tabler, on ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaAuthPermissionRuleDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaAuthPermissionRuleDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaAuthPermissionRuleDo) Group(cols ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaAuthPermissionRuleDo) Having(conds ...gen.Condition) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaAuthPermissionRuleDo) Limit(limit int) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaAuthPermissionRuleDo) Offset(offset int) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaAuthPermissionRuleDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaAuthPermissionRuleDo) Unscoped() IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaAuthPermissionRuleDo) Create(values ...*model.ScaAuthPermissionRule) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaAuthPermissionRuleDo) CreateInBatches(values []*model.ScaAuthPermissionRule, 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 scaAuthPermissionRuleDo) Save(values ...*model.ScaAuthPermissionRule) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaAuthPermissionRuleDo) First() (*model.ScaAuthPermissionRule, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthPermissionRule), nil
+ }
+}
+
+func (s scaAuthPermissionRuleDo) Take() (*model.ScaAuthPermissionRule, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthPermissionRule), nil
+ }
+}
+
+func (s scaAuthPermissionRuleDo) Last() (*model.ScaAuthPermissionRule, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthPermissionRule), nil
+ }
+}
+
+func (s scaAuthPermissionRuleDo) Find() ([]*model.ScaAuthPermissionRule, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaAuthPermissionRule), err
+}
+
+func (s scaAuthPermissionRuleDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthPermissionRule, err error) {
+ buf := make([]*model.ScaAuthPermissionRule, 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 scaAuthPermissionRuleDo) FindInBatches(result *[]*model.ScaAuthPermissionRule, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaAuthPermissionRuleDo) Attrs(attrs ...field.AssignExpr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaAuthPermissionRuleDo) Assign(attrs ...field.AssignExpr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaAuthPermissionRuleDo) Joins(fields ...field.RelationField) IScaAuthPermissionRuleDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaAuthPermissionRuleDo) Preload(fields ...field.RelationField) IScaAuthPermissionRuleDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaAuthPermissionRuleDo) FirstOrInit() (*model.ScaAuthPermissionRule, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthPermissionRule), nil
+ }
+}
+
+func (s scaAuthPermissionRuleDo) FirstOrCreate() (*model.ScaAuthPermissionRule, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthPermissionRule), nil
+ }
+}
+
+func (s scaAuthPermissionRuleDo) FindByPage(offset int, limit int) (result []*model.ScaAuthPermissionRule, 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 scaAuthPermissionRuleDo) 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 scaAuthPermissionRuleDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaAuthPermissionRuleDo) Delete(models ...*model.ScaAuthPermissionRule) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaAuthPermissionRuleDo) withDO(do gen.Dao) *scaAuthPermissionRuleDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/auth/api/model/mysql/query/sca_auth_role.gen.go b/app/auth/api/model/mysql/query/sca_auth_role.gen.go
new file mode 100644
index 0000000..671a244
--- /dev/null
+++ b/app/auth/api/model/mysql/query/sca_auth_role.gen.go
@@ -0,0 +1,399 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/model"
+
+ "gorm.io/gorm"
+ "gorm.io/gorm/clause"
+ "gorm.io/gorm/schema"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaAuthRole(db *gorm.DB, opts ...gen.DOOption) scaAuthRole {
+ _scaAuthRole := scaAuthRole{}
+
+ _scaAuthRole.scaAuthRoleDo.UseDB(db, opts...)
+ _scaAuthRole.scaAuthRoleDo.UseModel(&model.ScaAuthRole{})
+
+ tableName := _scaAuthRole.scaAuthRoleDo.TableName()
+ _scaAuthRole.ALL = field.NewAsterisk(tableName)
+ _scaAuthRole.ID = field.NewInt64(tableName, "id")
+ _scaAuthRole.RoleName = field.NewString(tableName, "role_name")
+ _scaAuthRole.RoleKey = field.NewString(tableName, "role_key")
+ _scaAuthRole.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaAuthRole.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaAuthRole.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaAuthRole.fillFieldMap()
+
+ return _scaAuthRole
+}
+
+type scaAuthRole struct {
+ scaAuthRoleDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键ID
+ RoleName field.String // 角色名称
+ RoleKey field.String // 角色关键字
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaAuthRole) Table(newTableName string) *scaAuthRole {
+ s.scaAuthRoleDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaAuthRole) As(alias string) *scaAuthRole {
+ s.scaAuthRoleDo.DO = *(s.scaAuthRoleDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaAuthRole) updateTableName(table string) *scaAuthRole {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.RoleName = field.NewString(table, "role_name")
+ s.RoleKey = field.NewString(table, "role_key")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaAuthRole) 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 *scaAuthRole) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 6)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["role_name"] = s.RoleName
+ s.fieldMap["role_key"] = s.RoleKey
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaAuthRole) clone(db *gorm.DB) scaAuthRole {
+ s.scaAuthRoleDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaAuthRole) replaceDB(db *gorm.DB) scaAuthRole {
+ s.scaAuthRoleDo.ReplaceDB(db)
+ return s
+}
+
+type scaAuthRoleDo struct{ gen.DO }
+
+type IScaAuthRoleDo interface {
+ gen.SubQuery
+ Debug() IScaAuthRoleDo
+ WithContext(ctx context.Context) IScaAuthRoleDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaAuthRoleDo
+ WriteDB() IScaAuthRoleDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaAuthRoleDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaAuthRoleDo
+ Not(conds ...gen.Condition) IScaAuthRoleDo
+ Or(conds ...gen.Condition) IScaAuthRoleDo
+ Select(conds ...field.Expr) IScaAuthRoleDo
+ Where(conds ...gen.Condition) IScaAuthRoleDo
+ Order(conds ...field.Expr) IScaAuthRoleDo
+ Distinct(cols ...field.Expr) IScaAuthRoleDo
+ Omit(cols ...field.Expr) IScaAuthRoleDo
+ Join(table schema.Tabler, on ...field.Expr) IScaAuthRoleDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthRoleDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthRoleDo
+ Group(cols ...field.Expr) IScaAuthRoleDo
+ Having(conds ...gen.Condition) IScaAuthRoleDo
+ Limit(limit int) IScaAuthRoleDo
+ Offset(offset int) IScaAuthRoleDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthRoleDo
+ Unscoped() IScaAuthRoleDo
+ Create(values ...*model.ScaAuthRole) error
+ CreateInBatches(values []*model.ScaAuthRole, batchSize int) error
+ Save(values ...*model.ScaAuthRole) error
+ First() (*model.ScaAuthRole, error)
+ Take() (*model.ScaAuthRole, error)
+ Last() (*model.ScaAuthRole, error)
+ Find() ([]*model.ScaAuthRole, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthRole, err error)
+ FindInBatches(result *[]*model.ScaAuthRole, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaAuthRole) (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) IScaAuthRoleDo
+ Assign(attrs ...field.AssignExpr) IScaAuthRoleDo
+ Joins(fields ...field.RelationField) IScaAuthRoleDo
+ Preload(fields ...field.RelationField) IScaAuthRoleDo
+ FirstOrInit() (*model.ScaAuthRole, error)
+ FirstOrCreate() (*model.ScaAuthRole, error)
+ FindByPage(offset int, limit int) (result []*model.ScaAuthRole, 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) IScaAuthRoleDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaAuthRoleDo) Debug() IScaAuthRoleDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaAuthRoleDo) WithContext(ctx context.Context) IScaAuthRoleDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaAuthRoleDo) ReadDB() IScaAuthRoleDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaAuthRoleDo) WriteDB() IScaAuthRoleDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaAuthRoleDo) Session(config *gorm.Session) IScaAuthRoleDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaAuthRoleDo) Clauses(conds ...clause.Expression) IScaAuthRoleDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaAuthRoleDo) Returning(value interface{}, columns ...string) IScaAuthRoleDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaAuthRoleDo) Not(conds ...gen.Condition) IScaAuthRoleDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaAuthRoleDo) Or(conds ...gen.Condition) IScaAuthRoleDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaAuthRoleDo) Select(conds ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaAuthRoleDo) Where(conds ...gen.Condition) IScaAuthRoleDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaAuthRoleDo) Order(conds ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaAuthRoleDo) Distinct(cols ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaAuthRoleDo) Omit(cols ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaAuthRoleDo) Join(table schema.Tabler, on ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaAuthRoleDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaAuthRoleDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaAuthRoleDo) Group(cols ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaAuthRoleDo) Having(conds ...gen.Condition) IScaAuthRoleDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaAuthRoleDo) Limit(limit int) IScaAuthRoleDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaAuthRoleDo) Offset(offset int) IScaAuthRoleDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaAuthRoleDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthRoleDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaAuthRoleDo) Unscoped() IScaAuthRoleDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaAuthRoleDo) Create(values ...*model.ScaAuthRole) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaAuthRoleDo) CreateInBatches(values []*model.ScaAuthRole, 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 scaAuthRoleDo) Save(values ...*model.ScaAuthRole) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaAuthRoleDo) First() (*model.ScaAuthRole, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthRole), nil
+ }
+}
+
+func (s scaAuthRoleDo) Take() (*model.ScaAuthRole, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthRole), nil
+ }
+}
+
+func (s scaAuthRoleDo) Last() (*model.ScaAuthRole, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthRole), nil
+ }
+}
+
+func (s scaAuthRoleDo) Find() ([]*model.ScaAuthRole, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaAuthRole), err
+}
+
+func (s scaAuthRoleDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthRole, err error) {
+ buf := make([]*model.ScaAuthRole, 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 scaAuthRoleDo) FindInBatches(result *[]*model.ScaAuthRole, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaAuthRoleDo) Attrs(attrs ...field.AssignExpr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaAuthRoleDo) Assign(attrs ...field.AssignExpr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaAuthRoleDo) Joins(fields ...field.RelationField) IScaAuthRoleDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaAuthRoleDo) Preload(fields ...field.RelationField) IScaAuthRoleDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaAuthRoleDo) FirstOrInit() (*model.ScaAuthRole, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthRole), nil
+ }
+}
+
+func (s scaAuthRoleDo) FirstOrCreate() (*model.ScaAuthRole, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthRole), nil
+ }
+}
+
+func (s scaAuthRoleDo) FindByPage(offset int, limit int) (result []*model.ScaAuthRole, 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 scaAuthRoleDo) 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 scaAuthRoleDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaAuthRoleDo) Delete(models ...*model.ScaAuthRole) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaAuthRoleDo) withDO(do gen.Dao) *scaAuthRoleDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/auth/api/model/mysql/query/sca_auth_user.gen.go b/app/auth/api/model/mysql/query/sca_auth_user.gen.go
new file mode 100644
index 0000000..07ef96f
--- /dev/null
+++ b/app/auth/api/model/mysql/query/sca_auth_user.gen.go
@@ -0,0 +1,443 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/model"
+
+ "gorm.io/gorm"
+ "gorm.io/gorm/clause"
+ "gorm.io/gorm/schema"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaAuthUser(db *gorm.DB, opts ...gen.DOOption) scaAuthUser {
+ _scaAuthUser := scaAuthUser{}
+
+ _scaAuthUser.scaAuthUserDo.UseDB(db, opts...)
+ _scaAuthUser.scaAuthUserDo.UseModel(&model.ScaAuthUser{})
+
+ tableName := _scaAuthUser.scaAuthUserDo.TableName()
+ _scaAuthUser.ALL = field.NewAsterisk(tableName)
+ _scaAuthUser.ID = field.NewInt64(tableName, "id")
+ _scaAuthUser.UID = field.NewString(tableName, "uid")
+ _scaAuthUser.Username = field.NewString(tableName, "username")
+ _scaAuthUser.Nickname = field.NewString(tableName, "nickname")
+ _scaAuthUser.Email = field.NewString(tableName, "email")
+ _scaAuthUser.Phone = field.NewString(tableName, "phone")
+ _scaAuthUser.Password = field.NewString(tableName, "password")
+ _scaAuthUser.Gender = field.NewInt64(tableName, "gender")
+ _scaAuthUser.Avatar = field.NewString(tableName, "avatar")
+ _scaAuthUser.Status = field.NewInt64(tableName, "status")
+ _scaAuthUser.Introduce = field.NewString(tableName, "introduce")
+ _scaAuthUser.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaAuthUser.Blog = field.NewString(tableName, "blog")
+ _scaAuthUser.Location = field.NewString(tableName, "location")
+ _scaAuthUser.Company = field.NewString(tableName, "company")
+ _scaAuthUser.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaAuthUser.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaAuthUser.fillFieldMap()
+
+ return _scaAuthUser
+}
+
+type scaAuthUser struct {
+ scaAuthUserDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 自增ID
+ UID field.String // 唯一ID
+ Username field.String // 用户名
+ Nickname field.String // 昵称
+ Email field.String // 邮箱
+ Phone field.String // 电话
+ Password field.String // 密码
+ Gender field.Int64 // 性别
+ Avatar field.String // 头像
+ Status field.Int64 // 状态 0 正常 1 封禁
+ Introduce field.String // 介绍
+ CreatedAt field.Time // 创建时间
+ Blog field.String // 博客
+ Location field.String // 地址
+ Company field.String // 公司
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaAuthUser) Table(newTableName string) *scaAuthUser {
+ s.scaAuthUserDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaAuthUser) As(alias string) *scaAuthUser {
+ s.scaAuthUserDo.DO = *(s.scaAuthUserDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaAuthUser) updateTableName(table string) *scaAuthUser {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.UID = field.NewString(table, "uid")
+ s.Username = field.NewString(table, "username")
+ s.Nickname = field.NewString(table, "nickname")
+ s.Email = field.NewString(table, "email")
+ s.Phone = field.NewString(table, "phone")
+ s.Password = field.NewString(table, "password")
+ s.Gender = field.NewInt64(table, "gender")
+ s.Avatar = field.NewString(table, "avatar")
+ s.Status = field.NewInt64(table, "status")
+ s.Introduce = field.NewString(table, "introduce")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.Blog = field.NewString(table, "blog")
+ s.Location = field.NewString(table, "location")
+ s.Company = field.NewString(table, "company")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaAuthUser) 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 *scaAuthUser) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 17)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["uid"] = s.UID
+ s.fieldMap["username"] = s.Username
+ s.fieldMap["nickname"] = s.Nickname
+ s.fieldMap["email"] = s.Email
+ s.fieldMap["phone"] = s.Phone
+ s.fieldMap["password"] = s.Password
+ s.fieldMap["gender"] = s.Gender
+ s.fieldMap["avatar"] = s.Avatar
+ s.fieldMap["status"] = s.Status
+ s.fieldMap["introduce"] = s.Introduce
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["blog"] = s.Blog
+ s.fieldMap["location"] = s.Location
+ s.fieldMap["company"] = s.Company
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaAuthUser) clone(db *gorm.DB) scaAuthUser {
+ s.scaAuthUserDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaAuthUser) replaceDB(db *gorm.DB) scaAuthUser {
+ s.scaAuthUserDo.ReplaceDB(db)
+ return s
+}
+
+type scaAuthUserDo struct{ gen.DO }
+
+type IScaAuthUserDo interface {
+ gen.SubQuery
+ Debug() IScaAuthUserDo
+ WithContext(ctx context.Context) IScaAuthUserDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaAuthUserDo
+ WriteDB() IScaAuthUserDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaAuthUserDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaAuthUserDo
+ Not(conds ...gen.Condition) IScaAuthUserDo
+ Or(conds ...gen.Condition) IScaAuthUserDo
+ Select(conds ...field.Expr) IScaAuthUserDo
+ Where(conds ...gen.Condition) IScaAuthUserDo
+ Order(conds ...field.Expr) IScaAuthUserDo
+ Distinct(cols ...field.Expr) IScaAuthUserDo
+ Omit(cols ...field.Expr) IScaAuthUserDo
+ Join(table schema.Tabler, on ...field.Expr) IScaAuthUserDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDo
+ Group(cols ...field.Expr) IScaAuthUserDo
+ Having(conds ...gen.Condition) IScaAuthUserDo
+ Limit(limit int) IScaAuthUserDo
+ Offset(offset int) IScaAuthUserDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthUserDo
+ Unscoped() IScaAuthUserDo
+ Create(values ...*model.ScaAuthUser) error
+ CreateInBatches(values []*model.ScaAuthUser, batchSize int) error
+ Save(values ...*model.ScaAuthUser) error
+ First() (*model.ScaAuthUser, error)
+ Take() (*model.ScaAuthUser, error)
+ Last() (*model.ScaAuthUser, error)
+ Find() ([]*model.ScaAuthUser, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthUser, err error)
+ FindInBatches(result *[]*model.ScaAuthUser, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaAuthUser) (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) IScaAuthUserDo
+ Assign(attrs ...field.AssignExpr) IScaAuthUserDo
+ Joins(fields ...field.RelationField) IScaAuthUserDo
+ Preload(fields ...field.RelationField) IScaAuthUserDo
+ FirstOrInit() (*model.ScaAuthUser, error)
+ FirstOrCreate() (*model.ScaAuthUser, error)
+ FindByPage(offset int, limit int) (result []*model.ScaAuthUser, 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) IScaAuthUserDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaAuthUserDo) Debug() IScaAuthUserDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaAuthUserDo) WithContext(ctx context.Context) IScaAuthUserDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaAuthUserDo) ReadDB() IScaAuthUserDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaAuthUserDo) WriteDB() IScaAuthUserDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaAuthUserDo) Session(config *gorm.Session) IScaAuthUserDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaAuthUserDo) Clauses(conds ...clause.Expression) IScaAuthUserDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaAuthUserDo) Returning(value interface{}, columns ...string) IScaAuthUserDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaAuthUserDo) Not(conds ...gen.Condition) IScaAuthUserDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaAuthUserDo) Or(conds ...gen.Condition) IScaAuthUserDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaAuthUserDo) Select(conds ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaAuthUserDo) Where(conds ...gen.Condition) IScaAuthUserDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaAuthUserDo) Order(conds ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaAuthUserDo) Distinct(cols ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaAuthUserDo) Omit(cols ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaAuthUserDo) Join(table schema.Tabler, on ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaAuthUserDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaAuthUserDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaAuthUserDo) Group(cols ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaAuthUserDo) Having(conds ...gen.Condition) IScaAuthUserDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaAuthUserDo) Limit(limit int) IScaAuthUserDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaAuthUserDo) Offset(offset int) IScaAuthUserDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaAuthUserDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthUserDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaAuthUserDo) Unscoped() IScaAuthUserDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaAuthUserDo) Create(values ...*model.ScaAuthUser) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaAuthUserDo) CreateInBatches(values []*model.ScaAuthUser, 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 scaAuthUserDo) Save(values ...*model.ScaAuthUser) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaAuthUserDo) First() (*model.ScaAuthUser, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUser), nil
+ }
+}
+
+func (s scaAuthUserDo) Take() (*model.ScaAuthUser, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUser), nil
+ }
+}
+
+func (s scaAuthUserDo) Last() (*model.ScaAuthUser, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUser), nil
+ }
+}
+
+func (s scaAuthUserDo) Find() ([]*model.ScaAuthUser, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaAuthUser), err
+}
+
+func (s scaAuthUserDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthUser, err error) {
+ buf := make([]*model.ScaAuthUser, 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 scaAuthUserDo) FindInBatches(result *[]*model.ScaAuthUser, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaAuthUserDo) Attrs(attrs ...field.AssignExpr) IScaAuthUserDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaAuthUserDo) Assign(attrs ...field.AssignExpr) IScaAuthUserDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaAuthUserDo) Joins(fields ...field.RelationField) IScaAuthUserDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaAuthUserDo) Preload(fields ...field.RelationField) IScaAuthUserDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaAuthUserDo) FirstOrInit() (*model.ScaAuthUser, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUser), nil
+ }
+}
+
+func (s scaAuthUserDo) FirstOrCreate() (*model.ScaAuthUser, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUser), nil
+ }
+}
+
+func (s scaAuthUserDo) FindByPage(offset int, limit int) (result []*model.ScaAuthUser, 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 scaAuthUserDo) 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 scaAuthUserDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaAuthUserDo) Delete(models ...*model.ScaAuthUser) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaAuthUserDo) withDO(do gen.Dao) *scaAuthUserDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/auth/api/model/mysql/query/sca_auth_user_device.gen.go b/app/auth/api/model/mysql/query/sca_auth_user_device.gen.go
new file mode 100644
index 0000000..f4b557a
--- /dev/null
+++ b/app/auth/api/model/mysql/query/sca_auth_user_device.gen.go
@@ -0,0 +1,443 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/model"
+
+ "gorm.io/gorm"
+ "gorm.io/gorm/clause"
+ "gorm.io/gorm/schema"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaAuthUserDevice(db *gorm.DB, opts ...gen.DOOption) scaAuthUserDevice {
+ _scaAuthUserDevice := scaAuthUserDevice{}
+
+ _scaAuthUserDevice.scaAuthUserDeviceDo.UseDB(db, opts...)
+ _scaAuthUserDevice.scaAuthUserDeviceDo.UseModel(&model.ScaAuthUserDevice{})
+
+ tableName := _scaAuthUserDevice.scaAuthUserDeviceDo.TableName()
+ _scaAuthUserDevice.ALL = field.NewAsterisk(tableName)
+ _scaAuthUserDevice.ID = field.NewInt64(tableName, "id")
+ _scaAuthUserDevice.UserID = field.NewString(tableName, "user_id")
+ _scaAuthUserDevice.IP = field.NewString(tableName, "ip")
+ _scaAuthUserDevice.Location = field.NewString(tableName, "location")
+ _scaAuthUserDevice.Agent = field.NewString(tableName, "agent")
+ _scaAuthUserDevice.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaAuthUserDevice.Browser = field.NewString(tableName, "browser")
+ _scaAuthUserDevice.OperatingSystem = field.NewString(tableName, "operating_system")
+ _scaAuthUserDevice.BrowserVersion = field.NewString(tableName, "browser_version")
+ _scaAuthUserDevice.Mobile = field.NewInt64(tableName, "mobile")
+ _scaAuthUserDevice.Bot = field.NewInt64(tableName, "bot")
+ _scaAuthUserDevice.Mozilla = field.NewString(tableName, "mozilla")
+ _scaAuthUserDevice.Platform = field.NewString(tableName, "platform")
+ _scaAuthUserDevice.EngineName = field.NewString(tableName, "engine_name")
+ _scaAuthUserDevice.EngineVersion = field.NewString(tableName, "engine_version")
+ _scaAuthUserDevice.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaAuthUserDevice.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaAuthUserDevice.fillFieldMap()
+
+ return _scaAuthUserDevice
+}
+
+type scaAuthUserDevice struct {
+ scaAuthUserDeviceDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键ID
+ UserID field.String // 用户ID
+ IP field.String // 登录IP
+ Location field.String // 地址
+ Agent field.String // 设备信息
+ CreatedAt field.Time // 创建时间
+ Browser field.String // 浏览器
+ OperatingSystem field.String // 操作系统
+ BrowserVersion field.String // 浏览器版本
+ Mobile field.Int64 // 是否为手机 0否1是
+ Bot field.Int64 // 是否为bot 0否1是
+ Mozilla field.String // 火狐版本
+ Platform field.String // 平台
+ EngineName field.String // 引擎名称
+ EngineVersion field.String // 引擎版本
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaAuthUserDevice) Table(newTableName string) *scaAuthUserDevice {
+ s.scaAuthUserDeviceDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaAuthUserDevice) As(alias string) *scaAuthUserDevice {
+ s.scaAuthUserDeviceDo.DO = *(s.scaAuthUserDeviceDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaAuthUserDevice) updateTableName(table string) *scaAuthUserDevice {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.UserID = field.NewString(table, "user_id")
+ s.IP = field.NewString(table, "ip")
+ s.Location = field.NewString(table, "location")
+ s.Agent = field.NewString(table, "agent")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.Browser = field.NewString(table, "browser")
+ s.OperatingSystem = field.NewString(table, "operating_system")
+ s.BrowserVersion = field.NewString(table, "browser_version")
+ s.Mobile = field.NewInt64(table, "mobile")
+ s.Bot = field.NewInt64(table, "bot")
+ s.Mozilla = field.NewString(table, "mozilla")
+ s.Platform = field.NewString(table, "platform")
+ s.EngineName = field.NewString(table, "engine_name")
+ s.EngineVersion = field.NewString(table, "engine_version")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaAuthUserDevice) 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 *scaAuthUserDevice) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 17)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["user_id"] = s.UserID
+ s.fieldMap["ip"] = s.IP
+ s.fieldMap["location"] = s.Location
+ s.fieldMap["agent"] = s.Agent
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["browser"] = s.Browser
+ s.fieldMap["operating_system"] = s.OperatingSystem
+ s.fieldMap["browser_version"] = s.BrowserVersion
+ s.fieldMap["mobile"] = s.Mobile
+ s.fieldMap["bot"] = s.Bot
+ s.fieldMap["mozilla"] = s.Mozilla
+ s.fieldMap["platform"] = s.Platform
+ s.fieldMap["engine_name"] = s.EngineName
+ s.fieldMap["engine_version"] = s.EngineVersion
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaAuthUserDevice) clone(db *gorm.DB) scaAuthUserDevice {
+ s.scaAuthUserDeviceDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaAuthUserDevice) replaceDB(db *gorm.DB) scaAuthUserDevice {
+ s.scaAuthUserDeviceDo.ReplaceDB(db)
+ return s
+}
+
+type scaAuthUserDeviceDo struct{ gen.DO }
+
+type IScaAuthUserDeviceDo interface {
+ gen.SubQuery
+ Debug() IScaAuthUserDeviceDo
+ WithContext(ctx context.Context) IScaAuthUserDeviceDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaAuthUserDeviceDo
+ WriteDB() IScaAuthUserDeviceDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaAuthUserDeviceDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaAuthUserDeviceDo
+ Not(conds ...gen.Condition) IScaAuthUserDeviceDo
+ Or(conds ...gen.Condition) IScaAuthUserDeviceDo
+ Select(conds ...field.Expr) IScaAuthUserDeviceDo
+ Where(conds ...gen.Condition) IScaAuthUserDeviceDo
+ Order(conds ...field.Expr) IScaAuthUserDeviceDo
+ Distinct(cols ...field.Expr) IScaAuthUserDeviceDo
+ Omit(cols ...field.Expr) IScaAuthUserDeviceDo
+ Join(table schema.Tabler, on ...field.Expr) IScaAuthUserDeviceDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDeviceDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDeviceDo
+ Group(cols ...field.Expr) IScaAuthUserDeviceDo
+ Having(conds ...gen.Condition) IScaAuthUserDeviceDo
+ Limit(limit int) IScaAuthUserDeviceDo
+ Offset(offset int) IScaAuthUserDeviceDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthUserDeviceDo
+ Unscoped() IScaAuthUserDeviceDo
+ Create(values ...*model.ScaAuthUserDevice) error
+ CreateInBatches(values []*model.ScaAuthUserDevice, batchSize int) error
+ Save(values ...*model.ScaAuthUserDevice) error
+ First() (*model.ScaAuthUserDevice, error)
+ Take() (*model.ScaAuthUserDevice, error)
+ Last() (*model.ScaAuthUserDevice, error)
+ Find() ([]*model.ScaAuthUserDevice, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthUserDevice, err error)
+ FindInBatches(result *[]*model.ScaAuthUserDevice, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaAuthUserDevice) (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) IScaAuthUserDeviceDo
+ Assign(attrs ...field.AssignExpr) IScaAuthUserDeviceDo
+ Joins(fields ...field.RelationField) IScaAuthUserDeviceDo
+ Preload(fields ...field.RelationField) IScaAuthUserDeviceDo
+ FirstOrInit() (*model.ScaAuthUserDevice, error)
+ FirstOrCreate() (*model.ScaAuthUserDevice, error)
+ FindByPage(offset int, limit int) (result []*model.ScaAuthUserDevice, 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) IScaAuthUserDeviceDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaAuthUserDeviceDo) Debug() IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaAuthUserDeviceDo) WithContext(ctx context.Context) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaAuthUserDeviceDo) ReadDB() IScaAuthUserDeviceDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaAuthUserDeviceDo) WriteDB() IScaAuthUserDeviceDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaAuthUserDeviceDo) Session(config *gorm.Session) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaAuthUserDeviceDo) Clauses(conds ...clause.Expression) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaAuthUserDeviceDo) Returning(value interface{}, columns ...string) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaAuthUserDeviceDo) Not(conds ...gen.Condition) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaAuthUserDeviceDo) Or(conds ...gen.Condition) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaAuthUserDeviceDo) Select(conds ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaAuthUserDeviceDo) Where(conds ...gen.Condition) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaAuthUserDeviceDo) Order(conds ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaAuthUserDeviceDo) Distinct(cols ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaAuthUserDeviceDo) Omit(cols ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaAuthUserDeviceDo) Join(table schema.Tabler, on ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaAuthUserDeviceDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaAuthUserDeviceDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaAuthUserDeviceDo) Group(cols ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaAuthUserDeviceDo) Having(conds ...gen.Condition) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaAuthUserDeviceDo) Limit(limit int) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaAuthUserDeviceDo) Offset(offset int) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaAuthUserDeviceDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaAuthUserDeviceDo) Unscoped() IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaAuthUserDeviceDo) Create(values ...*model.ScaAuthUserDevice) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaAuthUserDeviceDo) CreateInBatches(values []*model.ScaAuthUserDevice, 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 scaAuthUserDeviceDo) Save(values ...*model.ScaAuthUserDevice) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaAuthUserDeviceDo) First() (*model.ScaAuthUserDevice, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserDevice), nil
+ }
+}
+
+func (s scaAuthUserDeviceDo) Take() (*model.ScaAuthUserDevice, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserDevice), nil
+ }
+}
+
+func (s scaAuthUserDeviceDo) Last() (*model.ScaAuthUserDevice, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserDevice), nil
+ }
+}
+
+func (s scaAuthUserDeviceDo) Find() ([]*model.ScaAuthUserDevice, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaAuthUserDevice), err
+}
+
+func (s scaAuthUserDeviceDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthUserDevice, err error) {
+ buf := make([]*model.ScaAuthUserDevice, 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 scaAuthUserDeviceDo) FindInBatches(result *[]*model.ScaAuthUserDevice, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaAuthUserDeviceDo) Attrs(attrs ...field.AssignExpr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaAuthUserDeviceDo) Assign(attrs ...field.AssignExpr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaAuthUserDeviceDo) Joins(fields ...field.RelationField) IScaAuthUserDeviceDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaAuthUserDeviceDo) Preload(fields ...field.RelationField) IScaAuthUserDeviceDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaAuthUserDeviceDo) FirstOrInit() (*model.ScaAuthUserDevice, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserDevice), nil
+ }
+}
+
+func (s scaAuthUserDeviceDo) FirstOrCreate() (*model.ScaAuthUserDevice, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserDevice), nil
+ }
+}
+
+func (s scaAuthUserDeviceDo) FindByPage(offset int, limit int) (result []*model.ScaAuthUserDevice, 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 scaAuthUserDeviceDo) 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 scaAuthUserDeviceDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaAuthUserDeviceDo) Delete(models ...*model.ScaAuthUserDevice) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaAuthUserDeviceDo) withDO(do gen.Dao) *scaAuthUserDeviceDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/auth/api/model/mysql/query/sca_auth_user_social.gen.go b/app/auth/api/model/mysql/query/sca_auth_user_social.gen.go
new file mode 100644
index 0000000..b13009a
--- /dev/null
+++ b/app/auth/api/model/mysql/query/sca_auth_user_social.gen.go
@@ -0,0 +1,407 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/model"
+
+ "gorm.io/gorm"
+ "gorm.io/gorm/clause"
+ "gorm.io/gorm/schema"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaAuthUserSocial(db *gorm.DB, opts ...gen.DOOption) scaAuthUserSocial {
+ _scaAuthUserSocial := scaAuthUserSocial{}
+
+ _scaAuthUserSocial.scaAuthUserSocialDo.UseDB(db, opts...)
+ _scaAuthUserSocial.scaAuthUserSocialDo.UseModel(&model.ScaAuthUserSocial{})
+
+ tableName := _scaAuthUserSocial.scaAuthUserSocialDo.TableName()
+ _scaAuthUserSocial.ALL = field.NewAsterisk(tableName)
+ _scaAuthUserSocial.ID = field.NewInt64(tableName, "id")
+ _scaAuthUserSocial.UserID = field.NewString(tableName, "user_id")
+ _scaAuthUserSocial.OpenID = field.NewString(tableName, "open_id")
+ _scaAuthUserSocial.Source = field.NewString(tableName, "source")
+ _scaAuthUserSocial.Status = field.NewInt64(tableName, "status")
+ _scaAuthUserSocial.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaAuthUserSocial.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaAuthUserSocial.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaAuthUserSocial.fillFieldMap()
+
+ return _scaAuthUserSocial
+}
+
+type scaAuthUserSocial struct {
+ scaAuthUserSocialDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键ID
+ UserID field.String // 用户ID
+ OpenID field.String // 第三方用户的 open id
+ Source field.String // 第三方用户来源
+ Status field.Int64 // 状态 0正常 1 封禁
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaAuthUserSocial) Table(newTableName string) *scaAuthUserSocial {
+ s.scaAuthUserSocialDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaAuthUserSocial) As(alias string) *scaAuthUserSocial {
+ s.scaAuthUserSocialDo.DO = *(s.scaAuthUserSocialDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaAuthUserSocial) updateTableName(table string) *scaAuthUserSocial {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.UserID = field.NewString(table, "user_id")
+ s.OpenID = field.NewString(table, "open_id")
+ s.Source = field.NewString(table, "source")
+ s.Status = field.NewInt64(table, "status")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaAuthUserSocial) 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 *scaAuthUserSocial) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 8)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["user_id"] = s.UserID
+ s.fieldMap["open_id"] = s.OpenID
+ s.fieldMap["source"] = s.Source
+ s.fieldMap["status"] = s.Status
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaAuthUserSocial) clone(db *gorm.DB) scaAuthUserSocial {
+ s.scaAuthUserSocialDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaAuthUserSocial) replaceDB(db *gorm.DB) scaAuthUserSocial {
+ s.scaAuthUserSocialDo.ReplaceDB(db)
+ return s
+}
+
+type scaAuthUserSocialDo struct{ gen.DO }
+
+type IScaAuthUserSocialDo interface {
+ gen.SubQuery
+ Debug() IScaAuthUserSocialDo
+ WithContext(ctx context.Context) IScaAuthUserSocialDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaAuthUserSocialDo
+ WriteDB() IScaAuthUserSocialDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaAuthUserSocialDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaAuthUserSocialDo
+ Not(conds ...gen.Condition) IScaAuthUserSocialDo
+ Or(conds ...gen.Condition) IScaAuthUserSocialDo
+ Select(conds ...field.Expr) IScaAuthUserSocialDo
+ Where(conds ...gen.Condition) IScaAuthUserSocialDo
+ Order(conds ...field.Expr) IScaAuthUserSocialDo
+ Distinct(cols ...field.Expr) IScaAuthUserSocialDo
+ Omit(cols ...field.Expr) IScaAuthUserSocialDo
+ Join(table schema.Tabler, on ...field.Expr) IScaAuthUserSocialDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserSocialDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserSocialDo
+ Group(cols ...field.Expr) IScaAuthUserSocialDo
+ Having(conds ...gen.Condition) IScaAuthUserSocialDo
+ Limit(limit int) IScaAuthUserSocialDo
+ Offset(offset int) IScaAuthUserSocialDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthUserSocialDo
+ Unscoped() IScaAuthUserSocialDo
+ Create(values ...*model.ScaAuthUserSocial) error
+ CreateInBatches(values []*model.ScaAuthUserSocial, batchSize int) error
+ Save(values ...*model.ScaAuthUserSocial) error
+ First() (*model.ScaAuthUserSocial, error)
+ Take() (*model.ScaAuthUserSocial, error)
+ Last() (*model.ScaAuthUserSocial, error)
+ Find() ([]*model.ScaAuthUserSocial, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthUserSocial, err error)
+ FindInBatches(result *[]*model.ScaAuthUserSocial, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaAuthUserSocial) (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) IScaAuthUserSocialDo
+ Assign(attrs ...field.AssignExpr) IScaAuthUserSocialDo
+ Joins(fields ...field.RelationField) IScaAuthUserSocialDo
+ Preload(fields ...field.RelationField) IScaAuthUserSocialDo
+ FirstOrInit() (*model.ScaAuthUserSocial, error)
+ FirstOrCreate() (*model.ScaAuthUserSocial, error)
+ FindByPage(offset int, limit int) (result []*model.ScaAuthUserSocial, 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) IScaAuthUserSocialDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaAuthUserSocialDo) Debug() IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaAuthUserSocialDo) WithContext(ctx context.Context) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaAuthUserSocialDo) ReadDB() IScaAuthUserSocialDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaAuthUserSocialDo) WriteDB() IScaAuthUserSocialDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaAuthUserSocialDo) Session(config *gorm.Session) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaAuthUserSocialDo) Clauses(conds ...clause.Expression) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaAuthUserSocialDo) Returning(value interface{}, columns ...string) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaAuthUserSocialDo) Not(conds ...gen.Condition) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaAuthUserSocialDo) Or(conds ...gen.Condition) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaAuthUserSocialDo) Select(conds ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaAuthUserSocialDo) Where(conds ...gen.Condition) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaAuthUserSocialDo) Order(conds ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaAuthUserSocialDo) Distinct(cols ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaAuthUserSocialDo) Omit(cols ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaAuthUserSocialDo) Join(table schema.Tabler, on ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaAuthUserSocialDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaAuthUserSocialDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaAuthUserSocialDo) Group(cols ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaAuthUserSocialDo) Having(conds ...gen.Condition) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaAuthUserSocialDo) Limit(limit int) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaAuthUserSocialDo) Offset(offset int) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaAuthUserSocialDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaAuthUserSocialDo) Unscoped() IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaAuthUserSocialDo) Create(values ...*model.ScaAuthUserSocial) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaAuthUserSocialDo) CreateInBatches(values []*model.ScaAuthUserSocial, 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 scaAuthUserSocialDo) Save(values ...*model.ScaAuthUserSocial) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaAuthUserSocialDo) First() (*model.ScaAuthUserSocial, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserSocial), nil
+ }
+}
+
+func (s scaAuthUserSocialDo) Take() (*model.ScaAuthUserSocial, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserSocial), nil
+ }
+}
+
+func (s scaAuthUserSocialDo) Last() (*model.ScaAuthUserSocial, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserSocial), nil
+ }
+}
+
+func (s scaAuthUserSocialDo) Find() ([]*model.ScaAuthUserSocial, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaAuthUserSocial), err
+}
+
+func (s scaAuthUserSocialDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthUserSocial, err error) {
+ buf := make([]*model.ScaAuthUserSocial, 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 scaAuthUserSocialDo) FindInBatches(result *[]*model.ScaAuthUserSocial, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaAuthUserSocialDo) Attrs(attrs ...field.AssignExpr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaAuthUserSocialDo) Assign(attrs ...field.AssignExpr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaAuthUserSocialDo) Joins(fields ...field.RelationField) IScaAuthUserSocialDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaAuthUserSocialDo) Preload(fields ...field.RelationField) IScaAuthUserSocialDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaAuthUserSocialDo) FirstOrInit() (*model.ScaAuthUserSocial, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserSocial), nil
+ }
+}
+
+func (s scaAuthUserSocialDo) FirstOrCreate() (*model.ScaAuthUserSocial, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserSocial), nil
+ }
+}
+
+func (s scaAuthUserSocialDo) FindByPage(offset int, limit int) (result []*model.ScaAuthUserSocial, 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 scaAuthUserSocialDo) 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 scaAuthUserSocialDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaAuthUserSocialDo) Delete(models ...*model.ScaAuthUserSocial) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaAuthUserSocialDo) withDO(do gen.Dao) *scaAuthUserSocialDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/auth/api/model/mysql/query/sca_user_level.gen.go b/app/auth/api/model/mysql/query/sca_user_level.gen.go
new file mode 100644
index 0000000..4190c93
--- /dev/null
+++ b/app/auth/api/model/mysql/query/sca_user_level.gen.go
@@ -0,0 +1,419 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/model"
+
+ "gorm.io/gorm"
+ "gorm.io/gorm/clause"
+ "gorm.io/gorm/schema"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaUserLevel(db *gorm.DB, opts ...gen.DOOption) scaUserLevel {
+ _scaUserLevel := scaUserLevel{}
+
+ _scaUserLevel.scaUserLevelDo.UseDB(db, opts...)
+ _scaUserLevel.scaUserLevelDo.UseModel(&model.ScaUserLevel{})
+
+ tableName := _scaUserLevel.scaUserLevelDo.TableName()
+ _scaUserLevel.ALL = field.NewAsterisk(tableName)
+ _scaUserLevel.ID = field.NewInt64(tableName, "id")
+ _scaUserLevel.UserID = field.NewString(tableName, "user_id")
+ _scaUserLevel.LevelType = field.NewInt64(tableName, "level_type")
+ _scaUserLevel.Level = field.NewInt64(tableName, "level")
+ _scaUserLevel.LevelName = field.NewString(tableName, "level_name")
+ _scaUserLevel.ExpStart = field.NewInt64(tableName, "exp_start")
+ _scaUserLevel.ExpEnd = field.NewInt64(tableName, "exp_end")
+ _scaUserLevel.Description = field.NewString(tableName, "description")
+ _scaUserLevel.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaUserLevel.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaUserLevel.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaUserLevel.fillFieldMap()
+
+ return _scaUserLevel
+}
+
+type scaUserLevel struct {
+ scaUserLevelDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键
+ UserID field.String // 用户Id
+ LevelType field.Int64 // 等级类型
+ Level field.Int64 // 等级
+ LevelName field.String // 等级名称
+ ExpStart field.Int64 // 开始经验值
+ ExpEnd field.Int64 // 结束经验值
+ Description field.String // 等级描述
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaUserLevel) Table(newTableName string) *scaUserLevel {
+ s.scaUserLevelDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaUserLevel) As(alias string) *scaUserLevel {
+ s.scaUserLevelDo.DO = *(s.scaUserLevelDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaUserLevel) updateTableName(table string) *scaUserLevel {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.UserID = field.NewString(table, "user_id")
+ s.LevelType = field.NewInt64(table, "level_type")
+ s.Level = field.NewInt64(table, "level")
+ s.LevelName = field.NewString(table, "level_name")
+ s.ExpStart = field.NewInt64(table, "exp_start")
+ s.ExpEnd = field.NewInt64(table, "exp_end")
+ s.Description = field.NewString(table, "description")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaUserLevel) 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 *scaUserLevel) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 11)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["user_id"] = s.UserID
+ s.fieldMap["level_type"] = s.LevelType
+ s.fieldMap["level"] = s.Level
+ s.fieldMap["level_name"] = s.LevelName
+ s.fieldMap["exp_start"] = s.ExpStart
+ s.fieldMap["exp_end"] = s.ExpEnd
+ s.fieldMap["description"] = s.Description
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaUserLevel) clone(db *gorm.DB) scaUserLevel {
+ s.scaUserLevelDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaUserLevel) replaceDB(db *gorm.DB) scaUserLevel {
+ s.scaUserLevelDo.ReplaceDB(db)
+ return s
+}
+
+type scaUserLevelDo struct{ gen.DO }
+
+type IScaUserLevelDo interface {
+ gen.SubQuery
+ Debug() IScaUserLevelDo
+ WithContext(ctx context.Context) IScaUserLevelDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaUserLevelDo
+ WriteDB() IScaUserLevelDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaUserLevelDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaUserLevelDo
+ Not(conds ...gen.Condition) IScaUserLevelDo
+ Or(conds ...gen.Condition) IScaUserLevelDo
+ Select(conds ...field.Expr) IScaUserLevelDo
+ Where(conds ...gen.Condition) IScaUserLevelDo
+ Order(conds ...field.Expr) IScaUserLevelDo
+ Distinct(cols ...field.Expr) IScaUserLevelDo
+ Omit(cols ...field.Expr) IScaUserLevelDo
+ Join(table schema.Tabler, on ...field.Expr) IScaUserLevelDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaUserLevelDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaUserLevelDo
+ Group(cols ...field.Expr) IScaUserLevelDo
+ Having(conds ...gen.Condition) IScaUserLevelDo
+ Limit(limit int) IScaUserLevelDo
+ Offset(offset int) IScaUserLevelDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaUserLevelDo
+ Unscoped() IScaUserLevelDo
+ Create(values ...*model.ScaUserLevel) error
+ CreateInBatches(values []*model.ScaUserLevel, batchSize int) error
+ Save(values ...*model.ScaUserLevel) error
+ First() (*model.ScaUserLevel, error)
+ Take() (*model.ScaUserLevel, error)
+ Last() (*model.ScaUserLevel, error)
+ Find() ([]*model.ScaUserLevel, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaUserLevel, err error)
+ FindInBatches(result *[]*model.ScaUserLevel, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaUserLevel) (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) IScaUserLevelDo
+ Assign(attrs ...field.AssignExpr) IScaUserLevelDo
+ Joins(fields ...field.RelationField) IScaUserLevelDo
+ Preload(fields ...field.RelationField) IScaUserLevelDo
+ FirstOrInit() (*model.ScaUserLevel, error)
+ FirstOrCreate() (*model.ScaUserLevel, error)
+ FindByPage(offset int, limit int) (result []*model.ScaUserLevel, 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) IScaUserLevelDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaUserLevelDo) Debug() IScaUserLevelDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaUserLevelDo) WithContext(ctx context.Context) IScaUserLevelDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaUserLevelDo) ReadDB() IScaUserLevelDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaUserLevelDo) WriteDB() IScaUserLevelDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaUserLevelDo) Session(config *gorm.Session) IScaUserLevelDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaUserLevelDo) Clauses(conds ...clause.Expression) IScaUserLevelDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaUserLevelDo) Returning(value interface{}, columns ...string) IScaUserLevelDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaUserLevelDo) Not(conds ...gen.Condition) IScaUserLevelDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaUserLevelDo) Or(conds ...gen.Condition) IScaUserLevelDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaUserLevelDo) Select(conds ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaUserLevelDo) Where(conds ...gen.Condition) IScaUserLevelDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaUserLevelDo) Order(conds ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaUserLevelDo) Distinct(cols ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaUserLevelDo) Omit(cols ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaUserLevelDo) Join(table schema.Tabler, on ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaUserLevelDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaUserLevelDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaUserLevelDo) Group(cols ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaUserLevelDo) Having(conds ...gen.Condition) IScaUserLevelDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaUserLevelDo) Limit(limit int) IScaUserLevelDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaUserLevelDo) Offset(offset int) IScaUserLevelDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaUserLevelDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaUserLevelDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaUserLevelDo) Unscoped() IScaUserLevelDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaUserLevelDo) Create(values ...*model.ScaUserLevel) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaUserLevelDo) CreateInBatches(values []*model.ScaUserLevel, 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 scaUserLevelDo) Save(values ...*model.ScaUserLevel) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaUserLevelDo) First() (*model.ScaUserLevel, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserLevel), nil
+ }
+}
+
+func (s scaUserLevelDo) Take() (*model.ScaUserLevel, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserLevel), nil
+ }
+}
+
+func (s scaUserLevelDo) Last() (*model.ScaUserLevel, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserLevel), nil
+ }
+}
+
+func (s scaUserLevelDo) Find() ([]*model.ScaUserLevel, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaUserLevel), err
+}
+
+func (s scaUserLevelDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaUserLevel, err error) {
+ buf := make([]*model.ScaUserLevel, 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 scaUserLevelDo) FindInBatches(result *[]*model.ScaUserLevel, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaUserLevelDo) Attrs(attrs ...field.AssignExpr) IScaUserLevelDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaUserLevelDo) Assign(attrs ...field.AssignExpr) IScaUserLevelDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaUserLevelDo) Joins(fields ...field.RelationField) IScaUserLevelDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaUserLevelDo) Preload(fields ...field.RelationField) IScaUserLevelDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaUserLevelDo) FirstOrInit() (*model.ScaUserLevel, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserLevel), nil
+ }
+}
+
+func (s scaUserLevelDo) FirstOrCreate() (*model.ScaUserLevel, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserLevel), nil
+ }
+}
+
+func (s scaUserLevelDo) FindByPage(offset int, limit int) (result []*model.ScaUserLevel, 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 scaUserLevelDo) 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 scaUserLevelDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaUserLevelDo) Delete(models ...*model.ScaUserLevel) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaUserLevelDo) withDO(do gen.Dao) *scaUserLevelDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/auth/api/model/mysql/query/sca_user_message.gen.go b/app/auth/api/model/mysql/query/sca_user_message.gen.go
new file mode 100644
index 0000000..0f81b2a
--- /dev/null
+++ b/app/auth/api/model/mysql/query/sca_user_message.gen.go
@@ -0,0 +1,411 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/auth/api/model/mysql/model"
+
+ "gorm.io/gorm"
+ "gorm.io/gorm/clause"
+ "gorm.io/gorm/schema"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaUserMessage(db *gorm.DB, opts ...gen.DOOption) scaUserMessage {
+ _scaUserMessage := scaUserMessage{}
+
+ _scaUserMessage.scaUserMessageDo.UseDB(db, opts...)
+ _scaUserMessage.scaUserMessageDo.UseModel(&model.ScaUserMessage{})
+
+ tableName := _scaUserMessage.scaUserMessageDo.TableName()
+ _scaUserMessage.ALL = field.NewAsterisk(tableName)
+ _scaUserMessage.ID = field.NewInt64(tableName, "id")
+ _scaUserMessage.TopicID = field.NewString(tableName, "topic_id")
+ _scaUserMessage.FromID = field.NewString(tableName, "from_id")
+ _scaUserMessage.ToID = field.NewString(tableName, "to_id")
+ _scaUserMessage.Content = field.NewString(tableName, "content")
+ _scaUserMessage.IsRead = field.NewInt64(tableName, "is_read")
+ _scaUserMessage.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaUserMessage.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaUserMessage.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaUserMessage.fillFieldMap()
+
+ return _scaUserMessage
+}
+
+type scaUserMessage struct {
+ scaUserMessageDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键
+ TopicID field.String // 话题Id
+ FromID field.String // 来自人
+ ToID field.String // 送达人
+ Content field.String // 消息内容
+ IsRead field.Int64 // 是否已读
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaUserMessage) Table(newTableName string) *scaUserMessage {
+ s.scaUserMessageDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaUserMessage) As(alias string) *scaUserMessage {
+ s.scaUserMessageDo.DO = *(s.scaUserMessageDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaUserMessage) updateTableName(table string) *scaUserMessage {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.TopicID = field.NewString(table, "topic_id")
+ s.FromID = field.NewString(table, "from_id")
+ s.ToID = field.NewString(table, "to_id")
+ s.Content = field.NewString(table, "content")
+ s.IsRead = field.NewInt64(table, "is_read")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaUserMessage) 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 *scaUserMessage) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 9)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["topic_id"] = s.TopicID
+ s.fieldMap["from_id"] = s.FromID
+ s.fieldMap["to_id"] = s.ToID
+ s.fieldMap["content"] = s.Content
+ s.fieldMap["is_read"] = s.IsRead
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaUserMessage) clone(db *gorm.DB) scaUserMessage {
+ s.scaUserMessageDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaUserMessage) replaceDB(db *gorm.DB) scaUserMessage {
+ s.scaUserMessageDo.ReplaceDB(db)
+ return s
+}
+
+type scaUserMessageDo struct{ gen.DO }
+
+type IScaUserMessageDo interface {
+ gen.SubQuery
+ Debug() IScaUserMessageDo
+ WithContext(ctx context.Context) IScaUserMessageDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaUserMessageDo
+ WriteDB() IScaUserMessageDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaUserMessageDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaUserMessageDo
+ Not(conds ...gen.Condition) IScaUserMessageDo
+ Or(conds ...gen.Condition) IScaUserMessageDo
+ Select(conds ...field.Expr) IScaUserMessageDo
+ Where(conds ...gen.Condition) IScaUserMessageDo
+ Order(conds ...field.Expr) IScaUserMessageDo
+ Distinct(cols ...field.Expr) IScaUserMessageDo
+ Omit(cols ...field.Expr) IScaUserMessageDo
+ Join(table schema.Tabler, on ...field.Expr) IScaUserMessageDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaUserMessageDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaUserMessageDo
+ Group(cols ...field.Expr) IScaUserMessageDo
+ Having(conds ...gen.Condition) IScaUserMessageDo
+ Limit(limit int) IScaUserMessageDo
+ Offset(offset int) IScaUserMessageDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaUserMessageDo
+ Unscoped() IScaUserMessageDo
+ Create(values ...*model.ScaUserMessage) error
+ CreateInBatches(values []*model.ScaUserMessage, batchSize int) error
+ Save(values ...*model.ScaUserMessage) error
+ First() (*model.ScaUserMessage, error)
+ Take() (*model.ScaUserMessage, error)
+ Last() (*model.ScaUserMessage, error)
+ Find() ([]*model.ScaUserMessage, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaUserMessage, err error)
+ FindInBatches(result *[]*model.ScaUserMessage, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaUserMessage) (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) IScaUserMessageDo
+ Assign(attrs ...field.AssignExpr) IScaUserMessageDo
+ Joins(fields ...field.RelationField) IScaUserMessageDo
+ Preload(fields ...field.RelationField) IScaUserMessageDo
+ FirstOrInit() (*model.ScaUserMessage, error)
+ FirstOrCreate() (*model.ScaUserMessage, error)
+ FindByPage(offset int, limit int) (result []*model.ScaUserMessage, 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) IScaUserMessageDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaUserMessageDo) Debug() IScaUserMessageDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaUserMessageDo) WithContext(ctx context.Context) IScaUserMessageDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaUserMessageDo) ReadDB() IScaUserMessageDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaUserMessageDo) WriteDB() IScaUserMessageDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaUserMessageDo) Session(config *gorm.Session) IScaUserMessageDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaUserMessageDo) Clauses(conds ...clause.Expression) IScaUserMessageDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaUserMessageDo) Returning(value interface{}, columns ...string) IScaUserMessageDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaUserMessageDo) Not(conds ...gen.Condition) IScaUserMessageDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaUserMessageDo) Or(conds ...gen.Condition) IScaUserMessageDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaUserMessageDo) Select(conds ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaUserMessageDo) Where(conds ...gen.Condition) IScaUserMessageDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaUserMessageDo) Order(conds ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaUserMessageDo) Distinct(cols ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaUserMessageDo) Omit(cols ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaUserMessageDo) Join(table schema.Tabler, on ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaUserMessageDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaUserMessageDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaUserMessageDo) Group(cols ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaUserMessageDo) Having(conds ...gen.Condition) IScaUserMessageDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaUserMessageDo) Limit(limit int) IScaUserMessageDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaUserMessageDo) Offset(offset int) IScaUserMessageDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaUserMessageDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaUserMessageDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaUserMessageDo) Unscoped() IScaUserMessageDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaUserMessageDo) Create(values ...*model.ScaUserMessage) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaUserMessageDo) CreateInBatches(values []*model.ScaUserMessage, 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 scaUserMessageDo) Save(values ...*model.ScaUserMessage) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaUserMessageDo) First() (*model.ScaUserMessage, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserMessage), nil
+ }
+}
+
+func (s scaUserMessageDo) Take() (*model.ScaUserMessage, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserMessage), nil
+ }
+}
+
+func (s scaUserMessageDo) Last() (*model.ScaUserMessage, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserMessage), nil
+ }
+}
+
+func (s scaUserMessageDo) Find() ([]*model.ScaUserMessage, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaUserMessage), err
+}
+
+func (s scaUserMessageDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaUserMessage, err error) {
+ buf := make([]*model.ScaUserMessage, 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 scaUserMessageDo) FindInBatches(result *[]*model.ScaUserMessage, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaUserMessageDo) Attrs(attrs ...field.AssignExpr) IScaUserMessageDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaUserMessageDo) Assign(attrs ...field.AssignExpr) IScaUserMessageDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaUserMessageDo) Joins(fields ...field.RelationField) IScaUserMessageDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaUserMessageDo) Preload(fields ...field.RelationField) IScaUserMessageDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaUserMessageDo) FirstOrInit() (*model.ScaUserMessage, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserMessage), nil
+ }
+}
+
+func (s scaUserMessageDo) FirstOrCreate() (*model.ScaUserMessage, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserMessage), nil
+ }
+}
+
+func (s scaUserMessageDo) FindByPage(offset int, limit int) (result []*model.ScaUserMessage, 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 scaUserMessageDo) 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 scaUserMessageDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaUserMessageDo) Delete(models ...*model.ScaUserMessage) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaUserMessageDo) withDO(do gen.Dao) *scaUserMessageDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/core/api/resources/ip2region/ip2region.xdb b/app/auth/api/resources/ip2region/ip2region.xdb
similarity index 100%
rename from app/core/api/resources/ip2region/ip2region.xdb
rename to app/auth/api/resources/ip2region/ip2region.xdb
diff --git a/app/core/api/resources/language/active.en.toml b/app/auth/api/resources/language/active.en.toml
similarity index 69%
rename from app/core/api/resources/language/active.en.toml
rename to app/auth/api/resources/language/active.en.toml
index aea8611..baf9ab9 100644
--- a/app/core/api/resources/language/active.en.toml
+++ b/app/auth/api/resources/language/active.en.toml
@@ -1,5 +1,3 @@
-[system]
-error = "system error!"
[captcha]
verificationFailure = "verification failure!"
[login]
@@ -20,12 +18,4 @@ loginSuccess = "login success!"
[sms]
smsSendTooFrequently = "sms send too frequently!"
smsSendFailed = "sms send failed!"
-smsSendSuccess = "sms send success!"
-[comment]
-tooManyImages = "too many images!"
-commentError = "comment error!"
-LikeError = "like error!"
-CancelLikeError = "cancel like error!"
-[upload]
-uploadError = "upload error!"
-uploadSuccess = "upload success!"
\ No newline at end of file
+smsSendSuccess = "sms send success!"
\ No newline at end of file
diff --git a/app/core/api/resources/language/active.zh.toml b/app/auth/api/resources/language/active.zh.toml
similarity index 71%
rename from app/core/api/resources/language/active.zh.toml
rename to app/auth/api/resources/language/active.zh.toml
index 3070075..5f0a946 100644
--- a/app/core/api/resources/language/active.zh.toml
+++ b/app/auth/api/resources/language/active.zh.toml
@@ -1,5 +1,3 @@
-[system]
-error = "系统错误!"
[captcha]
verificationFailure = "验证失败!"
[login]
@@ -21,11 +19,3 @@ loginSuccess = "登录成功!"
smsSendTooFrequently = "验证码发送过于频繁,请稍后再试!"
smsSendFailed = "短信发送失败!"
smsSendSuccess = "短信发送成功!"
-[comment]
-tooManyImages = "图片数量过多,请上传不超过3张!"
-commentError = "评论失败!"
-LikeError = "点赞失败!"
-CancelLikeError = "取消点赞失败!"
-[upload]
-uploadError = "上传失败!"
-uploadSuccess = "上传成功!"
diff --git a/app/community/api/community.api b/app/community/api/community.api
new file mode 100644
index 0000000..df8760f
--- /dev/null
+++ b/app/community/api/community.api
@@ -0,0 +1,152 @@
+syntax = "v1"
+
+info (
+ title: "社区服务"
+ desc: "社区服务"
+ author: "landaiqing"
+ email: "landaiqing@126.com"
+ version: "v1.0.0"
+)
+
+// 评论请求参数
+type (
+ // 评论提交请求参数
+ CommentRequest {
+ Content string `json:"content"`
+ Images []string `json:"images,optional"`
+ TopicId string `json:"topic_id"`
+ Author string `json:"author"`
+ Key string `json:"key"`
+ Point []int64 `json:"point"`
+ }
+ // 回复评论提交请求参数
+ ReplyCommentRequest {
+ Content string `json:"content"`
+ Images []string `json:"images,optional"`
+ TopicId string `json:"topic_id" `
+ ReplyId int64 `json:"reply_id" `
+ ReplyUser string `json:"reply_user" `
+ Author string `json:"author"`
+ Key string `json:"key"`
+ Point []int64 `json:"point"`
+ }
+ // 回复回复请求参数
+ ReplyReplyRequest {
+ Content string `json:"content"`
+ Images []string `json:"images,optional"`
+ TopicId string `json:"topic_id"`
+ ReplyTo int64 `json:"reply_to"`
+ ReplyId int64 `json:"reply_id"`
+ ReplyUser string `json:"reply_user" `
+ Author string `json:"author"`
+ Key string `json:"key"`
+ Point []int64 `json:"point"`
+ }
+ // 评论列表请求参数
+ CommentListRequest {
+ TopicId string `json:"topic_id"`
+ Page int `json:"page,default=1,optional"`
+ Size int `json:"size,default=5,optional"`
+ IsHot bool `json:"is_hot,default=true,optional"`
+ }
+ // 回复列表请求参数
+ ReplyListRequest {
+ TopicId string `json:"topic_id"`
+ CommentId int64 `json:"comment_id"`
+ Page int `json:"page,default=1,optional"`
+ Size int `json:"size,default=5,optional"`
+ }
+ // 点赞评论的请求参数
+ CommentLikeRequest {
+ TopicId string `json:"topic_id"`
+ CommentId int64 `json:"comment_id"`
+ }
+ CommentDisLikeRequest {
+ TopicId string `json:"topic_id"`
+ CommentId int64 `json:"comment_id"`
+ }
+)
+
+// 响应参数
+type (
+ // CommentContent 评论内容
+ CommentContent {
+ NickName string `json:"nickname"`
+ Avatar string `json:"avatar"`
+ Level int64 `json:"level,omitempty" default:"0"`
+ Id int64 `json:"id"`
+ UserId string `json:"user_id"`
+ TopicId string `json:"topic_id"`
+ Content string `json:"content"`
+ ReplyTo int64 `json:"reply_to,omitempty"`
+ ReplyId int64 `json:"reply_id,omitempty"`
+ ReplyUser string `json:"reply_user,omitempty"`
+ ReplyNickname string `json:"reply_nickname,omitempty"`
+ IsAuthor int64 `json:"is_author"`
+ Likes int64 `json:"likes"`
+ ReplyCount int64 `json:"reply_count"`
+ CreatedTime string `json:"created_time"`
+ Location string `json:"location"`
+ Browser string `json:"browser"`
+ OperatingSystem string `json:"operating_system"`
+ IsLiked bool `json:"is_liked" default:"false"`
+ Images []string `json:"images,omitempty"`
+ }
+ // CommentListPageResponse 评论返回值
+ CommentListPageResponse {
+ Size int `json:"size"`
+ Total int64 `json:"total"`
+ Current int `json:"current"`
+ Comments []CommentContent `json:"comments"`
+ }
+ // CommentResponse 提交评论响应
+ CommentResponse {
+ Id int64 `json:"id"`
+ Content string `json:"content"`
+ UserId string `json:"user_id"`
+ TopicId string `json:"topic_id"`
+ Author int64 `json:"author"`
+ Location string `json:"location"`
+ Browser string `json:"browser"`
+ OperatingSystem string `json:"operating_system"`
+ CreatedTime string `json:"created_time"`
+ ReplyId int64 `json:"reply_id,omitempty"`
+ ReplyUser string `json:"reply_user,omitempty"`
+ ReplyTo int64 `json:"reply_to,omitempty"`
+ }
+)
+
+@server (
+ group: comment // 微服务分组
+ prefix: /api/auth/comment // 微服务前缀
+ timeout: 10s // 超时时间
+ maxBytes: 1048576 // 最大请求大小
+ signature: false // 是否开启签名验证
+ middleware: SecurityHeadersMiddleware,CasbinVerifyMiddleware,AuthorizationMiddleware,NonceMiddleware // 注册中间件
+ MaxConns: true // 是否开启最大连接数限制
+ Recover: true // 是否开启自动恢复
+ jwt: Auth // 是否开启jwt验证
+)
+service community {
+ @handler getCommentList
+ post /list (CommentListRequest) returns (CommentListPageResponse)
+
+ @handler getReplyList
+ post /reply/list (ReplyListRequest) returns (CommentListPageResponse)
+
+ @handler submitComment
+ post /submit (CommentRequest) returns (CommentResponse)
+
+ @handler submitReplyComment
+ post /reply/submit (ReplyCommentRequest) returns (CommentResponse)
+
+ @handler submitReplyReply
+ post /reply/reply/submit (ReplyReplyRequest) returns (CommentResponse)
+
+ @handler likeComment
+ post /like (CommentLikeRequest)
+
+ @handler dislikeComment
+ post /dislike (CommentDisLikeRequest)
+}
+
diff --git a/app/community/api/community.go b/app/community/api/community.go
new file mode 100644
index 0000000..b0bb542
--- /dev/null
+++ b/app/community/api/community.go
@@ -0,0 +1,36 @@
+package main
+
+import (
+ "flag"
+ "fmt"
+ "schisandra-album-cloud-microservices/app/community/api/internal/config"
+ "schisandra-album-cloud-microservices/app/community/api/internal/handler"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ "schisandra-album-cloud-microservices/common/idgenerator"
+ "schisandra-album-cloud-microservices/common/middleware"
+
+ "github.com/zeromicro/go-zero/core/conf"
+ "github.com/zeromicro/go-zero/rest"
+)
+
+var configFile = flag.String("f", "etc/community.yaml", "the config file")
+
+func main() {
+ flag.Parse()
+
+ var c config.Config
+ conf.MustLoad(*configFile, &c)
+
+ server := rest.MustNewServer(c.RestConf,
+ rest.WithCustomCors(middleware.CORSMiddleware(), nil),
+ rest.WithUnauthorizedCallback(middleware.UnauthorizedCallbackMiddleware()),
+ rest.WithUnsignedCallback(middleware.UnsignedCallbackMiddleware()))
+ defer server.Stop()
+
+ server.Use(middleware.I18nMiddleware)
+ ctx := svc.NewServiceContext(c)
+ handler.RegisterHandlers(server, ctx)
+ idgenerator.NewIDGenerator(1)
+ fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
+ server.Start()
+}
diff --git a/app/community/api/etc/community.yaml b/app/community/api/etc/community.yaml
new file mode 100644
index 0000000..21a2079
--- /dev/null
+++ b/app/community/api/etc/community.yaml
@@ -0,0 +1,84 @@
+# 定义服务的名称,会出现在 log 和 tracer 中
+Name: schisandra-community-service
+# 监听地址
+Host: 0.0.0.0
+# 监听端口
+Port: 8081
+# 服务的环境,目前我们预定义了 dev。在dev 环境我们会开启反射 dev,test,rt,pre, pro
+Mode: pro
+# 打点上报,将一些 metrics 上报到对应的地址,如果为空,则不上报
+MetricsUrl:
+# 并发请求数
+MaxConns: 100
+# 超时时间(ms)
+Timeout: 5000
+# 降载阈值,默认900(90%),可允许设置范围0到1000
+CpuThreshold: 900
+# 最大ContentLength
+MaxBytes: 10485760
+# 是否打印详细日志
+Verbose: false
+# 日志配置
+Log:
+ # 服务名称
+ ServiceName: schisandra-community-service
+ # 日志打印模式,console 控制台 file, console
+ Mode: console
+ # 日志格式, json 格式 或者 plain 纯文本
+ Encoding: plain
+ # 日期格式化
+ TimeFormat:
+ # 日志在文件输出模式下,日志输出路径
+ Path: logs/system
+ # 日志输出级别 debug,info,error,severe
+ Level: debug
+ # 日志长度限制,打印单个日志的时候会对日志进行裁剪,只有对 content 进行裁剪
+ MaxContentLength: 0
+ # 是否压缩日志
+ Compress: true
+ # 是否开启 stat 日志,go-zero 版本大于等于1.5.0才支持
+ Stat: false
+ # 日志保留天数,只有在文件模式才会生效
+ KeepDays: 7
+ # 堆栈打印冷却时间
+ StackCooldownMillis: 100
+ # 文件输出模式,按照大小分割时,最多文件保留个数
+ MaxBackups: 5
+ # 文件输出模式,按照大小分割时,单个文件大小
+ MaxSize: 0
+ # 文件分割模式, daily 按日期 daily,size
+ Rotation: daily
+ # 文件名日期格式
+ FileTimeFormat:
+# Auth 配置
+Auth:
+ # 访问密钥
+ AccessSecret: uOvKLmVfztaXGpNYd4Z0I1SiT7MweJhl
+# MySQL 配置
+Mysql:
+ # 数据源dsn
+ DataSource: root:LDQ20020618xxx@tcp(1.95.0.111:3306)/schisandra-cloud-album?charset=utf8mb4&parseTime=True&loc=Local
+ # 最大连接数
+ MaxOpenConn: 10
+ # 最大空闲连接数
+ MaxIdleConn: 5
+# Redis 配置
+Redis:
+ # Redis 地址
+ Host: 1.95.0.111:6379
+ # Redis 密码
+ Pass: LDQ20020618xxx
+ # Redis 数据库
+ DB: 0
+# Mongo 配置
+Mongo:
+ # MongoDB 地址
+ Uri: mongodb://1.95.0.111:27017
+ # MongoDB 用户名
+ Username: landaiqing
+ # MongoDB 密码
+ Password: LDQ20020618xxx
+ # MongoDB 数据库
+ Database: schisandra-cloud-album
+ # MongoDB 认证源
+ AuthSource: admin
\ No newline at end of file
diff --git a/app/community/api/generate.go b/app/community/api/generate.go
new file mode 100644
index 0000000..5edb59c
--- /dev/null
+++ b/app/community/api/generate.go
@@ -0,0 +1,3 @@
+package main
+
+//go:generate goctl api go -api community.api -dir . --style=go_zero
diff --git a/app/community/api/internal/config/config.go b/app/community/api/internal/config/config.go
new file mode 100644
index 0000000..79aca85
--- /dev/null
+++ b/app/community/api/internal/config/config.go
@@ -0,0 +1,27 @@
+package config
+
+import "github.com/zeromicro/go-zero/rest"
+
+type Config struct {
+ rest.RestConf
+ Auth struct {
+ AccessSecret string
+ }
+ Mysql struct {
+ DataSource string
+ MaxOpenConn int
+ MaxIdleConn int
+ }
+ Redis struct {
+ Host string
+ Pass string
+ DB int
+ }
+ Mongo struct {
+ Uri string
+ Username string
+ Password string
+ AuthSource string
+ Database string
+ }
+}
diff --git a/app/community/api/internal/handler/comment/dislike_comment_handler.go b/app/community/api/internal/handler/comment/dislike_comment_handler.go
new file mode 100644
index 0000000..c1b73d9
--- /dev/null
+++ b/app/community/api/internal/handler/comment/dislike_comment_handler.go
@@ -0,0 +1,24 @@
+package comment
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/community/api/internal/logic/comment"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/community/api/internal/types"
+ "schisandra-album-cloud-microservices/common/xhttp"
+)
+
+func DislikeCommentHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.CommentDisLikeRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := comment.NewDislikeCommentLogic(r.Context(), svcCtx)
+ err := l.DislikeComment(&req)
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ }
+}
diff --git a/app/community/api/internal/handler/comment/get_comment_list_handler.go b/app/community/api/internal/handler/comment/get_comment_list_handler.go
new file mode 100644
index 0000000..7fc0707
--- /dev/null
+++ b/app/community/api/internal/handler/comment/get_comment_list_handler.go
@@ -0,0 +1,28 @@
+package comment
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/community/api/internal/logic/comment"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/community/api/internal/types"
+ "schisandra-album-cloud-microservices/common/xhttp"
+)
+
+func GetCommentListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.CommentListRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := comment.NewGetCommentListLogic(r.Context(), svcCtx)
+ resp, err := l.GetCommentList(&req)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/community/api/internal/handler/comment/get_reply_list_handler.go b/app/community/api/internal/handler/comment/get_reply_list_handler.go
new file mode 100644
index 0000000..4907b07
--- /dev/null
+++ b/app/community/api/internal/handler/comment/get_reply_list_handler.go
@@ -0,0 +1,28 @@
+package comment
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/community/api/internal/logic/comment"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/community/api/internal/types"
+ "schisandra-album-cloud-microservices/common/xhttp"
+)
+
+func GetReplyListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.ReplyListRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := comment.NewGetReplyListLogic(r.Context(), svcCtx)
+ resp, err := l.GetReplyList(&req)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/community/api/internal/handler/comment/like_comment_handler.go b/app/community/api/internal/handler/comment/like_comment_handler.go
new file mode 100644
index 0000000..cedbf28
--- /dev/null
+++ b/app/community/api/internal/handler/comment/like_comment_handler.go
@@ -0,0 +1,24 @@
+package comment
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/community/api/internal/logic/comment"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/community/api/internal/types"
+ "schisandra-album-cloud-microservices/common/xhttp"
+)
+
+func LikeCommentHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.CommentLikeRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := comment.NewLikeCommentLogic(r.Context(), svcCtx)
+ err := l.LikeComment(&req)
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ }
+}
diff --git a/app/community/api/internal/handler/comment/submit_comment_handler.go b/app/community/api/internal/handler/comment/submit_comment_handler.go
new file mode 100644
index 0000000..240ebbd
--- /dev/null
+++ b/app/community/api/internal/handler/comment/submit_comment_handler.go
@@ -0,0 +1,28 @@
+package comment
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/community/api/internal/logic/comment"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/community/api/internal/types"
+ "schisandra-album-cloud-microservices/common/xhttp"
+)
+
+func SubmitCommentHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.CommentRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := comment.NewSubmitCommentLogic(r.Context(), svcCtx)
+ resp, err := l.SubmitComment(r, &req)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/community/api/internal/handler/comment/submit_reply_comment_handler.go b/app/community/api/internal/handler/comment/submit_reply_comment_handler.go
new file mode 100644
index 0000000..e2dc8cb
--- /dev/null
+++ b/app/community/api/internal/handler/comment/submit_reply_comment_handler.go
@@ -0,0 +1,28 @@
+package comment
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/community/api/internal/logic/comment"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/community/api/internal/types"
+ "schisandra-album-cloud-microservices/common/xhttp"
+)
+
+func SubmitReplyCommentHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.ReplyCommentRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := comment.NewSubmitReplyCommentLogic(r.Context(), svcCtx)
+ resp, err := l.SubmitReplyComment(r, &req)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/community/api/internal/handler/comment/submit_reply_reply_handler.go b/app/community/api/internal/handler/comment/submit_reply_reply_handler.go
new file mode 100644
index 0000000..c49c17d
--- /dev/null
+++ b/app/community/api/internal/handler/comment/submit_reply_reply_handler.go
@@ -0,0 +1,28 @@
+package comment
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/community/api/internal/logic/comment"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/community/api/internal/types"
+ "schisandra-album-cloud-microservices/common/xhttp"
+)
+
+func SubmitReplyReplyHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.ReplyReplyRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := comment.NewSubmitReplyReplyLogic(r.Context(), svcCtx)
+ resp, err := l.SubmitReplyReply(r, &req)
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ } else {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
+ }
+ }
+}
diff --git a/app/community/api/internal/handler/routes.go b/app/community/api/internal/handler/routes.go
new file mode 100644
index 0000000..2d2755b
--- /dev/null
+++ b/app/community/api/internal/handler/routes.go
@@ -0,0 +1,63 @@
+// Code generated by goctl. DO NOT EDIT.
+// goctl 1.7.3
+
+package handler
+
+import (
+ "net/http"
+ "time"
+
+ comment "schisandra-album-cloud-microservices/app/community/api/internal/handler/comment"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+
+ "github.com/zeromicro/go-zero/rest"
+)
+
+func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
+ server.AddRoutes(
+ rest.WithMiddlewares(
+ []rest.Middleware{serverCtx.SecurityHeadersMiddleware, serverCtx.CasbinVerifyMiddleware, serverCtx.AuthorizationMiddleware, serverCtx.NonceMiddleware},
+ []rest.Route{
+ {
+ Method: http.MethodPost,
+ Path: "/dislike",
+ Handler: comment.DislikeCommentHandler(serverCtx),
+ },
+ {
+ Method: http.MethodPost,
+ Path: "/like",
+ Handler: comment.LikeCommentHandler(serverCtx),
+ },
+ {
+ Method: http.MethodPost,
+ Path: "/list",
+ Handler: comment.GetCommentListHandler(serverCtx),
+ },
+ {
+ Method: http.MethodPost,
+ Path: "/reply/list",
+ Handler: comment.GetReplyListHandler(serverCtx),
+ },
+ {
+ Method: http.MethodPost,
+ Path: "/reply/reply/submit",
+ Handler: comment.SubmitReplyReplyHandler(serverCtx),
+ },
+ {
+ Method: http.MethodPost,
+ Path: "/reply/submit",
+ Handler: comment.SubmitReplyCommentHandler(serverCtx),
+ },
+ {
+ Method: http.MethodPost,
+ Path: "/submit",
+ Handler: comment.SubmitCommentHandler(serverCtx),
+ },
+ }...,
+ ),
+ rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
+ rest.WithPrefix("/api/auth/comment"),
+ rest.WithTimeout(10000*time.Millisecond),
+ rest.WithMaxBytes(1048576),
+ )
+}
diff --git a/app/core/api/internal/logic/comment/dislike_comment_logic.go b/app/community/api/internal/logic/comment/dislike_comment_logic.go
similarity index 66%
rename from app/core/api/internal/logic/comment/dislike_comment_logic.go
rename to app/community/api/internal/logic/comment/dislike_comment_logic.go
index 83203b0..ba34fe0 100644
--- a/app/core/api/internal/logic/comment/dislike_comment_logic.go
+++ b/app/community/api/internal/logic/comment/dislike_comment_logic.go
@@ -3,12 +3,12 @@ package comment
import (
"context"
"errors"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-
"github.com/zeromicro/go-zero/core/logx"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/community/api/internal/types"
+ errors2 "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/i18n"
)
type DislikeCommentLogic struct {
@@ -25,35 +25,35 @@ func NewDislikeCommentLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Di
}
}
-func (l *DislikeCommentLogic) DislikeComment(req *types.CommentDisLikeRequest) (resp *types.Response, err error) {
+func (l *DislikeCommentLogic) DislikeComment(req *types.CommentDisLikeRequest) (err error) {
uid, ok := l.ctx.Value("user_id").(string)
if !ok {
- return nil, errors.New("user_id not found in context")
+ return errors.New("user_id not found")
}
tx := l.svcCtx.DB.Begin()
commentLike := l.svcCtx.DB.ScaCommentLike
resultInfo, err := tx.ScaCommentLike.Where(commentLike.TopicID.Eq(req.TopicId), commentLike.CommentID.Eq(req.CommentId), commentLike.UserID.Eq(uid)).Delete()
if err != nil {
_ = tx.Rollback()
- return nil, err
+ return err
}
if resultInfo.RowsAffected == 0 {
_ = tx.Rollback()
- return response.ErrorWithI18n(l.ctx, "comment.CancelLikeError"), nil
+ return errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "comment.LikeError"))
}
comment := l.svcCtx.DB.ScaCommentReply
updates, err := tx.ScaCommentReply.Where(comment.TopicID.Eq(req.TopicId), comment.ID.Eq(req.CommentId)).Update(comment.Likes, comment.Likes.Sub(1))
if err != nil {
_ = tx.Rollback()
- return nil, err
+ return err
}
if updates.RowsAffected == 0 {
_ = tx.Rollback()
- return response.ErrorWithI18n(l.ctx, "comment.LikeError"), nil
+ return errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "comment.LikeError"))
}
err = tx.Commit()
if err != nil {
- return nil, err
+ return err
}
- return response.Success(), nil
+ return nil
}
diff --git a/app/core/api/internal/logic/comment/get_comment_list_logic.go b/app/community/api/internal/logic/comment/get_comment_list_logic.go
similarity index 76%
rename from app/core/api/internal/logic/comment/get_comment_list_logic.go
rename to app/community/api/internal/logic/comment/get_comment_list_logic.go
index 8bec534..551e158 100644
--- a/app/core/api/internal/logic/comment/get_comment_list_logic.go
+++ b/app/community/api/internal/logic/comment/get_comment_list_logic.go
@@ -5,18 +5,16 @@ import (
"encoding/base64"
"errors"
"fmt"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ types2 "schisandra-album-cloud-microservices/app/community/api/internal/types"
+ "schisandra-album-cloud-microservices/app/community/api/model/mongodb"
+ constant2 "schisandra-album-cloud-microservices/common/constant"
+ "schisandra-album-cloud-microservices/common/utils"
"sync"
"github.com/chenmingyong0423/go-mongox/v2/builder/query"
"github.com/zeromicro/go-zero/core/logx"
"gorm.io/gen/field"
-
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
- "schisandra-album-cloud-microservices/app/core/api/repository/mongodb/collection"
)
type GetCommentListLogic struct {
@@ -34,13 +32,13 @@ func NewGetCommentListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Ge
}
}
-func (l *GetCommentListLogic) GetCommentList(req *types.CommentListRequest) (resp *types.Response, err error) {
+func (l *GetCommentListLogic) GetCommentList(req *types2.CommentListRequest) (resp *types2.CommentListPageResponse, err error) {
// 获取用户ID
uid, ok := l.ctx.Value("user_id").(string)
if !ok {
- return nil, errors.New("user_id not found in context")
+ return nil, errors.New("user_id not found")
}
- var commentQueryList []types.CommentListQueryResult
+ var commentQueryList []types2.CommentListQueryResult
comment := l.svcCtx.DB.ScaCommentReply
user := l.svcCtx.DB.ScaAuthUser
var orderConditions []field.Expr
@@ -65,19 +63,19 @@ func (l *GetCommentListLogic) GetCommentList(req *types.CommentListRequest) (res
user.Avatar,
user.Nickname,
).LeftJoin(user, comment.UserID.EqCol(user.UID)).
- Where(comment.TopicID.Eq(req.TopicId), comment.CommentType.Eq(constant.COMMENT)).
+ Where(comment.TopicID.Eq(req.TopicId), comment.CommentType.Eq(constant2.COMMENT)).
Order(orderConditions...).
ScanByPage(&commentQueryList, (req.Page-1)*req.Size, req.Size)
if err != nil {
return nil, err
}
if count == 0 || len(commentQueryList) == 0 {
- return response.SuccessWithData(types.CommentListPageResponse{
+ return &types2.CommentListPageResponse{
Total: count,
Size: req.Size,
Current: req.Page,
- Comments: []types.CommentContent{},
- }), nil
+ Comments: []types2.CommentContent{},
+ }, nil
}
// **************** 获取评论Id和用户Id ************
commentIds := make([]int64, 0, len(commentQueryList))
@@ -108,7 +106,7 @@ func (l *GetCommentListLogic) GetCommentList(req *types.CommentListRequest) (res
commentImageMap := make(map[int64][]string)
go func() {
defer l.wg.Done()
- newCollection := collection.MustNewCollection[types.CommentImages](l.svcCtx, constant.COMMENT_IMAGES)
+ newCollection := mongodb.MustNewCollection[types2.CommentImages](l.svcCtx.MongoClient, constant2.COMMENT_IMAGES)
commentImages, err := newCollection.Finder().
Filter(query.Eq("topic_id", req.TopicId)).
Filter(query.In("comment_id", commentIds...)).
@@ -132,13 +130,13 @@ func (l *GetCommentListLogic) GetCommentList(req *types.CommentListRequest) (res
l.wg.Wait()
// *************** 组装数据 **********
- result := make([]types.CommentContent, 0, len(commentQueryList))
+ result := make([]types2.CommentContent, 0, len(commentQueryList))
for _, commentData := range commentQueryList {
- commentContent := types.CommentContent{
+ commentContent := types2.CommentContent{
Avatar: commentData.Avatar,
NickName: commentData.Nickname,
Content: commentData.Content,
- CreatedTime: commentData.CreatedAt,
+ CreatedTime: commentData.CreatedAt.Format(constant2.TimeFormat),
Level: 0,
Id: commentData.ID,
UserId: commentData.UserID,
@@ -154,11 +152,11 @@ func (l *GetCommentListLogic) GetCommentList(req *types.CommentListRequest) (res
}
result = append(result, commentContent)
}
- commentListPageResponse := types.CommentListPageResponse{
+ commentListPageResponse := &types2.CommentListPageResponse{
Total: count,
Size: req.Size,
Current: req.Page,
Comments: result,
}
- return response.SuccessWithData(commentListPageResponse), nil
+ return commentListPageResponse, nil
}
diff --git a/app/core/api/internal/logic/comment/get_reply_list_logic.go b/app/community/api/internal/logic/comment/get_reply_list_logic.go
similarity index 77%
rename from app/core/api/internal/logic/comment/get_reply_list_logic.go
rename to app/community/api/internal/logic/comment/get_reply_list_logic.go
index b5b816c..4f21c63 100644
--- a/app/core/api/internal/logic/comment/get_reply_list_logic.go
+++ b/app/community/api/internal/logic/comment/get_reply_list_logic.go
@@ -5,17 +5,15 @@ import (
"encoding/base64"
"errors"
"fmt"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ types2 "schisandra-album-cloud-microservices/app/community/api/internal/types"
+ "schisandra-album-cloud-microservices/app/community/api/model/mongodb"
+ constant2 "schisandra-album-cloud-microservices/common/constant"
+ "schisandra-album-cloud-microservices/common/utils"
"sync"
"github.com/chenmingyong0423/go-mongox/v2/builder/query"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
- "schisandra-album-cloud-microservices/app/core/api/repository/mongodb/collection"
-
"github.com/zeromicro/go-zero/core/logx"
)
@@ -34,13 +32,13 @@ func NewGetReplyListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetR
}
}
-func (l *GetReplyListLogic) GetReplyList(req *types.ReplyListRequest) (resp *types.Response, err error) {
+func (l *GetReplyListLogic) GetReplyList(req *types2.ReplyListRequest) (resp *types2.CommentListPageResponse, err error) {
// 获取用户ID
uid, ok := l.ctx.Value("user_id").(string)
if !ok {
- return nil, errors.New("user_id not found in context")
+ return nil, errors.New("user_id not found")
}
- var replyQueryList []types.ReplyListQueryResult
+ var replyQueryList []types2.ReplyListQueryResult
reply := l.svcCtx.DB.ScaCommentReply
user := l.svcCtx.DB.ScaAuthUser
commentUser := user.As("comment_user")
@@ -66,18 +64,18 @@ func (l *GetReplyListLogic) GetReplyList(req *types.ReplyListRequest) (resp *typ
replyUser.Nickname.As("reply_nickname"),
).LeftJoin(commentUser, reply.UserID.EqCol(commentUser.UID)).
LeftJoin(replyUser, reply.ReplyUser.EqCol(replyUser.UID)).
- Where(reply.TopicID.Eq(req.TopicId), reply.ReplyID.Eq(req.CommentId), reply.CommentType.Eq(constant.REPLY)).
+ Where(reply.TopicID.Eq(req.TopicId), reply.ReplyID.Eq(req.CommentId), reply.CommentType.Eq(constant2.REPLY)).
Order(reply.Likes.Desc(), reply.CreatedAt.Desc()).
ScanByPage(&replyQueryList, (req.Page-1)*req.Size, req.Size)
if err != nil {
return nil, err
}
if count == 0 || len(replyQueryList) == 0 {
- return response.SuccessWithData(types.CommentListPageResponse{
+ return &types2.CommentListPageResponse{
Total: count,
Size: req.Size,
Current: req.Page,
- }), nil
+ }, nil
}
// **************** 获取评论Id和用户Id ************
commentIds := make([]int64, 0, len(replyQueryList))
@@ -108,7 +106,7 @@ func (l *GetReplyListLogic) GetReplyList(req *types.ReplyListRequest) (resp *typ
commentImageMap := make(map[int64][]string)
go func() {
defer l.wg.Done()
- newCollection := collection.MustNewCollection[types.CommentImages](l.svcCtx, constant.COMMENT_IMAGES)
+ newCollection := mongodb.MustNewCollection[types2.CommentImages](l.svcCtx.MongoClient, constant2.COMMENT_IMAGES)
commentImages, err := newCollection.Finder().
Filter(query.Eq("topic_id", req.TopicId)).
Filter(query.In("comment_id", commentIds...)).
@@ -132,13 +130,13 @@ func (l *GetReplyListLogic) GetReplyList(req *types.ReplyListRequest) (resp *typ
l.wg.Wait()
// *************** 组装数据 **********
- result := make([]types.CommentContent, 0, len(replyQueryList))
+ result := make([]types2.CommentContent, 0, len(replyQueryList))
for _, replyData := range replyQueryList {
- commentContent := types.CommentContent{
+ commentContent := types2.CommentContent{
Avatar: replyData.Avatar,
NickName: replyData.Nickname,
Content: replyData.Content,
- CreatedTime: replyData.CreatedAt,
+ CreatedTime: replyData.CreatedAt.Format(constant2.TimeFormat),
Level: 0,
Id: replyData.ID,
UserId: replyData.UserID,
@@ -158,11 +156,11 @@ func (l *GetReplyListLogic) GetReplyList(req *types.ReplyListRequest) (resp *typ
}
result = append(result, commentContent)
}
- commentListPageResponse := types.CommentListPageResponse{
+ commentListPageResponse := &types2.CommentListPageResponse{
Total: count,
Size: req.Size,
Current: req.Page,
Comments: result,
}
- return response.SuccessWithData(commentListPageResponse), nil
+ return commentListPageResponse, nil
}
diff --git a/app/core/api/internal/logic/comment/like_comment_logic.go b/app/community/api/internal/logic/comment/like_comment_logic.go
similarity index 68%
rename from app/core/api/internal/logic/comment/like_comment_logic.go
rename to app/community/api/internal/logic/comment/like_comment_logic.go
index 10c0413..2bca54d 100644
--- a/app/core/api/internal/logic/comment/like_comment_logic.go
+++ b/app/community/api/internal/logic/comment/like_comment_logic.go
@@ -3,13 +3,12 @@ package comment
import (
"context"
"errors"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/community/api/internal/types"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+ "schisandra-album-cloud-microservices/common/i18n"
"time"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
-
"github.com/zeromicro/go-zero/core/logx"
)
@@ -27,10 +26,10 @@ func NewLikeCommentLogic(ctx context.Context, svcCtx *svc.ServiceContext) *LikeC
}
}
-func (l *LikeCommentLogic) LikeComment(req *types.CommentLikeRequest) (resp *types.Response, err error) {
+func (l *LikeCommentLogic) LikeComment(req *types.CommentLikeRequest) (err error) {
uid, ok := l.ctx.Value("user_id").(string)
if !ok {
- return nil, errors.New("user_id not found in context")
+ return errors.New("user_id not found")
}
tx := l.svcCtx.DB.Begin()
commentLike := &model.ScaCommentLike{
@@ -42,21 +41,21 @@ func (l *LikeCommentLogic) LikeComment(req *types.CommentLikeRequest) (resp *typ
err = tx.ScaCommentLike.Create(commentLike)
if err != nil {
_ = tx.Rollback()
- return nil, err
+ return err
}
comment := l.svcCtx.DB.ScaCommentReply
updates, err := tx.ScaCommentReply.Where(comment.TopicID.Eq(req.TopicId), comment.ID.Eq(req.CommentId)).Update(comment.Likes, comment.Likes.Add(1))
if err != nil {
_ = tx.Rollback()
- return nil, err
+ return err
}
if updates.RowsAffected == 0 {
_ = tx.Rollback()
- return response.ErrorWithI18n(l.ctx, "comment.LikeError"), nil
+ return errors.New(i18n.FormatText(l.ctx, "comment.LikeError"))
}
err = tx.Commit()
if err != nil {
- return nil, err
+ return err
}
- return response.Success(), nil
+ return nil
}
diff --git a/app/core/api/internal/logic/comment/submit_comment_logic.go b/app/community/api/internal/logic/comment/submit_comment_logic.go
similarity index 65%
rename from app/core/api/internal/logic/comment/submit_comment_logic.go
rename to app/community/api/internal/logic/comment/submit_comment_logic.go
index d3aeb25..39605da 100644
--- a/app/core/api/internal/logic/comment/submit_comment_logic.go
+++ b/app/community/api/internal/logic/comment/submit_comment_logic.go
@@ -4,20 +4,20 @@ import (
"context"
"errors"
"net/http"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/community/api/internal/types"
+ "schisandra-album-cloud-microservices/app/community/api/model/mongodb"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+ "schisandra-album-cloud-microservices/common/captcha/verify"
+ "schisandra-album-cloud-microservices/common/constant"
+ errors2 "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/i18n"
+ "schisandra-album-cloud-microservices/common/utils"
"time"
"github.com/mssola/useragent"
"github.com/zeromicro/go-zero/core/logx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/captcha/verify"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
- "schisandra-album-cloud-microservices/app/core/api/repository/mongodb/collection"
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
type SubmitCommentLogic struct {
@@ -34,18 +34,18 @@ func NewSubmitCommentLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Sub
}
}
-func (l *SubmitCommentLogic) SubmitComment(r *http.Request, req *types.CommentRequest) (resp *types.Response, err error) {
+func (l *SubmitCommentLogic) SubmitComment(r *http.Request, req *types.CommentRequest) (resp *types.CommentResponse, err error) {
res := verify.VerifySlideCaptcha(l.ctx, l.svcCtx.RedisClient, req.Point, req.Key)
if !res {
- return response.ErrorWithI18n(l.ctx, "captcha.verificationFailure"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "captcha.verificationFailure"))
}
if len(req.Images) > 3 {
- return response.ErrorWithI18n(l.ctx, "comment.tooManyImages"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "comment.tooManyImages"))
}
userAgent := r.Header.Get("User-Agent")
if userAgent == "" {
- return response.ErrorWithI18n(l.ctx, "comment.commentError"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "comment.commentError"))
}
ua := useragent.New(userAgent)
@@ -68,7 +68,7 @@ func (l *SubmitCommentLogic) SubmitComment(r *http.Request, req *types.CommentRe
}
xssFilterContent := utils.XssFilter(req.Content)
if xssFilterContent == "" {
- return response.ErrorWithI18n(l.ctx, "comment.commentError"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "comment.commentError"))
}
commentContent := l.svcCtx.Sensitive.Replace(xssFilterContent, '*')
topicType := constant.CommentTopicType
@@ -103,13 +103,13 @@ func (l *SubmitCommentLogic) SubmitComment(r *http.Request, req *types.CommentRe
Images: imagesData,
}
- newCollection := collection.MustNewCollection[types.CommentImages](l.svcCtx, constant.COMMENT_IMAGES)
+ newCollection := mongodb.MustNewCollection[types.CommentImages](l.svcCtx.MongoClient, constant.COMMENT_IMAGES)
_, err = newCollection.Creator().InsertOne(l.ctx, commentImages)
if err != nil {
return nil, err
}
}
- commentResponse := types.CommentResponse{
+ commentResponse := &types.CommentResponse{
Id: comment.ID,
Content: commentContent,
UserId: uid,
@@ -118,7 +118,7 @@ func (l *SubmitCommentLogic) SubmitComment(r *http.Request, req *types.CommentRe
Location: location,
Browser: browser,
OperatingSystem: operatingSystem,
- CreatedTime: time.Now(),
+ CreatedTime: time.Now().Format(constant.TimeFormat),
}
- return response.SuccessWithData(commentResponse), nil
+ return commentResponse, nil
}
diff --git a/app/core/api/internal/logic/comment/submit_reply_comment_logic.go b/app/community/api/internal/logic/comment/submit_reply_comment_logic.go
similarity index 67%
rename from app/core/api/internal/logic/comment/submit_reply_comment_logic.go
rename to app/community/api/internal/logic/comment/submit_reply_comment_logic.go
index c4ea127..4bb5ff2 100644
--- a/app/core/api/internal/logic/comment/submit_reply_comment_logic.go
+++ b/app/community/api/internal/logic/comment/submit_reply_comment_logic.go
@@ -4,20 +4,20 @@ import (
"context"
"errors"
"net/http"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/community/api/internal/types"
+ "schisandra-album-cloud-microservices/app/community/api/model/mongodb"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+ "schisandra-album-cloud-microservices/common/captcha/verify"
+ "schisandra-album-cloud-microservices/common/constant"
+ errors2 "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/i18n"
+ "schisandra-album-cloud-microservices/common/utils"
"time"
"github.com/mssola/useragent"
"github.com/zeromicro/go-zero/core/logx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/captcha/verify"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
- "schisandra-album-cloud-microservices/app/core/api/repository/mongodb/collection"
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
type SubmitReplyCommentLogic struct {
@@ -34,17 +34,17 @@ func NewSubmitReplyCommentLogic(ctx context.Context, svcCtx *svc.ServiceContext)
}
}
-func (l *SubmitReplyCommentLogic) SubmitReplyComment(r *http.Request, req *types.ReplyCommentRequest) (resp *types.Response, err error) {
+func (l *SubmitReplyCommentLogic) SubmitReplyComment(r *http.Request, req *types.ReplyCommentRequest) (resp *types.CommentResponse, err error) {
res := verify.VerifySlideCaptcha(l.ctx, l.svcCtx.RedisClient, req.Point, req.Key)
if !res {
- return response.ErrorWithI18n(l.ctx, "captcha.verificationFailure"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "captcha.verificationFailure"))
}
if len(req.Images) > 3 {
- return response.ErrorWithI18n(l.ctx, "comment.tooManyImages"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "comment.tooManyImages"))
}
userAgent := r.Header.Get("User-Agent")
if userAgent == "" {
- return response.ErrorWithI18n(l.ctx, "comment.commentError"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "comment.commentError"))
}
ua := useragent.New(userAgent)
@@ -68,7 +68,8 @@ func (l *SubmitReplyCommentLogic) SubmitReplyComment(r *http.Request, req *types
xssFilterContent := utils.XssFilter(req.Content)
if xssFilterContent == "" {
- return response.ErrorWithI18n(l.ctx, "comment.commentError"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "comment.commentError"))
+
}
commentContent := l.svcCtx.Sensitive.Replace(xssFilterContent, '*')
@@ -100,7 +101,8 @@ func (l *SubmitReplyCommentLogic) SubmitReplyComment(r *http.Request, req *types
return nil, err
}
if update.RowsAffected == 0 {
- return response.ErrorWithI18n(l.ctx, "comment.commentError"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "comment.commentError"))
+
}
if len(req.Images) > 0 {
@@ -116,14 +118,14 @@ func (l *SubmitReplyCommentLogic) SubmitReplyComment(r *http.Request, req *types
Images: imagesData,
}
- newCollection := collection.MustNewCollection[types.CommentImages](l.svcCtx, constant.COMMENT_IMAGES)
+ newCollection := mongodb.MustNewCollection[types.CommentImages](l.svcCtx.MongoClient, constant.COMMENT_IMAGES)
_, err = newCollection.Creator().InsertOne(l.ctx, commentImages)
if err != nil {
return nil, err
}
}
- commentResponse := types.CommentResponse{
+ commentResponse := &types.CommentResponse{
Id: reply.ID,
Content: commentContent,
UserId: uid,
@@ -132,7 +134,7 @@ func (l *SubmitReplyCommentLogic) SubmitReplyComment(r *http.Request, req *types
Location: location,
Browser: browser,
OperatingSystem: operatingSystem,
- CreatedTime: time.Now(),
+ CreatedTime: time.Now().Format(constant.TimeFormat),
ReplyId: reply.ReplyID,
ReplyUser: reply.ReplyUser,
}
@@ -140,5 +142,5 @@ func (l *SubmitReplyCommentLogic) SubmitReplyComment(r *http.Request, req *types
if err != nil {
return nil, err
}
- return response.SuccessWithData(commentResponse), nil
+ return commentResponse, nil
}
diff --git a/app/core/api/internal/logic/comment/submit_reply_reply_logic.go b/app/community/api/internal/logic/comment/submit_reply_reply_logic.go
similarity index 67%
rename from app/core/api/internal/logic/comment/submit_reply_reply_logic.go
rename to app/community/api/internal/logic/comment/submit_reply_reply_logic.go
index 34161b4..a278792 100644
--- a/app/core/api/internal/logic/comment/submit_reply_reply_logic.go
+++ b/app/community/api/internal/logic/comment/submit_reply_reply_logic.go
@@ -4,20 +4,20 @@ import (
"context"
"errors"
"net/http"
+ "schisandra-album-cloud-microservices/app/community/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/community/api/internal/types"
+ "schisandra-album-cloud-microservices/app/community/api/model/mongodb"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+ "schisandra-album-cloud-microservices/common/captcha/verify"
+ "schisandra-album-cloud-microservices/common/constant"
+ errors2 "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/i18n"
+ "schisandra-album-cloud-microservices/common/utils"
"time"
"github.com/mssola/useragent"
"github.com/zeromicro/go-zero/core/logx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/captcha/verify"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
- "schisandra-album-cloud-microservices/app/core/api/repository/mongodb/collection"
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
type SubmitReplyReplyLogic struct {
@@ -34,21 +34,17 @@ func NewSubmitReplyReplyLogic(ctx context.Context, svcCtx *svc.ServiceContext) *
}
}
-func (l *SubmitReplyReplyLogic) SubmitReplyReply(r *http.Request, req *types.ReplyReplyRequest) (resp *types.Response, err error) {
- // 验证验证码
- if !verify.VerifySlideCaptcha(l.ctx, l.svcCtx.RedisClient, req.Point, req.Key) {
- return response.ErrorWithI18n(l.ctx, "captcha.verificationFailure"), nil
+func (l *SubmitReplyReplyLogic) SubmitReplyReply(r *http.Request, req *types.ReplyReplyRequest) (resp *types.CommentResponse, err error) {
+ res := verify.VerifySlideCaptcha(l.ctx, l.svcCtx.RedisClient, req.Point, req.Key)
+ if !res {
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "captcha.verificationFailure"))
}
-
- // 检查图片数量
if len(req.Images) > 3 {
- return response.ErrorWithI18n(l.ctx, "comment.tooManyImages"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "comment.tooManyImages"))
}
-
- // 获取用户代理
userAgent := r.Header.Get("User-Agent")
if userAgent == "" {
- return response.ErrorWithI18n(l.ctx, "comment.commentError"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "comment.commentError"))
}
ua := useragent.New(userAgent)
@@ -78,7 +74,8 @@ func (l *SubmitReplyReplyLogic) SubmitReplyReply(r *http.Request, req *types.Rep
// XSS过滤
xssFilterContent := utils.XssFilter(req.Content)
if xssFilterContent == "" {
- return response.ErrorWithI18n(l.ctx, "comment.commentError"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "comment.commentError"))
+
}
commentContent := l.svcCtx.Sensitive.Replace(xssFilterContent, '*')
@@ -111,7 +108,8 @@ func (l *SubmitReplyReplyLogic) SubmitReplyReply(r *http.Request, req *types.Rep
return nil, err
}
if update.RowsAffected == 0 {
- return response.ErrorWithI18n(l.ctx, "comment.commentError"), nil
+ return nil, errors2.New(http.StatusInternalServerError, i18n.FormatText(l.ctx, "comment.commentError"))
+
}
// 处理图片
@@ -127,7 +125,7 @@ func (l *SubmitReplyReplyLogic) SubmitReplyReply(r *http.Request, req *types.Rep
Images: imagesData,
}
- newCollection := collection.MustNewCollection[types.CommentImages](l.svcCtx, constant.COMMENT_IMAGES)
+ newCollection := mongodb.MustNewCollection[types.CommentImages](l.svcCtx.MongoClient, constant.COMMENT_IMAGES)
_, err = newCollection.Creator().InsertOne(l.ctx, commentImages)
if err != nil {
return nil, err
@@ -135,7 +133,7 @@ func (l *SubmitReplyReplyLogic) SubmitReplyReply(r *http.Request, req *types.Rep
}
// 构建响应
- commentResponse := types.CommentResponse{
+ commentResponse := &types.CommentResponse{
Id: replyReply.ID,
Content: commentContent,
UserId: uid,
@@ -144,7 +142,7 @@ func (l *SubmitReplyReplyLogic) SubmitReplyReply(r *http.Request, req *types.Rep
Location: location,
Browser: browser,
OperatingSystem: operatingSystem,
- CreatedTime: time.Now(),
+ CreatedTime: time.Now().Format(constant.TimeFormat),
ReplyId: replyReply.ReplyID,
ReplyUser: replyReply.ReplyUser,
ReplyTo: replyReply.ReplyTo,
@@ -154,5 +152,5 @@ func (l *SubmitReplyReplyLogic) SubmitReplyReply(r *http.Request, req *types.Rep
if err = tx.Commit(); err != nil {
return nil, err
}
- return response.SuccessWithData(commentResponse), nil
+ return commentResponse, nil
}
diff --git a/app/community/api/internal/middleware/authorization_middleware.go b/app/community/api/internal/middleware/authorization_middleware.go
new file mode 100644
index 0000000..c5b8bbc
--- /dev/null
+++ b/app/community/api/internal/middleware/authorization_middleware.go
@@ -0,0 +1,20 @@
+package middleware
+
+import (
+ "net/http"
+ "schisandra-album-cloud-microservices/common/middleware"
+)
+
+type AuthorizationMiddleware struct {
+}
+
+func NewAuthorizationMiddleware() *AuthorizationMiddleware {
+ return &AuthorizationMiddleware{}
+}
+
+func (m *AuthorizationMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ middleware.AuthorizationMiddleware(w, r)
+ next(w, r)
+ }
+}
diff --git a/app/community/api/internal/middleware/casbinverify_middleware.go b/app/community/api/internal/middleware/casbinverify_middleware.go
new file mode 100644
index 0000000..df91e5b
--- /dev/null
+++ b/app/community/api/internal/middleware/casbinverify_middleware.go
@@ -0,0 +1,24 @@
+package middleware
+
+import (
+ "github.com/casbin/casbin/v2"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/middleware"
+)
+
+type CasbinVerifyMiddleware struct {
+ casbin *casbin.SyncedCachedEnforcer
+}
+
+func NewCasbinVerifyMiddleware(casbin *casbin.SyncedCachedEnforcer) *CasbinVerifyMiddleware {
+ return &CasbinVerifyMiddleware{
+ casbin: casbin,
+ }
+}
+
+func (m *CasbinVerifyMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ middleware.CasbinMiddleware(w, r, m.casbin)
+ next(w, r)
+ }
+}
diff --git a/app/community/api/internal/middleware/nonce_middleware.go b/app/community/api/internal/middleware/nonce_middleware.go
new file mode 100644
index 0000000..a50274c
--- /dev/null
+++ b/app/community/api/internal/middleware/nonce_middleware.go
@@ -0,0 +1,24 @@
+package middleware
+
+import (
+ "github.com/redis/go-redis/v9"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/middleware"
+)
+
+type NonceMiddleware struct {
+ RedisClient *redis.Client
+}
+
+func NewNonceMiddleware(redisClient *redis.Client) *NonceMiddleware {
+ return &NonceMiddleware{
+ RedisClient: redisClient,
+ }
+}
+
+func (m *NonceMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ middleware.NonceMiddleware(w, r, m.RedisClient)
+ next(w, r)
+ }
+}
diff --git a/app/community/api/internal/middleware/securityheaders_middleware.go b/app/community/api/internal/middleware/securityheaders_middleware.go
new file mode 100644
index 0000000..6faf51a
--- /dev/null
+++ b/app/community/api/internal/middleware/securityheaders_middleware.go
@@ -0,0 +1,20 @@
+package middleware
+
+import (
+ "net/http"
+ "schisandra-album-cloud-microservices/common/middleware"
+)
+
+type SecurityHeadersMiddleware struct {
+}
+
+func NewSecurityHeadersMiddleware() *SecurityHeadersMiddleware {
+ return &SecurityHeadersMiddleware{}
+}
+
+func (m *SecurityHeadersMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ middleware.SecurityHeadersMiddleware(r)
+ next(w, r)
+ }
+}
diff --git a/app/core/api/internal/svc/service_context.go b/app/community/api/internal/svc/service_context.go
similarity index 57%
rename from app/core/api/internal/svc/service_context.go
rename to app/community/api/internal/svc/service_context.go
index 6c558ab..100523e 100644
--- a/app/core/api/internal/svc/service_context.go
+++ b/app/community/api/internal/svc/service_context.go
@@ -1,27 +1,21 @@
package svc
import (
- "github.com/ArtisanCloud/PowerWeChat/v3/src/officialAccount"
"github.com/casbin/casbin/v2"
"github.com/lionsoul2014/ip2region/binding/golang/xdb"
"github.com/redis/go-redis/v9"
- "github.com/wenlng/go-captcha/v2/rotate"
- "github.com/wenlng/go-captcha/v2/slide"
"github.com/zeromicro/go-zero/rest"
sensitive "github.com/zmexing/go-sensitive-word"
"go.mongodb.org/mongo-driver/v2/mongo"
-
- "schisandra-album-cloud-microservices/app/core/api/internal/config"
- "schisandra-album-cloud-microservices/app/core/api/internal/middleware"
- "schisandra-album-cloud-microservices/app/core/api/repository/captcha"
- "schisandra-album-cloud-microservices/app/core/api/repository/casbinx"
- "schisandra-album-cloud-microservices/app/core/api/repository/ip2region"
- "schisandra-album-cloud-microservices/app/core/api/repository/mongodb"
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql"
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/query"
- "schisandra-album-cloud-microservices/app/core/api/repository/redisx"
- "schisandra-album-cloud-microservices/app/core/api/repository/sensitivex"
- "schisandra-album-cloud-microservices/app/core/api/repository/wechat_official"
+ "schisandra-album-cloud-microservices/app/community/api/internal/config"
+ "schisandra-album-cloud-microservices/app/community/api/internal/middleware"
+ "schisandra-album-cloud-microservices/app/community/api/model/mongodb"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/query"
+ "schisandra-album-cloud-microservices/common/casbinx"
+ "schisandra-album-cloud-microservices/common/ip2region"
+ "schisandra-album-cloud-microservices/common/redisx"
+ "schisandra-album-cloud-microservices/common/sensitivex"
)
type ServiceContext struct {
@@ -30,15 +24,12 @@ type ServiceContext struct {
CasbinVerifyMiddleware rest.Middleware
AuthorizationMiddleware rest.Middleware
NonceMiddleware rest.Middleware
- DB *query.Query
- RedisClient *redis.Client
MongoClient *mongo.Database
- Ip2Region *xdb.Searcher
+ DB *query.Query
CasbinEnforcer *casbin.SyncedCachedEnforcer
- WechatOfficial *officialAccount.OfficialAccount
+ RedisClient *redis.Client
Sensitive *sensitive.Manager
- RotateCaptcha rotate.Captcha
- SlideCaptcha slide.Captcha
+ Ip2Region *xdb.Searcher
}
func NewServiceContext(c config.Config) *ServiceContext {
@@ -51,14 +42,11 @@ func NewServiceContext(c config.Config) *ServiceContext {
CasbinVerifyMiddleware: middleware.NewCasbinVerifyMiddleware(casbinEnforcer).Handle,
AuthorizationMiddleware: middleware.NewAuthorizationMiddleware().Handle,
NonceMiddleware: middleware.NewNonceMiddleware(redisClient).Handle,
- DB: queryDB,
- RedisClient: redisClient,
MongoClient: mongodb.NewMongoDB(c.Mongo.Uri, c.Mongo.Username, c.Mongo.Password, c.Mongo.AuthSource, c.Mongo.Database),
- Ip2Region: ip2region.NewIP2Region(),
+ DB: queryDB,
CasbinEnforcer: casbinEnforcer,
- WechatOfficial: wechat_official.NewWechatPublic(c.Wechat.AppID, c.Wechat.AppSecret, c.Wechat.Token, c.Wechat.AESKey, c.Redis.Host, c.Redis.Pass, c.Redis.DB),
+ RedisClient: redisClient,
Sensitive: sensitivex.NewSensitive(),
- RotateCaptcha: captcha.NewRotateCaptcha(),
- SlideCaptcha: captcha.NewSlideCaptcha(),
+ Ip2Region: ip2region.NewIP2Region(),
}
}
diff --git a/app/community/api/internal/types/comment.go b/app/community/api/internal/types/comment.go
new file mode 100644
index 0000000..87fc01c
--- /dev/null
+++ b/app/community/api/internal/types/comment.go
@@ -0,0 +1,54 @@
+package types
+
+import (
+ "time"
+
+ "github.com/chenmingyong0423/go-mongox/v2"
+)
+
+// CommentImages 评论 图片
+type CommentImages struct {
+ mongox.Model `bson:",inline"`
+ TopicId string `json:"topic_id" bson:"topic_id"`
+ CommentId int64 `json:"comment_id" bson:"comment_id"`
+ UserId string `json:"user_id" bson:"user_id"`
+ Images [][]byte `json:"images" bson:"images"`
+}
+
+// CommentListQueryResult 评论列表查询结果
+type CommentListQueryResult struct {
+ ID int64 `json:"id"`
+ UserID string `json:"user_id"`
+ TopicID string `json:"topic_id"`
+ Content string `json:"content"`
+ CreatedAt time.Time `json:"created_at"`
+ Author int64 `json:"author"`
+ Likes int64 `json:"likes"`
+ ReplyCount int64 `json:"reply_count"`
+ Browser string `json:"browser"`
+ OperatingSystem string `json:"operating_system"`
+ Location string `json:"location"`
+ Avatar string `json:"avatar"`
+ Nickname string `json:"nickname"`
+}
+
+// ReplyListQueryResult 回复列表查询结果
+type ReplyListQueryResult struct {
+ ID int64 `json:"id"`
+ UserID string `json:"user_id"`
+ TopicID string `json:"topic_id"`
+ Content string `json:"content"`
+ CreatedAt time.Time `json:"created_at"`
+ Author int64 `json:"author"`
+ Likes int64 `json:"likes"`
+ ReplyCount int64 `json:"reply_count"`
+ Browser string `json:"browser"`
+ OperatingSystem string `json:"operating_system"`
+ Location string `json:"location"`
+ Avatar string `json:"avatar"`
+ Nickname string `json:"nickname"`
+ ReplyUser string `json:"reply_user"`
+ ReplyId int64 `json:"reply_id"`
+ ReplyTo int64 `json:"reply_to"`
+ ReplyNickname string `json:"reply_nickname"`
+}
diff --git a/app/community/api/internal/types/types.go b/app/community/api/internal/types/types.go
new file mode 100644
index 0000000..d1d9ac4
--- /dev/null
+++ b/app/community/api/internal/types/types.go
@@ -0,0 +1,105 @@
+// Code generated by goctl. DO NOT EDIT.
+// goctl 1.7.3
+
+package types
+
+type CommentContent struct {
+ NickName string `json:"nickname"`
+ Avatar string `json:"avatar"`
+ Level int64 `json:"level,omitempty" default:"0"`
+ Id int64 `json:"id"`
+ UserId string `json:"user_id"`
+ TopicId string `json:"topic_id"`
+ Content string `json:"content"`
+ ReplyTo int64 `json:"reply_to,omitempty"`
+ ReplyId int64 `json:"reply_id,omitempty"`
+ ReplyUser string `json:"reply_user,omitempty"`
+ ReplyNickname string `json:"reply_nickname,omitempty"`
+ IsAuthor int64 `json:"is_author"`
+ Likes int64 `json:"likes"`
+ ReplyCount int64 `json:"reply_count"`
+ CreatedTime string `json:"created_time"`
+ Location string `json:"location"`
+ Browser string `json:"browser"`
+ OperatingSystem string `json:"operating_system"`
+ IsLiked bool `json:"is_liked" default:"false"`
+ Images []string `json:"images,omitempty"`
+}
+
+type CommentDisLikeRequest struct {
+ TopicId string `json:"topic_id"`
+ CommentId int64 `json:"comment_id"`
+}
+
+type CommentLikeRequest struct {
+ TopicId string `json:"topic_id"`
+ CommentId int64 `json:"comment_id"`
+}
+
+type CommentListPageResponse struct {
+ Size int `json:"size"`
+ Total int64 `json:"total"`
+ Current int `json:"current"`
+ Comments []CommentContent `json:"comments"`
+}
+
+type CommentListRequest struct {
+ TopicId string `json:"topic_id"`
+ Page int `json:"page,default=1,optional"`
+ Size int `json:"size,default=5,optional"`
+ IsHot bool `json:"is_hot,default=true,optional"`
+}
+
+type CommentRequest struct {
+ Content string `json:"content"`
+ Images []string `json:"images,optional"`
+ TopicId string `json:"topic_id"`
+ Author string `json:"author"`
+ Key string `json:"key"`
+ Point []int64 `json:"point"`
+}
+
+type CommentResponse struct {
+ Id int64 `json:"id"`
+ Content string `json:"content"`
+ UserId string `json:"user_id"`
+ TopicId string `json:"topic_id"`
+ Author int64 `json:"author"`
+ Location string `json:"location"`
+ Browser string `json:"browser"`
+ OperatingSystem string `json:"operating_system"`
+ CreatedTime string `json:"created_time"`
+ ReplyId int64 `json:"reply_id,omitempty"`
+ ReplyUser string `json:"reply_user,omitempty"`
+ ReplyTo int64 `json:"reply_to,omitempty"`
+}
+
+type ReplyCommentRequest struct {
+ Content string `json:"content"`
+ Images []string `json:"images,optional"`
+ TopicId string `json:"topic_id" `
+ ReplyId int64 `json:"reply_id" `
+ ReplyUser string `json:"reply_user" `
+ Author string `json:"author"`
+ Key string `json:"key"`
+ Point []int64 `json:"point"`
+}
+
+type ReplyListRequest struct {
+ TopicId string `json:"topic_id"`
+ CommentId int64 `json:"comment_id"`
+ Page int `json:"page,default=1,optional"`
+ Size int `json:"size,default=5,optional"`
+}
+
+type ReplyReplyRequest struct {
+ Content string `json:"content"`
+ Images []string `json:"images,optional"`
+ TopicId string `json:"topic_id"`
+ ReplyTo int64 `json:"reply_to"`
+ ReplyId int64 `json:"reply_id"`
+ ReplyUser string `json:"reply_user" `
+ Author string `json:"author"`
+ Key string `json:"key"`
+ Point []int64 `json:"point"`
+}
diff --git a/app/community/api/model/mongodb/collection.go b/app/community/api/model/mongodb/collection.go
new file mode 100644
index 0000000..45ad95a
--- /dev/null
+++ b/app/community/api/model/mongodb/collection.go
@@ -0,0 +1,12 @@
+package mongodb
+
+import (
+ "github.com/chenmingyong0423/go-mongox/v2"
+ "go.mongodb.org/mongo-driver/v2/mongo"
+)
+
+// MustNewCollection creates a new Collection instance with the given name.
+func MustNewCollection[T any](mongoClient *mongo.Database, collectionName string) *mongox.Collection[T] {
+ collection := mongoClient.Collection(collectionName)
+ return mongox.NewCollection[T](collection)
+}
diff --git a/app/core/api/repository/mongodb/mongodb.go b/app/community/api/model/mongodb/mongodb.go
similarity index 94%
rename from app/core/api/repository/mongodb/mongodb.go
rename to app/community/api/model/mongodb/mongodb.go
index cad03ee..922d95a 100644
--- a/app/core/api/repository/mongodb/mongodb.go
+++ b/app/community/api/model/mongodb/mongodb.go
@@ -2,8 +2,6 @@ package mongodb
import (
"context"
- "log"
-
"go.mongodb.org/mongo-driver/v2/mongo"
"go.mongodb.org/mongo-driver/v2/mongo/options"
"go.mongodb.org/mongo-driver/v2/mongo/readpref"
@@ -17,11 +15,11 @@ func NewMongoDB(uri string, username string, password string, authSource string,
AuthSource: authSource,
}))
if err != nil {
- log.Panic(err)
+ panic(err)
}
err = client.Ping(context.Background(), readpref.Primary())
if err != nil {
- log.Panic(err)
+ panic(err)
}
db := client.Database(database)
return db
diff --git a/app/core/api/repository/mysql/generate/generate.go b/app/community/api/model/mysql/generate/generate.go
similarity index 98%
rename from app/core/api/repository/mysql/generate/generate.go
rename to app/community/api/model/mysql/generate/generate.go
index d8b9e19..cc0ed22 100644
--- a/app/core/api/repository/mysql/generate/generate.go
+++ b/app/community/api/model/mysql/generate/generate.go
@@ -25,7 +25,7 @@ func main() {
if err != nil {
panic(err)
}
- path := filepath.Join(dir, "app/core/api/repository/mysql/", "query")
+ path := filepath.Join(dir, "app/auth/api/repository/mysql/", "query")
// 生成实例
g := gen.NewGenerator(gen.Config{
// 相对执行`go run`时的路径, 会自动创建目录
diff --git a/app/community/api/model/mysql/model/sca_auth_menu.gen.go b/app/community/api/model/mysql/model/sca_auth_menu.gen.go
new file mode 100644
index 0000000..002f0b0
--- /dev/null
+++ b/app/community/api/model/mysql/model/sca_auth_menu.gen.go
@@ -0,0 +1,35 @@
+// 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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaAuthMenu = "sca_auth_menu"
+
+// ScaAuthMenu mapped from table
+type ScaAuthMenu struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键ID;primary_key" json:"id,string"` // 主键ID
+ MenuName string `gorm:"column:menu_name;type:varchar(64);comment:名称" json:"menu_name"` // 名称
+ ParentID int64 `gorm:"column:parent_id;type:bigint;comment:父ID" json:"parent_id"` // 父ID
+ Type int64 `gorm:"column:type;type:tinyint;comment:类型" json:"type"` // 类型
+ Path string `gorm:"column:path;type:varchar(30);comment:路径" json:"path"` // 路径
+ Status int64 `gorm:"column:status;type:tinyint;comment:状态 0 启用 1 停用" json:"status"` // 状态 0 启用 1 停用
+ Icon string `gorm:"column:icon;type:varchar(128);comment:图标" json:"icon"` // 图标
+ MenuKey string `gorm:"column:menu_key;type:varchar(64);comment:关键字" json:"menu_key"` // 关键字
+ Order_ int64 `gorm:"column:order;type:int;comment:排序" json:"order"` // 排序
+ CreatedAt time.Time `gorm:"column:created_at;type:timestamp;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ Remark string `gorm:"column:remark;type:varchar(255);comment:备注 描述" json:"remark"` // 备注 描述
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaAuthMenu's table name
+func (*ScaAuthMenu) TableName() string {
+ return TableNameScaAuthMenu
+}
diff --git a/app/community/api/model/mysql/model/sca_auth_permission_rule.gen.go b/app/community/api/model/mysql/model/sca_auth_permission_rule.gen.go
new file mode 100644
index 0000000..74fc118
--- /dev/null
+++ b/app/community/api/model/mysql/model/sca_auth_permission_rule.gen.go
@@ -0,0 +1,24 @@
+// 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
+
+const TableNameScaAuthPermissionRule = "sca_auth_permission_rule"
+
+// ScaAuthPermissionRule mapped from table
+type ScaAuthPermissionRule struct {
+ ID int64 `gorm:"column:id;type:int;primaryKey;autoIncrement:true;primary_key" json:"id,string"`
+ Ptype string `gorm:"column:ptype;type:varchar(100);uniqueIndex:idx_sca_auth_permission_rule,priority:1;index:IDX_sca_auth_permission_rule_ptype,priority:1" json:"ptype"`
+ V0 string `gorm:"column:v0;type:varchar(100);uniqueIndex:idx_sca_auth_permission_rule,priority:2;index:IDX_sca_auth_permission_rule_v0,priority:1" json:"v0"`
+ V1 string `gorm:"column:v1;type:varchar(100);uniqueIndex:idx_sca_auth_permission_rule,priority:3;index:IDX_sca_auth_permission_rule_v1,priority:1" json:"v1"`
+ V2 string `gorm:"column:v2;type:varchar(100);uniqueIndex:idx_sca_auth_permission_rule,priority:4;index:IDX_sca_auth_permission_rule_v2,priority:1" json:"v2"`
+ V3 string `gorm:"column:v3;type:varchar(100);uniqueIndex:idx_sca_auth_permission_rule,priority:5;index:IDX_sca_auth_permission_rule_v3,priority:1" json:"v3"`
+ V4 string `gorm:"column:v4;type:varchar(100);uniqueIndex:idx_sca_auth_permission_rule,priority:6;index:IDX_sca_auth_permission_rule_v4,priority:1" json:"v4"`
+ V5 string `gorm:"column:v5;type:varchar(100);uniqueIndex:idx_sca_auth_permission_rule,priority:7;index:IDX_sca_auth_permission_rule_v5,priority:1" json:"v5"`
+}
+
+// TableName ScaAuthPermissionRule's table name
+func (*ScaAuthPermissionRule) TableName() string {
+ return TableNameScaAuthPermissionRule
+}
diff --git a/app/community/api/model/mysql/model/sca_auth_role.gen.go b/app/community/api/model/mysql/model/sca_auth_role.gen.go
new file mode 100644
index 0000000..90ecdc4
--- /dev/null
+++ b/app/community/api/model/mysql/model/sca_auth_role.gen.go
@@ -0,0 +1,28 @@
+// 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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaAuthRole = "sca_auth_role"
+
+// ScaAuthRole mapped from table
+type ScaAuthRole struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键ID;primary_key" json:"id,string"` // 主键ID
+ RoleName string `gorm:"column:role_name;type:varchar(32);not null;comment:角色名称" json:"role_name"` // 角色名称
+ RoleKey string `gorm:"column:role_key;type:varchar(64);not null;comment:角色关键字" json:"role_key"` // 角色关键字
+ CreatedAt time.Time `gorm:"column:created_at;type:timestamp;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaAuthRole's table name
+func (*ScaAuthRole) TableName() string {
+ return TableNameScaAuthRole
+}
diff --git a/app/community/api/model/mysql/model/sca_auth_user.gen.go b/app/community/api/model/mysql/model/sca_auth_user.gen.go
new file mode 100644
index 0000000..d49e7a1
--- /dev/null
+++ b/app/community/api/model/mysql/model/sca_auth_user.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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaAuthUser = "sca_auth_user"
+
+// ScaAuthUser mapped from table
+type ScaAuthUser struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;uniqueIndex:id,priority:1;comment:自增ID;primary_key" json:"id,string"` // 自增ID
+ UID string `gorm:"column:uid;type:varchar(50);not null;uniqueIndex:uid,priority:1;comment:唯一ID" json:"uid"` // 唯一ID
+ Username string `gorm:"column:username;type:varchar(32);comment:用户名" json:"username"` // 用户名
+ Nickname string `gorm:"column:nickname;type:varchar(32);comment:昵称" json:"nickname"` // 昵称
+ Email string `gorm:"column:email;type:varchar(32);comment:邮箱" json:"email"` // 邮箱
+ Phone string `gorm:"column:phone;type:varchar(32);comment:电话" json:"phone"` // 电话
+ Password string `gorm:"column:password;type:varchar(64);comment:密码" json:"password"` // 密码
+ Gender int64 `gorm:"column:gender;type:tinyint;comment:性别" json:"gender"` // 性别
+ Avatar string `gorm:"column:avatar;type:longtext;comment:头像" json:"avatar"` // 头像
+ Status int64 `gorm:"column:status;type:tinyint;comment:状态 0 正常 1 封禁" json:"status"` // 状态 0 正常 1 封禁
+ Introduce string `gorm:"column:introduce;type:varchar(255);comment:介绍" json:"introduce"` // 介绍
+ CreatedAt time.Time `gorm:"column:created_at;type:timestamp;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ Blog string `gorm:"column:blog;type:varchar(30);comment:博客" json:"blog"` // 博客
+ Location string `gorm:"column:location;type:varchar(50);comment:地址" json:"location"` // 地址
+ Company string `gorm:"column:company;type:varchar(50);comment:公司" json:"company"` // 公司
+ UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaAuthUser's table name
+func (*ScaAuthUser) TableName() string {
+ return TableNameScaAuthUser
+}
diff --git a/app/community/api/model/mysql/model/sca_auth_user_device.gen.go b/app/community/api/model/mysql/model/sca_auth_user_device.gen.go
new file mode 100644
index 0000000..c69fb84
--- /dev/null
+++ b/app/community/api/model/mysql/model/sca_auth_user_device.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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaAuthUserDevice = "sca_auth_user_device"
+
+// ScaAuthUserDevice mapped from table
+type ScaAuthUserDevice struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键ID;primary_key" json:"id,string"` // 主键ID
+ UserID string `gorm:"column:user_id;type:varchar(20);not null;comment:用户ID" json:"user_id"` // 用户ID
+ IP string `gorm:"column:ip;type:varchar(20);comment:登录IP" json:"ip"` // 登录IP
+ Location string `gorm:"column:location;type:varchar(20);comment:地址" json:"location"` // 地址
+ Agent string `gorm:"column:agent;type:varchar(255);comment:设备信息" json:"agent"` // 设备信息
+ CreatedAt time.Time `gorm:"column:created_at;type:timestamp;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ Browser string `gorm:"column:browser;type:varchar(20);comment:浏览器" json:"browser"` // 浏览器
+ OperatingSystem string `gorm:"column:operating_system;type:varchar(20);comment:操作系统" json:"operating_system"` // 操作系统
+ BrowserVersion string `gorm:"column:browser_version;type:varchar(20);comment:浏览器版本" json:"browser_version"` // 浏览器版本
+ Mobile int64 `gorm:"column:mobile;type:tinyint(1);comment:是否为手机 0否1是" json:"mobile"` // 是否为手机 0否1是
+ Bot int64 `gorm:"column:bot;type:tinyint(1);comment:是否为bot 0否1是" json:"bot"` // 是否为bot 0否1是
+ Mozilla string `gorm:"column:mozilla;type:varchar(10);comment:火狐版本" json:"mozilla"` // 火狐版本
+ Platform string `gorm:"column:platform;type:varchar(20);comment:平台" json:"platform"` // 平台
+ EngineName string `gorm:"column:engine_name;type:varchar(20);comment:引擎名称" json:"engine_name"` // 引擎名称
+ EngineVersion string `gorm:"column:engine_version;type:varchar(20);comment:引擎版本" json:"engine_version"` // 引擎版本
+ UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaAuthUserDevice's table name
+func (*ScaAuthUserDevice) TableName() string {
+ return TableNameScaAuthUserDevice
+}
diff --git a/app/community/api/model/mysql/model/sca_auth_user_social.gen.go b/app/community/api/model/mysql/model/sca_auth_user_social.gen.go
new file mode 100644
index 0000000..3d253b0
--- /dev/null
+++ b/app/community/api/model/mysql/model/sca_auth_user_social.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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaAuthUserSocial = "sca_auth_user_social"
+
+// ScaAuthUserSocial mapped from table
+type ScaAuthUserSocial struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键ID;primary_key" json:"id,string"` // 主键ID
+ UserID string `gorm:"column:user_id;type:varchar(50);not null;comment:用户ID" json:"user_id"` // 用户ID
+ OpenID string `gorm:"column:open_id;type:varchar(50);not null;comment:第三方用户的 open id" json:"open_id"` // 第三方用户的 open id
+ Source string `gorm:"column:source;type:varchar(10);comment:第三方用户来源" json:"source"` // 第三方用户来源
+ Status int64 `gorm:"column:status;type:bigint;comment:状态 0正常 1 封禁" json:"status"` // 状态 0正常 1 封禁
+ CreatedAt time.Time `gorm:"column:created_at;type:timestamp;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaAuthUserSocial's table name
+func (*ScaAuthUserSocial) TableName() string {
+ return TableNameScaAuthUserSocial
+}
diff --git a/app/core/api/repository/mysql/model/sca_comment_likes.gen.go b/app/community/api/model/mysql/model/sca_comment_likes.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_comment_likes.gen.go
rename to app/community/api/model/mysql/model/sca_comment_likes.gen.go
diff --git a/app/core/api/repository/mysql/model/sca_comment_reply.gen.go b/app/community/api/model/mysql/model/sca_comment_reply.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_comment_reply.gen.go
rename to app/community/api/model/mysql/model/sca_comment_reply.gen.go
diff --git a/app/core/api/repository/mysql/model/sca_file_folder.gen.go b/app/community/api/model/mysql/model/sca_file_folder.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_file_folder.gen.go
rename to app/community/api/model/mysql/model/sca_file_folder.gen.go
diff --git a/app/core/api/repository/mysql/model/sca_file_info.gen.go b/app/community/api/model/mysql/model/sca_file_info.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_file_info.gen.go
rename to app/community/api/model/mysql/model/sca_file_info.gen.go
diff --git a/app/core/api/repository/mysql/model/sca_file_recycle.gen.go b/app/community/api/model/mysql/model/sca_file_recycle.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_file_recycle.gen.go
rename to app/community/api/model/mysql/model/sca_file_recycle.gen.go
diff --git a/app/core/api/repository/mysql/model/sca_file_type.gen.go b/app/community/api/model/mysql/model/sca_file_type.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_file_type.gen.go
rename to app/community/api/model/mysql/model/sca_file_type.gen.go
diff --git a/app/core/api/repository/mysql/model/sca_message_report.gen.go b/app/community/api/model/mysql/model/sca_message_report.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_message_report.gen.go
rename to app/community/api/model/mysql/model/sca_message_report.gen.go
diff --git a/app/core/api/repository/mysql/model/sca_user_follows.gen.go b/app/community/api/model/mysql/model/sca_user_follows.gen.go
similarity index 100%
rename from app/core/api/repository/mysql/model/sca_user_follows.gen.go
rename to app/community/api/model/mysql/model/sca_user_follows.gen.go
diff --git a/app/community/api/model/mysql/model/sca_user_level.gen.go b/app/community/api/model/mysql/model/sca_user_level.gen.go
new file mode 100644
index 0000000..3cddd34
--- /dev/null
+++ b/app/community/api/model/mysql/model/sca_user_level.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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaUserLevel = "sca_user_level"
+
+// ScaUserLevel mapped from table
+type ScaUserLevel struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;comment:主键;primary_key" json:"id,string"` // 主键
+ UserID string `gorm:"column:user_id;type:varchar(50);comment:用户Id" json:"user_id"` // 用户Id
+ LevelType int64 `gorm:"column:level_type;type:tinyint unsigned;comment:等级类型" json:"level_type"` // 等级类型
+ Level int64 `gorm:"column:level;type:int;comment:等级" json:"level"` // 等级
+ LevelName string `gorm:"column:level_name;type:varchar(50);comment:等级名称" json:"level_name"` // 等级名称
+ ExpStart int64 `gorm:"column:exp_start;type:bigint;comment:开始经验值" json:"exp_start"` // 开始经验值
+ ExpEnd int64 `gorm:"column:exp_end;type:bigint;comment:结束经验值" json:"exp_end"` // 结束经验值
+ Description string `gorm:"column:description;type:text;comment:等级描述" json:"description"` // 等级描述
+ CreatedAt *time.Time `gorm:"column:created_at;type:timestamp;default:CURRENT_TIMESTAMP;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt *time.Time `gorm:"column:updated_at;type:timestamp;default:CURRENT_TIMESTAMP;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaUserLevel's table name
+func (*ScaUserLevel) TableName() string {
+ return TableNameScaUserLevel
+}
diff --git a/app/community/api/model/mysql/model/sca_user_message.gen.go b/app/community/api/model/mysql/model/sca_user_message.gen.go
new file mode 100644
index 0000000..9cb738f
--- /dev/null
+++ b/app/community/api/model/mysql/model/sca_user_message.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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaUserMessage = "sca_user_message"
+
+// ScaUserMessage mapped from table
+type ScaUserMessage struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键;primary_key" json:"id,string"` // 主键
+ TopicID string `gorm:"column:topic_id;type:varchar(50);comment:话题Id" json:"topic_id"` // 话题Id
+ FromID string `gorm:"column:from_id;type:varchar(50);comment:来自人" json:"from_id"` // 来自人
+ ToID string `gorm:"column:to_id;type:varchar(50);comment:送达人" json:"to_id"` // 送达人
+ Content string `gorm:"column:content;type:text;comment:消息内容" json:"content"` // 消息内容
+ IsRead int64 `gorm:"column:is_read;type:tinyint;comment:是否已读" json:"is_read"` // 是否已读
+ CreatedAt time.Time `gorm:"column:created_at;type:timestamp;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaUserMessage's table name
+func (*ScaUserMessage) TableName() string {
+ return TableNameScaUserMessage
+}
diff --git a/app/core/api/repository/mysql/mysql.go b/app/community/api/model/mysql/mysql.go
similarity index 96%
rename from app/core/api/repository/mysql/mysql.go
rename to app/community/api/model/mysql/mysql.go
index cf19a29..8b0c84f 100644
--- a/app/core/api/repository/mysql/mysql.go
+++ b/app/community/api/model/mysql/mysql.go
@@ -3,6 +3,7 @@ package mysql
import (
"log"
"os"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/query"
"time"
"github.com/asjdf/gorm-cache/cache"
@@ -12,8 +13,6 @@ import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/query"
)
func NewMySQL(url string, maxOpenConn int, maxIdleConn int, client *redis.Client) (*gorm.DB, *query.Query) {
diff --git a/app/core/api/repository/mysql/query/gen.go b/app/community/api/model/mysql/query/gen.go
similarity index 100%
rename from app/core/api/repository/mysql/query/gen.go
rename to app/community/api/model/mysql/query/gen.go
diff --git a/app/core/api/repository/mysql/query/sca_auth_menu.gen.go b/app/community/api/model/mysql/query/sca_auth_menu.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_auth_menu.gen.go
rename to app/community/api/model/mysql/query/sca_auth_menu.gen.go
index 134d9db..46d2b6b 100644
--- a/app/core/api/repository/mysql/query/sca_auth_menu.gen.go
+++ b/app/community/api/model/mysql/query/sca_auth_menu.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaAuthMenu(db *gorm.DB, opts ...gen.DOOption) scaAuthMenu {
diff --git a/app/core/api/repository/mysql/query/sca_auth_permission_rule.gen.go b/app/community/api/model/mysql/query/sca_auth_permission_rule.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_auth_permission_rule.gen.go
rename to app/community/api/model/mysql/query/sca_auth_permission_rule.gen.go
index 02ee74e..9fab0d5 100644
--- a/app/core/api/repository/mysql/query/sca_auth_permission_rule.gen.go
+++ b/app/community/api/model/mysql/query/sca_auth_permission_rule.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaAuthPermissionRule(db *gorm.DB, opts ...gen.DOOption) scaAuthPermissionRule {
diff --git a/app/core/api/repository/mysql/query/sca_auth_role.gen.go b/app/community/api/model/mysql/query/sca_auth_role.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_auth_role.gen.go
rename to app/community/api/model/mysql/query/sca_auth_role.gen.go
index 1caaa34..b4cb132 100644
--- a/app/core/api/repository/mysql/query/sca_auth_role.gen.go
+++ b/app/community/api/model/mysql/query/sca_auth_role.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaAuthRole(db *gorm.DB, opts ...gen.DOOption) scaAuthRole {
diff --git a/app/core/api/repository/mysql/query/sca_auth_user.gen.go b/app/community/api/model/mysql/query/sca_auth_user.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_auth_user.gen.go
rename to app/community/api/model/mysql/query/sca_auth_user.gen.go
index bf2a398..32e2b01 100644
--- a/app/core/api/repository/mysql/query/sca_auth_user.gen.go
+++ b/app/community/api/model/mysql/query/sca_auth_user.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaAuthUser(db *gorm.DB, opts ...gen.DOOption) scaAuthUser {
diff --git a/app/core/api/repository/mysql/query/sca_auth_user_device.gen.go b/app/community/api/model/mysql/query/sca_auth_user_device.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_auth_user_device.gen.go
rename to app/community/api/model/mysql/query/sca_auth_user_device.gen.go
index 6ba626b..1741aab 100644
--- a/app/core/api/repository/mysql/query/sca_auth_user_device.gen.go
+++ b/app/community/api/model/mysql/query/sca_auth_user_device.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaAuthUserDevice(db *gorm.DB, opts ...gen.DOOption) scaAuthUserDevice {
diff --git a/app/core/api/repository/mysql/query/sca_auth_user_social.gen.go b/app/community/api/model/mysql/query/sca_auth_user_social.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_auth_user_social.gen.go
rename to app/community/api/model/mysql/query/sca_auth_user_social.gen.go
index 65555e6..1cc072e 100644
--- a/app/core/api/repository/mysql/query/sca_auth_user_social.gen.go
+++ b/app/community/api/model/mysql/query/sca_auth_user_social.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaAuthUserSocial(db *gorm.DB, opts ...gen.DOOption) scaAuthUserSocial {
diff --git a/app/core/api/repository/mysql/query/sca_comment_likes.gen.go b/app/community/api/model/mysql/query/sca_comment_likes.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_comment_likes.gen.go
rename to app/community/api/model/mysql/query/sca_comment_likes.gen.go
index a03061b..c18828a 100644
--- a/app/core/api/repository/mysql/query/sca_comment_likes.gen.go
+++ b/app/community/api/model/mysql/query/sca_comment_likes.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaCommentLike(db *gorm.DB, opts ...gen.DOOption) scaCommentLike {
diff --git a/app/core/api/repository/mysql/query/sca_comment_reply.gen.go b/app/community/api/model/mysql/query/sca_comment_reply.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_comment_reply.gen.go
rename to app/community/api/model/mysql/query/sca_comment_reply.gen.go
index 75fb340..8dc2856 100644
--- a/app/core/api/repository/mysql/query/sca_comment_reply.gen.go
+++ b/app/community/api/model/mysql/query/sca_comment_reply.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaCommentReply(db *gorm.DB, opts ...gen.DOOption) scaCommentReply {
diff --git a/app/core/api/repository/mysql/query/sca_file_folder.gen.go b/app/community/api/model/mysql/query/sca_file_folder.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_file_folder.gen.go
rename to app/community/api/model/mysql/query/sca_file_folder.gen.go
index 45e9725..ece42d3 100644
--- a/app/core/api/repository/mysql/query/sca_file_folder.gen.go
+++ b/app/community/api/model/mysql/query/sca_file_folder.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaFileFolder(db *gorm.DB, opts ...gen.DOOption) scaFileFolder {
diff --git a/app/core/api/repository/mysql/query/sca_file_info.gen.go b/app/community/api/model/mysql/query/sca_file_info.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_file_info.gen.go
rename to app/community/api/model/mysql/query/sca_file_info.gen.go
index 8a454f4..ae66794 100644
--- a/app/core/api/repository/mysql/query/sca_file_info.gen.go
+++ b/app/community/api/model/mysql/query/sca_file_info.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaFileInfo(db *gorm.DB, opts ...gen.DOOption) scaFileInfo {
diff --git a/app/core/api/repository/mysql/query/sca_file_recycle.gen.go b/app/community/api/model/mysql/query/sca_file_recycle.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_file_recycle.gen.go
rename to app/community/api/model/mysql/query/sca_file_recycle.gen.go
index fc29fe8..3001dbd 100644
--- a/app/core/api/repository/mysql/query/sca_file_recycle.gen.go
+++ b/app/community/api/model/mysql/query/sca_file_recycle.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaFileRecycle(db *gorm.DB, opts ...gen.DOOption) scaFileRecycle {
diff --git a/app/core/api/repository/mysql/query/sca_file_type.gen.go b/app/community/api/model/mysql/query/sca_file_type.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_file_type.gen.go
rename to app/community/api/model/mysql/query/sca_file_type.gen.go
index 9866c26..3636fe4 100644
--- a/app/core/api/repository/mysql/query/sca_file_type.gen.go
+++ b/app/community/api/model/mysql/query/sca_file_type.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaFileType(db *gorm.DB, opts ...gen.DOOption) scaFileType {
diff --git a/app/core/api/repository/mysql/query/sca_message_report.gen.go b/app/community/api/model/mysql/query/sca_message_report.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_message_report.gen.go
rename to app/community/api/model/mysql/query/sca_message_report.gen.go
index 0892d54..e5440a7 100644
--- a/app/core/api/repository/mysql/query/sca_message_report.gen.go
+++ b/app/community/api/model/mysql/query/sca_message_report.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaMessageReport(db *gorm.DB, opts ...gen.DOOption) scaMessageReport {
diff --git a/app/core/api/repository/mysql/query/sca_user_follows.gen.go b/app/community/api/model/mysql/query/sca_user_follows.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_user_follows.gen.go
rename to app/community/api/model/mysql/query/sca_user_follows.gen.go
index 4f72bba..c92def2 100644
--- a/app/core/api/repository/mysql/query/sca_user_follows.gen.go
+++ b/app/community/api/model/mysql/query/sca_user_follows.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaUserFollow(db *gorm.DB, opts ...gen.DOOption) scaUserFollow {
diff --git a/app/core/api/repository/mysql/query/sca_user_level.gen.go b/app/community/api/model/mysql/query/sca_user_level.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_user_level.gen.go
rename to app/community/api/model/mysql/query/sca_user_level.gen.go
index 20c8732..0074da4 100644
--- a/app/core/api/repository/mysql/query/sca_user_level.gen.go
+++ b/app/community/api/model/mysql/query/sca_user_level.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaUserLevel(db *gorm.DB, opts ...gen.DOOption) scaUserLevel {
diff --git a/app/core/api/repository/mysql/query/sca_user_message.gen.go b/app/community/api/model/mysql/query/sca_user_message.gen.go
similarity index 99%
rename from app/core/api/repository/mysql/query/sca_user_message.gen.go
rename to app/community/api/model/mysql/query/sca_user_message.gen.go
index 0343ec8..8d1c880 100644
--- a/app/core/api/repository/mysql/query/sca_user_message.gen.go
+++ b/app/community/api/model/mysql/query/sca_user_message.gen.go
@@ -6,17 +6,15 @@ package query
import (
"context"
-
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
-
- "schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
func newScaUserMessage(db *gorm.DB, opts ...gen.DOOption) scaUserMessage {
diff --git a/app/community/api/resources/language/active.en.toml b/app/community/api/resources/language/active.en.toml
new file mode 100644
index 0000000..67fd828
--- /dev/null
+++ b/app/community/api/resources/language/active.en.toml
@@ -0,0 +1,8 @@
+[captcha]
+verificationFailure = "verification failure!"
+
+[comment]
+tooManyImages = "too many images!"
+commentError = "comment error!"
+LikeError = "like error!"
+CancelLikeError = "cancel like error!"
diff --git a/app/community/api/resources/language/active.zh.toml b/app/community/api/resources/language/active.zh.toml
new file mode 100644
index 0000000..de5346d
--- /dev/null
+++ b/app/community/api/resources/language/active.zh.toml
@@ -0,0 +1,8 @@
+[captcha]
+verificationFailure = "验证失败!"
+[comment]
+tooManyImages = "图片数量过多,请上传不超过3张!"
+commentError = "评论失败!"
+LikeError = "点赞失败!"
+CancelLikeError = "取消点赞失败!"
+
diff --git a/app/core/api/resources/sensitive/dict1.txt b/app/community/api/resources/sensitive/dict1.txt
similarity index 100%
rename from app/core/api/resources/sensitive/dict1.txt
rename to app/community/api/resources/sensitive/dict1.txt
diff --git a/app/core/api/resources/sensitive/dict2.txt b/app/community/api/resources/sensitive/dict2.txt
similarity index 100%
rename from app/core/api/resources/sensitive/dict2.txt
rename to app/community/api/resources/sensitive/dict2.txt
diff --git a/app/core/api/resources/sensitive/其他词库.txt b/app/community/api/resources/sensitive/其他词库.txt
similarity index 100%
rename from app/core/api/resources/sensitive/其他词库.txt
rename to app/community/api/resources/sensitive/其他词库.txt
diff --git a/app/core/api/resources/sensitive/反动词库.txt b/app/community/api/resources/sensitive/反动词库.txt
similarity index 100%
rename from app/core/api/resources/sensitive/反动词库.txt
rename to app/community/api/resources/sensitive/反动词库.txt
diff --git a/app/core/api/resources/sensitive/暴恐词库.txt b/app/community/api/resources/sensitive/暴恐词库.txt
similarity index 100%
rename from app/core/api/resources/sensitive/暴恐词库.txt
rename to app/community/api/resources/sensitive/暴恐词库.txt
diff --git a/app/core/api/resources/sensitive/民生词库.txt b/app/community/api/resources/sensitive/民生词库.txt
similarity index 100%
rename from app/core/api/resources/sensitive/民生词库.txt
rename to app/community/api/resources/sensitive/民生词库.txt
diff --git a/app/core/api/resources/sensitive/色情词库.txt b/app/community/api/resources/sensitive/色情词库.txt
similarity index 100%
rename from app/core/api/resources/sensitive/色情词库.txt
rename to app/community/api/resources/sensitive/色情词库.txt
diff --git a/app/core/api/resources/sensitive/补充词库.txt b/app/community/api/resources/sensitive/补充词库.txt
similarity index 100%
rename from app/core/api/resources/sensitive/补充词库.txt
rename to app/community/api/resources/sensitive/补充词库.txt
diff --git a/app/core/api/resources/sensitive/贪腐词库.txt b/app/community/api/resources/sensitive/贪腐词库.txt
similarity index 100%
rename from app/core/api/resources/sensitive/贪腐词库.txt
rename to app/community/api/resources/sensitive/贪腐词库.txt
diff --git a/app/core/api/resources/sensitive/零时-Tencent.txt b/app/community/api/resources/sensitive/零时-Tencent.txt
similarity index 100%
rename from app/core/api/resources/sensitive/零时-Tencent.txt
rename to app/community/api/resources/sensitive/零时-Tencent.txt
diff --git a/app/core/api/common/constant/redis_prefix.go b/app/core/api/common/constant/redis_prefix.go
deleted file mode 100644
index 3fcb677..0000000
--- a/app/core/api/common/constant/redis_prefix.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package constant
-
-// 用户相关的redis key
-const (
- UserClientPrefix string = "user:client:"
- UserSessionPrefix string = "user:session:"
- UserCaptchaPrefix string = "user:captcha:"
- UserTokenPrefix string = "user:token:"
- UserSmsRedisPrefix string = "user:sms:"
- UserQrcodePrefix = "user:qrcode:"
-)
-
-// 评论相关的redis key
-const (
- CommentSubmitCaptchaPrefix = "comment:submit:captcha:"
- CommentOfflineMessagePrefix = "comment:offline:message:"
- CommentLikeLockPrefix = "comment:like:lock:"
- CommentDislikeLockPrefix = "comment:dislike:lock:"
- CommentLikeListPrefix = "comment:like:list:"
- CommentUserListPrefix = "comment:user:list:"
-)
-
-// 系统相关的redis key
-const (
- SystemApiNoncePrefix = "system:nonce:"
-)
diff --git a/app/core/api/common/jwt/websocket_token.go b/app/core/api/common/jwt/websocket_token.go
deleted file mode 100644
index 342059c..0000000
--- a/app/core/api/common/jwt/websocket_token.go
+++ /dev/null
@@ -1,48 +0,0 @@
-package jwt
-
-import (
- "time"
-
- "github.com/golang-jwt/jwt/v5"
-)
-
-type WebsocketJWTPayload struct {
- UserID string `json:"user_id"`
- Type string `json:"type"`
- Expr string `json:"expr"`
-}
-type WebsocketJWTClaims struct {
- AccessJWTPayload
- jwt.RegisteredClaims
-}
-
-func GenerateWebsocketToken(secret string, payload AccessJWTPayload) string {
- claims := AccessJWTClaims{
- AccessJWTPayload: payload,
- RegisteredClaims: jwt.RegisteredClaims{
- ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Minute * 30)),
- IssuedAt: jwt.NewNumericDate(time.Now()),
- NotBefore: jwt.NewNumericDate(time.Now()),
- },
- }
- token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
- accessToken, err := token.SignedString([]byte(secret))
- if err != nil {
- return ""
- }
- return accessToken
-}
-
-// ParseWebsocketToken parses a JWT token and returns the payload
-func ParseWebsocketToken(secret string, tokenString string) (*AccessJWTPayload, bool) {
- token, err := jwt.ParseWithClaims(tokenString, &AccessJWTClaims{}, func(token *jwt.Token) (interface{}, error) {
- return []byte(secret), nil
- })
- if err != nil {
- return nil, false
- }
- if claims, ok := token.Claims.(*AccessJWTClaims); ok && token.Valid {
- return &claims.AccessJWTPayload, true
- }
- return nil, false
-}
diff --git a/app/core/api/common/response/response.go b/app/core/api/common/response/response.go
deleted file mode 100644
index 6e530a4..0000000
--- a/app/core/api/common/response/response.go
+++ /dev/null
@@ -1,74 +0,0 @@
-package response
-
-import (
- "context"
-
- "schisandra-album-cloud-microservices/app/core/api/common/i18n"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-// SuccessWithData returns a success response with the given data.
-func SuccessWithData[T any](data T) *types.Response {
- return &types.Response{
- Code: 200,
- Message: "success",
- Data: data,
- }
-}
-
-// Success returns a success response with nil data.
-func Success() *types.Response {
- return &types.Response{
- Code: 200,
- Message: "success",
- }
-}
-
-// SuccessWithMessage returns a success response with the given message.
-func SuccessWithMessage(message string) *types.Response {
- return &types.Response{
- Code: 200,
- Message: message,
- }
-}
-
-// Error returns an error response with the given message.
-func Error() *types.Response {
- return &types.Response{
- Code: 500,
- Message: "error",
- }
-}
-
-// ErrorWithCode returns an error response with the given code and message.
-func ErrorWithCode(code int64) *types.Response {
- return &types.Response{
- Code: code,
- Message: "error",
- }
-}
-
-// ErrorWithCodeMessage returns an error response with the given code and message.
-func ErrorWithCodeMessage(code int64, message string) *types.Response {
- return &types.Response{
- Code: code,
- Message: message,
- }
-}
-
-// ErrorWithMessage returns an error response with the given message.
-func ErrorWithMessage(message string) *types.Response {
- return &types.Response{
- Code: 500,
- Message: message,
- }
-}
-
-// ErrorWithI18n returns an error response with the given message.
-func ErrorWithI18n(ctx context.Context, msgId string) *types.Response {
- message := i18n.FormatText(ctx, msgId)
- return &types.Response{
- Code: 500,
- Message: message,
- }
-}
diff --git a/app/core/api/generate.go b/app/core/api/generate.go
deleted file mode 100644
index 817a51c..0000000
--- a/app/core/api/generate.go
+++ /dev/null
@@ -1,3 +0,0 @@
-package main
-
-//go:generate goctl api go -api core.api -dir . --style=go_zero
diff --git a/app/core/api/internal/handler/captcha/generate_rotate_captcha_handler.go b/app/core/api/internal/handler/captcha/generate_rotate_captcha_handler.go
deleted file mode 100644
index 06ad33c..0000000
--- a/app/core/api/internal/handler/captcha/generate_rotate_captcha_handler.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package captcha
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/captcha"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
-)
-
-func GenerateRotateCaptchaHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- l := captcha.NewGenerateRotateCaptchaLogic(r.Context(), svcCtx)
- resp, err := l.GenerateRotateCaptcha()
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/captcha/generate_slide_basic_captcha_handler.go b/app/core/api/internal/handler/captcha/generate_slide_basic_captcha_handler.go
deleted file mode 100644
index 576232e..0000000
--- a/app/core/api/internal/handler/captcha/generate_slide_basic_captcha_handler.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package captcha
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/captcha"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
-)
-
-func GenerateSlideBasicCaptchaHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- l := captcha.NewGenerateSlideBasicCaptchaLogic(r.Context(), svcCtx)
- resp, err := l.GenerateSlideBasicCaptcha()
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/client/generate_client_id_handler.go b/app/core/api/internal/handler/client/generate_client_id_handler.go
deleted file mode 100644
index 50c6fcc..0000000
--- a/app/core/api/internal/handler/client/generate_client_id_handler.go
+++ /dev/null
@@ -1,31 +0,0 @@
-package client
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/client"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
-)
-
-func GenerateClientIdHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- clientIP := utils.GetClientIP(r)
- l := client.NewGenerateClientIdLogic(r.Context(), svcCtx)
- resp, err := l.GenerateClientId(clientIP)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/comment/dislike_comment_handler.go b/app/core/api/internal/handler/comment/dislike_comment_handler.go
deleted file mode 100644
index 156ba3f..0000000
--- a/app/core/api/internal/handler/comment/dislike_comment_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package comment
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/comment"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func DislikeCommentHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.CommentDisLikeRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := comment.NewDislikeCommentLogic(r.Context(), svcCtx)
- resp, err := l.DislikeComment(&req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/comment/get_comment_list_handler.go b/app/core/api/internal/handler/comment/get_comment_list_handler.go
deleted file mode 100644
index 63413e8..0000000
--- a/app/core/api/internal/handler/comment/get_comment_list_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package comment
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/comment"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func GetCommentListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.CommentListRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := comment.NewGetCommentListLogic(r.Context(), svcCtx)
- resp, err := l.GetCommentList(&req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/comment/get_reply_list_handler.go b/app/core/api/internal/handler/comment/get_reply_list_handler.go
deleted file mode 100644
index 2e51814..0000000
--- a/app/core/api/internal/handler/comment/get_reply_list_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package comment
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/comment"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func GetReplyListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.ReplyListRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := comment.NewGetReplyListLogic(r.Context(), svcCtx)
- resp, err := l.GetReplyList(&req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/comment/like_comment_handler.go b/app/core/api/internal/handler/comment/like_comment_handler.go
deleted file mode 100644
index 95177f8..0000000
--- a/app/core/api/internal/handler/comment/like_comment_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package comment
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/comment"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func LikeCommentHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.CommentLikeRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := comment.NewLikeCommentLogic(r.Context(), svcCtx)
- resp, err := l.LikeComment(&req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/comment/submit_comment_handler.go b/app/core/api/internal/handler/comment/submit_comment_handler.go
deleted file mode 100644
index 7282fe0..0000000
--- a/app/core/api/internal/handler/comment/submit_comment_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package comment
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/comment"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func SubmitCommentHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.CommentRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := comment.NewSubmitCommentLogic(r.Context(), svcCtx)
- resp, err := l.SubmitComment(r, &req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/comment/submit_reply_comment_handler.go b/app/core/api/internal/handler/comment/submit_reply_comment_handler.go
deleted file mode 100644
index 9efe610..0000000
--- a/app/core/api/internal/handler/comment/submit_reply_comment_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package comment
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/comment"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func SubmitReplyCommentHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.ReplyCommentRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := comment.NewSubmitReplyCommentLogic(r.Context(), svcCtx)
- resp, err := l.SubmitReplyComment(r, &req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/comment/submit_reply_reply_handler.go b/app/core/api/internal/handler/comment/submit_reply_reply_handler.go
deleted file mode 100644
index 320537d..0000000
--- a/app/core/api/internal/handler/comment/submit_reply_reply_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package comment
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/comment"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func SubmitReplyReplyHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.ReplyReplyRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := comment.NewSubmitReplyReplyLogic(r.Context(), svcCtx)
- resp, err := l.SubmitReplyReply(r, &req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/oauth/get_gitee_oauth_url_handler.go b/app/core/api/internal/handler/oauth/get_gitee_oauth_url_handler.go
deleted file mode 100644
index ba17597..0000000
--- a/app/core/api/internal/handler/oauth/get_gitee_oauth_url_handler.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package oauth
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/oauth"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
-)
-
-func GetGiteeOauthUrlHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- l := oauth.NewGetGiteeOauthUrlLogic(r.Context(), svcCtx)
- resp, err := l.GetGiteeOauthUrl()
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/oauth/get_github_oauth_url_handler.go b/app/core/api/internal/handler/oauth/get_github_oauth_url_handler.go
deleted file mode 100644
index 871d1bf..0000000
--- a/app/core/api/internal/handler/oauth/get_github_oauth_url_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package oauth
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/oauth"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func GetGithubOauthUrlHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.OAuthRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := oauth.NewGetGithubOauthUrlLogic(r.Context(), svcCtx)
- resp, err := l.GetGithubOauthUrl(&req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/oauth/get_qq_oauth_url_handler.go b/app/core/api/internal/handler/oauth/get_qq_oauth_url_handler.go
deleted file mode 100644
index 69bb486..0000000
--- a/app/core/api/internal/handler/oauth/get_qq_oauth_url_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package oauth
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/oauth"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func GetQqOauthUrlHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.OAuthRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := oauth.NewGetQqOauthUrlLogic(r.Context(), svcCtx)
- resp, err := l.GetQqOauthUrl(&req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/oauth/gitee_callback_handler.go b/app/core/api/internal/handler/oauth/gitee_callback_handler.go
deleted file mode 100644
index a7a911b..0000000
--- a/app/core/api/internal/handler/oauth/gitee_callback_handler.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package oauth
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- http2 "schisandra-album-cloud-microservices/app/core/api/common/http"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/oauth"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func GiteeCallbackHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.OAuthCallbackRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := oauth.NewGiteeCallbackLogic(r.Context(), svcCtx)
- data, err := l.GiteeCallback(w, r, &req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- http2.OkHTML(w, data)
- }
- }
-}
diff --git a/app/core/api/internal/handler/oauth/github_callback_handler.go b/app/core/api/internal/handler/oauth/github_callback_handler.go
deleted file mode 100644
index 52367dc..0000000
--- a/app/core/api/internal/handler/oauth/github_callback_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package oauth
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
- http2 "schisandra-album-cloud-microservices/app/core/api/common/http"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/oauth"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func GithubCallbackHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.OAuthCallbackRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := oauth.NewGithubCallbackLogic(r.Context(), svcCtx)
- data, err := l.GithubCallback(w, r, &req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- http2.OkHTML(w, data)
- }
- }
-}
diff --git a/app/core/api/internal/handler/oauth/qq_callback_handler.go b/app/core/api/internal/handler/oauth/qq_callback_handler.go
deleted file mode 100644
index e4904dd..0000000
--- a/app/core/api/internal/handler/oauth/qq_callback_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package oauth
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
- http2 "schisandra-album-cloud-microservices/app/core/api/common/http"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/oauth"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func QqCallbackHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.OAuthCallbackRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := oauth.NewQqCallbackLogic(r.Context(), svcCtx)
- data, err := l.QqCallback(w, r, &req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- http2.OkHTML(w, data)
- }
- }
-}
diff --git a/app/core/api/internal/handler/oauth/wechat_offiaccount_callback_handler.go b/app/core/api/internal/handler/oauth/wechat_offiaccount_callback_handler.go
deleted file mode 100644
index 2288c62..0000000
--- a/app/core/api/internal/handler/oauth/wechat_offiaccount_callback_handler.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package oauth
-
-import (
- "github.com/ArtisanCloud/PowerLibs/v3/http/helper"
- "github.com/zeromicro/go-zero/core/logx"
- "net/http"
-
- "github.com/zeromicro/go-zero/rest/httpx"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/oauth"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
-)
-
-func WechatOffiaccountCallbackHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- l := oauth.NewWechatOffiaccountCallbackLogic(r.Context(), svcCtx)
- res, err := l.WechatOffiaccountCallback(r)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- _ = helper.HttpResponseSend(res, w)
- }
- }
-}
diff --git a/app/core/api/internal/handler/sms/send_sms_by_aliyun_handler.go b/app/core/api/internal/handler/sms/send_sms_by_aliyun_handler.go
deleted file mode 100644
index 86fd311..0000000
--- a/app/core/api/internal/handler/sms/send_sms_by_aliyun_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package sms
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/sms"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func SendSmsByAliyunHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.SmsSendRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := sms.NewSendSmsByAliyunLogic(r.Context(), svcCtx)
- resp, err := l.SendSmsByAliyun(&req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/sms/send_sms_by_smsbao_handler.go b/app/core/api/internal/handler/sms/send_sms_by_smsbao_handler.go
deleted file mode 100644
index fa653aa..0000000
--- a/app/core/api/internal/handler/sms/send_sms_by_smsbao_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package sms
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/sms"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func SendSmsBySmsbaoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.SmsSendRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := sms.NewSendSmsBySmsbaoLogic(r.Context(), svcCtx)
- resp, err := l.SendSmsBySmsbao(&req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/sms/send_sms_by_test_handler.go b/app/core/api/internal/handler/sms/send_sms_by_test_handler.go
deleted file mode 100644
index d90410a..0000000
--- a/app/core/api/internal/handler/sms/send_sms_by_test_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package sms
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/sms"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func SendSmsByTestHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.SmsSendRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := sms.NewSendSmsByTestLogic(r.Context(), svcCtx)
- resp, err := l.SendSmsByTest(&req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/token/refresh_token_handler.go b/app/core/api/internal/handler/token/refresh_token_handler.go
deleted file mode 100644
index 9438a6a..0000000
--- a/app/core/api/internal/handler/token/refresh_token_handler.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package token
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/token"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
-)
-
-func RefreshTokenHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- l := token.NewRefreshTokenLogic(r.Context(), svcCtx)
- resp, err := l.RefreshToken(r)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/upscale/upload_image_handler.go b/app/core/api/internal/handler/upscale/upload_image_handler.go
deleted file mode 100644
index 56132a6..0000000
--- a/app/core/api/internal/handler/upscale/upload_image_handler.go
+++ /dev/null
@@ -1,35 +0,0 @@
-package upscale
-
-import (
- "github.com/zeromicro/go-zero/core/logx"
- "net/http"
-
- "github.com/zeromicro/go-zero/rest/httpx"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/upscale"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func UploadImageHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.UploadRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := upscale.NewUploadImageLogic(r.Context(), svcCtx)
- resp, err := l.UploadImage(r, &req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/user/account_login_handler.go b/app/core/api/internal/handler/user/account_login_handler.go
deleted file mode 100644
index 2e4d588..0000000
--- a/app/core/api/internal/handler/user/account_login_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package user
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/user"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func AccountLoginHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.AccountLoginRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := user.NewAccountLoginLogic(r.Context(), svcCtx)
- resp, err := l.AccountLogin(w, r, &req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/user/get_wechat_offiaccount_qrcode_handler.go b/app/core/api/internal/handler/user/get_wechat_offiaccount_qrcode_handler.go
deleted file mode 100644
index 235c3c8..0000000
--- a/app/core/api/internal/handler/user/get_wechat_offiaccount_qrcode_handler.go
+++ /dev/null
@@ -1,35 +0,0 @@
-package user
-
-import (
- "github.com/zeromicro/go-zero/core/logx"
- "net/http"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/user"
-
- "github.com/zeromicro/go-zero/rest/httpx"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func GetWechatOffiaccountQrcodeHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.OAuthWechatRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := user.NewGetWechatOffiaccountQrcodeLogic(r.Context(), svcCtx)
- resp, err := l.GetWechatOffiaccountQrcode(r, &req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/user/phone_login_handler.go b/app/core/api/internal/handler/user/phone_login_handler.go
deleted file mode 100644
index 81bd04b..0000000
--- a/app/core/api/internal/handler/user/phone_login_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package user
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/user"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func PhoneLoginHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.PhoneLoginRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := user.NewPhoneLoginLogic(r.Context(), svcCtx)
- resp, err := l.PhoneLogin(r, w, &req)
- if err != nil || resp.Code == 500 {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/user/reset_password_handler.go b/app/core/api/internal/handler/user/reset_password_handler.go
deleted file mode 100644
index c39d406..0000000
--- a/app/core/api/internal/handler/user/reset_password_handler.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package user
-
-import (
- "net/http"
-
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/user"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func ResetPasswordHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.ResetPasswordRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := user.NewResetPasswordLogic(r.Context(), svcCtx)
- resp, err := l.ResetPassword(&req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/handler/user/wechat_offiaccount_login_handler.go b/app/core/api/internal/handler/user/wechat_offiaccount_login_handler.go
deleted file mode 100644
index 9b57063..0000000
--- a/app/core/api/internal/handler/user/wechat_offiaccount_login_handler.go
+++ /dev/null
@@ -1,35 +0,0 @@
-package user
-
-import (
- "github.com/zeromicro/go-zero/core/logx"
- "net/http"
-
- "github.com/zeromicro/go-zero/rest/httpx"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/user"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-func WechatOffiaccountLoginHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- var req types.WechatOffiaccountLoginRequest
- if err := httpx.Parse(r, &req); err != nil {
- httpx.ErrorCtx(r.Context(), w, err)
- return
- }
-
- l := user.NewWechatOffiaccountLoginLogic(r.Context(), svcCtx)
- resp, err := l.WechatOffiaccountLogin(r, &req)
- if err != nil {
- logx.Error(err)
- httpx.WriteJsonCtx(
- r.Context(),
- w,
- http.StatusInternalServerError,
- response.ErrorWithI18n(r.Context(), "system.error"))
- } else {
- httpx.OkJsonCtx(r.Context(), w, resp)
- }
- }
-}
diff --git a/app/core/api/internal/logic/user/reset_password_logic.go b/app/core/api/internal/logic/user/reset_password_logic.go
deleted file mode 100644
index 9eb5965..0000000
--- a/app/core/api/internal/logic/user/reset_password_logic.go
+++ /dev/null
@@ -1,74 +0,0 @@
-package user
-
-import (
- "context"
- "errors"
-
- "github.com/zeromicro/go-zero/core/logx"
- "gorm.io/gorm"
-
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/common/utils"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
-)
-
-type ResetPasswordLogic struct {
- logx.Logger
- ctx context.Context
- svcCtx *svc.ServiceContext
-}
-
-func NewResetPasswordLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ResetPasswordLogic {
- return &ResetPasswordLogic{
- Logger: logx.WithContext(ctx),
- ctx: ctx,
- svcCtx: svcCtx,
- }
-}
-
-func (l *ResetPasswordLogic) ResetPassword(req *types.ResetPasswordRequest) (resp *types.Response, err error) {
- if !utils.IsPhone(req.Phone) {
- return response.ErrorWithI18n(l.ctx, "login.phoneFormatError"), nil
- }
- if req.Password != req.Repassword {
- return response.ErrorWithI18n(l.ctx, "login.passwordNotMatch"), nil
- }
- if !utils.IsPassword(req.Password) {
- return response.ErrorWithI18n(l.ctx, "login.passwordFormatError"), nil
- }
- code := l.svcCtx.RedisClient.Get(l.ctx, constant.UserSmsRedisPrefix+req.Phone).Val()
- if code == "" {
- return response.ErrorWithI18n(l.ctx, "login.captchaExpired"), nil
- }
- if req.Captcha != code {
- return response.ErrorWithI18n(l.ctx, "login.captchaError"), nil
- }
- // 验证码检查通过后立即删除或标记为已使用
- if err = l.svcCtx.RedisClient.Del(l.ctx, constant.UserSmsRedisPrefix+req.Phone).Err(); err != nil {
- return nil, err
- }
- authUser := l.svcCtx.DB.ScaAuthUser
-
- userInfo, err := authUser.Where(authUser.Phone.Eq(req.Phone)).First()
- if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
- return response.ErrorWithI18n(l.ctx, "login.userNotRegistered"), nil
- }
- if err != nil {
- return nil, err
- }
- encrypt, err := utils.Encrypt(req.Password)
- if err != nil {
- return nil, err
- }
-
- affected, err := authUser.Where(authUser.ID.Eq(userInfo.ID), authUser.Phone.Eq(req.Phone)).Update(authUser.Password, encrypt)
- if err != nil {
- return nil, err
- }
- if affected.RowsAffected == 0 {
- return response.ErrorWithI18n(l.ctx, "login.resetPasswordError"), nil
- }
- return response.Success(), nil
-}
diff --git a/app/core/api/internal/middleware/authorization_middleware.go b/app/core/api/internal/middleware/authorization_middleware.go
deleted file mode 100644
index 1dbe10c..0000000
--- a/app/core/api/internal/middleware/authorization_middleware.go
+++ /dev/null
@@ -1,42 +0,0 @@
-package middleware
-
-import (
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/rest/httpx"
- "net/http"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "strconv"
- "time"
-)
-
-type AuthorizationMiddleware struct {
-}
-
-func NewAuthorizationMiddleware() *AuthorizationMiddleware {
- return &AuthorizationMiddleware{}
-}
-
-func (m *AuthorizationMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- expireAtStr := r.Header.Get("X-Expire-At")
- if expireAtStr == "" {
- httpx.OkJson(w, response.ErrorWithCodeMessage(http.StatusForbidden, "unauthorized"))
- return
- }
- expireAtInt, err := strconv.ParseInt(expireAtStr, 10, 64)
- if err != nil {
- logx.Errorf("Failed to parse X-Expire-At: %v", err)
- httpx.OkJson(w, response.ErrorWithCodeMessage(http.StatusForbidden, "unauthorized"))
- return
- }
- expireAt := time.Unix(expireAtInt, 0)
- currentTime := time.Now()
-
- remainingTime := expireAt.Sub(currentTime)
- if remainingTime < time.Minute*5 {
- httpx.OkJson(w, response.ErrorWithCodeMessage(http.StatusUnauthorized, "token about to expire, refresh"))
- return
- }
- next(w, r)
- }
-}
diff --git a/app/core/api/internal/middleware/nonce_middleware.go b/app/core/api/internal/middleware/nonce_middleware.go
deleted file mode 100644
index 6f48cbe..0000000
--- a/app/core/api/internal/middleware/nonce_middleware.go
+++ /dev/null
@@ -1,44 +0,0 @@
-package middleware
-
-import (
- "github.com/redis/go-redis/v9"
- "github.com/zeromicro/go-zero/rest/httpx"
- "net/http"
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
- "time"
-)
-
-type NonceMiddleware struct {
- RedisClient *redis.Client
-}
-
-func NewNonceMiddleware(redisClient *redis.Client) *NonceMiddleware {
- return &NonceMiddleware{
- RedisClient: redisClient,
- }
-}
-
-func (m *NonceMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- nonce := r.Header.Get("X-Nonce")
- if nonce == "" {
- httpx.WriteJsonCtx(r.Context(), w, http.StatusBadRequest, "bad request!")
- return
- }
- if len(nonce) != 32 {
- httpx.WriteJsonCtx(r.Context(), w, http.StatusBadRequest, "bad request!")
- return
- }
- result := m.RedisClient.Get(r.Context(), constant.SystemApiNoncePrefix+nonce).Val()
- if result != "" {
- httpx.WriteJsonCtx(r.Context(), w, http.StatusBadRequest, "bad request!")
- return
- }
- err := m.RedisClient.Set(r.Context(), constant.SystemApiNoncePrefix+nonce, nonce, time.Minute*1).Err()
- if err != nil {
- httpx.WriteJsonCtx(r.Context(), w, http.StatusInternalServerError, "internal server error!")
- return
- }
- next(w, r)
- }
-}
diff --git a/app/core/api/internal/types/comment.go b/app/core/api/internal/types/comment.go
deleted file mode 100644
index b78e20a..0000000
--- a/app/core/api/internal/types/comment.go
+++ /dev/null
@@ -1,102 +0,0 @@
-package types
-
-import (
- "time"
-
- "github.com/chenmingyong0423/go-mongox/v2"
-)
-
-// CommentImages 评论 图片
-type CommentImages struct {
- mongox.Model `bson:",inline"`
- TopicId string `json:"topic_id" bson:"topic_id"`
- CommentId int64 `json:"comment_id" bson:"comment_id"`
- UserId string `json:"user_id" bson:"user_id"`
- Images [][]byte `json:"images" bson:"images"`
-}
-
-// CommentResponse 评论响应
-type CommentResponse struct {
- Id int64 `json:"id"`
- Content string `json:"content"`
- UserId string `json:"user_id"`
- TopicId string `json:"topic_id"`
- Author int64 `json:"author"`
- Location string `json:"location"`
- Browser string `json:"browser"`
- OperatingSystem string `json:"operating_system"`
- CreatedTime time.Time `json:"created_time"`
- ReplyId int64 `json:"reply_id,omitempty"`
- ReplyUser string `json:"reply_user,omitempty"`
- ReplyTo int64 `json:"reply_to,omitempty"`
-}
-
-// CommentContent 评论内容
-type CommentContent struct {
- NickName string `json:"nickname"`
- Avatar string `json:"avatar"`
- Level int64 `json:"level,omitempty" default:"0"`
- Id int64 `json:"id"`
- UserId string `json:"user_id"`
- TopicId string `json:"topic_id"`
- Content string `json:"content"`
- ReplyTo int64 `json:"reply_to,omitempty"`
- ReplyId int64 `json:"reply_id,omitempty"`
- ReplyUser string `json:"reply_user,omitempty"`
- ReplyNickname string `json:"reply_nickname,omitempty"`
- IsAuthor int64 `json:"is_author"`
- Likes int64 `json:"likes"`
- ReplyCount int64 `json:"reply_count"`
- CreatedTime time.Time `json:"created_time"`
- Location string `json:"location"`
- Browser string `json:"browser"`
- OperatingSystem string `json:"operating_system"`
- IsLiked bool `json:"is_liked" default:"false"`
- Images []string `json:"images,omitempty"`
-}
-
-// CommentListPageResponse 评论返回值
-type CommentListPageResponse struct {
- Size int `json:"size"`
- Total int64 `json:"total"`
- Current int `json:"current"`
- Comments []CommentContent `json:"comments"`
-}
-
-// CommentListQueryResult 评论列表查询结果
-type CommentListQueryResult struct {
- ID int64 `json:"id"`
- UserID string `json:"user_id"`
- TopicID string `json:"topic_id"`
- Content string `json:"content"`
- CreatedAt time.Time `json:"created_at"`
- Author int64 `json:"author"`
- Likes int64 `json:"likes"`
- ReplyCount int64 `json:"reply_count"`
- Browser string `json:"browser"`
- OperatingSystem string `json:"operating_system"`
- Location string `json:"location"`
- Avatar string `json:"avatar"`
- Nickname string `json:"nickname"`
-}
-
-// ReplyListQueryResult 回复列表查询结果
-type ReplyListQueryResult struct {
- ID int64 `json:"id"`
- UserID string `json:"user_id"`
- TopicID string `json:"topic_id"`
- Content string `json:"content"`
- CreatedAt time.Time `json:"created_at"`
- Author int64 `json:"author"`
- Likes int64 `json:"likes"`
- ReplyCount int64 `json:"reply_count"`
- Browser string `json:"browser"`
- OperatingSystem string `json:"operating_system"`
- Location string `json:"location"`
- Avatar string `json:"avatar"`
- Nickname string `json:"nickname"`
- ReplyUser string `json:"reply_user"`
- ReplyId int64 `json:"reply_id"`
- ReplyTo int64 `json:"reply_to"`
- ReplyNickname string `json:"reply_nickname"`
-}
diff --git a/app/core/api/internal/types/types.go b/app/core/api/internal/types/types.go
deleted file mode 100644
index 72753ec..0000000
--- a/app/core/api/internal/types/types.go
+++ /dev/null
@@ -1,126 +0,0 @@
-// Code generated by goctl. DO NOT EDIT.
-// goctl 1.7.3
-
-package types
-
-type AccountLoginRequest struct {
- Account string `json:"account"`
- Password string `json:"password"`
- AutoLogin bool `json:"auto_login"`
- Angle int64 `json:"angle"`
- Key string `json:"key"`
-}
-
-type CommentDisLikeRequest struct {
- TopicId string `json:"topic_id"`
- CommentId int64 `json:"comment_id"`
-}
-
-type CommentLikeRequest struct {
- TopicId string `json:"topic_id"`
- CommentId int64 `json:"comment_id"`
-}
-
-type CommentListRequest struct {
- TopicId string `json:"topic_id"`
- Page int `json:"page,default=1,optional"`
- Size int `json:"size,default=5,optional"`
- IsHot bool `json:"is_hot,default=true,optional"`
-}
-
-type CommentRequest struct {
- Content string `json:"content"`
- Images []string `json:"images,optional"`
- TopicId string `json:"topic_id"`
- Author string `json:"author"`
- Key string `json:"key"`
- Point []int64 `json:"point"`
-}
-
-type LoginResponse struct {
- AccessToken string `json:"access_token"`
- ExpireAt int64 `json:"expire_at"`
- UID string `json:"uid"`
- Username string `json:"username,omitempty"`
- Nickname string `json:"nickname"`
- Avatar string `json:"avatar"`
- Status int64 `json:"status"`
-}
-
-type OAuthCallbackRequest struct {
- Code string `form:"code"`
-}
-
-type OAuthRequest struct {
- State string `form:"state"`
-}
-
-type OAuthWechatRequest struct {
- ClientId string `json:"client_id"`
-}
-
-type PhoneLoginRequest struct {
- Phone string `json:"phone"`
- Captcha string `json:"captcha"`
- AutoLogin bool `json:"auto_login"`
-}
-
-type ReplyCommentRequest struct {
- Content string `json:"content"`
- Images []string `json:"images,optional"`
- TopicId string `json:"topic_id" `
- ReplyId int64 `json:"reply_id" `
- ReplyUser string `json:"reply_user" `
- Author string `json:"author"`
- Key string `json:"key"`
- Point []int64 `json:"point"`
-}
-
-type ReplyListRequest struct {
- TopicId string `json:"topic_id"`
- CommentId int64 `json:"comment_id"`
- Page int `json:"page,default=1,optional"`
- Size int `json:"size,default=5,optional"`
-}
-
-type ReplyReplyRequest struct {
- Content string `json:"content"`
- Images []string `json:"images,optional"`
- TopicId string `json:"topic_id"`
- ReplyTo int64 `json:"reply_to"`
- ReplyId int64 `json:"reply_id"`
- ReplyUser string `json:"reply_user" `
- Author string `json:"author"`
- Key string `json:"key"`
- Point []int64 `json:"point"`
-}
-
-type ResetPasswordRequest struct {
- Phone string `json:"phone"`
- Captcha string `json:"captcha"`
- Password string `json:"password"`
- Repassword string `json:"repassword"`
-}
-
-type Response struct {
- Code int64 `json:"code"`
- Message string `json:"message"`
- Data interface{} `json:"data,optional"`
-}
-
-type SmsSendRequest struct {
- Phone string `json:"phone"`
- Angle int64 `json:"angle"`
- Key string `json:"key"`
-}
-
-type UploadRequest struct {
- Image string `json:"image"`
- AccessToken string `json:"access_token"`
- UserId string `json:"user_id"`
-}
-
-type WechatOffiaccountLoginRequest struct {
- Openid string `json:"openid"`
- ClientId string `json:"client_id"`
-}
diff --git a/app/core/api/repository/mongodb/collection/collection.go b/app/core/api/repository/mongodb/collection/collection.go
deleted file mode 100644
index 54d1642..0000000
--- a/app/core/api/repository/mongodb/collection/collection.go
+++ /dev/null
@@ -1,13 +0,0 @@
-package collection
-
-import (
- "github.com/chenmingyong0423/go-mongox/v2"
-
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
-)
-
-// MustNewCollection creates a new Collection instance with the given name.
-func MustNewCollection[T any](svcCtx *svc.ServiceContext, collectionName string) *mongox.Collection[T] {
- collection := svcCtx.MongoClient.Collection(collectionName)
- return mongox.NewCollection[T](collection)
-}
diff --git a/app/file/api/etc/file.yaml b/app/file/api/etc/file.yaml
new file mode 100644
index 0000000..e98c0ca
--- /dev/null
+++ b/app/file/api/etc/file.yaml
@@ -0,0 +1,72 @@
+# 定义服务的名称,会出现在 log 和 tracer 中
+Name: schisandra-file-service
+# 监听地址
+Host: 0.0.0.0
+# 监听端口
+Port: 8082
+# 服务的环境,目前我们预定义了 dev。在dev 环境我们会开启反射 dev,test,rt,pre, pro
+Mode: pro
+# 打点上报,将一些 metrics 上报到对应的地址,如果为空,则不上报
+MetricsUrl:
+# 并发请求数
+MaxConns: 100
+# 超时时间(ms)
+Timeout: 5000
+# 降载阈值,默认900(90%),可允许设置范围0到1000
+CpuThreshold: 900
+# 最大ContentLength
+MaxBytes: 10485760
+# 是否打印详细日志
+Verbose: false
+# 日志配置
+Log:
+ # 服务名称
+ ServiceName: schisandra-file-service
+ # 日志打印模式,console 控制台 file, console
+ Mode: console
+ # 日志格式, json 格式 或者 plain 纯文本
+ Encoding: plain
+ # 日期格式化
+ TimeFormat:
+ # 日志在文件输出模式下,日志输出路径
+ Path: logs/system
+ # 日志输出级别 debug,info,error,severe
+ Level: debug
+ # 日志长度限制,打印单个日志的时候会对日志进行裁剪,只有对 content 进行裁剪
+ MaxContentLength: 0
+ # 是否压缩日志
+ Compress: true
+ # 是否开启 stat 日志,go-zero 版本大于等于1.5.0才支持
+ Stat: false
+ # 日志保留天数,只有在文件模式才会生效
+ KeepDays: 7
+ # 堆栈打印冷却时间
+ StackCooldownMillis: 100
+ # 文件输出模式,按照大小分割时,最多文件保留个数
+ MaxBackups: 5
+ # 文件输出模式,按照大小分割时,单个文件大小
+ MaxSize: 0
+ # 文件分割模式, daily 按日期 daily,size
+ Rotation: daily
+ # 文件名日期格式
+ FileTimeFormat:
+# Auth 配置
+Auth:
+ # 访问密钥
+ AccessSecret: uOvKLmVfztaXGpNYd4Z0I1SiT7MweJhl
+# MySQL 配置
+Mysql:
+ # 数据源dsn
+ DataSource: root:LDQ20020618xxx@tcp(1.95.0.111:3306)/schisandra-cloud-album?charset=utf8mb4&parseTime=True&loc=Local
+ # 最大连接数
+ MaxOpenConn: 10
+ # 最大空闲连接数
+ MaxIdleConn: 5
+# Redis 配置
+Redis:
+ # Redis 地址
+ Host: 1.95.0.111:6379
+ # Redis 密码
+ Pass: LDQ20020618xxx
+ # Redis 数据库
+ DB: 0
\ No newline at end of file
diff --git a/app/file/api/file.api b/app/file/api/file.api
new file mode 100644
index 0000000..a4c3bcc
--- /dev/null
+++ b/app/file/api/file.api
@@ -0,0 +1,43 @@
+syntax = "v1"
+
+info (
+ title: "文件服务"
+ desc: "文件服务"
+ author: "landaiqing"
+ email: "landaiqing@126.com"
+ version: "v1.0.0"
+)
+
+// 上传图片请求参数
+type (
+ UploadRequest {
+ Image string `json:"image"`
+ AccessToken string `json:"access_token"`
+ userId string `json:"user_id"`
+ }
+)
+
+@server (
+ group: websocket // 微服务分组
+ prefix: /api/ws // 微服务前缀
+)
+service file {
+ @handler fileWebsocket
+ get /file
+}
+
+@server (
+ group: upscale // 微服务分组
+ prefix: /api/auth/upscale // 微服务前缀
+ timeout: 10s // 超时时间
+ maxBytes: 10485760 // 最大请求大小
+ signature: false // 是否开启签名验证
+ middleware: SecurityHeadersMiddleware,NonceMiddleware // 注册中间件
+ MaxConns: true // 是否开启最大连接数限制
+ Recover: true // 是否开启自动恢复
+)
+service file {
+ @handler uploadImage
+ post /upload (UploadRequest)
+}
+
diff --git a/app/file/api/file.go b/app/file/api/file.go
new file mode 100644
index 0000000..b5822fd
--- /dev/null
+++ b/app/file/api/file.go
@@ -0,0 +1,38 @@
+package main
+
+import (
+ "flag"
+ "fmt"
+ "schisandra-album-cloud-microservices/common/idgenerator"
+ "schisandra-album-cloud-microservices/common/middleware"
+
+ "schisandra-album-cloud-microservices/app/file/api/internal/config"
+ "schisandra-album-cloud-microservices/app/file/api/internal/handler"
+ "schisandra-album-cloud-microservices/app/file/api/internal/svc"
+
+ "github.com/zeromicro/go-zero/core/conf"
+ "github.com/zeromicro/go-zero/rest"
+)
+
+var configFile = flag.String("f", "etc/file.yaml", "the config file")
+
+func main() {
+ flag.Parse()
+
+ var c config.Config
+ conf.MustLoad(*configFile, &c)
+
+ server := rest.MustNewServer(c.RestConf,
+ rest.WithCustomCors(middleware.CORSMiddleware(), nil),
+ rest.WithUnauthorizedCallback(middleware.UnauthorizedCallbackMiddleware()),
+ rest.WithUnsignedCallback(middleware.UnsignedCallbackMiddleware()))
+ defer server.Stop()
+
+ server.Use(middleware.I18nMiddleware)
+ ctx := svc.NewServiceContext(c)
+ handler.RegisterHandlers(server, ctx)
+
+ idgenerator.NewIDGenerator(2)
+ fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
+ server.Start()
+}
diff --git a/app/file/api/generate.go b/app/file/api/generate.go
new file mode 100644
index 0000000..1798254
--- /dev/null
+++ b/app/file/api/generate.go
@@ -0,0 +1,3 @@
+package main
+
+//go:generate goctl api go -api file.api -dir . --style=go_zero
diff --git a/app/file/api/internal/config/config.go b/app/file/api/internal/config/config.go
new file mode 100644
index 0000000..49f9fc6
--- /dev/null
+++ b/app/file/api/internal/config/config.go
@@ -0,0 +1,20 @@
+package config
+
+import "github.com/zeromicro/go-zero/rest"
+
+type Config struct {
+ rest.RestConf
+ Auth struct {
+ AccessSecret string
+ }
+ Mysql struct {
+ DataSource string
+ MaxOpenConn int
+ MaxIdleConn int
+ }
+ Redis struct {
+ Host string
+ Pass string
+ DB int
+ }
+}
diff --git a/app/file/api/internal/handler/routes.go b/app/file/api/internal/handler/routes.go
new file mode 100644
index 0000000..7aca237
--- /dev/null
+++ b/app/file/api/internal/handler/routes.go
@@ -0,0 +1,44 @@
+// Code generated by goctl. DO NOT EDIT.
+// goctl 1.7.3
+
+package handler
+
+import (
+ "net/http"
+ "time"
+
+ upscale "schisandra-album-cloud-microservices/app/file/api/internal/handler/upscale"
+ websocket "schisandra-album-cloud-microservices/app/file/api/internal/handler/websocket"
+ "schisandra-album-cloud-microservices/app/file/api/internal/svc"
+
+ "github.com/zeromicro/go-zero/rest"
+)
+
+func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
+ server.AddRoutes(
+ rest.WithMiddlewares(
+ []rest.Middleware{serverCtx.SecurityHeadersMiddleware, serverCtx.NonceMiddleware},
+ []rest.Route{
+ {
+ Method: http.MethodPost,
+ Path: "/upload",
+ Handler: upscale.UploadImageHandler(serverCtx),
+ },
+ }...,
+ ),
+ rest.WithPrefix("/api/auth/upscale"),
+ rest.WithTimeout(10000*time.Millisecond),
+ rest.WithMaxBytes(10485760),
+ )
+
+ server.AddRoutes(
+ []rest.Route{
+ {
+ Method: http.MethodGet,
+ Path: "/file",
+ Handler: websocket.FileWebsocketHandler(serverCtx),
+ },
+ },
+ rest.WithPrefix("/api/ws"),
+ )
+}
diff --git a/app/file/api/internal/handler/upscale/upload_image_handler.go b/app/file/api/internal/handler/upscale/upload_image_handler.go
new file mode 100644
index 0000000..8e52d1a
--- /dev/null
+++ b/app/file/api/internal/handler/upscale/upload_image_handler.go
@@ -0,0 +1,25 @@
+package upscale
+
+import (
+ "github.com/zeromicro/go-zero/rest/httpx"
+ "net/http"
+ "schisandra-album-cloud-microservices/app/file/api/internal/logic/upscale"
+ "schisandra-album-cloud-microservices/app/file/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/file/api/internal/types"
+
+ "schisandra-album-cloud-microservices/common/xhttp"
+)
+
+func UploadImageHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var req types.UploadRequest
+ if err := httpx.Parse(r, &req); err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ return
+ }
+
+ l := upscale.NewUploadImageLogic(r.Context(), svcCtx)
+ err := l.UploadImage(r, &req)
+ xhttp.JsonBaseResponseCtx(r.Context(), w, err)
+ }
+}
diff --git a/app/core/api/internal/handler/websocket/file_websocket_handler.go b/app/file/api/internal/handler/websocket/file_websocket_handler.go
similarity index 68%
rename from app/core/api/internal/handler/websocket/file_websocket_handler.go
rename to app/file/api/internal/handler/websocket/file_websocket_handler.go
index ae905c9..cf0691d 100644
--- a/app/core/api/internal/handler/websocket/file_websocket_handler.go
+++ b/app/file/api/internal/handler/websocket/file_websocket_handler.go
@@ -2,9 +2,8 @@ package websocket
import (
"net/http"
-
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/websocket"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/file/api/internal/logic/websocket"
+ "schisandra-album-cloud-microservices/app/file/api/internal/svc"
)
func FileWebsocketHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
diff --git a/app/core/api/internal/logic/upscale/upload_image_logic.go b/app/file/api/internal/logic/upscale/upload_image_logic.go
similarity index 51%
rename from app/core/api/internal/logic/upscale/upload_image_logic.go
rename to app/file/api/internal/logic/upscale/upload_image_logic.go
index 12affdc..0e06efc 100644
--- a/app/core/api/internal/logic/upscale/upload_image_logic.go
+++ b/app/file/api/internal/logic/upscale/upload_image_logic.go
@@ -4,12 +4,13 @@ import (
"context"
"encoding/json"
"net/http"
- "schisandra-album-cloud-microservices/app/core/api/common/jwt"
- "schisandra-album-cloud-microservices/app/core/api/common/response"
- "schisandra-album-cloud-microservices/app/core/api/internal/logic/websocket"
+ "schisandra-album-cloud-microservices/app/file/api/internal/logic/websocket"
+ "schisandra-album-cloud-microservices/app/file/api/internal/svc"
+ "schisandra-album-cloud-microservices/app/file/api/internal/types"
+ "schisandra-album-cloud-microservices/common/xhttp"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
- "schisandra-album-cloud-microservices/app/core/api/internal/types"
+ "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/jwt"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -28,27 +29,31 @@ func NewUploadImageLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Uploa
}
}
-func (l *UploadImageLogic) UploadImage(r *http.Request, req *types.UploadRequest) (resp *types.Response, err error) {
+func (l *UploadImageLogic) UploadImage(r *http.Request, req *types.UploadRequest) (err error) {
token, ok := jwt.ParseAccessToken(l.svcCtx.Config.Auth.AccessSecret, req.AccessToken)
if !ok {
- return response.ErrorWithI18n(l.ctx, "upload.uploadError"), nil
+ return errors.New(http.StatusForbidden, "invalid access token")
}
if token.UserID != req.UserId {
- return response.ErrorWithI18n(l.ctx, "upload.uploadError"), nil
+ return errors.New(http.StatusForbidden, "invalid user id")
}
correct, err := l.svcCtx.CasbinEnforcer.Enforce(req.UserId, r.URL.Path, r.Method)
if err != nil || !correct {
- return response.ErrorWithI18n(l.ctx, "upload.uploadError"), err
+ return errors.New(http.StatusForbidden, "permission denied")
}
- data, err := json.Marshal(response.SuccessWithData(req.Image))
+ data, err := json.Marshal(xhttp.BaseResponse[string]{
+ Data: req.Image,
+ Msg: "success",
+ Code: http.StatusOK,
+ })
if err != nil {
- return nil, err
+ return errors.New(http.StatusForbidden, err.Error())
}
err = websocket.FileWebSocketHandler.SendMessageToClient(req.UserId, data)
if err != nil {
- return nil, err
+ return errors.New(http.StatusForbidden, err.Error())
}
- return response.Success(), nil
+ return nil
}
diff --git a/app/core/api/internal/logic/websocket/file_websocket_logic.go b/app/file/api/internal/logic/websocket/file_websocket_logic.go
similarity index 88%
rename from app/core/api/internal/logic/websocket/file_websocket_logic.go
rename to app/file/api/internal/logic/websocket/file_websocket_logic.go
index 17ba3b2..2944c67 100644
--- a/app/core/api/internal/logic/websocket/file_websocket_logic.go
+++ b/app/file/api/internal/logic/websocket/file_websocket_logic.go
@@ -5,11 +5,11 @@ import (
"fmt"
"github.com/lxzan/gws"
"net/http"
- "schisandra-album-cloud-microservices/app/core/api/common/jwt"
+ "schisandra-album-cloud-microservices/app/file/api/internal/svc"
+ "schisandra-album-cloud-microservices/common/jwt"
"time"
"github.com/zeromicro/go-zero/core/logx"
- "schisandra-album-cloud-microservices/app/core/api/internal/svc"
)
type FileWebsocketLogic struct {
@@ -26,6 +26,11 @@ func NewFileWebsocketLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Fil
}
}
+const (
+ PingInterval = 5 * time.Second // 客户端心跳间隔
+ HeartbeatWaitTimeout = 10 * time.Second // 心跳等待超时时间
+)
+
type FileWebSocket struct {
ctx context.Context
gws.BuiltinEventHandler
@@ -123,3 +128,11 @@ func (c *FileWebSocket) SendMessageToClient(clientId string, message []byte) err
}
return fmt.Errorf("client %s not found", clientId)
}
+
+// MustLoad 从session中加载数据
+func MustLoad[T any](session gws.SessionStorage, key string) (v T) {
+ if value, exist := session.Load(key); exist {
+ v = value.(T)
+ }
+ return
+}
diff --git a/app/file/api/internal/middleware/nonce_middleware.go b/app/file/api/internal/middleware/nonce_middleware.go
new file mode 100644
index 0000000..a50274c
--- /dev/null
+++ b/app/file/api/internal/middleware/nonce_middleware.go
@@ -0,0 +1,24 @@
+package middleware
+
+import (
+ "github.com/redis/go-redis/v9"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/middleware"
+)
+
+type NonceMiddleware struct {
+ RedisClient *redis.Client
+}
+
+func NewNonceMiddleware(redisClient *redis.Client) *NonceMiddleware {
+ return &NonceMiddleware{
+ RedisClient: redisClient,
+ }
+}
+
+func (m *NonceMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ middleware.NonceMiddleware(w, r, m.RedisClient)
+ next(w, r)
+ }
+}
diff --git a/app/file/api/internal/middleware/securityheaders_middleware.go b/app/file/api/internal/middleware/securityheaders_middleware.go
new file mode 100644
index 0000000..6faf51a
--- /dev/null
+++ b/app/file/api/internal/middleware/securityheaders_middleware.go
@@ -0,0 +1,20 @@
+package middleware
+
+import (
+ "net/http"
+ "schisandra-album-cloud-microservices/common/middleware"
+)
+
+type SecurityHeadersMiddleware struct {
+}
+
+func NewSecurityHeadersMiddleware() *SecurityHeadersMiddleware {
+ return &SecurityHeadersMiddleware{}
+}
+
+func (m *SecurityHeadersMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ middleware.SecurityHeadersMiddleware(r)
+ next(w, r)
+ }
+}
diff --git a/app/file/api/internal/svc/service_context.go b/app/file/api/internal/svc/service_context.go
new file mode 100644
index 0000000..1a71f97
--- /dev/null
+++ b/app/file/api/internal/svc/service_context.go
@@ -0,0 +1,36 @@
+package svc
+
+import (
+ "github.com/casbin/casbin/v2"
+ "github.com/redis/go-redis/v9"
+ "github.com/zeromicro/go-zero/rest"
+ "schisandra-album-cloud-microservices/app/file/api/internal/config"
+ "schisandra-album-cloud-microservices/app/file/api/internal/middleware"
+ "schisandra-album-cloud-microservices/app/file/api/model/mysql"
+ "schisandra-album-cloud-microservices/app/file/api/model/mysql/query"
+ "schisandra-album-cloud-microservices/common/casbinx"
+ "schisandra-album-cloud-microservices/common/redisx"
+)
+
+type ServiceContext struct {
+ Config config.Config
+ NonceMiddleware rest.Middleware
+ SecurityHeadersMiddleware rest.Middleware
+ DB *query.Query
+ CasbinEnforcer *casbin.SyncedCachedEnforcer
+ RedisClient *redis.Client
+}
+
+func NewServiceContext(c config.Config) *ServiceContext {
+ redisClient := redisx.NewRedis(c.Redis.Host, c.Redis.Pass, c.Redis.DB)
+ db, queryDB := mysql.NewMySQL(c.Mysql.DataSource, c.Mysql.MaxOpenConn, c.Mysql.MaxIdleConn, redisClient)
+ casbinEnforcer := casbinx.NewCasbin(db)
+ return &ServiceContext{
+ Config: c,
+ NonceMiddleware: middleware.NewNonceMiddleware(redisClient).Handle,
+ SecurityHeadersMiddleware: middleware.NewSecurityHeadersMiddleware().Handle,
+ DB: queryDB,
+ CasbinEnforcer: casbinEnforcer,
+ RedisClient: redisClient,
+ }
+}
diff --git a/app/file/api/internal/types/types.go b/app/file/api/internal/types/types.go
new file mode 100644
index 0000000..1674759
--- /dev/null
+++ b/app/file/api/internal/types/types.go
@@ -0,0 +1,10 @@
+// Code generated by goctl. DO NOT EDIT.
+// goctl 1.7.3
+
+package types
+
+type UploadRequest struct {
+ Image string `json:"image"`
+ AccessToken string `json:"access_token"`
+ UserId string `json:"user_id"`
+}
diff --git a/app/file/api/model/mysql/generate/generate.go b/app/file/api/model/mysql/generate/generate.go
new file mode 100644
index 0000000..cc0ed22
--- /dev/null
+++ b/app/file/api/model/mysql/generate/generate.go
@@ -0,0 +1,107 @@
+package main
+
+import (
+ "os"
+ "path/filepath"
+ "strings"
+
+ "gorm.io/driver/mysql"
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+ "gorm.io/gorm"
+)
+
+const MySQLDSN = "root:1611@(localhost:3306)/schisandra-cloud-album?charset=utf8mb4&parseTime=True&loc=Local"
+
+func main() {
+
+ // 连接数据库
+ db, err := gorm.Open(mysql.Open(MySQLDSN))
+ if err != nil {
+ panic(err)
+ }
+
+ dir, err := os.Getwd()
+ if err != nil {
+ panic(err)
+ }
+ path := filepath.Join(dir, "app/auth/api/repository/mysql/", "query")
+ // 生成实例
+ g := gen.NewGenerator(gen.Config{
+ // 相对执行`go run`时的路径, 会自动创建目录
+ OutPath: path,
+ // 生成的文件名,默认gen.go
+ OutFile: "gen.go",
+ // 生成DAO代码的包名,默认是:model
+ ModelPkgPath: "model",
+ // 是否为DAO包生成单元测试代码,默认:false
+ WithUnitTest: false,
+
+ // WithDefaultQuery 生成默认查询结构体(作为全局变量使用), 即`Q`结构体和其字段(各表模型)
+ // WithoutContext 生成没有context调用限制的代码供查询
+ // WithQueryInterface 生成interface形式的查询代码(可导出), 如`Where()`方法返回的就是一个可导出的接口类型
+ Mode: gen.WithDefaultQuery | gen.WithQueryInterface | gen.WithoutContext,
+
+ // 表字段可为 null 值时, 对应结体字段使用指针类型
+ FieldNullable: false, // generate pointer when field is nullable
+
+ // 表字段默认值与模型结构体字段零值不一致的字段, 在插入数据时需要赋值该字段值为零值的, 结构体字段须是指针类型才能成功, 即`FieldCoverable:true`配置下生成的结构体字段.
+ // 因为在插入时遇到字段为零值的会被GORM赋予默认值. 如字段`age`表默认值为10, 即使你显式设置为0最后也会被GORM设为10提交.
+ // 如果该字段没有上面提到的插入时赋零值的特殊需要, 则字段为非指针类型使用起来会比较方便.
+ FieldCoverable: true,
+
+ // 模型结构体字段的数字类型的符号表示是否与表字段的一致, `false`指示都用有符号类型
+ FieldSignable: false,
+ // 生成 gorm 标签的字段索引属性
+ FieldWithIndexTag: true,
+ // 生成 gorm 标签的字段类型属性
+ FieldWithTypeTag: true,
+ })
+ // 设置目标 db
+ g.UseDB(db)
+
+ // 自定义字段的数据类型
+ // 统一数字类型为int64,兼容protobuf
+ 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" },
+ }
+ // 要先于`ApplyBasic`执行
+ g.WithDataTypeMap(dataMap)
+
+ // 自定义模型结体字段的标签
+ // 将特定字段名的 json 标签加上`string`属性,即 MarshalJSON 时该字段由数字类型转成字符串类型
+ jsonField := gen.FieldJSONTagWithNS(func(columnName string) (tagContent string) {
+ toStringField := `id, `
+ if strings.Contains(toStringField, columnName) {
+ return columnName + ",string"
+ }
+ return columnName
+ })
+ // 将非默认字段名的字段定义为自动时间戳和软删除字段;
+ // 自动时间戳默认字段名为:`updated_at`、`created_at, 表字段数据类型为: INT 或 DATETIME
+ // 软删除默认字段名为:`deleted_at`, 表字段数据类型为: DATETIME
+ idField := gen.FieldGORMTag("id", func(tag field.GormTag) field.GormTag {
+ return tag.Append("primary_key")
+ })
+ autoUpdateTimeField := gen.FieldGORMTag("updated_at", func(tag field.GormTag) field.GormTag {
+ return tag.Append("autoUpdateTime")
+ })
+ autoCreateTimeField := gen.FieldGORMTag("created_at", func(tag field.GormTag) field.GormTag {
+ return tag.Append("autoCreateTime")
+ })
+ softDeleteField := gen.FieldType("delete_at", "gorm.DeletedAt")
+ versionField := gen.FieldType("version", "optimisticlock.Version")
+ // 模型自定义选项组
+ fieldOpts := []gen.ModelOpt{jsonField, idField, autoUpdateTimeField, autoCreateTimeField, softDeleteField, versionField}
+
+ // 创建全部模型文件, 并覆盖前面创建的同名模型
+ allModel := g.GenerateAllTable(fieldOpts...)
+
+ g.ApplyBasic(allModel...)
+
+ g.Execute()
+}
diff --git a/app/file/api/model/mysql/model/sca_auth_menu.gen.go b/app/file/api/model/mysql/model/sca_auth_menu.gen.go
new file mode 100644
index 0000000..002f0b0
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_auth_menu.gen.go
@@ -0,0 +1,35 @@
+// 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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaAuthMenu = "sca_auth_menu"
+
+// ScaAuthMenu mapped from table
+type ScaAuthMenu struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键ID;primary_key" json:"id,string"` // 主键ID
+ MenuName string `gorm:"column:menu_name;type:varchar(64);comment:名称" json:"menu_name"` // 名称
+ ParentID int64 `gorm:"column:parent_id;type:bigint;comment:父ID" json:"parent_id"` // 父ID
+ Type int64 `gorm:"column:type;type:tinyint;comment:类型" json:"type"` // 类型
+ Path string `gorm:"column:path;type:varchar(30);comment:路径" json:"path"` // 路径
+ Status int64 `gorm:"column:status;type:tinyint;comment:状态 0 启用 1 停用" json:"status"` // 状态 0 启用 1 停用
+ Icon string `gorm:"column:icon;type:varchar(128);comment:图标" json:"icon"` // 图标
+ MenuKey string `gorm:"column:menu_key;type:varchar(64);comment:关键字" json:"menu_key"` // 关键字
+ Order_ int64 `gorm:"column:order;type:int;comment:排序" json:"order"` // 排序
+ CreatedAt time.Time `gorm:"column:created_at;type:timestamp;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ Remark string `gorm:"column:remark;type:varchar(255);comment:备注 描述" json:"remark"` // 备注 描述
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaAuthMenu's table name
+func (*ScaAuthMenu) TableName() string {
+ return TableNameScaAuthMenu
+}
diff --git a/app/file/api/model/mysql/model/sca_auth_permission_rule.gen.go b/app/file/api/model/mysql/model/sca_auth_permission_rule.gen.go
new file mode 100644
index 0000000..74fc118
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_auth_permission_rule.gen.go
@@ -0,0 +1,24 @@
+// 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
+
+const TableNameScaAuthPermissionRule = "sca_auth_permission_rule"
+
+// ScaAuthPermissionRule mapped from table
+type ScaAuthPermissionRule struct {
+ ID int64 `gorm:"column:id;type:int;primaryKey;autoIncrement:true;primary_key" json:"id,string"`
+ Ptype string `gorm:"column:ptype;type:varchar(100);uniqueIndex:idx_sca_auth_permission_rule,priority:1;index:IDX_sca_auth_permission_rule_ptype,priority:1" json:"ptype"`
+ V0 string `gorm:"column:v0;type:varchar(100);uniqueIndex:idx_sca_auth_permission_rule,priority:2;index:IDX_sca_auth_permission_rule_v0,priority:1" json:"v0"`
+ V1 string `gorm:"column:v1;type:varchar(100);uniqueIndex:idx_sca_auth_permission_rule,priority:3;index:IDX_sca_auth_permission_rule_v1,priority:1" json:"v1"`
+ V2 string `gorm:"column:v2;type:varchar(100);uniqueIndex:idx_sca_auth_permission_rule,priority:4;index:IDX_sca_auth_permission_rule_v2,priority:1" json:"v2"`
+ V3 string `gorm:"column:v3;type:varchar(100);uniqueIndex:idx_sca_auth_permission_rule,priority:5;index:IDX_sca_auth_permission_rule_v3,priority:1" json:"v3"`
+ V4 string `gorm:"column:v4;type:varchar(100);uniqueIndex:idx_sca_auth_permission_rule,priority:6;index:IDX_sca_auth_permission_rule_v4,priority:1" json:"v4"`
+ V5 string `gorm:"column:v5;type:varchar(100);uniqueIndex:idx_sca_auth_permission_rule,priority:7;index:IDX_sca_auth_permission_rule_v5,priority:1" json:"v5"`
+}
+
+// TableName ScaAuthPermissionRule's table name
+func (*ScaAuthPermissionRule) TableName() string {
+ return TableNameScaAuthPermissionRule
+}
diff --git a/app/file/api/model/mysql/model/sca_auth_role.gen.go b/app/file/api/model/mysql/model/sca_auth_role.gen.go
new file mode 100644
index 0000000..90ecdc4
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_auth_role.gen.go
@@ -0,0 +1,28 @@
+// 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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaAuthRole = "sca_auth_role"
+
+// ScaAuthRole mapped from table
+type ScaAuthRole struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键ID;primary_key" json:"id,string"` // 主键ID
+ RoleName string `gorm:"column:role_name;type:varchar(32);not null;comment:角色名称" json:"role_name"` // 角色名称
+ RoleKey string `gorm:"column:role_key;type:varchar(64);not null;comment:角色关键字" json:"role_key"` // 角色关键字
+ CreatedAt time.Time `gorm:"column:created_at;type:timestamp;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaAuthRole's table name
+func (*ScaAuthRole) TableName() string {
+ return TableNameScaAuthRole
+}
diff --git a/app/file/api/model/mysql/model/sca_auth_user.gen.go b/app/file/api/model/mysql/model/sca_auth_user.gen.go
new file mode 100644
index 0000000..d49e7a1
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_auth_user.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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaAuthUser = "sca_auth_user"
+
+// ScaAuthUser mapped from table
+type ScaAuthUser struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;uniqueIndex:id,priority:1;comment:自增ID;primary_key" json:"id,string"` // 自增ID
+ UID string `gorm:"column:uid;type:varchar(50);not null;uniqueIndex:uid,priority:1;comment:唯一ID" json:"uid"` // 唯一ID
+ Username string `gorm:"column:username;type:varchar(32);comment:用户名" json:"username"` // 用户名
+ Nickname string `gorm:"column:nickname;type:varchar(32);comment:昵称" json:"nickname"` // 昵称
+ Email string `gorm:"column:email;type:varchar(32);comment:邮箱" json:"email"` // 邮箱
+ Phone string `gorm:"column:phone;type:varchar(32);comment:电话" json:"phone"` // 电话
+ Password string `gorm:"column:password;type:varchar(64);comment:密码" json:"password"` // 密码
+ Gender int64 `gorm:"column:gender;type:tinyint;comment:性别" json:"gender"` // 性别
+ Avatar string `gorm:"column:avatar;type:longtext;comment:头像" json:"avatar"` // 头像
+ Status int64 `gorm:"column:status;type:tinyint;comment:状态 0 正常 1 封禁" json:"status"` // 状态 0 正常 1 封禁
+ Introduce string `gorm:"column:introduce;type:varchar(255);comment:介绍" json:"introduce"` // 介绍
+ CreatedAt time.Time `gorm:"column:created_at;type:timestamp;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ Blog string `gorm:"column:blog;type:varchar(30);comment:博客" json:"blog"` // 博客
+ Location string `gorm:"column:location;type:varchar(50);comment:地址" json:"location"` // 地址
+ Company string `gorm:"column:company;type:varchar(50);comment:公司" json:"company"` // 公司
+ UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaAuthUser's table name
+func (*ScaAuthUser) TableName() string {
+ return TableNameScaAuthUser
+}
diff --git a/app/file/api/model/mysql/model/sca_auth_user_device.gen.go b/app/file/api/model/mysql/model/sca_auth_user_device.gen.go
new file mode 100644
index 0000000..c69fb84
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_auth_user_device.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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaAuthUserDevice = "sca_auth_user_device"
+
+// ScaAuthUserDevice mapped from table
+type ScaAuthUserDevice struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键ID;primary_key" json:"id,string"` // 主键ID
+ UserID string `gorm:"column:user_id;type:varchar(20);not null;comment:用户ID" json:"user_id"` // 用户ID
+ IP string `gorm:"column:ip;type:varchar(20);comment:登录IP" json:"ip"` // 登录IP
+ Location string `gorm:"column:location;type:varchar(20);comment:地址" json:"location"` // 地址
+ Agent string `gorm:"column:agent;type:varchar(255);comment:设备信息" json:"agent"` // 设备信息
+ CreatedAt time.Time `gorm:"column:created_at;type:timestamp;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ Browser string `gorm:"column:browser;type:varchar(20);comment:浏览器" json:"browser"` // 浏览器
+ OperatingSystem string `gorm:"column:operating_system;type:varchar(20);comment:操作系统" json:"operating_system"` // 操作系统
+ BrowserVersion string `gorm:"column:browser_version;type:varchar(20);comment:浏览器版本" json:"browser_version"` // 浏览器版本
+ Mobile int64 `gorm:"column:mobile;type:tinyint(1);comment:是否为手机 0否1是" json:"mobile"` // 是否为手机 0否1是
+ Bot int64 `gorm:"column:bot;type:tinyint(1);comment:是否为bot 0否1是" json:"bot"` // 是否为bot 0否1是
+ Mozilla string `gorm:"column:mozilla;type:varchar(10);comment:火狐版本" json:"mozilla"` // 火狐版本
+ Platform string `gorm:"column:platform;type:varchar(20);comment:平台" json:"platform"` // 平台
+ EngineName string `gorm:"column:engine_name;type:varchar(20);comment:引擎名称" json:"engine_name"` // 引擎名称
+ EngineVersion string `gorm:"column:engine_version;type:varchar(20);comment:引擎版本" json:"engine_version"` // 引擎版本
+ UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaAuthUserDevice's table name
+func (*ScaAuthUserDevice) TableName() string {
+ return TableNameScaAuthUserDevice
+}
diff --git a/app/file/api/model/mysql/model/sca_auth_user_social.gen.go b/app/file/api/model/mysql/model/sca_auth_user_social.gen.go
new file mode 100644
index 0000000..3d253b0
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_auth_user_social.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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaAuthUserSocial = "sca_auth_user_social"
+
+// ScaAuthUserSocial mapped from table
+type ScaAuthUserSocial struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键ID;primary_key" json:"id,string"` // 主键ID
+ UserID string `gorm:"column:user_id;type:varchar(50);not null;comment:用户ID" json:"user_id"` // 用户ID
+ OpenID string `gorm:"column:open_id;type:varchar(50);not null;comment:第三方用户的 open id" json:"open_id"` // 第三方用户的 open id
+ Source string `gorm:"column:source;type:varchar(10);comment:第三方用户来源" json:"source"` // 第三方用户来源
+ Status int64 `gorm:"column:status;type:bigint;comment:状态 0正常 1 封禁" json:"status"` // 状态 0正常 1 封禁
+ CreatedAt time.Time `gorm:"column:created_at;type:timestamp;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaAuthUserSocial's table name
+func (*ScaAuthUserSocial) TableName() string {
+ return TableNameScaAuthUserSocial
+}
diff --git a/app/file/api/model/mysql/model/sca_comment_likes.gen.go b/app/file/api/model/mysql/model/sca_comment_likes.gen.go
new file mode 100644
index 0000000..80cfaf2
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_comment_likes.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 TableNameScaCommentLike = "sca_comment_likes"
+
+// ScaCommentLike mapped from table
+type ScaCommentLike struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键id;primary_key" json:"id,string"` // 主键id
+ TopicID string `gorm:"column:topic_id;type:varchar(50);not null;comment:话题ID" json:"topic_id"` // 话题ID
+ UserID string `gorm:"column:user_id;type:varchar(50);not null;comment:用户ID" json:"user_id"` // 用户ID
+ CommentID int64 `gorm:"column:comment_id;type:bigint;not null;comment:评论ID" json:"comment_id"` // 评论ID
+ LikeTime time.Time `gorm:"column:like_time;type:timestamp;comment:点赞时间" json:"like_time"` // 点赞时间
+}
+
+// TableName ScaCommentLike's table name
+func (*ScaCommentLike) TableName() string {
+ return TableNameScaCommentLike
+}
diff --git a/app/file/api/model/mysql/model/sca_comment_reply.gen.go b/app/file/api/model/mysql/model/sca_comment_reply.gen.go
new file mode 100644
index 0000000..0525aac
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_comment_reply.gen.go
@@ -0,0 +1,44 @@
+// 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"
+
+ "gorm.io/gorm"
+ "gorm.io/plugin/optimisticlock"
+)
+
+const TableNameScaCommentReply = "sca_comment_reply"
+
+// ScaCommentReply mapped from table
+type ScaCommentReply struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;uniqueIndex:id,priority:1;comment:主键id;primary_key" json:"id,string"` // 主键id
+ UserID string `gorm:"column:user_id;type:varchar(50);not null;comment:评论用户id" json:"user_id"` // 评论用户id
+ TopicID string `gorm:"column:topic_id;type:varchar(50);comment:评论话题id" json:"topic_id"` // 评论话题id
+ TopicType int64 `gorm:"column:topic_type;type:tinyint;comment:话题类型" json:"topic_type"` // 话题类型
+ Content string `gorm:"column:content;type:text;comment:评论内容" json:"content"` // 评论内容
+ CommentType int64 `gorm:"column:comment_type;type:bigint;comment:评论类型 0评论 1 回复" json:"comment_type"` // 评论类型 0评论 1 回复
+ ReplyTo int64 `gorm:"column:reply_to;type:bigint;comment:回复子评论ID" json:"reply_to"` // 回复子评论ID
+ ReplyID int64 `gorm:"column:reply_id;type:bigint;comment:回复父评论Id" json:"reply_id"` // 回复父评论Id
+ ReplyUser string `gorm:"column:reply_user;type:varchar(50);comment:回复人id" json:"reply_user"` // 回复人id
+ Author int64 `gorm:"column:author;type:tinyint;comment:评论回复是否作者 0否 1是" json:"author"` // 评论回复是否作者 0否 1是
+ Likes int64 `gorm:"column:likes;type:bigint;comment:点赞数" json:"likes"` // 点赞数
+ ReplyCount int64 `gorm:"column:reply_count;type:bigint;comment:回复数量" json:"reply_count"` // 回复数量
+ Browser string `gorm:"column:browser;type:varchar(50);comment:浏览器" json:"browser"` // 浏览器
+ OperatingSystem string `gorm:"column:operating_system;type:varchar(50);comment:操作系统" json:"operating_system"` // 操作系统
+ CommentIP string `gorm:"column:comment_ip;type:varchar(50);comment:IP地址" json:"comment_ip"` // IP地址
+ Location string `gorm:"column:location;type:varchar(50);comment:地址" json:"location"` // 地址
+ Agent string `gorm:"column:agent;type:varchar(255);comment:设备信息" json:"agent"` // 设备信息
+ CreatedAt time.Time `gorm:"column:created_at;type:timestamp;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ Version optimisticlock.Version `gorm:"column:version;type:bigint;comment:版本" json:"version"` // 版本
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaCommentReply's table name
+func (*ScaCommentReply) TableName() string {
+ return TableNameScaCommentReply
+}
diff --git a/app/file/api/model/mysql/model/sca_file_folder.gen.go b/app/file/api/model/mysql/model/sca_file_folder.gen.go
new file mode 100644
index 0000000..4bba038
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_file_folder.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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaFileFolder = "sca_file_folder"
+
+// ScaFileFolder mapped from table
+type ScaFileFolder struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键;primary_key" json:"id,string"` // 主键
+ FolderName string `gorm:"column:folder_name;type:varchar(512);comment:文件夹名称" json:"folder_name"` // 文件夹名称
+ ParentFolderID int64 `gorm:"column:parent_folder_id;type:bigint;comment:父文件夹编号" json:"parent_folder_id"` // 父文件夹编号
+ FolderAddr string `gorm:"column:folder_addr;type:varchar(1024);comment:文件夹名称" json:"folder_addr"` // 文件夹名称
+ UserID string `gorm:"column:user_id;type:varchar(20);comment:用户编号" json:"user_id"` // 用户编号
+ FolderSource int64 `gorm:"column:folder_source;type:int;comment:文件夹来源 0相册 1 评论" json:"folder_source"` // 文件夹来源 0相册 1 评论
+ CreatedAt *time.Time `gorm:"column:created_at;type:datetime;default:CURRENT_TIMESTAMP;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt *time.Time `gorm:"column:updated_at;type:datetime;default:CURRENT_TIMESTAMP;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaFileFolder's table name
+func (*ScaFileFolder) TableName() string {
+ return TableNameScaFileFolder
+}
diff --git a/app/file/api/model/mysql/model/sca_file_info.gen.go b/app/file/api/model/mysql/model/sca_file_info.gen.go
new file mode 100644
index 0000000..27ee16c
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_file_info.gen.go
@@ -0,0 +1,34 @@
+// 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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaFileInfo = "sca_file_info"
+
+// ScaFileInfo mapped from table
+type ScaFileInfo struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键;primary_key" json:"id,string"` // 主键
+ FileName string `gorm:"column:file_name;type:varchar(50);comment:文件名" json:"file_name"` // 文件名
+ FileSize float64 `gorm:"column:file_size;type:double;comment:文件大小" json:"file_size"` // 文件大小
+ FileTypeID int64 `gorm:"column:file_type_id;type:bigint;comment:文件类型编号" json:"file_type_id"` // 文件类型编号
+ UploadTime time.Time `gorm:"column:upload_time;type:datetime;comment:上传时间" json:"upload_time"` // 上传时间
+ FolderID int64 `gorm:"column:folder_id;type:bigint;comment:文件夹编号" json:"folder_id"` // 文件夹编号
+ UserID string `gorm:"column:user_id;type:varchar(20);comment:用户编号" json:"user_id"` // 用户编号
+ FileSource int64 `gorm:"column:file_source;type:int;comment:文件来源 0 相册 1 评论" json:"file_source"` // 文件来源 0 相册 1 评论
+ Status int64 `gorm:"column:status;type:int;comment:文件状态" json:"status"` // 文件状态
+ CreatedAt *time.Time `gorm:"column:created_at;type:datetime;default:CURRENT_TIMESTAMP;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt *time.Time `gorm:"column:updated_at;type:datetime;default:CURRENT_TIMESTAMP;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaFileInfo's table name
+func (*ScaFileInfo) TableName() string {
+ return TableNameScaFileInfo
+}
diff --git a/app/file/api/model/mysql/model/sca_file_recycle.gen.go b/app/file/api/model/mysql/model/sca_file_recycle.gen.go
new file mode 100644
index 0000000..1e0d3ea
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_file_recycle.gen.go
@@ -0,0 +1,28 @@
+// 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 (
+ "gorm.io/gorm"
+)
+
+const TableNameScaFileRecycle = "sca_file_recycle"
+
+// ScaFileRecycle mapped from table
+type ScaFileRecycle struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键;primary_key" json:"id,string"` // 主键
+ FileID int64 `gorm:"column:file_id;type:bigint;comment:文件编号" json:"file_id"` // 文件编号
+ FolderID int64 `gorm:"column:folder_id;type:bigint;comment:文件夹编号" json:"folder_id"` // 文件夹编号
+ Type int64 `gorm:"column:type;type:int;comment:类型 0 文件 1 文件夹" json:"type"` // 类型 0 文件 1 文件夹
+ UserID string `gorm:"column:user_id;type:varchar(20);comment:用户编号" json:"user_id"` // 用户编号
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime;comment:删除时间" json:"deleted_at"` // 删除时间
+ OriginalPath string `gorm:"column:original_path;type:varchar(1024);comment:原始路径" json:"original_path"` // 原始路径
+ FileSource int64 `gorm:"column:file_source;type:int;comment:文件来源 0 相册 1 评论" json:"file_source"` // 文件来源 0 相册 1 评论
+}
+
+// TableName ScaFileRecycle's table name
+func (*ScaFileRecycle) TableName() string {
+ return TableNameScaFileRecycle
+}
diff --git a/app/file/api/model/mysql/model/sca_file_type.gen.go b/app/file/api/model/mysql/model/sca_file_type.gen.go
new file mode 100644
index 0000000..40eae57
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_file_type.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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaFileType = "sca_file_type"
+
+// ScaFileType mapped from table
+type ScaFileType struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键;primary_key" json:"id,string"` // 主键
+ TypeName string `gorm:"column:type_name;type:varchar(100);comment:类型名称" json:"type_name"` // 类型名称
+ MimeType string `gorm:"column:mime_type;type:varchar(50);comment:MIME 类型" json:"mime_type"` // MIME 类型
+ Status int64 `gorm:"column:status;type:int;comment:类型状态" json:"status"` // 类型状态
+ CreatedAt *time.Time `gorm:"column:created_at;type:datetime;default:CURRENT_TIMESTAMP;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt *time.Time `gorm:"column:updated_at;type:datetime;default:CURRENT_TIMESTAMP;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaFileType's table name
+func (*ScaFileType) TableName() string {
+ return TableNameScaFileType
+}
diff --git a/app/file/api/model/mysql/model/sca_message_report.gen.go b/app/file/api/model/mysql/model/sca_message_report.gen.go
new file mode 100644
index 0000000..635184d
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_message_report.gen.go
@@ -0,0 +1,34 @@
+// 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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaMessageReport = "sca_message_report"
+
+// ScaMessageReport mapped from table
+type ScaMessageReport struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键;primary_key" json:"id,string"` // 主键
+ UserID string `gorm:"column:user_id;type:varchar(20);comment:用户Id" json:"user_id"` // 用户Id
+ Type int64 `gorm:"column:type;type:tinyint;comment:举报类型 0评论 1 相册" json:"type"` // 举报类型 0评论 1 相册
+ CommentID int64 `gorm:"column:comment_id;type:bigint;comment:评论Id" json:"comment_id"` // 评论Id
+ TopicID string `gorm:"column:topic_id;type:varchar(20);comment:话题Id" json:"topic_id"` // 话题Id
+ ReportType int64 `gorm:"column:report_type;type:tinyint;comment:举报" json:"report_type"` // 举报
+ ReportContent string `gorm:"column:report_content;type:text;comment:举报说明内容" json:"report_content"` // 举报说明内容
+ ReportTag string `gorm:"column:report_tag;type:varchar(255);comment:举报标签" json:"report_tag"` // 举报标签
+ Status int64 `gorm:"column:status;type:tinyint;comment:状态(0 未处理 1 已处理)" json:"status"` // 状态(0 未处理 1 已处理)
+ CreatedAt *time.Time `gorm:"column:created_at;type:timestamp;default:CURRENT_TIMESTAMP;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt *time.Time `gorm:"column:updated_at;type:timestamp;default:CURRENT_TIMESTAMP;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaMessageReport's table name
+func (*ScaMessageReport) TableName() string {
+ return TableNameScaMessageReport
+}
diff --git a/app/file/api/model/mysql/model/sca_user_follows.gen.go b/app/file/api/model/mysql/model/sca_user_follows.gen.go
new file mode 100644
index 0000000..c7c5a20
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_user_follows.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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaUserFollow = "sca_user_follows"
+
+// ScaUserFollow mapped from table
+type ScaUserFollow struct {
+ FollowerID string `gorm:"column:follower_id;type:varchar(50);not null;comment:关注者" json:"follower_id"` // 关注者
+ FolloweeID string `gorm:"column:followee_id;type:varchar(50);not null;comment:被关注者" json:"followee_id"` // 被关注者
+ Status int64 `gorm:"column:status;type:tinyint unsigned;not null;comment:关注状态(0 未互关 1 互关)" json:"status"` // 关注状态(0 未互关 1 互关)
+ CreatedAt *time.Time `gorm:"column:created_at;type:timestamp;default:CURRENT_TIMESTAMP;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt *time.Time `gorm:"column:updated_at;type:timestamp;default:CURRENT_TIMESTAMP;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;primary_key" json:"id,string"`
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaUserFollow's table name
+func (*ScaUserFollow) TableName() string {
+ return TableNameScaUserFollow
+}
diff --git a/app/file/api/model/mysql/model/sca_user_level.gen.go b/app/file/api/model/mysql/model/sca_user_level.gen.go
new file mode 100644
index 0000000..3cddd34
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_user_level.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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaUserLevel = "sca_user_level"
+
+// ScaUserLevel mapped from table
+type ScaUserLevel struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;comment:主键;primary_key" json:"id,string"` // 主键
+ UserID string `gorm:"column:user_id;type:varchar(50);comment:用户Id" json:"user_id"` // 用户Id
+ LevelType int64 `gorm:"column:level_type;type:tinyint unsigned;comment:等级类型" json:"level_type"` // 等级类型
+ Level int64 `gorm:"column:level;type:int;comment:等级" json:"level"` // 等级
+ LevelName string `gorm:"column:level_name;type:varchar(50);comment:等级名称" json:"level_name"` // 等级名称
+ ExpStart int64 `gorm:"column:exp_start;type:bigint;comment:开始经验值" json:"exp_start"` // 开始经验值
+ ExpEnd int64 `gorm:"column:exp_end;type:bigint;comment:结束经验值" json:"exp_end"` // 结束经验值
+ Description string `gorm:"column:description;type:text;comment:等级描述" json:"description"` // 等级描述
+ CreatedAt *time.Time `gorm:"column:created_at;type:timestamp;default:CURRENT_TIMESTAMP;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt *time.Time `gorm:"column:updated_at;type:timestamp;default:CURRENT_TIMESTAMP;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaUserLevel's table name
+func (*ScaUserLevel) TableName() string {
+ return TableNameScaUserLevel
+}
diff --git a/app/file/api/model/mysql/model/sca_user_message.gen.go b/app/file/api/model/mysql/model/sca_user_message.gen.go
new file mode 100644
index 0000000..9cb738f
--- /dev/null
+++ b/app/file/api/model/mysql/model/sca_user_message.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"
+
+ "gorm.io/gorm"
+)
+
+const TableNameScaUserMessage = "sca_user_message"
+
+// ScaUserMessage mapped from table
+type ScaUserMessage struct {
+ ID int64 `gorm:"column:id;type:bigint;primaryKey;autoIncrement:true;comment:主键;primary_key" json:"id,string"` // 主键
+ TopicID string `gorm:"column:topic_id;type:varchar(50);comment:话题Id" json:"topic_id"` // 话题Id
+ FromID string `gorm:"column:from_id;type:varchar(50);comment:来自人" json:"from_id"` // 来自人
+ ToID string `gorm:"column:to_id;type:varchar(50);comment:送达人" json:"to_id"` // 送达人
+ Content string `gorm:"column:content;type:text;comment:消息内容" json:"content"` // 消息内容
+ IsRead int64 `gorm:"column:is_read;type:tinyint;comment:是否已读" json:"is_read"` // 是否已读
+ CreatedAt time.Time `gorm:"column:created_at;type:timestamp;autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
+ UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间
+ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;comment:删除时间" json:"deleted_at"` // 删除时间
+}
+
+// TableName ScaUserMessage's table name
+func (*ScaUserMessage) TableName() string {
+ return TableNameScaUserMessage
+}
diff --git a/app/file/api/model/mysql/mysql.go b/app/file/api/model/mysql/mysql.go
new file mode 100644
index 0000000..0b44e85
--- /dev/null
+++ b/app/file/api/model/mysql/mysql.go
@@ -0,0 +1,65 @@
+package mysql
+
+import (
+ "log"
+ "os"
+ "schisandra-album-cloud-microservices/app/file/api/model/mysql/query"
+ "time"
+
+ "github.com/asjdf/gorm-cache/cache"
+ "github.com/asjdf/gorm-cache/config"
+ "github.com/asjdf/gorm-cache/storage"
+ "github.com/redis/go-redis/v9"
+ "gorm.io/driver/mysql"
+ "gorm.io/gorm"
+ "gorm.io/gorm/logger"
+)
+
+func NewMySQL(url string, maxOpenConn int, maxIdleConn int, client *redis.Client) (*gorm.DB, *query.Query) {
+ db, err := gorm.Open(mysql.Open(url), &gorm.Config{
+ SkipDefaultTransaction: true,
+ PrepareStmt: true,
+ Logger: logger.New(
+ log.New(os.Stdout, "\r\n", log.LstdFlags),
+ logger.Config{
+ SlowThreshold: time.Second, // 慢sql日志
+ LogLevel: logger.Error, // 级别
+ Colorful: true, // 颜色
+ IgnoreRecordNotFoundError: true, // 忽略RecordNotFoundError
+ ParameterizedQueries: true, // 格式化SQL语句
+ }),
+ })
+ if err != nil {
+ panic(err)
+ }
+ sqlDB, err := db.DB()
+ if err != nil {
+ panic(err)
+ }
+ sqlDB.SetMaxOpenConns(maxOpenConn)
+ sqlDB.SetMaxIdleConns(maxIdleConn)
+ useDB := query.Use(db)
+ // cache
+ gormCache, err := cache.NewGorm2Cache(&config.CacheConfig{
+ CacheLevel: config.CacheLevelAll,
+ CacheStorage: storage.NewRedis(&storage.RedisStoreConfig{
+ KeyPrefix: "cache",
+ Client: client,
+ }),
+ InvalidateWhenUpdate: true, // when you create/update/delete objects, invalidate cache
+ CacheTTL: 10000, // 5000 ms
+ CacheMaxItemCnt: 0, // if length of objects retrieved one single time
+ AsyncWrite: true, // async write to cache
+ DebugMode: false,
+ DisableCachePenetrationProtect: true, // disable cache penetration protect
+ })
+ if err != nil {
+ panic(err)
+ }
+ err = db.Use(gormCache)
+ if err != nil {
+ panic(err)
+ }
+
+ return db, useDB
+}
diff --git a/app/file/api/model/mysql/query/gen.go b/app/file/api/model/mysql/query/gen.go
new file mode 100644
index 0000000..efa99ec
--- /dev/null
+++ b/app/file/api/model/mysql/query/gen.go
@@ -0,0 +1,223 @@
+// 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)
+ ScaAuthMenu *scaAuthMenu
+ ScaAuthPermissionRule *scaAuthPermissionRule
+ ScaAuthRole *scaAuthRole
+ ScaAuthUser *scaAuthUser
+ ScaAuthUserDevice *scaAuthUserDevice
+ ScaAuthUserSocial *scaAuthUserSocial
+ ScaCommentLike *scaCommentLike
+ ScaCommentReply *scaCommentReply
+ ScaFileFolder *scaFileFolder
+ ScaFileInfo *scaFileInfo
+ ScaFileRecycle *scaFileRecycle
+ ScaFileType *scaFileType
+ ScaMessageReport *scaMessageReport
+ ScaUserFollow *scaUserFollow
+ ScaUserLevel *scaUserLevel
+ ScaUserMessage *scaUserMessage
+)
+
+func SetDefault(db *gorm.DB, opts ...gen.DOOption) {
+ *Q = *Use(db, opts...)
+ ScaAuthMenu = &Q.ScaAuthMenu
+ ScaAuthPermissionRule = &Q.ScaAuthPermissionRule
+ ScaAuthRole = &Q.ScaAuthRole
+ ScaAuthUser = &Q.ScaAuthUser
+ ScaAuthUserDevice = &Q.ScaAuthUserDevice
+ ScaAuthUserSocial = &Q.ScaAuthUserSocial
+ ScaCommentLike = &Q.ScaCommentLike
+ ScaCommentReply = &Q.ScaCommentReply
+ ScaFileFolder = &Q.ScaFileFolder
+ ScaFileInfo = &Q.ScaFileInfo
+ ScaFileRecycle = &Q.ScaFileRecycle
+ ScaFileType = &Q.ScaFileType
+ ScaMessageReport = &Q.ScaMessageReport
+ ScaUserFollow = &Q.ScaUserFollow
+ ScaUserLevel = &Q.ScaUserLevel
+ ScaUserMessage = &Q.ScaUserMessage
+}
+
+func Use(db *gorm.DB, opts ...gen.DOOption) *Query {
+ return &Query{
+ db: db,
+ ScaAuthMenu: newScaAuthMenu(db, opts...),
+ ScaAuthPermissionRule: newScaAuthPermissionRule(db, opts...),
+ ScaAuthRole: newScaAuthRole(db, opts...),
+ ScaAuthUser: newScaAuthUser(db, opts...),
+ ScaAuthUserDevice: newScaAuthUserDevice(db, opts...),
+ ScaAuthUserSocial: newScaAuthUserSocial(db, opts...),
+ ScaCommentLike: newScaCommentLike(db, opts...),
+ ScaCommentReply: newScaCommentReply(db, opts...),
+ ScaFileFolder: newScaFileFolder(db, opts...),
+ ScaFileInfo: newScaFileInfo(db, opts...),
+ ScaFileRecycle: newScaFileRecycle(db, opts...),
+ ScaFileType: newScaFileType(db, opts...),
+ ScaMessageReport: newScaMessageReport(db, opts...),
+ ScaUserFollow: newScaUserFollow(db, opts...),
+ ScaUserLevel: newScaUserLevel(db, opts...),
+ ScaUserMessage: newScaUserMessage(db, opts...),
+ }
+}
+
+type Query struct {
+ db *gorm.DB
+
+ ScaAuthMenu scaAuthMenu
+ ScaAuthPermissionRule scaAuthPermissionRule
+ ScaAuthRole scaAuthRole
+ ScaAuthUser scaAuthUser
+ ScaAuthUserDevice scaAuthUserDevice
+ ScaAuthUserSocial scaAuthUserSocial
+ ScaCommentLike scaCommentLike
+ ScaCommentReply scaCommentReply
+ ScaFileFolder scaFileFolder
+ ScaFileInfo scaFileInfo
+ ScaFileRecycle scaFileRecycle
+ ScaFileType scaFileType
+ ScaMessageReport scaMessageReport
+ ScaUserFollow scaUserFollow
+ ScaUserLevel scaUserLevel
+ ScaUserMessage scaUserMessage
+}
+
+func (q *Query) Available() bool { return q.db != nil }
+
+func (q *Query) clone(db *gorm.DB) *Query {
+ return &Query{
+ db: db,
+ ScaAuthMenu: q.ScaAuthMenu.clone(db),
+ ScaAuthPermissionRule: q.ScaAuthPermissionRule.clone(db),
+ ScaAuthRole: q.ScaAuthRole.clone(db),
+ ScaAuthUser: q.ScaAuthUser.clone(db),
+ ScaAuthUserDevice: q.ScaAuthUserDevice.clone(db),
+ ScaAuthUserSocial: q.ScaAuthUserSocial.clone(db),
+ ScaCommentLike: q.ScaCommentLike.clone(db),
+ ScaCommentReply: q.ScaCommentReply.clone(db),
+ ScaFileFolder: q.ScaFileFolder.clone(db),
+ ScaFileInfo: q.ScaFileInfo.clone(db),
+ ScaFileRecycle: q.ScaFileRecycle.clone(db),
+ ScaFileType: q.ScaFileType.clone(db),
+ ScaMessageReport: q.ScaMessageReport.clone(db),
+ ScaUserFollow: q.ScaUserFollow.clone(db),
+ ScaUserLevel: q.ScaUserLevel.clone(db),
+ ScaUserMessage: q.ScaUserMessage.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,
+ ScaAuthMenu: q.ScaAuthMenu.replaceDB(db),
+ ScaAuthPermissionRule: q.ScaAuthPermissionRule.replaceDB(db),
+ ScaAuthRole: q.ScaAuthRole.replaceDB(db),
+ ScaAuthUser: q.ScaAuthUser.replaceDB(db),
+ ScaAuthUserDevice: q.ScaAuthUserDevice.replaceDB(db),
+ ScaAuthUserSocial: q.ScaAuthUserSocial.replaceDB(db),
+ ScaCommentLike: q.ScaCommentLike.replaceDB(db),
+ ScaCommentReply: q.ScaCommentReply.replaceDB(db),
+ ScaFileFolder: q.ScaFileFolder.replaceDB(db),
+ ScaFileInfo: q.ScaFileInfo.replaceDB(db),
+ ScaFileRecycle: q.ScaFileRecycle.replaceDB(db),
+ ScaFileType: q.ScaFileType.replaceDB(db),
+ ScaMessageReport: q.ScaMessageReport.replaceDB(db),
+ ScaUserFollow: q.ScaUserFollow.replaceDB(db),
+ ScaUserLevel: q.ScaUserLevel.replaceDB(db),
+ ScaUserMessage: q.ScaUserMessage.replaceDB(db),
+ }
+}
+
+type queryCtx struct {
+ ScaAuthMenu IScaAuthMenuDo
+ ScaAuthPermissionRule IScaAuthPermissionRuleDo
+ ScaAuthRole IScaAuthRoleDo
+ ScaAuthUser IScaAuthUserDo
+ ScaAuthUserDevice IScaAuthUserDeviceDo
+ ScaAuthUserSocial IScaAuthUserSocialDo
+ ScaCommentLike IScaCommentLikeDo
+ ScaCommentReply IScaCommentReplyDo
+ ScaFileFolder IScaFileFolderDo
+ ScaFileInfo IScaFileInfoDo
+ ScaFileRecycle IScaFileRecycleDo
+ ScaFileType IScaFileTypeDo
+ ScaMessageReport IScaMessageReportDo
+ ScaUserFollow IScaUserFollowDo
+ ScaUserLevel IScaUserLevelDo
+ ScaUserMessage IScaUserMessageDo
+}
+
+func (q *Query) WithContext(ctx context.Context) *queryCtx {
+ return &queryCtx{
+ ScaAuthMenu: q.ScaAuthMenu.WithContext(ctx),
+ ScaAuthPermissionRule: q.ScaAuthPermissionRule.WithContext(ctx),
+ ScaAuthRole: q.ScaAuthRole.WithContext(ctx),
+ ScaAuthUser: q.ScaAuthUser.WithContext(ctx),
+ ScaAuthUserDevice: q.ScaAuthUserDevice.WithContext(ctx),
+ ScaAuthUserSocial: q.ScaAuthUserSocial.WithContext(ctx),
+ ScaCommentLike: q.ScaCommentLike.WithContext(ctx),
+ ScaCommentReply: q.ScaCommentReply.WithContext(ctx),
+ ScaFileFolder: q.ScaFileFolder.WithContext(ctx),
+ ScaFileInfo: q.ScaFileInfo.WithContext(ctx),
+ ScaFileRecycle: q.ScaFileRecycle.WithContext(ctx),
+ ScaFileType: q.ScaFileType.WithContext(ctx),
+ ScaMessageReport: q.ScaMessageReport.WithContext(ctx),
+ ScaUserFollow: q.ScaUserFollow.WithContext(ctx),
+ ScaUserLevel: q.ScaUserLevel.WithContext(ctx),
+ ScaUserMessage: q.ScaUserMessage.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/app/file/api/model/mysql/query/sca_auth_menu.gen.go b/app/file/api/model/mysql/query/sca_auth_menu.gen.go
new file mode 100644
index 0000000..46d2b6b
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_auth_menu.gen.go
@@ -0,0 +1,426 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaAuthMenu(db *gorm.DB, opts ...gen.DOOption) scaAuthMenu {
+ _scaAuthMenu := scaAuthMenu{}
+
+ _scaAuthMenu.scaAuthMenuDo.UseDB(db, opts...)
+ _scaAuthMenu.scaAuthMenuDo.UseModel(&model.ScaAuthMenu{})
+
+ tableName := _scaAuthMenu.scaAuthMenuDo.TableName()
+ _scaAuthMenu.ALL = field.NewAsterisk(tableName)
+ _scaAuthMenu.ID = field.NewInt64(tableName, "id")
+ _scaAuthMenu.MenuName = field.NewString(tableName, "menu_name")
+ _scaAuthMenu.ParentID = field.NewInt64(tableName, "parent_id")
+ _scaAuthMenu.Type = field.NewInt64(tableName, "type")
+ _scaAuthMenu.Path = field.NewString(tableName, "path")
+ _scaAuthMenu.Status = field.NewInt64(tableName, "status")
+ _scaAuthMenu.Icon = field.NewString(tableName, "icon")
+ _scaAuthMenu.MenuKey = field.NewString(tableName, "menu_key")
+ _scaAuthMenu.Order_ = field.NewInt64(tableName, "order")
+ _scaAuthMenu.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaAuthMenu.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaAuthMenu.Remark = field.NewString(tableName, "remark")
+ _scaAuthMenu.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaAuthMenu.fillFieldMap()
+
+ return _scaAuthMenu
+}
+
+type scaAuthMenu struct {
+ scaAuthMenuDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键ID
+ MenuName field.String // 名称
+ ParentID field.Int64 // 父ID
+ Type field.Int64 // 类型
+ Path field.String // 路径
+ Status field.Int64 // 状态 0 启用 1 停用
+ Icon field.String // 图标
+ MenuKey field.String // 关键字
+ Order_ field.Int64 // 排序
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ Remark field.String // 备注 描述
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaAuthMenu) Table(newTableName string) *scaAuthMenu {
+ s.scaAuthMenuDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaAuthMenu) As(alias string) *scaAuthMenu {
+ s.scaAuthMenuDo.DO = *(s.scaAuthMenuDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaAuthMenu) updateTableName(table string) *scaAuthMenu {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.MenuName = field.NewString(table, "menu_name")
+ s.ParentID = field.NewInt64(table, "parent_id")
+ s.Type = field.NewInt64(table, "type")
+ s.Path = field.NewString(table, "path")
+ s.Status = field.NewInt64(table, "status")
+ s.Icon = field.NewString(table, "icon")
+ s.MenuKey = field.NewString(table, "menu_key")
+ s.Order_ = field.NewInt64(table, "order")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.Remark = field.NewString(table, "remark")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaAuthMenu) 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 *scaAuthMenu) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 13)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["menu_name"] = s.MenuName
+ s.fieldMap["parent_id"] = s.ParentID
+ s.fieldMap["type"] = s.Type
+ s.fieldMap["path"] = s.Path
+ s.fieldMap["status"] = s.Status
+ s.fieldMap["icon"] = s.Icon
+ s.fieldMap["menu_key"] = s.MenuKey
+ s.fieldMap["order"] = s.Order_
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["remark"] = s.Remark
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaAuthMenu) clone(db *gorm.DB) scaAuthMenu {
+ s.scaAuthMenuDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaAuthMenu) replaceDB(db *gorm.DB) scaAuthMenu {
+ s.scaAuthMenuDo.ReplaceDB(db)
+ return s
+}
+
+type scaAuthMenuDo struct{ gen.DO }
+
+type IScaAuthMenuDo interface {
+ gen.SubQuery
+ Debug() IScaAuthMenuDo
+ WithContext(ctx context.Context) IScaAuthMenuDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaAuthMenuDo
+ WriteDB() IScaAuthMenuDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaAuthMenuDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaAuthMenuDo
+ Not(conds ...gen.Condition) IScaAuthMenuDo
+ Or(conds ...gen.Condition) IScaAuthMenuDo
+ Select(conds ...field.Expr) IScaAuthMenuDo
+ Where(conds ...gen.Condition) IScaAuthMenuDo
+ Order(conds ...field.Expr) IScaAuthMenuDo
+ Distinct(cols ...field.Expr) IScaAuthMenuDo
+ Omit(cols ...field.Expr) IScaAuthMenuDo
+ Join(table schema.Tabler, on ...field.Expr) IScaAuthMenuDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthMenuDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthMenuDo
+ Group(cols ...field.Expr) IScaAuthMenuDo
+ Having(conds ...gen.Condition) IScaAuthMenuDo
+ Limit(limit int) IScaAuthMenuDo
+ Offset(offset int) IScaAuthMenuDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthMenuDo
+ Unscoped() IScaAuthMenuDo
+ Create(values ...*model.ScaAuthMenu) error
+ CreateInBatches(values []*model.ScaAuthMenu, batchSize int) error
+ Save(values ...*model.ScaAuthMenu) error
+ First() (*model.ScaAuthMenu, error)
+ Take() (*model.ScaAuthMenu, error)
+ Last() (*model.ScaAuthMenu, error)
+ Find() ([]*model.ScaAuthMenu, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthMenu, err error)
+ FindInBatches(result *[]*model.ScaAuthMenu, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaAuthMenu) (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) IScaAuthMenuDo
+ Assign(attrs ...field.AssignExpr) IScaAuthMenuDo
+ Joins(fields ...field.RelationField) IScaAuthMenuDo
+ Preload(fields ...field.RelationField) IScaAuthMenuDo
+ FirstOrInit() (*model.ScaAuthMenu, error)
+ FirstOrCreate() (*model.ScaAuthMenu, error)
+ FindByPage(offset int, limit int) (result []*model.ScaAuthMenu, 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) IScaAuthMenuDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaAuthMenuDo) Debug() IScaAuthMenuDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaAuthMenuDo) WithContext(ctx context.Context) IScaAuthMenuDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaAuthMenuDo) ReadDB() IScaAuthMenuDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaAuthMenuDo) WriteDB() IScaAuthMenuDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaAuthMenuDo) Session(config *gorm.Session) IScaAuthMenuDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaAuthMenuDo) Clauses(conds ...clause.Expression) IScaAuthMenuDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaAuthMenuDo) Returning(value interface{}, columns ...string) IScaAuthMenuDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaAuthMenuDo) Not(conds ...gen.Condition) IScaAuthMenuDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaAuthMenuDo) Or(conds ...gen.Condition) IScaAuthMenuDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaAuthMenuDo) Select(conds ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaAuthMenuDo) Where(conds ...gen.Condition) IScaAuthMenuDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaAuthMenuDo) Order(conds ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaAuthMenuDo) Distinct(cols ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaAuthMenuDo) Omit(cols ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaAuthMenuDo) Join(table schema.Tabler, on ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaAuthMenuDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaAuthMenuDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaAuthMenuDo) Group(cols ...field.Expr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaAuthMenuDo) Having(conds ...gen.Condition) IScaAuthMenuDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaAuthMenuDo) Limit(limit int) IScaAuthMenuDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaAuthMenuDo) Offset(offset int) IScaAuthMenuDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaAuthMenuDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthMenuDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaAuthMenuDo) Unscoped() IScaAuthMenuDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaAuthMenuDo) Create(values ...*model.ScaAuthMenu) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaAuthMenuDo) CreateInBatches(values []*model.ScaAuthMenu, 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 scaAuthMenuDo) Save(values ...*model.ScaAuthMenu) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaAuthMenuDo) First() (*model.ScaAuthMenu, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthMenu), nil
+ }
+}
+
+func (s scaAuthMenuDo) Take() (*model.ScaAuthMenu, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthMenu), nil
+ }
+}
+
+func (s scaAuthMenuDo) Last() (*model.ScaAuthMenu, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthMenu), nil
+ }
+}
+
+func (s scaAuthMenuDo) Find() ([]*model.ScaAuthMenu, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaAuthMenu), err
+}
+
+func (s scaAuthMenuDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthMenu, err error) {
+ buf := make([]*model.ScaAuthMenu, 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 scaAuthMenuDo) FindInBatches(result *[]*model.ScaAuthMenu, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaAuthMenuDo) Attrs(attrs ...field.AssignExpr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaAuthMenuDo) Assign(attrs ...field.AssignExpr) IScaAuthMenuDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaAuthMenuDo) Joins(fields ...field.RelationField) IScaAuthMenuDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaAuthMenuDo) Preload(fields ...field.RelationField) IScaAuthMenuDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaAuthMenuDo) FirstOrInit() (*model.ScaAuthMenu, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthMenu), nil
+ }
+}
+
+func (s scaAuthMenuDo) FirstOrCreate() (*model.ScaAuthMenu, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthMenu), nil
+ }
+}
+
+func (s scaAuthMenuDo) FindByPage(offset int, limit int) (result []*model.ScaAuthMenu, 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 scaAuthMenuDo) 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 scaAuthMenuDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaAuthMenuDo) Delete(models ...*model.ScaAuthMenu) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaAuthMenuDo) withDO(do gen.Dao) *scaAuthMenuDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_auth_permission_rule.gen.go b/app/file/api/model/mysql/query/sca_auth_permission_rule.gen.go
new file mode 100644
index 0000000..9fab0d5
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_auth_permission_rule.gen.go
@@ -0,0 +1,406 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaAuthPermissionRule(db *gorm.DB, opts ...gen.DOOption) scaAuthPermissionRule {
+ _scaAuthPermissionRule := scaAuthPermissionRule{}
+
+ _scaAuthPermissionRule.scaAuthPermissionRuleDo.UseDB(db, opts...)
+ _scaAuthPermissionRule.scaAuthPermissionRuleDo.UseModel(&model.ScaAuthPermissionRule{})
+
+ tableName := _scaAuthPermissionRule.scaAuthPermissionRuleDo.TableName()
+ _scaAuthPermissionRule.ALL = field.NewAsterisk(tableName)
+ _scaAuthPermissionRule.ID = field.NewInt64(tableName, "id")
+ _scaAuthPermissionRule.Ptype = field.NewString(tableName, "ptype")
+ _scaAuthPermissionRule.V0 = field.NewString(tableName, "v0")
+ _scaAuthPermissionRule.V1 = field.NewString(tableName, "v1")
+ _scaAuthPermissionRule.V2 = field.NewString(tableName, "v2")
+ _scaAuthPermissionRule.V3 = field.NewString(tableName, "v3")
+ _scaAuthPermissionRule.V4 = field.NewString(tableName, "v4")
+ _scaAuthPermissionRule.V5 = field.NewString(tableName, "v5")
+
+ _scaAuthPermissionRule.fillFieldMap()
+
+ return _scaAuthPermissionRule
+}
+
+type scaAuthPermissionRule struct {
+ scaAuthPermissionRuleDo
+
+ ALL field.Asterisk
+ ID field.Int64
+ Ptype field.String
+ V0 field.String
+ V1 field.String
+ V2 field.String
+ V3 field.String
+ V4 field.String
+ V5 field.String
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaAuthPermissionRule) Table(newTableName string) *scaAuthPermissionRule {
+ s.scaAuthPermissionRuleDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaAuthPermissionRule) As(alias string) *scaAuthPermissionRule {
+ s.scaAuthPermissionRuleDo.DO = *(s.scaAuthPermissionRuleDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaAuthPermissionRule) updateTableName(table string) *scaAuthPermissionRule {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.Ptype = field.NewString(table, "ptype")
+ s.V0 = field.NewString(table, "v0")
+ s.V1 = field.NewString(table, "v1")
+ s.V2 = field.NewString(table, "v2")
+ s.V3 = field.NewString(table, "v3")
+ s.V4 = field.NewString(table, "v4")
+ s.V5 = field.NewString(table, "v5")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaAuthPermissionRule) 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 *scaAuthPermissionRule) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 8)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["ptype"] = s.Ptype
+ s.fieldMap["v0"] = s.V0
+ s.fieldMap["v1"] = s.V1
+ s.fieldMap["v2"] = s.V2
+ s.fieldMap["v3"] = s.V3
+ s.fieldMap["v4"] = s.V4
+ s.fieldMap["v5"] = s.V5
+}
+
+func (s scaAuthPermissionRule) clone(db *gorm.DB) scaAuthPermissionRule {
+ s.scaAuthPermissionRuleDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaAuthPermissionRule) replaceDB(db *gorm.DB) scaAuthPermissionRule {
+ s.scaAuthPermissionRuleDo.ReplaceDB(db)
+ return s
+}
+
+type scaAuthPermissionRuleDo struct{ gen.DO }
+
+type IScaAuthPermissionRuleDo interface {
+ gen.SubQuery
+ Debug() IScaAuthPermissionRuleDo
+ WithContext(ctx context.Context) IScaAuthPermissionRuleDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaAuthPermissionRuleDo
+ WriteDB() IScaAuthPermissionRuleDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaAuthPermissionRuleDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaAuthPermissionRuleDo
+ Not(conds ...gen.Condition) IScaAuthPermissionRuleDo
+ Or(conds ...gen.Condition) IScaAuthPermissionRuleDo
+ Select(conds ...field.Expr) IScaAuthPermissionRuleDo
+ Where(conds ...gen.Condition) IScaAuthPermissionRuleDo
+ Order(conds ...field.Expr) IScaAuthPermissionRuleDo
+ Distinct(cols ...field.Expr) IScaAuthPermissionRuleDo
+ Omit(cols ...field.Expr) IScaAuthPermissionRuleDo
+ Join(table schema.Tabler, on ...field.Expr) IScaAuthPermissionRuleDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthPermissionRuleDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthPermissionRuleDo
+ Group(cols ...field.Expr) IScaAuthPermissionRuleDo
+ Having(conds ...gen.Condition) IScaAuthPermissionRuleDo
+ Limit(limit int) IScaAuthPermissionRuleDo
+ Offset(offset int) IScaAuthPermissionRuleDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthPermissionRuleDo
+ Unscoped() IScaAuthPermissionRuleDo
+ Create(values ...*model.ScaAuthPermissionRule) error
+ CreateInBatches(values []*model.ScaAuthPermissionRule, batchSize int) error
+ Save(values ...*model.ScaAuthPermissionRule) error
+ First() (*model.ScaAuthPermissionRule, error)
+ Take() (*model.ScaAuthPermissionRule, error)
+ Last() (*model.ScaAuthPermissionRule, error)
+ Find() ([]*model.ScaAuthPermissionRule, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthPermissionRule, err error)
+ FindInBatches(result *[]*model.ScaAuthPermissionRule, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaAuthPermissionRule) (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) IScaAuthPermissionRuleDo
+ Assign(attrs ...field.AssignExpr) IScaAuthPermissionRuleDo
+ Joins(fields ...field.RelationField) IScaAuthPermissionRuleDo
+ Preload(fields ...field.RelationField) IScaAuthPermissionRuleDo
+ FirstOrInit() (*model.ScaAuthPermissionRule, error)
+ FirstOrCreate() (*model.ScaAuthPermissionRule, error)
+ FindByPage(offset int, limit int) (result []*model.ScaAuthPermissionRule, 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) IScaAuthPermissionRuleDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaAuthPermissionRuleDo) Debug() IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaAuthPermissionRuleDo) WithContext(ctx context.Context) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaAuthPermissionRuleDo) ReadDB() IScaAuthPermissionRuleDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaAuthPermissionRuleDo) WriteDB() IScaAuthPermissionRuleDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaAuthPermissionRuleDo) Session(config *gorm.Session) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaAuthPermissionRuleDo) Clauses(conds ...clause.Expression) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaAuthPermissionRuleDo) Returning(value interface{}, columns ...string) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaAuthPermissionRuleDo) Not(conds ...gen.Condition) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaAuthPermissionRuleDo) Or(conds ...gen.Condition) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaAuthPermissionRuleDo) Select(conds ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaAuthPermissionRuleDo) Where(conds ...gen.Condition) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaAuthPermissionRuleDo) Order(conds ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaAuthPermissionRuleDo) Distinct(cols ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaAuthPermissionRuleDo) Omit(cols ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaAuthPermissionRuleDo) Join(table schema.Tabler, on ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaAuthPermissionRuleDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaAuthPermissionRuleDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaAuthPermissionRuleDo) Group(cols ...field.Expr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaAuthPermissionRuleDo) Having(conds ...gen.Condition) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaAuthPermissionRuleDo) Limit(limit int) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaAuthPermissionRuleDo) Offset(offset int) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaAuthPermissionRuleDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaAuthPermissionRuleDo) Unscoped() IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaAuthPermissionRuleDo) Create(values ...*model.ScaAuthPermissionRule) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaAuthPermissionRuleDo) CreateInBatches(values []*model.ScaAuthPermissionRule, 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 scaAuthPermissionRuleDo) Save(values ...*model.ScaAuthPermissionRule) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaAuthPermissionRuleDo) First() (*model.ScaAuthPermissionRule, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthPermissionRule), nil
+ }
+}
+
+func (s scaAuthPermissionRuleDo) Take() (*model.ScaAuthPermissionRule, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthPermissionRule), nil
+ }
+}
+
+func (s scaAuthPermissionRuleDo) Last() (*model.ScaAuthPermissionRule, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthPermissionRule), nil
+ }
+}
+
+func (s scaAuthPermissionRuleDo) Find() ([]*model.ScaAuthPermissionRule, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaAuthPermissionRule), err
+}
+
+func (s scaAuthPermissionRuleDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthPermissionRule, err error) {
+ buf := make([]*model.ScaAuthPermissionRule, 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 scaAuthPermissionRuleDo) FindInBatches(result *[]*model.ScaAuthPermissionRule, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaAuthPermissionRuleDo) Attrs(attrs ...field.AssignExpr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaAuthPermissionRuleDo) Assign(attrs ...field.AssignExpr) IScaAuthPermissionRuleDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaAuthPermissionRuleDo) Joins(fields ...field.RelationField) IScaAuthPermissionRuleDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaAuthPermissionRuleDo) Preload(fields ...field.RelationField) IScaAuthPermissionRuleDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaAuthPermissionRuleDo) FirstOrInit() (*model.ScaAuthPermissionRule, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthPermissionRule), nil
+ }
+}
+
+func (s scaAuthPermissionRuleDo) FirstOrCreate() (*model.ScaAuthPermissionRule, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthPermissionRule), nil
+ }
+}
+
+func (s scaAuthPermissionRuleDo) FindByPage(offset int, limit int) (result []*model.ScaAuthPermissionRule, 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 scaAuthPermissionRuleDo) 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 scaAuthPermissionRuleDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaAuthPermissionRuleDo) Delete(models ...*model.ScaAuthPermissionRule) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaAuthPermissionRuleDo) withDO(do gen.Dao) *scaAuthPermissionRuleDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_auth_role.gen.go b/app/file/api/model/mysql/query/sca_auth_role.gen.go
new file mode 100644
index 0000000..b4cb132
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_auth_role.gen.go
@@ -0,0 +1,398 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaAuthRole(db *gorm.DB, opts ...gen.DOOption) scaAuthRole {
+ _scaAuthRole := scaAuthRole{}
+
+ _scaAuthRole.scaAuthRoleDo.UseDB(db, opts...)
+ _scaAuthRole.scaAuthRoleDo.UseModel(&model.ScaAuthRole{})
+
+ tableName := _scaAuthRole.scaAuthRoleDo.TableName()
+ _scaAuthRole.ALL = field.NewAsterisk(tableName)
+ _scaAuthRole.ID = field.NewInt64(tableName, "id")
+ _scaAuthRole.RoleName = field.NewString(tableName, "role_name")
+ _scaAuthRole.RoleKey = field.NewString(tableName, "role_key")
+ _scaAuthRole.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaAuthRole.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaAuthRole.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaAuthRole.fillFieldMap()
+
+ return _scaAuthRole
+}
+
+type scaAuthRole struct {
+ scaAuthRoleDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键ID
+ RoleName field.String // 角色名称
+ RoleKey field.String // 角色关键字
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaAuthRole) Table(newTableName string) *scaAuthRole {
+ s.scaAuthRoleDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaAuthRole) As(alias string) *scaAuthRole {
+ s.scaAuthRoleDo.DO = *(s.scaAuthRoleDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaAuthRole) updateTableName(table string) *scaAuthRole {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.RoleName = field.NewString(table, "role_name")
+ s.RoleKey = field.NewString(table, "role_key")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaAuthRole) 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 *scaAuthRole) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 6)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["role_name"] = s.RoleName
+ s.fieldMap["role_key"] = s.RoleKey
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaAuthRole) clone(db *gorm.DB) scaAuthRole {
+ s.scaAuthRoleDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaAuthRole) replaceDB(db *gorm.DB) scaAuthRole {
+ s.scaAuthRoleDo.ReplaceDB(db)
+ return s
+}
+
+type scaAuthRoleDo struct{ gen.DO }
+
+type IScaAuthRoleDo interface {
+ gen.SubQuery
+ Debug() IScaAuthRoleDo
+ WithContext(ctx context.Context) IScaAuthRoleDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaAuthRoleDo
+ WriteDB() IScaAuthRoleDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaAuthRoleDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaAuthRoleDo
+ Not(conds ...gen.Condition) IScaAuthRoleDo
+ Or(conds ...gen.Condition) IScaAuthRoleDo
+ Select(conds ...field.Expr) IScaAuthRoleDo
+ Where(conds ...gen.Condition) IScaAuthRoleDo
+ Order(conds ...field.Expr) IScaAuthRoleDo
+ Distinct(cols ...field.Expr) IScaAuthRoleDo
+ Omit(cols ...field.Expr) IScaAuthRoleDo
+ Join(table schema.Tabler, on ...field.Expr) IScaAuthRoleDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthRoleDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthRoleDo
+ Group(cols ...field.Expr) IScaAuthRoleDo
+ Having(conds ...gen.Condition) IScaAuthRoleDo
+ Limit(limit int) IScaAuthRoleDo
+ Offset(offset int) IScaAuthRoleDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthRoleDo
+ Unscoped() IScaAuthRoleDo
+ Create(values ...*model.ScaAuthRole) error
+ CreateInBatches(values []*model.ScaAuthRole, batchSize int) error
+ Save(values ...*model.ScaAuthRole) error
+ First() (*model.ScaAuthRole, error)
+ Take() (*model.ScaAuthRole, error)
+ Last() (*model.ScaAuthRole, error)
+ Find() ([]*model.ScaAuthRole, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthRole, err error)
+ FindInBatches(result *[]*model.ScaAuthRole, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaAuthRole) (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) IScaAuthRoleDo
+ Assign(attrs ...field.AssignExpr) IScaAuthRoleDo
+ Joins(fields ...field.RelationField) IScaAuthRoleDo
+ Preload(fields ...field.RelationField) IScaAuthRoleDo
+ FirstOrInit() (*model.ScaAuthRole, error)
+ FirstOrCreate() (*model.ScaAuthRole, error)
+ FindByPage(offset int, limit int) (result []*model.ScaAuthRole, 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) IScaAuthRoleDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaAuthRoleDo) Debug() IScaAuthRoleDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaAuthRoleDo) WithContext(ctx context.Context) IScaAuthRoleDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaAuthRoleDo) ReadDB() IScaAuthRoleDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaAuthRoleDo) WriteDB() IScaAuthRoleDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaAuthRoleDo) Session(config *gorm.Session) IScaAuthRoleDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaAuthRoleDo) Clauses(conds ...clause.Expression) IScaAuthRoleDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaAuthRoleDo) Returning(value interface{}, columns ...string) IScaAuthRoleDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaAuthRoleDo) Not(conds ...gen.Condition) IScaAuthRoleDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaAuthRoleDo) Or(conds ...gen.Condition) IScaAuthRoleDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaAuthRoleDo) Select(conds ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaAuthRoleDo) Where(conds ...gen.Condition) IScaAuthRoleDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaAuthRoleDo) Order(conds ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaAuthRoleDo) Distinct(cols ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaAuthRoleDo) Omit(cols ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaAuthRoleDo) Join(table schema.Tabler, on ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaAuthRoleDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaAuthRoleDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaAuthRoleDo) Group(cols ...field.Expr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaAuthRoleDo) Having(conds ...gen.Condition) IScaAuthRoleDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaAuthRoleDo) Limit(limit int) IScaAuthRoleDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaAuthRoleDo) Offset(offset int) IScaAuthRoleDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaAuthRoleDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthRoleDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaAuthRoleDo) Unscoped() IScaAuthRoleDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaAuthRoleDo) Create(values ...*model.ScaAuthRole) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaAuthRoleDo) CreateInBatches(values []*model.ScaAuthRole, 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 scaAuthRoleDo) Save(values ...*model.ScaAuthRole) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaAuthRoleDo) First() (*model.ScaAuthRole, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthRole), nil
+ }
+}
+
+func (s scaAuthRoleDo) Take() (*model.ScaAuthRole, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthRole), nil
+ }
+}
+
+func (s scaAuthRoleDo) Last() (*model.ScaAuthRole, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthRole), nil
+ }
+}
+
+func (s scaAuthRoleDo) Find() ([]*model.ScaAuthRole, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaAuthRole), err
+}
+
+func (s scaAuthRoleDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthRole, err error) {
+ buf := make([]*model.ScaAuthRole, 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 scaAuthRoleDo) FindInBatches(result *[]*model.ScaAuthRole, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaAuthRoleDo) Attrs(attrs ...field.AssignExpr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaAuthRoleDo) Assign(attrs ...field.AssignExpr) IScaAuthRoleDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaAuthRoleDo) Joins(fields ...field.RelationField) IScaAuthRoleDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaAuthRoleDo) Preload(fields ...field.RelationField) IScaAuthRoleDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaAuthRoleDo) FirstOrInit() (*model.ScaAuthRole, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthRole), nil
+ }
+}
+
+func (s scaAuthRoleDo) FirstOrCreate() (*model.ScaAuthRole, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthRole), nil
+ }
+}
+
+func (s scaAuthRoleDo) FindByPage(offset int, limit int) (result []*model.ScaAuthRole, 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 scaAuthRoleDo) 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 scaAuthRoleDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaAuthRoleDo) Delete(models ...*model.ScaAuthRole) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaAuthRoleDo) withDO(do gen.Dao) *scaAuthRoleDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_auth_user.gen.go b/app/file/api/model/mysql/query/sca_auth_user.gen.go
new file mode 100644
index 0000000..32e2b01
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_auth_user.gen.go
@@ -0,0 +1,442 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaAuthUser(db *gorm.DB, opts ...gen.DOOption) scaAuthUser {
+ _scaAuthUser := scaAuthUser{}
+
+ _scaAuthUser.scaAuthUserDo.UseDB(db, opts...)
+ _scaAuthUser.scaAuthUserDo.UseModel(&model.ScaAuthUser{})
+
+ tableName := _scaAuthUser.scaAuthUserDo.TableName()
+ _scaAuthUser.ALL = field.NewAsterisk(tableName)
+ _scaAuthUser.ID = field.NewInt64(tableName, "id")
+ _scaAuthUser.UID = field.NewString(tableName, "uid")
+ _scaAuthUser.Username = field.NewString(tableName, "username")
+ _scaAuthUser.Nickname = field.NewString(tableName, "nickname")
+ _scaAuthUser.Email = field.NewString(tableName, "email")
+ _scaAuthUser.Phone = field.NewString(tableName, "phone")
+ _scaAuthUser.Password = field.NewString(tableName, "password")
+ _scaAuthUser.Gender = field.NewInt64(tableName, "gender")
+ _scaAuthUser.Avatar = field.NewString(tableName, "avatar")
+ _scaAuthUser.Status = field.NewInt64(tableName, "status")
+ _scaAuthUser.Introduce = field.NewString(tableName, "introduce")
+ _scaAuthUser.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaAuthUser.Blog = field.NewString(tableName, "blog")
+ _scaAuthUser.Location = field.NewString(tableName, "location")
+ _scaAuthUser.Company = field.NewString(tableName, "company")
+ _scaAuthUser.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaAuthUser.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaAuthUser.fillFieldMap()
+
+ return _scaAuthUser
+}
+
+type scaAuthUser struct {
+ scaAuthUserDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 自增ID
+ UID field.String // 唯一ID
+ Username field.String // 用户名
+ Nickname field.String // 昵称
+ Email field.String // 邮箱
+ Phone field.String // 电话
+ Password field.String // 密码
+ Gender field.Int64 // 性别
+ Avatar field.String // 头像
+ Status field.Int64 // 状态 0 正常 1 封禁
+ Introduce field.String // 介绍
+ CreatedAt field.Time // 创建时间
+ Blog field.String // 博客
+ Location field.String // 地址
+ Company field.String // 公司
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaAuthUser) Table(newTableName string) *scaAuthUser {
+ s.scaAuthUserDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaAuthUser) As(alias string) *scaAuthUser {
+ s.scaAuthUserDo.DO = *(s.scaAuthUserDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaAuthUser) updateTableName(table string) *scaAuthUser {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.UID = field.NewString(table, "uid")
+ s.Username = field.NewString(table, "username")
+ s.Nickname = field.NewString(table, "nickname")
+ s.Email = field.NewString(table, "email")
+ s.Phone = field.NewString(table, "phone")
+ s.Password = field.NewString(table, "password")
+ s.Gender = field.NewInt64(table, "gender")
+ s.Avatar = field.NewString(table, "avatar")
+ s.Status = field.NewInt64(table, "status")
+ s.Introduce = field.NewString(table, "introduce")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.Blog = field.NewString(table, "blog")
+ s.Location = field.NewString(table, "location")
+ s.Company = field.NewString(table, "company")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaAuthUser) 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 *scaAuthUser) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 17)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["uid"] = s.UID
+ s.fieldMap["username"] = s.Username
+ s.fieldMap["nickname"] = s.Nickname
+ s.fieldMap["email"] = s.Email
+ s.fieldMap["phone"] = s.Phone
+ s.fieldMap["password"] = s.Password
+ s.fieldMap["gender"] = s.Gender
+ s.fieldMap["avatar"] = s.Avatar
+ s.fieldMap["status"] = s.Status
+ s.fieldMap["introduce"] = s.Introduce
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["blog"] = s.Blog
+ s.fieldMap["location"] = s.Location
+ s.fieldMap["company"] = s.Company
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaAuthUser) clone(db *gorm.DB) scaAuthUser {
+ s.scaAuthUserDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaAuthUser) replaceDB(db *gorm.DB) scaAuthUser {
+ s.scaAuthUserDo.ReplaceDB(db)
+ return s
+}
+
+type scaAuthUserDo struct{ gen.DO }
+
+type IScaAuthUserDo interface {
+ gen.SubQuery
+ Debug() IScaAuthUserDo
+ WithContext(ctx context.Context) IScaAuthUserDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaAuthUserDo
+ WriteDB() IScaAuthUserDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaAuthUserDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaAuthUserDo
+ Not(conds ...gen.Condition) IScaAuthUserDo
+ Or(conds ...gen.Condition) IScaAuthUserDo
+ Select(conds ...field.Expr) IScaAuthUserDo
+ Where(conds ...gen.Condition) IScaAuthUserDo
+ Order(conds ...field.Expr) IScaAuthUserDo
+ Distinct(cols ...field.Expr) IScaAuthUserDo
+ Omit(cols ...field.Expr) IScaAuthUserDo
+ Join(table schema.Tabler, on ...field.Expr) IScaAuthUserDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDo
+ Group(cols ...field.Expr) IScaAuthUserDo
+ Having(conds ...gen.Condition) IScaAuthUserDo
+ Limit(limit int) IScaAuthUserDo
+ Offset(offset int) IScaAuthUserDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthUserDo
+ Unscoped() IScaAuthUserDo
+ Create(values ...*model.ScaAuthUser) error
+ CreateInBatches(values []*model.ScaAuthUser, batchSize int) error
+ Save(values ...*model.ScaAuthUser) error
+ First() (*model.ScaAuthUser, error)
+ Take() (*model.ScaAuthUser, error)
+ Last() (*model.ScaAuthUser, error)
+ Find() ([]*model.ScaAuthUser, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthUser, err error)
+ FindInBatches(result *[]*model.ScaAuthUser, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaAuthUser) (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) IScaAuthUserDo
+ Assign(attrs ...field.AssignExpr) IScaAuthUserDo
+ Joins(fields ...field.RelationField) IScaAuthUserDo
+ Preload(fields ...field.RelationField) IScaAuthUserDo
+ FirstOrInit() (*model.ScaAuthUser, error)
+ FirstOrCreate() (*model.ScaAuthUser, error)
+ FindByPage(offset int, limit int) (result []*model.ScaAuthUser, 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) IScaAuthUserDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaAuthUserDo) Debug() IScaAuthUserDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaAuthUserDo) WithContext(ctx context.Context) IScaAuthUserDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaAuthUserDo) ReadDB() IScaAuthUserDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaAuthUserDo) WriteDB() IScaAuthUserDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaAuthUserDo) Session(config *gorm.Session) IScaAuthUserDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaAuthUserDo) Clauses(conds ...clause.Expression) IScaAuthUserDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaAuthUserDo) Returning(value interface{}, columns ...string) IScaAuthUserDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaAuthUserDo) Not(conds ...gen.Condition) IScaAuthUserDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaAuthUserDo) Or(conds ...gen.Condition) IScaAuthUserDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaAuthUserDo) Select(conds ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaAuthUserDo) Where(conds ...gen.Condition) IScaAuthUserDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaAuthUserDo) Order(conds ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaAuthUserDo) Distinct(cols ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaAuthUserDo) Omit(cols ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaAuthUserDo) Join(table schema.Tabler, on ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaAuthUserDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaAuthUserDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaAuthUserDo) Group(cols ...field.Expr) IScaAuthUserDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaAuthUserDo) Having(conds ...gen.Condition) IScaAuthUserDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaAuthUserDo) Limit(limit int) IScaAuthUserDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaAuthUserDo) Offset(offset int) IScaAuthUserDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaAuthUserDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthUserDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaAuthUserDo) Unscoped() IScaAuthUserDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaAuthUserDo) Create(values ...*model.ScaAuthUser) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaAuthUserDo) CreateInBatches(values []*model.ScaAuthUser, 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 scaAuthUserDo) Save(values ...*model.ScaAuthUser) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaAuthUserDo) First() (*model.ScaAuthUser, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUser), nil
+ }
+}
+
+func (s scaAuthUserDo) Take() (*model.ScaAuthUser, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUser), nil
+ }
+}
+
+func (s scaAuthUserDo) Last() (*model.ScaAuthUser, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUser), nil
+ }
+}
+
+func (s scaAuthUserDo) Find() ([]*model.ScaAuthUser, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaAuthUser), err
+}
+
+func (s scaAuthUserDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthUser, err error) {
+ buf := make([]*model.ScaAuthUser, 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 scaAuthUserDo) FindInBatches(result *[]*model.ScaAuthUser, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaAuthUserDo) Attrs(attrs ...field.AssignExpr) IScaAuthUserDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaAuthUserDo) Assign(attrs ...field.AssignExpr) IScaAuthUserDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaAuthUserDo) Joins(fields ...field.RelationField) IScaAuthUserDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaAuthUserDo) Preload(fields ...field.RelationField) IScaAuthUserDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaAuthUserDo) FirstOrInit() (*model.ScaAuthUser, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUser), nil
+ }
+}
+
+func (s scaAuthUserDo) FirstOrCreate() (*model.ScaAuthUser, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUser), nil
+ }
+}
+
+func (s scaAuthUserDo) FindByPage(offset int, limit int) (result []*model.ScaAuthUser, 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 scaAuthUserDo) 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 scaAuthUserDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaAuthUserDo) Delete(models ...*model.ScaAuthUser) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaAuthUserDo) withDO(do gen.Dao) *scaAuthUserDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_auth_user_device.gen.go b/app/file/api/model/mysql/query/sca_auth_user_device.gen.go
new file mode 100644
index 0000000..1741aab
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_auth_user_device.gen.go
@@ -0,0 +1,442 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaAuthUserDevice(db *gorm.DB, opts ...gen.DOOption) scaAuthUserDevice {
+ _scaAuthUserDevice := scaAuthUserDevice{}
+
+ _scaAuthUserDevice.scaAuthUserDeviceDo.UseDB(db, opts...)
+ _scaAuthUserDevice.scaAuthUserDeviceDo.UseModel(&model.ScaAuthUserDevice{})
+
+ tableName := _scaAuthUserDevice.scaAuthUserDeviceDo.TableName()
+ _scaAuthUserDevice.ALL = field.NewAsterisk(tableName)
+ _scaAuthUserDevice.ID = field.NewInt64(tableName, "id")
+ _scaAuthUserDevice.UserID = field.NewString(tableName, "user_id")
+ _scaAuthUserDevice.IP = field.NewString(tableName, "ip")
+ _scaAuthUserDevice.Location = field.NewString(tableName, "location")
+ _scaAuthUserDevice.Agent = field.NewString(tableName, "agent")
+ _scaAuthUserDevice.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaAuthUserDevice.Browser = field.NewString(tableName, "browser")
+ _scaAuthUserDevice.OperatingSystem = field.NewString(tableName, "operating_system")
+ _scaAuthUserDevice.BrowserVersion = field.NewString(tableName, "browser_version")
+ _scaAuthUserDevice.Mobile = field.NewInt64(tableName, "mobile")
+ _scaAuthUserDevice.Bot = field.NewInt64(tableName, "bot")
+ _scaAuthUserDevice.Mozilla = field.NewString(tableName, "mozilla")
+ _scaAuthUserDevice.Platform = field.NewString(tableName, "platform")
+ _scaAuthUserDevice.EngineName = field.NewString(tableName, "engine_name")
+ _scaAuthUserDevice.EngineVersion = field.NewString(tableName, "engine_version")
+ _scaAuthUserDevice.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaAuthUserDevice.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaAuthUserDevice.fillFieldMap()
+
+ return _scaAuthUserDevice
+}
+
+type scaAuthUserDevice struct {
+ scaAuthUserDeviceDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键ID
+ UserID field.String // 用户ID
+ IP field.String // 登录IP
+ Location field.String // 地址
+ Agent field.String // 设备信息
+ CreatedAt field.Time // 创建时间
+ Browser field.String // 浏览器
+ OperatingSystem field.String // 操作系统
+ BrowserVersion field.String // 浏览器版本
+ Mobile field.Int64 // 是否为手机 0否1是
+ Bot field.Int64 // 是否为bot 0否1是
+ Mozilla field.String // 火狐版本
+ Platform field.String // 平台
+ EngineName field.String // 引擎名称
+ EngineVersion field.String // 引擎版本
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaAuthUserDevice) Table(newTableName string) *scaAuthUserDevice {
+ s.scaAuthUserDeviceDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaAuthUserDevice) As(alias string) *scaAuthUserDevice {
+ s.scaAuthUserDeviceDo.DO = *(s.scaAuthUserDeviceDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaAuthUserDevice) updateTableName(table string) *scaAuthUserDevice {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.UserID = field.NewString(table, "user_id")
+ s.IP = field.NewString(table, "ip")
+ s.Location = field.NewString(table, "location")
+ s.Agent = field.NewString(table, "agent")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.Browser = field.NewString(table, "browser")
+ s.OperatingSystem = field.NewString(table, "operating_system")
+ s.BrowserVersion = field.NewString(table, "browser_version")
+ s.Mobile = field.NewInt64(table, "mobile")
+ s.Bot = field.NewInt64(table, "bot")
+ s.Mozilla = field.NewString(table, "mozilla")
+ s.Platform = field.NewString(table, "platform")
+ s.EngineName = field.NewString(table, "engine_name")
+ s.EngineVersion = field.NewString(table, "engine_version")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaAuthUserDevice) 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 *scaAuthUserDevice) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 17)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["user_id"] = s.UserID
+ s.fieldMap["ip"] = s.IP
+ s.fieldMap["location"] = s.Location
+ s.fieldMap["agent"] = s.Agent
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["browser"] = s.Browser
+ s.fieldMap["operating_system"] = s.OperatingSystem
+ s.fieldMap["browser_version"] = s.BrowserVersion
+ s.fieldMap["mobile"] = s.Mobile
+ s.fieldMap["bot"] = s.Bot
+ s.fieldMap["mozilla"] = s.Mozilla
+ s.fieldMap["platform"] = s.Platform
+ s.fieldMap["engine_name"] = s.EngineName
+ s.fieldMap["engine_version"] = s.EngineVersion
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaAuthUserDevice) clone(db *gorm.DB) scaAuthUserDevice {
+ s.scaAuthUserDeviceDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaAuthUserDevice) replaceDB(db *gorm.DB) scaAuthUserDevice {
+ s.scaAuthUserDeviceDo.ReplaceDB(db)
+ return s
+}
+
+type scaAuthUserDeviceDo struct{ gen.DO }
+
+type IScaAuthUserDeviceDo interface {
+ gen.SubQuery
+ Debug() IScaAuthUserDeviceDo
+ WithContext(ctx context.Context) IScaAuthUserDeviceDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaAuthUserDeviceDo
+ WriteDB() IScaAuthUserDeviceDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaAuthUserDeviceDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaAuthUserDeviceDo
+ Not(conds ...gen.Condition) IScaAuthUserDeviceDo
+ Or(conds ...gen.Condition) IScaAuthUserDeviceDo
+ Select(conds ...field.Expr) IScaAuthUserDeviceDo
+ Where(conds ...gen.Condition) IScaAuthUserDeviceDo
+ Order(conds ...field.Expr) IScaAuthUserDeviceDo
+ Distinct(cols ...field.Expr) IScaAuthUserDeviceDo
+ Omit(cols ...field.Expr) IScaAuthUserDeviceDo
+ Join(table schema.Tabler, on ...field.Expr) IScaAuthUserDeviceDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDeviceDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDeviceDo
+ Group(cols ...field.Expr) IScaAuthUserDeviceDo
+ Having(conds ...gen.Condition) IScaAuthUserDeviceDo
+ Limit(limit int) IScaAuthUserDeviceDo
+ Offset(offset int) IScaAuthUserDeviceDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthUserDeviceDo
+ Unscoped() IScaAuthUserDeviceDo
+ Create(values ...*model.ScaAuthUserDevice) error
+ CreateInBatches(values []*model.ScaAuthUserDevice, batchSize int) error
+ Save(values ...*model.ScaAuthUserDevice) error
+ First() (*model.ScaAuthUserDevice, error)
+ Take() (*model.ScaAuthUserDevice, error)
+ Last() (*model.ScaAuthUserDevice, error)
+ Find() ([]*model.ScaAuthUserDevice, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthUserDevice, err error)
+ FindInBatches(result *[]*model.ScaAuthUserDevice, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaAuthUserDevice) (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) IScaAuthUserDeviceDo
+ Assign(attrs ...field.AssignExpr) IScaAuthUserDeviceDo
+ Joins(fields ...field.RelationField) IScaAuthUserDeviceDo
+ Preload(fields ...field.RelationField) IScaAuthUserDeviceDo
+ FirstOrInit() (*model.ScaAuthUserDevice, error)
+ FirstOrCreate() (*model.ScaAuthUserDevice, error)
+ FindByPage(offset int, limit int) (result []*model.ScaAuthUserDevice, 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) IScaAuthUserDeviceDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaAuthUserDeviceDo) Debug() IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaAuthUserDeviceDo) WithContext(ctx context.Context) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaAuthUserDeviceDo) ReadDB() IScaAuthUserDeviceDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaAuthUserDeviceDo) WriteDB() IScaAuthUserDeviceDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaAuthUserDeviceDo) Session(config *gorm.Session) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaAuthUserDeviceDo) Clauses(conds ...clause.Expression) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaAuthUserDeviceDo) Returning(value interface{}, columns ...string) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaAuthUserDeviceDo) Not(conds ...gen.Condition) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaAuthUserDeviceDo) Or(conds ...gen.Condition) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaAuthUserDeviceDo) Select(conds ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaAuthUserDeviceDo) Where(conds ...gen.Condition) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaAuthUserDeviceDo) Order(conds ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaAuthUserDeviceDo) Distinct(cols ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaAuthUserDeviceDo) Omit(cols ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaAuthUserDeviceDo) Join(table schema.Tabler, on ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaAuthUserDeviceDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaAuthUserDeviceDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaAuthUserDeviceDo) Group(cols ...field.Expr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaAuthUserDeviceDo) Having(conds ...gen.Condition) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaAuthUserDeviceDo) Limit(limit int) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaAuthUserDeviceDo) Offset(offset int) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaAuthUserDeviceDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaAuthUserDeviceDo) Unscoped() IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaAuthUserDeviceDo) Create(values ...*model.ScaAuthUserDevice) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaAuthUserDeviceDo) CreateInBatches(values []*model.ScaAuthUserDevice, 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 scaAuthUserDeviceDo) Save(values ...*model.ScaAuthUserDevice) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaAuthUserDeviceDo) First() (*model.ScaAuthUserDevice, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserDevice), nil
+ }
+}
+
+func (s scaAuthUserDeviceDo) Take() (*model.ScaAuthUserDevice, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserDevice), nil
+ }
+}
+
+func (s scaAuthUserDeviceDo) Last() (*model.ScaAuthUserDevice, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserDevice), nil
+ }
+}
+
+func (s scaAuthUserDeviceDo) Find() ([]*model.ScaAuthUserDevice, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaAuthUserDevice), err
+}
+
+func (s scaAuthUserDeviceDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthUserDevice, err error) {
+ buf := make([]*model.ScaAuthUserDevice, 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 scaAuthUserDeviceDo) FindInBatches(result *[]*model.ScaAuthUserDevice, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaAuthUserDeviceDo) Attrs(attrs ...field.AssignExpr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaAuthUserDeviceDo) Assign(attrs ...field.AssignExpr) IScaAuthUserDeviceDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaAuthUserDeviceDo) Joins(fields ...field.RelationField) IScaAuthUserDeviceDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaAuthUserDeviceDo) Preload(fields ...field.RelationField) IScaAuthUserDeviceDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaAuthUserDeviceDo) FirstOrInit() (*model.ScaAuthUserDevice, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserDevice), nil
+ }
+}
+
+func (s scaAuthUserDeviceDo) FirstOrCreate() (*model.ScaAuthUserDevice, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserDevice), nil
+ }
+}
+
+func (s scaAuthUserDeviceDo) FindByPage(offset int, limit int) (result []*model.ScaAuthUserDevice, 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 scaAuthUserDeviceDo) 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 scaAuthUserDeviceDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaAuthUserDeviceDo) Delete(models ...*model.ScaAuthUserDevice) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaAuthUserDeviceDo) withDO(do gen.Dao) *scaAuthUserDeviceDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_auth_user_social.gen.go b/app/file/api/model/mysql/query/sca_auth_user_social.gen.go
new file mode 100644
index 0000000..1cc072e
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_auth_user_social.gen.go
@@ -0,0 +1,406 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaAuthUserSocial(db *gorm.DB, opts ...gen.DOOption) scaAuthUserSocial {
+ _scaAuthUserSocial := scaAuthUserSocial{}
+
+ _scaAuthUserSocial.scaAuthUserSocialDo.UseDB(db, opts...)
+ _scaAuthUserSocial.scaAuthUserSocialDo.UseModel(&model.ScaAuthUserSocial{})
+
+ tableName := _scaAuthUserSocial.scaAuthUserSocialDo.TableName()
+ _scaAuthUserSocial.ALL = field.NewAsterisk(tableName)
+ _scaAuthUserSocial.ID = field.NewInt64(tableName, "id")
+ _scaAuthUserSocial.UserID = field.NewString(tableName, "user_id")
+ _scaAuthUserSocial.OpenID = field.NewString(tableName, "open_id")
+ _scaAuthUserSocial.Source = field.NewString(tableName, "source")
+ _scaAuthUserSocial.Status = field.NewInt64(tableName, "status")
+ _scaAuthUserSocial.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaAuthUserSocial.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaAuthUserSocial.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaAuthUserSocial.fillFieldMap()
+
+ return _scaAuthUserSocial
+}
+
+type scaAuthUserSocial struct {
+ scaAuthUserSocialDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键ID
+ UserID field.String // 用户ID
+ OpenID field.String // 第三方用户的 open id
+ Source field.String // 第三方用户来源
+ Status field.Int64 // 状态 0正常 1 封禁
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaAuthUserSocial) Table(newTableName string) *scaAuthUserSocial {
+ s.scaAuthUserSocialDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaAuthUserSocial) As(alias string) *scaAuthUserSocial {
+ s.scaAuthUserSocialDo.DO = *(s.scaAuthUserSocialDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaAuthUserSocial) updateTableName(table string) *scaAuthUserSocial {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.UserID = field.NewString(table, "user_id")
+ s.OpenID = field.NewString(table, "open_id")
+ s.Source = field.NewString(table, "source")
+ s.Status = field.NewInt64(table, "status")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaAuthUserSocial) 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 *scaAuthUserSocial) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 8)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["user_id"] = s.UserID
+ s.fieldMap["open_id"] = s.OpenID
+ s.fieldMap["source"] = s.Source
+ s.fieldMap["status"] = s.Status
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaAuthUserSocial) clone(db *gorm.DB) scaAuthUserSocial {
+ s.scaAuthUserSocialDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaAuthUserSocial) replaceDB(db *gorm.DB) scaAuthUserSocial {
+ s.scaAuthUserSocialDo.ReplaceDB(db)
+ return s
+}
+
+type scaAuthUserSocialDo struct{ gen.DO }
+
+type IScaAuthUserSocialDo interface {
+ gen.SubQuery
+ Debug() IScaAuthUserSocialDo
+ WithContext(ctx context.Context) IScaAuthUserSocialDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaAuthUserSocialDo
+ WriteDB() IScaAuthUserSocialDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaAuthUserSocialDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaAuthUserSocialDo
+ Not(conds ...gen.Condition) IScaAuthUserSocialDo
+ Or(conds ...gen.Condition) IScaAuthUserSocialDo
+ Select(conds ...field.Expr) IScaAuthUserSocialDo
+ Where(conds ...gen.Condition) IScaAuthUserSocialDo
+ Order(conds ...field.Expr) IScaAuthUserSocialDo
+ Distinct(cols ...field.Expr) IScaAuthUserSocialDo
+ Omit(cols ...field.Expr) IScaAuthUserSocialDo
+ Join(table schema.Tabler, on ...field.Expr) IScaAuthUserSocialDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserSocialDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserSocialDo
+ Group(cols ...field.Expr) IScaAuthUserSocialDo
+ Having(conds ...gen.Condition) IScaAuthUserSocialDo
+ Limit(limit int) IScaAuthUserSocialDo
+ Offset(offset int) IScaAuthUserSocialDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthUserSocialDo
+ Unscoped() IScaAuthUserSocialDo
+ Create(values ...*model.ScaAuthUserSocial) error
+ CreateInBatches(values []*model.ScaAuthUserSocial, batchSize int) error
+ Save(values ...*model.ScaAuthUserSocial) error
+ First() (*model.ScaAuthUserSocial, error)
+ Take() (*model.ScaAuthUserSocial, error)
+ Last() (*model.ScaAuthUserSocial, error)
+ Find() ([]*model.ScaAuthUserSocial, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthUserSocial, err error)
+ FindInBatches(result *[]*model.ScaAuthUserSocial, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaAuthUserSocial) (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) IScaAuthUserSocialDo
+ Assign(attrs ...field.AssignExpr) IScaAuthUserSocialDo
+ Joins(fields ...field.RelationField) IScaAuthUserSocialDo
+ Preload(fields ...field.RelationField) IScaAuthUserSocialDo
+ FirstOrInit() (*model.ScaAuthUserSocial, error)
+ FirstOrCreate() (*model.ScaAuthUserSocial, error)
+ FindByPage(offset int, limit int) (result []*model.ScaAuthUserSocial, 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) IScaAuthUserSocialDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaAuthUserSocialDo) Debug() IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaAuthUserSocialDo) WithContext(ctx context.Context) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaAuthUserSocialDo) ReadDB() IScaAuthUserSocialDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaAuthUserSocialDo) WriteDB() IScaAuthUserSocialDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaAuthUserSocialDo) Session(config *gorm.Session) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaAuthUserSocialDo) Clauses(conds ...clause.Expression) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaAuthUserSocialDo) Returning(value interface{}, columns ...string) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaAuthUserSocialDo) Not(conds ...gen.Condition) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaAuthUserSocialDo) Or(conds ...gen.Condition) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaAuthUserSocialDo) Select(conds ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaAuthUserSocialDo) Where(conds ...gen.Condition) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaAuthUserSocialDo) Order(conds ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaAuthUserSocialDo) Distinct(cols ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaAuthUserSocialDo) Omit(cols ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaAuthUserSocialDo) Join(table schema.Tabler, on ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaAuthUserSocialDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaAuthUserSocialDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaAuthUserSocialDo) Group(cols ...field.Expr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaAuthUserSocialDo) Having(conds ...gen.Condition) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaAuthUserSocialDo) Limit(limit int) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaAuthUserSocialDo) Offset(offset int) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaAuthUserSocialDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaAuthUserSocialDo) Unscoped() IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaAuthUserSocialDo) Create(values ...*model.ScaAuthUserSocial) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaAuthUserSocialDo) CreateInBatches(values []*model.ScaAuthUserSocial, 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 scaAuthUserSocialDo) Save(values ...*model.ScaAuthUserSocial) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaAuthUserSocialDo) First() (*model.ScaAuthUserSocial, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserSocial), nil
+ }
+}
+
+func (s scaAuthUserSocialDo) Take() (*model.ScaAuthUserSocial, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserSocial), nil
+ }
+}
+
+func (s scaAuthUserSocialDo) Last() (*model.ScaAuthUserSocial, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserSocial), nil
+ }
+}
+
+func (s scaAuthUserSocialDo) Find() ([]*model.ScaAuthUserSocial, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaAuthUserSocial), err
+}
+
+func (s scaAuthUserSocialDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaAuthUserSocial, err error) {
+ buf := make([]*model.ScaAuthUserSocial, 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 scaAuthUserSocialDo) FindInBatches(result *[]*model.ScaAuthUserSocial, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaAuthUserSocialDo) Attrs(attrs ...field.AssignExpr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaAuthUserSocialDo) Assign(attrs ...field.AssignExpr) IScaAuthUserSocialDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaAuthUserSocialDo) Joins(fields ...field.RelationField) IScaAuthUserSocialDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaAuthUserSocialDo) Preload(fields ...field.RelationField) IScaAuthUserSocialDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaAuthUserSocialDo) FirstOrInit() (*model.ScaAuthUserSocial, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserSocial), nil
+ }
+}
+
+func (s scaAuthUserSocialDo) FirstOrCreate() (*model.ScaAuthUserSocial, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaAuthUserSocial), nil
+ }
+}
+
+func (s scaAuthUserSocialDo) FindByPage(offset int, limit int) (result []*model.ScaAuthUserSocial, 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 scaAuthUserSocialDo) 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 scaAuthUserSocialDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaAuthUserSocialDo) Delete(models ...*model.ScaAuthUserSocial) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaAuthUserSocialDo) withDO(do gen.Dao) *scaAuthUserSocialDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_comment_likes.gen.go b/app/file/api/model/mysql/query/sca_comment_likes.gen.go
new file mode 100644
index 0000000..c18828a
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_comment_likes.gen.go
@@ -0,0 +1,394 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaCommentLike(db *gorm.DB, opts ...gen.DOOption) scaCommentLike {
+ _scaCommentLike := scaCommentLike{}
+
+ _scaCommentLike.scaCommentLikeDo.UseDB(db, opts...)
+ _scaCommentLike.scaCommentLikeDo.UseModel(&model.ScaCommentLike{})
+
+ tableName := _scaCommentLike.scaCommentLikeDo.TableName()
+ _scaCommentLike.ALL = field.NewAsterisk(tableName)
+ _scaCommentLike.ID = field.NewInt64(tableName, "id")
+ _scaCommentLike.TopicID = field.NewString(tableName, "topic_id")
+ _scaCommentLike.UserID = field.NewString(tableName, "user_id")
+ _scaCommentLike.CommentID = field.NewInt64(tableName, "comment_id")
+ _scaCommentLike.LikeTime = field.NewTime(tableName, "like_time")
+
+ _scaCommentLike.fillFieldMap()
+
+ return _scaCommentLike
+}
+
+type scaCommentLike struct {
+ scaCommentLikeDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键id
+ TopicID field.String // 话题ID
+ UserID field.String // 用户ID
+ CommentID field.Int64 // 评论ID
+ LikeTime field.Time // 点赞时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaCommentLike) Table(newTableName string) *scaCommentLike {
+ s.scaCommentLikeDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaCommentLike) As(alias string) *scaCommentLike {
+ s.scaCommentLikeDo.DO = *(s.scaCommentLikeDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaCommentLike) updateTableName(table string) *scaCommentLike {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.TopicID = field.NewString(table, "topic_id")
+ s.UserID = field.NewString(table, "user_id")
+ s.CommentID = field.NewInt64(table, "comment_id")
+ s.LikeTime = field.NewTime(table, "like_time")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaCommentLike) 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 *scaCommentLike) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 5)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["topic_id"] = s.TopicID
+ s.fieldMap["user_id"] = s.UserID
+ s.fieldMap["comment_id"] = s.CommentID
+ s.fieldMap["like_time"] = s.LikeTime
+}
+
+func (s scaCommentLike) clone(db *gorm.DB) scaCommentLike {
+ s.scaCommentLikeDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaCommentLike) replaceDB(db *gorm.DB) scaCommentLike {
+ s.scaCommentLikeDo.ReplaceDB(db)
+ return s
+}
+
+type scaCommentLikeDo struct{ gen.DO }
+
+type IScaCommentLikeDo interface {
+ gen.SubQuery
+ Debug() IScaCommentLikeDo
+ WithContext(ctx context.Context) IScaCommentLikeDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaCommentLikeDo
+ WriteDB() IScaCommentLikeDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaCommentLikeDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaCommentLikeDo
+ Not(conds ...gen.Condition) IScaCommentLikeDo
+ Or(conds ...gen.Condition) IScaCommentLikeDo
+ Select(conds ...field.Expr) IScaCommentLikeDo
+ Where(conds ...gen.Condition) IScaCommentLikeDo
+ Order(conds ...field.Expr) IScaCommentLikeDo
+ Distinct(cols ...field.Expr) IScaCommentLikeDo
+ Omit(cols ...field.Expr) IScaCommentLikeDo
+ Join(table schema.Tabler, on ...field.Expr) IScaCommentLikeDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaCommentLikeDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaCommentLikeDo
+ Group(cols ...field.Expr) IScaCommentLikeDo
+ Having(conds ...gen.Condition) IScaCommentLikeDo
+ Limit(limit int) IScaCommentLikeDo
+ Offset(offset int) IScaCommentLikeDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaCommentLikeDo
+ Unscoped() IScaCommentLikeDo
+ Create(values ...*model.ScaCommentLike) error
+ CreateInBatches(values []*model.ScaCommentLike, batchSize int) error
+ Save(values ...*model.ScaCommentLike) error
+ First() (*model.ScaCommentLike, error)
+ Take() (*model.ScaCommentLike, error)
+ Last() (*model.ScaCommentLike, error)
+ Find() ([]*model.ScaCommentLike, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaCommentLike, err error)
+ FindInBatches(result *[]*model.ScaCommentLike, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaCommentLike) (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) IScaCommentLikeDo
+ Assign(attrs ...field.AssignExpr) IScaCommentLikeDo
+ Joins(fields ...field.RelationField) IScaCommentLikeDo
+ Preload(fields ...field.RelationField) IScaCommentLikeDo
+ FirstOrInit() (*model.ScaCommentLike, error)
+ FirstOrCreate() (*model.ScaCommentLike, error)
+ FindByPage(offset int, limit int) (result []*model.ScaCommentLike, 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) IScaCommentLikeDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaCommentLikeDo) Debug() IScaCommentLikeDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaCommentLikeDo) WithContext(ctx context.Context) IScaCommentLikeDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaCommentLikeDo) ReadDB() IScaCommentLikeDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaCommentLikeDo) WriteDB() IScaCommentLikeDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaCommentLikeDo) Session(config *gorm.Session) IScaCommentLikeDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaCommentLikeDo) Clauses(conds ...clause.Expression) IScaCommentLikeDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaCommentLikeDo) Returning(value interface{}, columns ...string) IScaCommentLikeDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaCommentLikeDo) Not(conds ...gen.Condition) IScaCommentLikeDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaCommentLikeDo) Or(conds ...gen.Condition) IScaCommentLikeDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaCommentLikeDo) Select(conds ...field.Expr) IScaCommentLikeDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaCommentLikeDo) Where(conds ...gen.Condition) IScaCommentLikeDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaCommentLikeDo) Order(conds ...field.Expr) IScaCommentLikeDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaCommentLikeDo) Distinct(cols ...field.Expr) IScaCommentLikeDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaCommentLikeDo) Omit(cols ...field.Expr) IScaCommentLikeDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaCommentLikeDo) Join(table schema.Tabler, on ...field.Expr) IScaCommentLikeDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaCommentLikeDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaCommentLikeDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaCommentLikeDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaCommentLikeDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaCommentLikeDo) Group(cols ...field.Expr) IScaCommentLikeDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaCommentLikeDo) Having(conds ...gen.Condition) IScaCommentLikeDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaCommentLikeDo) Limit(limit int) IScaCommentLikeDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaCommentLikeDo) Offset(offset int) IScaCommentLikeDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaCommentLikeDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaCommentLikeDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaCommentLikeDo) Unscoped() IScaCommentLikeDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaCommentLikeDo) Create(values ...*model.ScaCommentLike) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaCommentLikeDo) CreateInBatches(values []*model.ScaCommentLike, 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 scaCommentLikeDo) Save(values ...*model.ScaCommentLike) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaCommentLikeDo) First() (*model.ScaCommentLike, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaCommentLike), nil
+ }
+}
+
+func (s scaCommentLikeDo) Take() (*model.ScaCommentLike, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaCommentLike), nil
+ }
+}
+
+func (s scaCommentLikeDo) Last() (*model.ScaCommentLike, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaCommentLike), nil
+ }
+}
+
+func (s scaCommentLikeDo) Find() ([]*model.ScaCommentLike, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaCommentLike), err
+}
+
+func (s scaCommentLikeDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaCommentLike, err error) {
+ buf := make([]*model.ScaCommentLike, 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 scaCommentLikeDo) FindInBatches(result *[]*model.ScaCommentLike, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaCommentLikeDo) Attrs(attrs ...field.AssignExpr) IScaCommentLikeDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaCommentLikeDo) Assign(attrs ...field.AssignExpr) IScaCommentLikeDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaCommentLikeDo) Joins(fields ...field.RelationField) IScaCommentLikeDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaCommentLikeDo) Preload(fields ...field.RelationField) IScaCommentLikeDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaCommentLikeDo) FirstOrInit() (*model.ScaCommentLike, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaCommentLike), nil
+ }
+}
+
+func (s scaCommentLikeDo) FirstOrCreate() (*model.ScaCommentLike, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaCommentLike), nil
+ }
+}
+
+func (s scaCommentLikeDo) FindByPage(offset int, limit int) (result []*model.ScaCommentLike, 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 scaCommentLikeDo) 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 scaCommentLikeDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaCommentLikeDo) Delete(models ...*model.ScaCommentLike) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaCommentLikeDo) withDO(do gen.Dao) *scaCommentLikeDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_comment_reply.gen.go b/app/file/api/model/mysql/query/sca_comment_reply.gen.go
new file mode 100644
index 0000000..8dc2856
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_comment_reply.gen.go
@@ -0,0 +1,458 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaCommentReply(db *gorm.DB, opts ...gen.DOOption) scaCommentReply {
+ _scaCommentReply := scaCommentReply{}
+
+ _scaCommentReply.scaCommentReplyDo.UseDB(db, opts...)
+ _scaCommentReply.scaCommentReplyDo.UseModel(&model.ScaCommentReply{})
+
+ tableName := _scaCommentReply.scaCommentReplyDo.TableName()
+ _scaCommentReply.ALL = field.NewAsterisk(tableName)
+ _scaCommentReply.ID = field.NewInt64(tableName, "id")
+ _scaCommentReply.UserID = field.NewString(tableName, "user_id")
+ _scaCommentReply.TopicID = field.NewString(tableName, "topic_id")
+ _scaCommentReply.TopicType = field.NewInt64(tableName, "topic_type")
+ _scaCommentReply.Content = field.NewString(tableName, "content")
+ _scaCommentReply.CommentType = field.NewInt64(tableName, "comment_type")
+ _scaCommentReply.ReplyTo = field.NewInt64(tableName, "reply_to")
+ _scaCommentReply.ReplyID = field.NewInt64(tableName, "reply_id")
+ _scaCommentReply.ReplyUser = field.NewString(tableName, "reply_user")
+ _scaCommentReply.Author = field.NewInt64(tableName, "author")
+ _scaCommentReply.Likes = field.NewInt64(tableName, "likes")
+ _scaCommentReply.ReplyCount = field.NewInt64(tableName, "reply_count")
+ _scaCommentReply.Browser = field.NewString(tableName, "browser")
+ _scaCommentReply.OperatingSystem = field.NewString(tableName, "operating_system")
+ _scaCommentReply.CommentIP = field.NewString(tableName, "comment_ip")
+ _scaCommentReply.Location = field.NewString(tableName, "location")
+ _scaCommentReply.Agent = field.NewString(tableName, "agent")
+ _scaCommentReply.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaCommentReply.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaCommentReply.Version = field.NewField(tableName, "version")
+ _scaCommentReply.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaCommentReply.fillFieldMap()
+
+ return _scaCommentReply
+}
+
+type scaCommentReply struct {
+ scaCommentReplyDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键id
+ UserID field.String // 评论用户id
+ TopicID field.String // 评论话题id
+ TopicType field.Int64 // 话题类型
+ Content field.String // 评论内容
+ CommentType field.Int64 // 评论类型 0评论 1 回复
+ ReplyTo field.Int64 // 回复子评论ID
+ ReplyID field.Int64 // 回复父评论Id
+ ReplyUser field.String // 回复人id
+ Author field.Int64 // 评论回复是否作者 0否 1是
+ Likes field.Int64 // 点赞数
+ ReplyCount field.Int64 // 回复数量
+ Browser field.String // 浏览器
+ OperatingSystem field.String // 操作系统
+ CommentIP field.String // IP地址
+ Location field.String // 地址
+ Agent field.String // 设备信息
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ Version field.Field // 版本
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaCommentReply) Table(newTableName string) *scaCommentReply {
+ s.scaCommentReplyDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaCommentReply) As(alias string) *scaCommentReply {
+ s.scaCommentReplyDo.DO = *(s.scaCommentReplyDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaCommentReply) updateTableName(table string) *scaCommentReply {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.UserID = field.NewString(table, "user_id")
+ s.TopicID = field.NewString(table, "topic_id")
+ s.TopicType = field.NewInt64(table, "topic_type")
+ s.Content = field.NewString(table, "content")
+ s.CommentType = field.NewInt64(table, "comment_type")
+ s.ReplyTo = field.NewInt64(table, "reply_to")
+ s.ReplyID = field.NewInt64(table, "reply_id")
+ s.ReplyUser = field.NewString(table, "reply_user")
+ s.Author = field.NewInt64(table, "author")
+ s.Likes = field.NewInt64(table, "likes")
+ s.ReplyCount = field.NewInt64(table, "reply_count")
+ s.Browser = field.NewString(table, "browser")
+ s.OperatingSystem = field.NewString(table, "operating_system")
+ s.CommentIP = field.NewString(table, "comment_ip")
+ s.Location = field.NewString(table, "location")
+ s.Agent = field.NewString(table, "agent")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.Version = field.NewField(table, "version")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaCommentReply) 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 *scaCommentReply) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 21)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["user_id"] = s.UserID
+ s.fieldMap["topic_id"] = s.TopicID
+ s.fieldMap["topic_type"] = s.TopicType
+ s.fieldMap["content"] = s.Content
+ s.fieldMap["comment_type"] = s.CommentType
+ s.fieldMap["reply_to"] = s.ReplyTo
+ s.fieldMap["reply_id"] = s.ReplyID
+ s.fieldMap["reply_user"] = s.ReplyUser
+ s.fieldMap["author"] = s.Author
+ s.fieldMap["likes"] = s.Likes
+ s.fieldMap["reply_count"] = s.ReplyCount
+ s.fieldMap["browser"] = s.Browser
+ s.fieldMap["operating_system"] = s.OperatingSystem
+ s.fieldMap["comment_ip"] = s.CommentIP
+ s.fieldMap["location"] = s.Location
+ s.fieldMap["agent"] = s.Agent
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["version"] = s.Version
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaCommentReply) clone(db *gorm.DB) scaCommentReply {
+ s.scaCommentReplyDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaCommentReply) replaceDB(db *gorm.DB) scaCommentReply {
+ s.scaCommentReplyDo.ReplaceDB(db)
+ return s
+}
+
+type scaCommentReplyDo struct{ gen.DO }
+
+type IScaCommentReplyDo interface {
+ gen.SubQuery
+ Debug() IScaCommentReplyDo
+ WithContext(ctx context.Context) IScaCommentReplyDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaCommentReplyDo
+ WriteDB() IScaCommentReplyDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaCommentReplyDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaCommentReplyDo
+ Not(conds ...gen.Condition) IScaCommentReplyDo
+ Or(conds ...gen.Condition) IScaCommentReplyDo
+ Select(conds ...field.Expr) IScaCommentReplyDo
+ Where(conds ...gen.Condition) IScaCommentReplyDo
+ Order(conds ...field.Expr) IScaCommentReplyDo
+ Distinct(cols ...field.Expr) IScaCommentReplyDo
+ Omit(cols ...field.Expr) IScaCommentReplyDo
+ Join(table schema.Tabler, on ...field.Expr) IScaCommentReplyDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaCommentReplyDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaCommentReplyDo
+ Group(cols ...field.Expr) IScaCommentReplyDo
+ Having(conds ...gen.Condition) IScaCommentReplyDo
+ Limit(limit int) IScaCommentReplyDo
+ Offset(offset int) IScaCommentReplyDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaCommentReplyDo
+ Unscoped() IScaCommentReplyDo
+ Create(values ...*model.ScaCommentReply) error
+ CreateInBatches(values []*model.ScaCommentReply, batchSize int) error
+ Save(values ...*model.ScaCommentReply) error
+ First() (*model.ScaCommentReply, error)
+ Take() (*model.ScaCommentReply, error)
+ Last() (*model.ScaCommentReply, error)
+ Find() ([]*model.ScaCommentReply, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaCommentReply, err error)
+ FindInBatches(result *[]*model.ScaCommentReply, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaCommentReply) (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) IScaCommentReplyDo
+ Assign(attrs ...field.AssignExpr) IScaCommentReplyDo
+ Joins(fields ...field.RelationField) IScaCommentReplyDo
+ Preload(fields ...field.RelationField) IScaCommentReplyDo
+ FirstOrInit() (*model.ScaCommentReply, error)
+ FirstOrCreate() (*model.ScaCommentReply, error)
+ FindByPage(offset int, limit int) (result []*model.ScaCommentReply, 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) IScaCommentReplyDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaCommentReplyDo) Debug() IScaCommentReplyDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaCommentReplyDo) WithContext(ctx context.Context) IScaCommentReplyDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaCommentReplyDo) ReadDB() IScaCommentReplyDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaCommentReplyDo) WriteDB() IScaCommentReplyDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaCommentReplyDo) Session(config *gorm.Session) IScaCommentReplyDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaCommentReplyDo) Clauses(conds ...clause.Expression) IScaCommentReplyDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaCommentReplyDo) Returning(value interface{}, columns ...string) IScaCommentReplyDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaCommentReplyDo) Not(conds ...gen.Condition) IScaCommentReplyDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaCommentReplyDo) Or(conds ...gen.Condition) IScaCommentReplyDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaCommentReplyDo) Select(conds ...field.Expr) IScaCommentReplyDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaCommentReplyDo) Where(conds ...gen.Condition) IScaCommentReplyDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaCommentReplyDo) Order(conds ...field.Expr) IScaCommentReplyDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaCommentReplyDo) Distinct(cols ...field.Expr) IScaCommentReplyDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaCommentReplyDo) Omit(cols ...field.Expr) IScaCommentReplyDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaCommentReplyDo) Join(table schema.Tabler, on ...field.Expr) IScaCommentReplyDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaCommentReplyDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaCommentReplyDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaCommentReplyDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaCommentReplyDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaCommentReplyDo) Group(cols ...field.Expr) IScaCommentReplyDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaCommentReplyDo) Having(conds ...gen.Condition) IScaCommentReplyDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaCommentReplyDo) Limit(limit int) IScaCommentReplyDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaCommentReplyDo) Offset(offset int) IScaCommentReplyDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaCommentReplyDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaCommentReplyDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaCommentReplyDo) Unscoped() IScaCommentReplyDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaCommentReplyDo) Create(values ...*model.ScaCommentReply) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaCommentReplyDo) CreateInBatches(values []*model.ScaCommentReply, 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 scaCommentReplyDo) Save(values ...*model.ScaCommentReply) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaCommentReplyDo) First() (*model.ScaCommentReply, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaCommentReply), nil
+ }
+}
+
+func (s scaCommentReplyDo) Take() (*model.ScaCommentReply, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaCommentReply), nil
+ }
+}
+
+func (s scaCommentReplyDo) Last() (*model.ScaCommentReply, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaCommentReply), nil
+ }
+}
+
+func (s scaCommentReplyDo) Find() ([]*model.ScaCommentReply, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaCommentReply), err
+}
+
+func (s scaCommentReplyDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaCommentReply, err error) {
+ buf := make([]*model.ScaCommentReply, 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 scaCommentReplyDo) FindInBatches(result *[]*model.ScaCommentReply, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaCommentReplyDo) Attrs(attrs ...field.AssignExpr) IScaCommentReplyDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaCommentReplyDo) Assign(attrs ...field.AssignExpr) IScaCommentReplyDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaCommentReplyDo) Joins(fields ...field.RelationField) IScaCommentReplyDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaCommentReplyDo) Preload(fields ...field.RelationField) IScaCommentReplyDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaCommentReplyDo) FirstOrInit() (*model.ScaCommentReply, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaCommentReply), nil
+ }
+}
+
+func (s scaCommentReplyDo) FirstOrCreate() (*model.ScaCommentReply, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaCommentReply), nil
+ }
+}
+
+func (s scaCommentReplyDo) FindByPage(offset int, limit int) (result []*model.ScaCommentReply, 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 scaCommentReplyDo) 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 scaCommentReplyDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaCommentReplyDo) Delete(models ...*model.ScaCommentReply) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaCommentReplyDo) withDO(do gen.Dao) *scaCommentReplyDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_file_folder.gen.go b/app/file/api/model/mysql/query/sca_file_folder.gen.go
new file mode 100644
index 0000000..ece42d3
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_file_folder.gen.go
@@ -0,0 +1,410 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaFileFolder(db *gorm.DB, opts ...gen.DOOption) scaFileFolder {
+ _scaFileFolder := scaFileFolder{}
+
+ _scaFileFolder.scaFileFolderDo.UseDB(db, opts...)
+ _scaFileFolder.scaFileFolderDo.UseModel(&model.ScaFileFolder{})
+
+ tableName := _scaFileFolder.scaFileFolderDo.TableName()
+ _scaFileFolder.ALL = field.NewAsterisk(tableName)
+ _scaFileFolder.ID = field.NewInt64(tableName, "id")
+ _scaFileFolder.FolderName = field.NewString(tableName, "folder_name")
+ _scaFileFolder.ParentFolderID = field.NewInt64(tableName, "parent_folder_id")
+ _scaFileFolder.FolderAddr = field.NewString(tableName, "folder_addr")
+ _scaFileFolder.UserID = field.NewString(tableName, "user_id")
+ _scaFileFolder.FolderSource = field.NewInt64(tableName, "folder_source")
+ _scaFileFolder.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaFileFolder.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaFileFolder.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaFileFolder.fillFieldMap()
+
+ return _scaFileFolder
+}
+
+type scaFileFolder struct {
+ scaFileFolderDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键
+ FolderName field.String // 文件夹名称
+ ParentFolderID field.Int64 // 父文件夹编号
+ FolderAddr field.String // 文件夹名称
+ UserID field.String // 用户编号
+ FolderSource field.Int64 // 文件夹来源 0相册 1 评论
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaFileFolder) Table(newTableName string) *scaFileFolder {
+ s.scaFileFolderDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaFileFolder) As(alias string) *scaFileFolder {
+ s.scaFileFolderDo.DO = *(s.scaFileFolderDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaFileFolder) updateTableName(table string) *scaFileFolder {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.FolderName = field.NewString(table, "folder_name")
+ s.ParentFolderID = field.NewInt64(table, "parent_folder_id")
+ s.FolderAddr = field.NewString(table, "folder_addr")
+ s.UserID = field.NewString(table, "user_id")
+ s.FolderSource = field.NewInt64(table, "folder_source")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaFileFolder) 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 *scaFileFolder) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 9)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["folder_name"] = s.FolderName
+ s.fieldMap["parent_folder_id"] = s.ParentFolderID
+ s.fieldMap["folder_addr"] = s.FolderAddr
+ s.fieldMap["user_id"] = s.UserID
+ s.fieldMap["folder_source"] = s.FolderSource
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaFileFolder) clone(db *gorm.DB) scaFileFolder {
+ s.scaFileFolderDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaFileFolder) replaceDB(db *gorm.DB) scaFileFolder {
+ s.scaFileFolderDo.ReplaceDB(db)
+ return s
+}
+
+type scaFileFolderDo struct{ gen.DO }
+
+type IScaFileFolderDo interface {
+ gen.SubQuery
+ Debug() IScaFileFolderDo
+ WithContext(ctx context.Context) IScaFileFolderDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaFileFolderDo
+ WriteDB() IScaFileFolderDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaFileFolderDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaFileFolderDo
+ Not(conds ...gen.Condition) IScaFileFolderDo
+ Or(conds ...gen.Condition) IScaFileFolderDo
+ Select(conds ...field.Expr) IScaFileFolderDo
+ Where(conds ...gen.Condition) IScaFileFolderDo
+ Order(conds ...field.Expr) IScaFileFolderDo
+ Distinct(cols ...field.Expr) IScaFileFolderDo
+ Omit(cols ...field.Expr) IScaFileFolderDo
+ Join(table schema.Tabler, on ...field.Expr) IScaFileFolderDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaFileFolderDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaFileFolderDo
+ Group(cols ...field.Expr) IScaFileFolderDo
+ Having(conds ...gen.Condition) IScaFileFolderDo
+ Limit(limit int) IScaFileFolderDo
+ Offset(offset int) IScaFileFolderDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaFileFolderDo
+ Unscoped() IScaFileFolderDo
+ Create(values ...*model.ScaFileFolder) error
+ CreateInBatches(values []*model.ScaFileFolder, batchSize int) error
+ Save(values ...*model.ScaFileFolder) error
+ First() (*model.ScaFileFolder, error)
+ Take() (*model.ScaFileFolder, error)
+ Last() (*model.ScaFileFolder, error)
+ Find() ([]*model.ScaFileFolder, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaFileFolder, err error)
+ FindInBatches(result *[]*model.ScaFileFolder, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaFileFolder) (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) IScaFileFolderDo
+ Assign(attrs ...field.AssignExpr) IScaFileFolderDo
+ Joins(fields ...field.RelationField) IScaFileFolderDo
+ Preload(fields ...field.RelationField) IScaFileFolderDo
+ FirstOrInit() (*model.ScaFileFolder, error)
+ FirstOrCreate() (*model.ScaFileFolder, error)
+ FindByPage(offset int, limit int) (result []*model.ScaFileFolder, 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) IScaFileFolderDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaFileFolderDo) Debug() IScaFileFolderDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaFileFolderDo) WithContext(ctx context.Context) IScaFileFolderDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaFileFolderDo) ReadDB() IScaFileFolderDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaFileFolderDo) WriteDB() IScaFileFolderDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaFileFolderDo) Session(config *gorm.Session) IScaFileFolderDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaFileFolderDo) Clauses(conds ...clause.Expression) IScaFileFolderDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaFileFolderDo) Returning(value interface{}, columns ...string) IScaFileFolderDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaFileFolderDo) Not(conds ...gen.Condition) IScaFileFolderDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaFileFolderDo) Or(conds ...gen.Condition) IScaFileFolderDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaFileFolderDo) Select(conds ...field.Expr) IScaFileFolderDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaFileFolderDo) Where(conds ...gen.Condition) IScaFileFolderDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaFileFolderDo) Order(conds ...field.Expr) IScaFileFolderDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaFileFolderDo) Distinct(cols ...field.Expr) IScaFileFolderDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaFileFolderDo) Omit(cols ...field.Expr) IScaFileFolderDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaFileFolderDo) Join(table schema.Tabler, on ...field.Expr) IScaFileFolderDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaFileFolderDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaFileFolderDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaFileFolderDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaFileFolderDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaFileFolderDo) Group(cols ...field.Expr) IScaFileFolderDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaFileFolderDo) Having(conds ...gen.Condition) IScaFileFolderDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaFileFolderDo) Limit(limit int) IScaFileFolderDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaFileFolderDo) Offset(offset int) IScaFileFolderDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaFileFolderDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaFileFolderDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaFileFolderDo) Unscoped() IScaFileFolderDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaFileFolderDo) Create(values ...*model.ScaFileFolder) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaFileFolderDo) CreateInBatches(values []*model.ScaFileFolder, 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 scaFileFolderDo) Save(values ...*model.ScaFileFolder) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaFileFolderDo) First() (*model.ScaFileFolder, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileFolder), nil
+ }
+}
+
+func (s scaFileFolderDo) Take() (*model.ScaFileFolder, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileFolder), nil
+ }
+}
+
+func (s scaFileFolderDo) Last() (*model.ScaFileFolder, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileFolder), nil
+ }
+}
+
+func (s scaFileFolderDo) Find() ([]*model.ScaFileFolder, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaFileFolder), err
+}
+
+func (s scaFileFolderDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaFileFolder, err error) {
+ buf := make([]*model.ScaFileFolder, 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 scaFileFolderDo) FindInBatches(result *[]*model.ScaFileFolder, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaFileFolderDo) Attrs(attrs ...field.AssignExpr) IScaFileFolderDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaFileFolderDo) Assign(attrs ...field.AssignExpr) IScaFileFolderDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaFileFolderDo) Joins(fields ...field.RelationField) IScaFileFolderDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaFileFolderDo) Preload(fields ...field.RelationField) IScaFileFolderDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaFileFolderDo) FirstOrInit() (*model.ScaFileFolder, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileFolder), nil
+ }
+}
+
+func (s scaFileFolderDo) FirstOrCreate() (*model.ScaFileFolder, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileFolder), nil
+ }
+}
+
+func (s scaFileFolderDo) FindByPage(offset int, limit int) (result []*model.ScaFileFolder, 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 scaFileFolderDo) 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 scaFileFolderDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaFileFolderDo) Delete(models ...*model.ScaFileFolder) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaFileFolderDo) withDO(do gen.Dao) *scaFileFolderDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_file_info.gen.go b/app/file/api/model/mysql/query/sca_file_info.gen.go
new file mode 100644
index 0000000..ae66794
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_file_info.gen.go
@@ -0,0 +1,422 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaFileInfo(db *gorm.DB, opts ...gen.DOOption) scaFileInfo {
+ _scaFileInfo := scaFileInfo{}
+
+ _scaFileInfo.scaFileInfoDo.UseDB(db, opts...)
+ _scaFileInfo.scaFileInfoDo.UseModel(&model.ScaFileInfo{})
+
+ tableName := _scaFileInfo.scaFileInfoDo.TableName()
+ _scaFileInfo.ALL = field.NewAsterisk(tableName)
+ _scaFileInfo.ID = field.NewInt64(tableName, "id")
+ _scaFileInfo.FileName = field.NewString(tableName, "file_name")
+ _scaFileInfo.FileSize = field.NewFloat64(tableName, "file_size")
+ _scaFileInfo.FileTypeID = field.NewInt64(tableName, "file_type_id")
+ _scaFileInfo.UploadTime = field.NewTime(tableName, "upload_time")
+ _scaFileInfo.FolderID = field.NewInt64(tableName, "folder_id")
+ _scaFileInfo.UserID = field.NewString(tableName, "user_id")
+ _scaFileInfo.FileSource = field.NewInt64(tableName, "file_source")
+ _scaFileInfo.Status = field.NewInt64(tableName, "status")
+ _scaFileInfo.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaFileInfo.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaFileInfo.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaFileInfo.fillFieldMap()
+
+ return _scaFileInfo
+}
+
+type scaFileInfo struct {
+ scaFileInfoDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键
+ FileName field.String // 文件名
+ FileSize field.Float64 // 文件大小
+ FileTypeID field.Int64 // 文件类型编号
+ UploadTime field.Time // 上传时间
+ FolderID field.Int64 // 文件夹编号
+ UserID field.String // 用户编号
+ FileSource field.Int64 // 文件来源 0 相册 1 评论
+ Status field.Int64 // 文件状态
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaFileInfo) Table(newTableName string) *scaFileInfo {
+ s.scaFileInfoDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaFileInfo) As(alias string) *scaFileInfo {
+ s.scaFileInfoDo.DO = *(s.scaFileInfoDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaFileInfo) updateTableName(table string) *scaFileInfo {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.FileName = field.NewString(table, "file_name")
+ s.FileSize = field.NewFloat64(table, "file_size")
+ s.FileTypeID = field.NewInt64(table, "file_type_id")
+ s.UploadTime = field.NewTime(table, "upload_time")
+ s.FolderID = field.NewInt64(table, "folder_id")
+ s.UserID = field.NewString(table, "user_id")
+ s.FileSource = field.NewInt64(table, "file_source")
+ s.Status = field.NewInt64(table, "status")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaFileInfo) 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 *scaFileInfo) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 12)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["file_name"] = s.FileName
+ s.fieldMap["file_size"] = s.FileSize
+ s.fieldMap["file_type_id"] = s.FileTypeID
+ s.fieldMap["upload_time"] = s.UploadTime
+ s.fieldMap["folder_id"] = s.FolderID
+ s.fieldMap["user_id"] = s.UserID
+ s.fieldMap["file_source"] = s.FileSource
+ s.fieldMap["status"] = s.Status
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaFileInfo) clone(db *gorm.DB) scaFileInfo {
+ s.scaFileInfoDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaFileInfo) replaceDB(db *gorm.DB) scaFileInfo {
+ s.scaFileInfoDo.ReplaceDB(db)
+ return s
+}
+
+type scaFileInfoDo struct{ gen.DO }
+
+type IScaFileInfoDo interface {
+ gen.SubQuery
+ Debug() IScaFileInfoDo
+ WithContext(ctx context.Context) IScaFileInfoDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaFileInfoDo
+ WriteDB() IScaFileInfoDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaFileInfoDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaFileInfoDo
+ Not(conds ...gen.Condition) IScaFileInfoDo
+ Or(conds ...gen.Condition) IScaFileInfoDo
+ Select(conds ...field.Expr) IScaFileInfoDo
+ Where(conds ...gen.Condition) IScaFileInfoDo
+ Order(conds ...field.Expr) IScaFileInfoDo
+ Distinct(cols ...field.Expr) IScaFileInfoDo
+ Omit(cols ...field.Expr) IScaFileInfoDo
+ Join(table schema.Tabler, on ...field.Expr) IScaFileInfoDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaFileInfoDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaFileInfoDo
+ Group(cols ...field.Expr) IScaFileInfoDo
+ Having(conds ...gen.Condition) IScaFileInfoDo
+ Limit(limit int) IScaFileInfoDo
+ Offset(offset int) IScaFileInfoDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaFileInfoDo
+ Unscoped() IScaFileInfoDo
+ Create(values ...*model.ScaFileInfo) error
+ CreateInBatches(values []*model.ScaFileInfo, batchSize int) error
+ Save(values ...*model.ScaFileInfo) error
+ First() (*model.ScaFileInfo, error)
+ Take() (*model.ScaFileInfo, error)
+ Last() (*model.ScaFileInfo, error)
+ Find() ([]*model.ScaFileInfo, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaFileInfo, err error)
+ FindInBatches(result *[]*model.ScaFileInfo, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaFileInfo) (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) IScaFileInfoDo
+ Assign(attrs ...field.AssignExpr) IScaFileInfoDo
+ Joins(fields ...field.RelationField) IScaFileInfoDo
+ Preload(fields ...field.RelationField) IScaFileInfoDo
+ FirstOrInit() (*model.ScaFileInfo, error)
+ FirstOrCreate() (*model.ScaFileInfo, error)
+ FindByPage(offset int, limit int) (result []*model.ScaFileInfo, 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) IScaFileInfoDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaFileInfoDo) Debug() IScaFileInfoDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaFileInfoDo) WithContext(ctx context.Context) IScaFileInfoDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaFileInfoDo) ReadDB() IScaFileInfoDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaFileInfoDo) WriteDB() IScaFileInfoDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaFileInfoDo) Session(config *gorm.Session) IScaFileInfoDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaFileInfoDo) Clauses(conds ...clause.Expression) IScaFileInfoDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaFileInfoDo) Returning(value interface{}, columns ...string) IScaFileInfoDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaFileInfoDo) Not(conds ...gen.Condition) IScaFileInfoDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaFileInfoDo) Or(conds ...gen.Condition) IScaFileInfoDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaFileInfoDo) Select(conds ...field.Expr) IScaFileInfoDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaFileInfoDo) Where(conds ...gen.Condition) IScaFileInfoDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaFileInfoDo) Order(conds ...field.Expr) IScaFileInfoDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaFileInfoDo) Distinct(cols ...field.Expr) IScaFileInfoDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaFileInfoDo) Omit(cols ...field.Expr) IScaFileInfoDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaFileInfoDo) Join(table schema.Tabler, on ...field.Expr) IScaFileInfoDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaFileInfoDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaFileInfoDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaFileInfoDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaFileInfoDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaFileInfoDo) Group(cols ...field.Expr) IScaFileInfoDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaFileInfoDo) Having(conds ...gen.Condition) IScaFileInfoDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaFileInfoDo) Limit(limit int) IScaFileInfoDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaFileInfoDo) Offset(offset int) IScaFileInfoDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaFileInfoDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaFileInfoDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaFileInfoDo) Unscoped() IScaFileInfoDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaFileInfoDo) Create(values ...*model.ScaFileInfo) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaFileInfoDo) CreateInBatches(values []*model.ScaFileInfo, 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 scaFileInfoDo) Save(values ...*model.ScaFileInfo) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaFileInfoDo) First() (*model.ScaFileInfo, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileInfo), nil
+ }
+}
+
+func (s scaFileInfoDo) Take() (*model.ScaFileInfo, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileInfo), nil
+ }
+}
+
+func (s scaFileInfoDo) Last() (*model.ScaFileInfo, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileInfo), nil
+ }
+}
+
+func (s scaFileInfoDo) Find() ([]*model.ScaFileInfo, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaFileInfo), err
+}
+
+func (s scaFileInfoDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaFileInfo, err error) {
+ buf := make([]*model.ScaFileInfo, 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 scaFileInfoDo) FindInBatches(result *[]*model.ScaFileInfo, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaFileInfoDo) Attrs(attrs ...field.AssignExpr) IScaFileInfoDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaFileInfoDo) Assign(attrs ...field.AssignExpr) IScaFileInfoDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaFileInfoDo) Joins(fields ...field.RelationField) IScaFileInfoDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaFileInfoDo) Preload(fields ...field.RelationField) IScaFileInfoDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaFileInfoDo) FirstOrInit() (*model.ScaFileInfo, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileInfo), nil
+ }
+}
+
+func (s scaFileInfoDo) FirstOrCreate() (*model.ScaFileInfo, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileInfo), nil
+ }
+}
+
+func (s scaFileInfoDo) FindByPage(offset int, limit int) (result []*model.ScaFileInfo, 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 scaFileInfoDo) 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 scaFileInfoDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaFileInfoDo) Delete(models ...*model.ScaFileInfo) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaFileInfoDo) withDO(do gen.Dao) *scaFileInfoDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_file_recycle.gen.go b/app/file/api/model/mysql/query/sca_file_recycle.gen.go
new file mode 100644
index 0000000..3001dbd
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_file_recycle.gen.go
@@ -0,0 +1,406 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaFileRecycle(db *gorm.DB, opts ...gen.DOOption) scaFileRecycle {
+ _scaFileRecycle := scaFileRecycle{}
+
+ _scaFileRecycle.scaFileRecycleDo.UseDB(db, opts...)
+ _scaFileRecycle.scaFileRecycleDo.UseModel(&model.ScaFileRecycle{})
+
+ tableName := _scaFileRecycle.scaFileRecycleDo.TableName()
+ _scaFileRecycle.ALL = field.NewAsterisk(tableName)
+ _scaFileRecycle.ID = field.NewInt64(tableName, "id")
+ _scaFileRecycle.FileID = field.NewInt64(tableName, "file_id")
+ _scaFileRecycle.FolderID = field.NewInt64(tableName, "folder_id")
+ _scaFileRecycle.Type = field.NewInt64(tableName, "type")
+ _scaFileRecycle.UserID = field.NewString(tableName, "user_id")
+ _scaFileRecycle.DeletedAt = field.NewField(tableName, "deleted_at")
+ _scaFileRecycle.OriginalPath = field.NewString(tableName, "original_path")
+ _scaFileRecycle.FileSource = field.NewInt64(tableName, "file_source")
+
+ _scaFileRecycle.fillFieldMap()
+
+ return _scaFileRecycle
+}
+
+type scaFileRecycle struct {
+ scaFileRecycleDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键
+ FileID field.Int64 // 文件编号
+ FolderID field.Int64 // 文件夹编号
+ Type field.Int64 // 类型 0 文件 1 文件夹
+ UserID field.String // 用户编号
+ DeletedAt field.Field // 删除时间
+ OriginalPath field.String // 原始路径
+ FileSource field.Int64 // 文件来源 0 相册 1 评论
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaFileRecycle) Table(newTableName string) *scaFileRecycle {
+ s.scaFileRecycleDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaFileRecycle) As(alias string) *scaFileRecycle {
+ s.scaFileRecycleDo.DO = *(s.scaFileRecycleDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaFileRecycle) updateTableName(table string) *scaFileRecycle {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.FileID = field.NewInt64(table, "file_id")
+ s.FolderID = field.NewInt64(table, "folder_id")
+ s.Type = field.NewInt64(table, "type")
+ s.UserID = field.NewString(table, "user_id")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+ s.OriginalPath = field.NewString(table, "original_path")
+ s.FileSource = field.NewInt64(table, "file_source")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaFileRecycle) 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 *scaFileRecycle) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 8)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["file_id"] = s.FileID
+ s.fieldMap["folder_id"] = s.FolderID
+ s.fieldMap["type"] = s.Type
+ s.fieldMap["user_id"] = s.UserID
+ s.fieldMap["deleted_at"] = s.DeletedAt
+ s.fieldMap["original_path"] = s.OriginalPath
+ s.fieldMap["file_source"] = s.FileSource
+}
+
+func (s scaFileRecycle) clone(db *gorm.DB) scaFileRecycle {
+ s.scaFileRecycleDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaFileRecycle) replaceDB(db *gorm.DB) scaFileRecycle {
+ s.scaFileRecycleDo.ReplaceDB(db)
+ return s
+}
+
+type scaFileRecycleDo struct{ gen.DO }
+
+type IScaFileRecycleDo interface {
+ gen.SubQuery
+ Debug() IScaFileRecycleDo
+ WithContext(ctx context.Context) IScaFileRecycleDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaFileRecycleDo
+ WriteDB() IScaFileRecycleDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaFileRecycleDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaFileRecycleDo
+ Not(conds ...gen.Condition) IScaFileRecycleDo
+ Or(conds ...gen.Condition) IScaFileRecycleDo
+ Select(conds ...field.Expr) IScaFileRecycleDo
+ Where(conds ...gen.Condition) IScaFileRecycleDo
+ Order(conds ...field.Expr) IScaFileRecycleDo
+ Distinct(cols ...field.Expr) IScaFileRecycleDo
+ Omit(cols ...field.Expr) IScaFileRecycleDo
+ Join(table schema.Tabler, on ...field.Expr) IScaFileRecycleDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaFileRecycleDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaFileRecycleDo
+ Group(cols ...field.Expr) IScaFileRecycleDo
+ Having(conds ...gen.Condition) IScaFileRecycleDo
+ Limit(limit int) IScaFileRecycleDo
+ Offset(offset int) IScaFileRecycleDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaFileRecycleDo
+ Unscoped() IScaFileRecycleDo
+ Create(values ...*model.ScaFileRecycle) error
+ CreateInBatches(values []*model.ScaFileRecycle, batchSize int) error
+ Save(values ...*model.ScaFileRecycle) error
+ First() (*model.ScaFileRecycle, error)
+ Take() (*model.ScaFileRecycle, error)
+ Last() (*model.ScaFileRecycle, error)
+ Find() ([]*model.ScaFileRecycle, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaFileRecycle, err error)
+ FindInBatches(result *[]*model.ScaFileRecycle, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaFileRecycle) (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) IScaFileRecycleDo
+ Assign(attrs ...field.AssignExpr) IScaFileRecycleDo
+ Joins(fields ...field.RelationField) IScaFileRecycleDo
+ Preload(fields ...field.RelationField) IScaFileRecycleDo
+ FirstOrInit() (*model.ScaFileRecycle, error)
+ FirstOrCreate() (*model.ScaFileRecycle, error)
+ FindByPage(offset int, limit int) (result []*model.ScaFileRecycle, 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) IScaFileRecycleDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaFileRecycleDo) Debug() IScaFileRecycleDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaFileRecycleDo) WithContext(ctx context.Context) IScaFileRecycleDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaFileRecycleDo) ReadDB() IScaFileRecycleDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaFileRecycleDo) WriteDB() IScaFileRecycleDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaFileRecycleDo) Session(config *gorm.Session) IScaFileRecycleDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaFileRecycleDo) Clauses(conds ...clause.Expression) IScaFileRecycleDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaFileRecycleDo) Returning(value interface{}, columns ...string) IScaFileRecycleDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaFileRecycleDo) Not(conds ...gen.Condition) IScaFileRecycleDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaFileRecycleDo) Or(conds ...gen.Condition) IScaFileRecycleDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaFileRecycleDo) Select(conds ...field.Expr) IScaFileRecycleDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaFileRecycleDo) Where(conds ...gen.Condition) IScaFileRecycleDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaFileRecycleDo) Order(conds ...field.Expr) IScaFileRecycleDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaFileRecycleDo) Distinct(cols ...field.Expr) IScaFileRecycleDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaFileRecycleDo) Omit(cols ...field.Expr) IScaFileRecycleDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaFileRecycleDo) Join(table schema.Tabler, on ...field.Expr) IScaFileRecycleDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaFileRecycleDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaFileRecycleDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaFileRecycleDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaFileRecycleDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaFileRecycleDo) Group(cols ...field.Expr) IScaFileRecycleDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaFileRecycleDo) Having(conds ...gen.Condition) IScaFileRecycleDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaFileRecycleDo) Limit(limit int) IScaFileRecycleDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaFileRecycleDo) Offset(offset int) IScaFileRecycleDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaFileRecycleDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaFileRecycleDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaFileRecycleDo) Unscoped() IScaFileRecycleDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaFileRecycleDo) Create(values ...*model.ScaFileRecycle) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaFileRecycleDo) CreateInBatches(values []*model.ScaFileRecycle, 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 scaFileRecycleDo) Save(values ...*model.ScaFileRecycle) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaFileRecycleDo) First() (*model.ScaFileRecycle, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileRecycle), nil
+ }
+}
+
+func (s scaFileRecycleDo) Take() (*model.ScaFileRecycle, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileRecycle), nil
+ }
+}
+
+func (s scaFileRecycleDo) Last() (*model.ScaFileRecycle, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileRecycle), nil
+ }
+}
+
+func (s scaFileRecycleDo) Find() ([]*model.ScaFileRecycle, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaFileRecycle), err
+}
+
+func (s scaFileRecycleDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaFileRecycle, err error) {
+ buf := make([]*model.ScaFileRecycle, 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 scaFileRecycleDo) FindInBatches(result *[]*model.ScaFileRecycle, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaFileRecycleDo) Attrs(attrs ...field.AssignExpr) IScaFileRecycleDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaFileRecycleDo) Assign(attrs ...field.AssignExpr) IScaFileRecycleDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaFileRecycleDo) Joins(fields ...field.RelationField) IScaFileRecycleDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaFileRecycleDo) Preload(fields ...field.RelationField) IScaFileRecycleDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaFileRecycleDo) FirstOrInit() (*model.ScaFileRecycle, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileRecycle), nil
+ }
+}
+
+func (s scaFileRecycleDo) FirstOrCreate() (*model.ScaFileRecycle, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileRecycle), nil
+ }
+}
+
+func (s scaFileRecycleDo) FindByPage(offset int, limit int) (result []*model.ScaFileRecycle, 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 scaFileRecycleDo) 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 scaFileRecycleDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaFileRecycleDo) Delete(models ...*model.ScaFileRecycle) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaFileRecycleDo) withDO(do gen.Dao) *scaFileRecycleDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_file_type.gen.go b/app/file/api/model/mysql/query/sca_file_type.gen.go
new file mode 100644
index 0000000..3636fe4
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_file_type.gen.go
@@ -0,0 +1,402 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaFileType(db *gorm.DB, opts ...gen.DOOption) scaFileType {
+ _scaFileType := scaFileType{}
+
+ _scaFileType.scaFileTypeDo.UseDB(db, opts...)
+ _scaFileType.scaFileTypeDo.UseModel(&model.ScaFileType{})
+
+ tableName := _scaFileType.scaFileTypeDo.TableName()
+ _scaFileType.ALL = field.NewAsterisk(tableName)
+ _scaFileType.ID = field.NewInt64(tableName, "id")
+ _scaFileType.TypeName = field.NewString(tableName, "type_name")
+ _scaFileType.MimeType = field.NewString(tableName, "mime_type")
+ _scaFileType.Status = field.NewInt64(tableName, "status")
+ _scaFileType.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaFileType.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaFileType.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaFileType.fillFieldMap()
+
+ return _scaFileType
+}
+
+type scaFileType struct {
+ scaFileTypeDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键
+ TypeName field.String // 类型名称
+ MimeType field.String // MIME 类型
+ Status field.Int64 // 类型状态
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaFileType) Table(newTableName string) *scaFileType {
+ s.scaFileTypeDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaFileType) As(alias string) *scaFileType {
+ s.scaFileTypeDo.DO = *(s.scaFileTypeDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaFileType) updateTableName(table string) *scaFileType {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.TypeName = field.NewString(table, "type_name")
+ s.MimeType = field.NewString(table, "mime_type")
+ s.Status = field.NewInt64(table, "status")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaFileType) 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 *scaFileType) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 7)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["type_name"] = s.TypeName
+ s.fieldMap["mime_type"] = s.MimeType
+ s.fieldMap["status"] = s.Status
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaFileType) clone(db *gorm.DB) scaFileType {
+ s.scaFileTypeDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaFileType) replaceDB(db *gorm.DB) scaFileType {
+ s.scaFileTypeDo.ReplaceDB(db)
+ return s
+}
+
+type scaFileTypeDo struct{ gen.DO }
+
+type IScaFileTypeDo interface {
+ gen.SubQuery
+ Debug() IScaFileTypeDo
+ WithContext(ctx context.Context) IScaFileTypeDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaFileTypeDo
+ WriteDB() IScaFileTypeDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaFileTypeDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaFileTypeDo
+ Not(conds ...gen.Condition) IScaFileTypeDo
+ Or(conds ...gen.Condition) IScaFileTypeDo
+ Select(conds ...field.Expr) IScaFileTypeDo
+ Where(conds ...gen.Condition) IScaFileTypeDo
+ Order(conds ...field.Expr) IScaFileTypeDo
+ Distinct(cols ...field.Expr) IScaFileTypeDo
+ Omit(cols ...field.Expr) IScaFileTypeDo
+ Join(table schema.Tabler, on ...field.Expr) IScaFileTypeDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaFileTypeDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaFileTypeDo
+ Group(cols ...field.Expr) IScaFileTypeDo
+ Having(conds ...gen.Condition) IScaFileTypeDo
+ Limit(limit int) IScaFileTypeDo
+ Offset(offset int) IScaFileTypeDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaFileTypeDo
+ Unscoped() IScaFileTypeDo
+ Create(values ...*model.ScaFileType) error
+ CreateInBatches(values []*model.ScaFileType, batchSize int) error
+ Save(values ...*model.ScaFileType) error
+ First() (*model.ScaFileType, error)
+ Take() (*model.ScaFileType, error)
+ Last() (*model.ScaFileType, error)
+ Find() ([]*model.ScaFileType, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaFileType, err error)
+ FindInBatches(result *[]*model.ScaFileType, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaFileType) (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) IScaFileTypeDo
+ Assign(attrs ...field.AssignExpr) IScaFileTypeDo
+ Joins(fields ...field.RelationField) IScaFileTypeDo
+ Preload(fields ...field.RelationField) IScaFileTypeDo
+ FirstOrInit() (*model.ScaFileType, error)
+ FirstOrCreate() (*model.ScaFileType, error)
+ FindByPage(offset int, limit int) (result []*model.ScaFileType, 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) IScaFileTypeDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaFileTypeDo) Debug() IScaFileTypeDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaFileTypeDo) WithContext(ctx context.Context) IScaFileTypeDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaFileTypeDo) ReadDB() IScaFileTypeDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaFileTypeDo) WriteDB() IScaFileTypeDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaFileTypeDo) Session(config *gorm.Session) IScaFileTypeDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaFileTypeDo) Clauses(conds ...clause.Expression) IScaFileTypeDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaFileTypeDo) Returning(value interface{}, columns ...string) IScaFileTypeDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaFileTypeDo) Not(conds ...gen.Condition) IScaFileTypeDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaFileTypeDo) Or(conds ...gen.Condition) IScaFileTypeDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaFileTypeDo) Select(conds ...field.Expr) IScaFileTypeDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaFileTypeDo) Where(conds ...gen.Condition) IScaFileTypeDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaFileTypeDo) Order(conds ...field.Expr) IScaFileTypeDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaFileTypeDo) Distinct(cols ...field.Expr) IScaFileTypeDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaFileTypeDo) Omit(cols ...field.Expr) IScaFileTypeDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaFileTypeDo) Join(table schema.Tabler, on ...field.Expr) IScaFileTypeDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaFileTypeDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaFileTypeDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaFileTypeDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaFileTypeDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaFileTypeDo) Group(cols ...field.Expr) IScaFileTypeDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaFileTypeDo) Having(conds ...gen.Condition) IScaFileTypeDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaFileTypeDo) Limit(limit int) IScaFileTypeDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaFileTypeDo) Offset(offset int) IScaFileTypeDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaFileTypeDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaFileTypeDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaFileTypeDo) Unscoped() IScaFileTypeDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaFileTypeDo) Create(values ...*model.ScaFileType) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaFileTypeDo) CreateInBatches(values []*model.ScaFileType, 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 scaFileTypeDo) Save(values ...*model.ScaFileType) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaFileTypeDo) First() (*model.ScaFileType, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileType), nil
+ }
+}
+
+func (s scaFileTypeDo) Take() (*model.ScaFileType, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileType), nil
+ }
+}
+
+func (s scaFileTypeDo) Last() (*model.ScaFileType, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileType), nil
+ }
+}
+
+func (s scaFileTypeDo) Find() ([]*model.ScaFileType, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaFileType), err
+}
+
+func (s scaFileTypeDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaFileType, err error) {
+ buf := make([]*model.ScaFileType, 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 scaFileTypeDo) FindInBatches(result *[]*model.ScaFileType, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaFileTypeDo) Attrs(attrs ...field.AssignExpr) IScaFileTypeDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaFileTypeDo) Assign(attrs ...field.AssignExpr) IScaFileTypeDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaFileTypeDo) Joins(fields ...field.RelationField) IScaFileTypeDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaFileTypeDo) Preload(fields ...field.RelationField) IScaFileTypeDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaFileTypeDo) FirstOrInit() (*model.ScaFileType, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileType), nil
+ }
+}
+
+func (s scaFileTypeDo) FirstOrCreate() (*model.ScaFileType, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaFileType), nil
+ }
+}
+
+func (s scaFileTypeDo) FindByPage(offset int, limit int) (result []*model.ScaFileType, 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 scaFileTypeDo) 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 scaFileTypeDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaFileTypeDo) Delete(models ...*model.ScaFileType) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaFileTypeDo) withDO(do gen.Dao) *scaFileTypeDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_message_report.gen.go b/app/file/api/model/mysql/query/sca_message_report.gen.go
new file mode 100644
index 0000000..e5440a7
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_message_report.gen.go
@@ -0,0 +1,422 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaMessageReport(db *gorm.DB, opts ...gen.DOOption) scaMessageReport {
+ _scaMessageReport := scaMessageReport{}
+
+ _scaMessageReport.scaMessageReportDo.UseDB(db, opts...)
+ _scaMessageReport.scaMessageReportDo.UseModel(&model.ScaMessageReport{})
+
+ tableName := _scaMessageReport.scaMessageReportDo.TableName()
+ _scaMessageReport.ALL = field.NewAsterisk(tableName)
+ _scaMessageReport.ID = field.NewInt64(tableName, "id")
+ _scaMessageReport.UserID = field.NewString(tableName, "user_id")
+ _scaMessageReport.Type = field.NewInt64(tableName, "type")
+ _scaMessageReport.CommentID = field.NewInt64(tableName, "comment_id")
+ _scaMessageReport.TopicID = field.NewString(tableName, "topic_id")
+ _scaMessageReport.ReportType = field.NewInt64(tableName, "report_type")
+ _scaMessageReport.ReportContent = field.NewString(tableName, "report_content")
+ _scaMessageReport.ReportTag = field.NewString(tableName, "report_tag")
+ _scaMessageReport.Status = field.NewInt64(tableName, "status")
+ _scaMessageReport.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaMessageReport.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaMessageReport.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaMessageReport.fillFieldMap()
+
+ return _scaMessageReport
+}
+
+type scaMessageReport struct {
+ scaMessageReportDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键
+ UserID field.String // 用户Id
+ Type field.Int64 // 举报类型 0评论 1 相册
+ CommentID field.Int64 // 评论Id
+ TopicID field.String // 话题Id
+ ReportType field.Int64 // 举报
+ ReportContent field.String // 举报说明内容
+ ReportTag field.String // 举报标签
+ Status field.Int64 // 状态(0 未处理 1 已处理)
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaMessageReport) Table(newTableName string) *scaMessageReport {
+ s.scaMessageReportDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaMessageReport) As(alias string) *scaMessageReport {
+ s.scaMessageReportDo.DO = *(s.scaMessageReportDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaMessageReport) updateTableName(table string) *scaMessageReport {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.UserID = field.NewString(table, "user_id")
+ s.Type = field.NewInt64(table, "type")
+ s.CommentID = field.NewInt64(table, "comment_id")
+ s.TopicID = field.NewString(table, "topic_id")
+ s.ReportType = field.NewInt64(table, "report_type")
+ s.ReportContent = field.NewString(table, "report_content")
+ s.ReportTag = field.NewString(table, "report_tag")
+ s.Status = field.NewInt64(table, "status")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaMessageReport) 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 *scaMessageReport) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 12)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["user_id"] = s.UserID
+ s.fieldMap["type"] = s.Type
+ s.fieldMap["comment_id"] = s.CommentID
+ s.fieldMap["topic_id"] = s.TopicID
+ s.fieldMap["report_type"] = s.ReportType
+ s.fieldMap["report_content"] = s.ReportContent
+ s.fieldMap["report_tag"] = s.ReportTag
+ s.fieldMap["status"] = s.Status
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaMessageReport) clone(db *gorm.DB) scaMessageReport {
+ s.scaMessageReportDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaMessageReport) replaceDB(db *gorm.DB) scaMessageReport {
+ s.scaMessageReportDo.ReplaceDB(db)
+ return s
+}
+
+type scaMessageReportDo struct{ gen.DO }
+
+type IScaMessageReportDo interface {
+ gen.SubQuery
+ Debug() IScaMessageReportDo
+ WithContext(ctx context.Context) IScaMessageReportDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaMessageReportDo
+ WriteDB() IScaMessageReportDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaMessageReportDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaMessageReportDo
+ Not(conds ...gen.Condition) IScaMessageReportDo
+ Or(conds ...gen.Condition) IScaMessageReportDo
+ Select(conds ...field.Expr) IScaMessageReportDo
+ Where(conds ...gen.Condition) IScaMessageReportDo
+ Order(conds ...field.Expr) IScaMessageReportDo
+ Distinct(cols ...field.Expr) IScaMessageReportDo
+ Omit(cols ...field.Expr) IScaMessageReportDo
+ Join(table schema.Tabler, on ...field.Expr) IScaMessageReportDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaMessageReportDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaMessageReportDo
+ Group(cols ...field.Expr) IScaMessageReportDo
+ Having(conds ...gen.Condition) IScaMessageReportDo
+ Limit(limit int) IScaMessageReportDo
+ Offset(offset int) IScaMessageReportDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaMessageReportDo
+ Unscoped() IScaMessageReportDo
+ Create(values ...*model.ScaMessageReport) error
+ CreateInBatches(values []*model.ScaMessageReport, batchSize int) error
+ Save(values ...*model.ScaMessageReport) error
+ First() (*model.ScaMessageReport, error)
+ Take() (*model.ScaMessageReport, error)
+ Last() (*model.ScaMessageReport, error)
+ Find() ([]*model.ScaMessageReport, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaMessageReport, err error)
+ FindInBatches(result *[]*model.ScaMessageReport, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaMessageReport) (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) IScaMessageReportDo
+ Assign(attrs ...field.AssignExpr) IScaMessageReportDo
+ Joins(fields ...field.RelationField) IScaMessageReportDo
+ Preload(fields ...field.RelationField) IScaMessageReportDo
+ FirstOrInit() (*model.ScaMessageReport, error)
+ FirstOrCreate() (*model.ScaMessageReport, error)
+ FindByPage(offset int, limit int) (result []*model.ScaMessageReport, 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) IScaMessageReportDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaMessageReportDo) Debug() IScaMessageReportDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaMessageReportDo) WithContext(ctx context.Context) IScaMessageReportDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaMessageReportDo) ReadDB() IScaMessageReportDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaMessageReportDo) WriteDB() IScaMessageReportDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaMessageReportDo) Session(config *gorm.Session) IScaMessageReportDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaMessageReportDo) Clauses(conds ...clause.Expression) IScaMessageReportDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaMessageReportDo) Returning(value interface{}, columns ...string) IScaMessageReportDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaMessageReportDo) Not(conds ...gen.Condition) IScaMessageReportDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaMessageReportDo) Or(conds ...gen.Condition) IScaMessageReportDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaMessageReportDo) Select(conds ...field.Expr) IScaMessageReportDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaMessageReportDo) Where(conds ...gen.Condition) IScaMessageReportDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaMessageReportDo) Order(conds ...field.Expr) IScaMessageReportDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaMessageReportDo) Distinct(cols ...field.Expr) IScaMessageReportDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaMessageReportDo) Omit(cols ...field.Expr) IScaMessageReportDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaMessageReportDo) Join(table schema.Tabler, on ...field.Expr) IScaMessageReportDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaMessageReportDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaMessageReportDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaMessageReportDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaMessageReportDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaMessageReportDo) Group(cols ...field.Expr) IScaMessageReportDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaMessageReportDo) Having(conds ...gen.Condition) IScaMessageReportDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaMessageReportDo) Limit(limit int) IScaMessageReportDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaMessageReportDo) Offset(offset int) IScaMessageReportDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaMessageReportDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaMessageReportDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaMessageReportDo) Unscoped() IScaMessageReportDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaMessageReportDo) Create(values ...*model.ScaMessageReport) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaMessageReportDo) CreateInBatches(values []*model.ScaMessageReport, 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 scaMessageReportDo) Save(values ...*model.ScaMessageReport) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaMessageReportDo) First() (*model.ScaMessageReport, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaMessageReport), nil
+ }
+}
+
+func (s scaMessageReportDo) Take() (*model.ScaMessageReport, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaMessageReport), nil
+ }
+}
+
+func (s scaMessageReportDo) Last() (*model.ScaMessageReport, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaMessageReport), nil
+ }
+}
+
+func (s scaMessageReportDo) Find() ([]*model.ScaMessageReport, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaMessageReport), err
+}
+
+func (s scaMessageReportDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaMessageReport, err error) {
+ buf := make([]*model.ScaMessageReport, 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 scaMessageReportDo) FindInBatches(result *[]*model.ScaMessageReport, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaMessageReportDo) Attrs(attrs ...field.AssignExpr) IScaMessageReportDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaMessageReportDo) Assign(attrs ...field.AssignExpr) IScaMessageReportDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaMessageReportDo) Joins(fields ...field.RelationField) IScaMessageReportDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaMessageReportDo) Preload(fields ...field.RelationField) IScaMessageReportDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaMessageReportDo) FirstOrInit() (*model.ScaMessageReport, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaMessageReport), nil
+ }
+}
+
+func (s scaMessageReportDo) FirstOrCreate() (*model.ScaMessageReport, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaMessageReport), nil
+ }
+}
+
+func (s scaMessageReportDo) FindByPage(offset int, limit int) (result []*model.ScaMessageReport, 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 scaMessageReportDo) 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 scaMessageReportDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaMessageReportDo) Delete(models ...*model.ScaMessageReport) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaMessageReportDo) withDO(do gen.Dao) *scaMessageReportDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_user_follows.gen.go b/app/file/api/model/mysql/query/sca_user_follows.gen.go
new file mode 100644
index 0000000..c92def2
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_user_follows.gen.go
@@ -0,0 +1,402 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaUserFollow(db *gorm.DB, opts ...gen.DOOption) scaUserFollow {
+ _scaUserFollow := scaUserFollow{}
+
+ _scaUserFollow.scaUserFollowDo.UseDB(db, opts...)
+ _scaUserFollow.scaUserFollowDo.UseModel(&model.ScaUserFollow{})
+
+ tableName := _scaUserFollow.scaUserFollowDo.TableName()
+ _scaUserFollow.ALL = field.NewAsterisk(tableName)
+ _scaUserFollow.FollowerID = field.NewString(tableName, "follower_id")
+ _scaUserFollow.FolloweeID = field.NewString(tableName, "followee_id")
+ _scaUserFollow.Status = field.NewInt64(tableName, "status")
+ _scaUserFollow.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaUserFollow.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaUserFollow.ID = field.NewInt64(tableName, "id")
+ _scaUserFollow.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaUserFollow.fillFieldMap()
+
+ return _scaUserFollow
+}
+
+type scaUserFollow struct {
+ scaUserFollowDo
+
+ ALL field.Asterisk
+ FollowerID field.String // 关注者
+ FolloweeID field.String // 被关注者
+ Status field.Int64 // 关注状态(0 未互关 1 互关)
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ ID field.Int64
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaUserFollow) Table(newTableName string) *scaUserFollow {
+ s.scaUserFollowDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaUserFollow) As(alias string) *scaUserFollow {
+ s.scaUserFollowDo.DO = *(s.scaUserFollowDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaUserFollow) updateTableName(table string) *scaUserFollow {
+ s.ALL = field.NewAsterisk(table)
+ s.FollowerID = field.NewString(table, "follower_id")
+ s.FolloweeID = field.NewString(table, "followee_id")
+ s.Status = field.NewInt64(table, "status")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.ID = field.NewInt64(table, "id")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaUserFollow) 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 *scaUserFollow) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 7)
+ s.fieldMap["follower_id"] = s.FollowerID
+ s.fieldMap["followee_id"] = s.FolloweeID
+ s.fieldMap["status"] = s.Status
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaUserFollow) clone(db *gorm.DB) scaUserFollow {
+ s.scaUserFollowDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaUserFollow) replaceDB(db *gorm.DB) scaUserFollow {
+ s.scaUserFollowDo.ReplaceDB(db)
+ return s
+}
+
+type scaUserFollowDo struct{ gen.DO }
+
+type IScaUserFollowDo interface {
+ gen.SubQuery
+ Debug() IScaUserFollowDo
+ WithContext(ctx context.Context) IScaUserFollowDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaUserFollowDo
+ WriteDB() IScaUserFollowDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaUserFollowDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaUserFollowDo
+ Not(conds ...gen.Condition) IScaUserFollowDo
+ Or(conds ...gen.Condition) IScaUserFollowDo
+ Select(conds ...field.Expr) IScaUserFollowDo
+ Where(conds ...gen.Condition) IScaUserFollowDo
+ Order(conds ...field.Expr) IScaUserFollowDo
+ Distinct(cols ...field.Expr) IScaUserFollowDo
+ Omit(cols ...field.Expr) IScaUserFollowDo
+ Join(table schema.Tabler, on ...field.Expr) IScaUserFollowDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaUserFollowDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaUserFollowDo
+ Group(cols ...field.Expr) IScaUserFollowDo
+ Having(conds ...gen.Condition) IScaUserFollowDo
+ Limit(limit int) IScaUserFollowDo
+ Offset(offset int) IScaUserFollowDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaUserFollowDo
+ Unscoped() IScaUserFollowDo
+ Create(values ...*model.ScaUserFollow) error
+ CreateInBatches(values []*model.ScaUserFollow, batchSize int) error
+ Save(values ...*model.ScaUserFollow) error
+ First() (*model.ScaUserFollow, error)
+ Take() (*model.ScaUserFollow, error)
+ Last() (*model.ScaUserFollow, error)
+ Find() ([]*model.ScaUserFollow, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaUserFollow, err error)
+ FindInBatches(result *[]*model.ScaUserFollow, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaUserFollow) (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) IScaUserFollowDo
+ Assign(attrs ...field.AssignExpr) IScaUserFollowDo
+ Joins(fields ...field.RelationField) IScaUserFollowDo
+ Preload(fields ...field.RelationField) IScaUserFollowDo
+ FirstOrInit() (*model.ScaUserFollow, error)
+ FirstOrCreate() (*model.ScaUserFollow, error)
+ FindByPage(offset int, limit int) (result []*model.ScaUserFollow, 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) IScaUserFollowDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaUserFollowDo) Debug() IScaUserFollowDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaUserFollowDo) WithContext(ctx context.Context) IScaUserFollowDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaUserFollowDo) ReadDB() IScaUserFollowDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaUserFollowDo) WriteDB() IScaUserFollowDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaUserFollowDo) Session(config *gorm.Session) IScaUserFollowDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaUserFollowDo) Clauses(conds ...clause.Expression) IScaUserFollowDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaUserFollowDo) Returning(value interface{}, columns ...string) IScaUserFollowDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaUserFollowDo) Not(conds ...gen.Condition) IScaUserFollowDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaUserFollowDo) Or(conds ...gen.Condition) IScaUserFollowDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaUserFollowDo) Select(conds ...field.Expr) IScaUserFollowDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaUserFollowDo) Where(conds ...gen.Condition) IScaUserFollowDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaUserFollowDo) Order(conds ...field.Expr) IScaUserFollowDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaUserFollowDo) Distinct(cols ...field.Expr) IScaUserFollowDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaUserFollowDo) Omit(cols ...field.Expr) IScaUserFollowDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaUserFollowDo) Join(table schema.Tabler, on ...field.Expr) IScaUserFollowDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaUserFollowDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaUserFollowDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaUserFollowDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaUserFollowDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaUserFollowDo) Group(cols ...field.Expr) IScaUserFollowDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaUserFollowDo) Having(conds ...gen.Condition) IScaUserFollowDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaUserFollowDo) Limit(limit int) IScaUserFollowDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaUserFollowDo) Offset(offset int) IScaUserFollowDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaUserFollowDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaUserFollowDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaUserFollowDo) Unscoped() IScaUserFollowDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaUserFollowDo) Create(values ...*model.ScaUserFollow) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaUserFollowDo) CreateInBatches(values []*model.ScaUserFollow, 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 scaUserFollowDo) Save(values ...*model.ScaUserFollow) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaUserFollowDo) First() (*model.ScaUserFollow, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserFollow), nil
+ }
+}
+
+func (s scaUserFollowDo) Take() (*model.ScaUserFollow, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserFollow), nil
+ }
+}
+
+func (s scaUserFollowDo) Last() (*model.ScaUserFollow, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserFollow), nil
+ }
+}
+
+func (s scaUserFollowDo) Find() ([]*model.ScaUserFollow, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaUserFollow), err
+}
+
+func (s scaUserFollowDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaUserFollow, err error) {
+ buf := make([]*model.ScaUserFollow, 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 scaUserFollowDo) FindInBatches(result *[]*model.ScaUserFollow, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaUserFollowDo) Attrs(attrs ...field.AssignExpr) IScaUserFollowDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaUserFollowDo) Assign(attrs ...field.AssignExpr) IScaUserFollowDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaUserFollowDo) Joins(fields ...field.RelationField) IScaUserFollowDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaUserFollowDo) Preload(fields ...field.RelationField) IScaUserFollowDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaUserFollowDo) FirstOrInit() (*model.ScaUserFollow, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserFollow), nil
+ }
+}
+
+func (s scaUserFollowDo) FirstOrCreate() (*model.ScaUserFollow, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserFollow), nil
+ }
+}
+
+func (s scaUserFollowDo) FindByPage(offset int, limit int) (result []*model.ScaUserFollow, 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 scaUserFollowDo) 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 scaUserFollowDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaUserFollowDo) Delete(models ...*model.ScaUserFollow) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaUserFollowDo) withDO(do gen.Dao) *scaUserFollowDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_user_level.gen.go b/app/file/api/model/mysql/query/sca_user_level.gen.go
new file mode 100644
index 0000000..0074da4
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_user_level.gen.go
@@ -0,0 +1,418 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaUserLevel(db *gorm.DB, opts ...gen.DOOption) scaUserLevel {
+ _scaUserLevel := scaUserLevel{}
+
+ _scaUserLevel.scaUserLevelDo.UseDB(db, opts...)
+ _scaUserLevel.scaUserLevelDo.UseModel(&model.ScaUserLevel{})
+
+ tableName := _scaUserLevel.scaUserLevelDo.TableName()
+ _scaUserLevel.ALL = field.NewAsterisk(tableName)
+ _scaUserLevel.ID = field.NewInt64(tableName, "id")
+ _scaUserLevel.UserID = field.NewString(tableName, "user_id")
+ _scaUserLevel.LevelType = field.NewInt64(tableName, "level_type")
+ _scaUserLevel.Level = field.NewInt64(tableName, "level")
+ _scaUserLevel.LevelName = field.NewString(tableName, "level_name")
+ _scaUserLevel.ExpStart = field.NewInt64(tableName, "exp_start")
+ _scaUserLevel.ExpEnd = field.NewInt64(tableName, "exp_end")
+ _scaUserLevel.Description = field.NewString(tableName, "description")
+ _scaUserLevel.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaUserLevel.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaUserLevel.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaUserLevel.fillFieldMap()
+
+ return _scaUserLevel
+}
+
+type scaUserLevel struct {
+ scaUserLevelDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键
+ UserID field.String // 用户Id
+ LevelType field.Int64 // 等级类型
+ Level field.Int64 // 等级
+ LevelName field.String // 等级名称
+ ExpStart field.Int64 // 开始经验值
+ ExpEnd field.Int64 // 结束经验值
+ Description field.String // 等级描述
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaUserLevel) Table(newTableName string) *scaUserLevel {
+ s.scaUserLevelDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaUserLevel) As(alias string) *scaUserLevel {
+ s.scaUserLevelDo.DO = *(s.scaUserLevelDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaUserLevel) updateTableName(table string) *scaUserLevel {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.UserID = field.NewString(table, "user_id")
+ s.LevelType = field.NewInt64(table, "level_type")
+ s.Level = field.NewInt64(table, "level")
+ s.LevelName = field.NewString(table, "level_name")
+ s.ExpStart = field.NewInt64(table, "exp_start")
+ s.ExpEnd = field.NewInt64(table, "exp_end")
+ s.Description = field.NewString(table, "description")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaUserLevel) 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 *scaUserLevel) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 11)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["user_id"] = s.UserID
+ s.fieldMap["level_type"] = s.LevelType
+ s.fieldMap["level"] = s.Level
+ s.fieldMap["level_name"] = s.LevelName
+ s.fieldMap["exp_start"] = s.ExpStart
+ s.fieldMap["exp_end"] = s.ExpEnd
+ s.fieldMap["description"] = s.Description
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaUserLevel) clone(db *gorm.DB) scaUserLevel {
+ s.scaUserLevelDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaUserLevel) replaceDB(db *gorm.DB) scaUserLevel {
+ s.scaUserLevelDo.ReplaceDB(db)
+ return s
+}
+
+type scaUserLevelDo struct{ gen.DO }
+
+type IScaUserLevelDo interface {
+ gen.SubQuery
+ Debug() IScaUserLevelDo
+ WithContext(ctx context.Context) IScaUserLevelDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaUserLevelDo
+ WriteDB() IScaUserLevelDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaUserLevelDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaUserLevelDo
+ Not(conds ...gen.Condition) IScaUserLevelDo
+ Or(conds ...gen.Condition) IScaUserLevelDo
+ Select(conds ...field.Expr) IScaUserLevelDo
+ Where(conds ...gen.Condition) IScaUserLevelDo
+ Order(conds ...field.Expr) IScaUserLevelDo
+ Distinct(cols ...field.Expr) IScaUserLevelDo
+ Omit(cols ...field.Expr) IScaUserLevelDo
+ Join(table schema.Tabler, on ...field.Expr) IScaUserLevelDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaUserLevelDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaUserLevelDo
+ Group(cols ...field.Expr) IScaUserLevelDo
+ Having(conds ...gen.Condition) IScaUserLevelDo
+ Limit(limit int) IScaUserLevelDo
+ Offset(offset int) IScaUserLevelDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaUserLevelDo
+ Unscoped() IScaUserLevelDo
+ Create(values ...*model.ScaUserLevel) error
+ CreateInBatches(values []*model.ScaUserLevel, batchSize int) error
+ Save(values ...*model.ScaUserLevel) error
+ First() (*model.ScaUserLevel, error)
+ Take() (*model.ScaUserLevel, error)
+ Last() (*model.ScaUserLevel, error)
+ Find() ([]*model.ScaUserLevel, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaUserLevel, err error)
+ FindInBatches(result *[]*model.ScaUserLevel, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaUserLevel) (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) IScaUserLevelDo
+ Assign(attrs ...field.AssignExpr) IScaUserLevelDo
+ Joins(fields ...field.RelationField) IScaUserLevelDo
+ Preload(fields ...field.RelationField) IScaUserLevelDo
+ FirstOrInit() (*model.ScaUserLevel, error)
+ FirstOrCreate() (*model.ScaUserLevel, error)
+ FindByPage(offset int, limit int) (result []*model.ScaUserLevel, 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) IScaUserLevelDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaUserLevelDo) Debug() IScaUserLevelDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaUserLevelDo) WithContext(ctx context.Context) IScaUserLevelDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaUserLevelDo) ReadDB() IScaUserLevelDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaUserLevelDo) WriteDB() IScaUserLevelDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaUserLevelDo) Session(config *gorm.Session) IScaUserLevelDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaUserLevelDo) Clauses(conds ...clause.Expression) IScaUserLevelDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaUserLevelDo) Returning(value interface{}, columns ...string) IScaUserLevelDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaUserLevelDo) Not(conds ...gen.Condition) IScaUserLevelDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaUserLevelDo) Or(conds ...gen.Condition) IScaUserLevelDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaUserLevelDo) Select(conds ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaUserLevelDo) Where(conds ...gen.Condition) IScaUserLevelDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaUserLevelDo) Order(conds ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaUserLevelDo) Distinct(cols ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaUserLevelDo) Omit(cols ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaUserLevelDo) Join(table schema.Tabler, on ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaUserLevelDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaUserLevelDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaUserLevelDo) Group(cols ...field.Expr) IScaUserLevelDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaUserLevelDo) Having(conds ...gen.Condition) IScaUserLevelDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaUserLevelDo) Limit(limit int) IScaUserLevelDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaUserLevelDo) Offset(offset int) IScaUserLevelDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaUserLevelDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaUserLevelDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaUserLevelDo) Unscoped() IScaUserLevelDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaUserLevelDo) Create(values ...*model.ScaUserLevel) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaUserLevelDo) CreateInBatches(values []*model.ScaUserLevel, 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 scaUserLevelDo) Save(values ...*model.ScaUserLevel) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaUserLevelDo) First() (*model.ScaUserLevel, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserLevel), nil
+ }
+}
+
+func (s scaUserLevelDo) Take() (*model.ScaUserLevel, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserLevel), nil
+ }
+}
+
+func (s scaUserLevelDo) Last() (*model.ScaUserLevel, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserLevel), nil
+ }
+}
+
+func (s scaUserLevelDo) Find() ([]*model.ScaUserLevel, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaUserLevel), err
+}
+
+func (s scaUserLevelDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaUserLevel, err error) {
+ buf := make([]*model.ScaUserLevel, 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 scaUserLevelDo) FindInBatches(result *[]*model.ScaUserLevel, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaUserLevelDo) Attrs(attrs ...field.AssignExpr) IScaUserLevelDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaUserLevelDo) Assign(attrs ...field.AssignExpr) IScaUserLevelDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaUserLevelDo) Joins(fields ...field.RelationField) IScaUserLevelDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaUserLevelDo) Preload(fields ...field.RelationField) IScaUserLevelDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaUserLevelDo) FirstOrInit() (*model.ScaUserLevel, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserLevel), nil
+ }
+}
+
+func (s scaUserLevelDo) FirstOrCreate() (*model.ScaUserLevel, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserLevel), nil
+ }
+}
+
+func (s scaUserLevelDo) FindByPage(offset int, limit int) (result []*model.ScaUserLevel, 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 scaUserLevelDo) 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 scaUserLevelDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaUserLevelDo) Delete(models ...*model.ScaUserLevel) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaUserLevelDo) withDO(do gen.Dao) *scaUserLevelDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/model/mysql/query/sca_user_message.gen.go b/app/file/api/model/mysql/query/sca_user_message.gen.go
new file mode 100644
index 0000000..8d1c880
--- /dev/null
+++ b/app/file/api/model/mysql/query/sca_user_message.gen.go
@@ -0,0 +1,410 @@
+// 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"
+ "schisandra-album-cloud-microservices/app/community/api/model/mysql/model"
+
+ "gorm.io/gen"
+ "gorm.io/gen/field"
+
+ "gorm.io/plugin/dbresolver"
+)
+
+func newScaUserMessage(db *gorm.DB, opts ...gen.DOOption) scaUserMessage {
+ _scaUserMessage := scaUserMessage{}
+
+ _scaUserMessage.scaUserMessageDo.UseDB(db, opts...)
+ _scaUserMessage.scaUserMessageDo.UseModel(&model.ScaUserMessage{})
+
+ tableName := _scaUserMessage.scaUserMessageDo.TableName()
+ _scaUserMessage.ALL = field.NewAsterisk(tableName)
+ _scaUserMessage.ID = field.NewInt64(tableName, "id")
+ _scaUserMessage.TopicID = field.NewString(tableName, "topic_id")
+ _scaUserMessage.FromID = field.NewString(tableName, "from_id")
+ _scaUserMessage.ToID = field.NewString(tableName, "to_id")
+ _scaUserMessage.Content = field.NewString(tableName, "content")
+ _scaUserMessage.IsRead = field.NewInt64(tableName, "is_read")
+ _scaUserMessage.CreatedAt = field.NewTime(tableName, "created_at")
+ _scaUserMessage.UpdatedAt = field.NewTime(tableName, "updated_at")
+ _scaUserMessage.DeletedAt = field.NewField(tableName, "deleted_at")
+
+ _scaUserMessage.fillFieldMap()
+
+ return _scaUserMessage
+}
+
+type scaUserMessage struct {
+ scaUserMessageDo
+
+ ALL field.Asterisk
+ ID field.Int64 // 主键
+ TopicID field.String // 话题Id
+ FromID field.String // 来自人
+ ToID field.String // 送达人
+ Content field.String // 消息内容
+ IsRead field.Int64 // 是否已读
+ CreatedAt field.Time // 创建时间
+ UpdatedAt field.Time // 更新时间
+ DeletedAt field.Field // 删除时间
+
+ fieldMap map[string]field.Expr
+}
+
+func (s scaUserMessage) Table(newTableName string) *scaUserMessage {
+ s.scaUserMessageDo.UseTable(newTableName)
+ return s.updateTableName(newTableName)
+}
+
+func (s scaUserMessage) As(alias string) *scaUserMessage {
+ s.scaUserMessageDo.DO = *(s.scaUserMessageDo.As(alias).(*gen.DO))
+ return s.updateTableName(alias)
+}
+
+func (s *scaUserMessage) updateTableName(table string) *scaUserMessage {
+ s.ALL = field.NewAsterisk(table)
+ s.ID = field.NewInt64(table, "id")
+ s.TopicID = field.NewString(table, "topic_id")
+ s.FromID = field.NewString(table, "from_id")
+ s.ToID = field.NewString(table, "to_id")
+ s.Content = field.NewString(table, "content")
+ s.IsRead = field.NewInt64(table, "is_read")
+ s.CreatedAt = field.NewTime(table, "created_at")
+ s.UpdatedAt = field.NewTime(table, "updated_at")
+ s.DeletedAt = field.NewField(table, "deleted_at")
+
+ s.fillFieldMap()
+
+ return s
+}
+
+func (s *scaUserMessage) 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 *scaUserMessage) fillFieldMap() {
+ s.fieldMap = make(map[string]field.Expr, 9)
+ s.fieldMap["id"] = s.ID
+ s.fieldMap["topic_id"] = s.TopicID
+ s.fieldMap["from_id"] = s.FromID
+ s.fieldMap["to_id"] = s.ToID
+ s.fieldMap["content"] = s.Content
+ s.fieldMap["is_read"] = s.IsRead
+ s.fieldMap["created_at"] = s.CreatedAt
+ s.fieldMap["updated_at"] = s.UpdatedAt
+ s.fieldMap["deleted_at"] = s.DeletedAt
+}
+
+func (s scaUserMessage) clone(db *gorm.DB) scaUserMessage {
+ s.scaUserMessageDo.ReplaceConnPool(db.Statement.ConnPool)
+ return s
+}
+
+func (s scaUserMessage) replaceDB(db *gorm.DB) scaUserMessage {
+ s.scaUserMessageDo.ReplaceDB(db)
+ return s
+}
+
+type scaUserMessageDo struct{ gen.DO }
+
+type IScaUserMessageDo interface {
+ gen.SubQuery
+ Debug() IScaUserMessageDo
+ WithContext(ctx context.Context) IScaUserMessageDo
+ WithResult(fc func(tx gen.Dao)) gen.ResultInfo
+ ReplaceDB(db *gorm.DB)
+ ReadDB() IScaUserMessageDo
+ WriteDB() IScaUserMessageDo
+ As(alias string) gen.Dao
+ Session(config *gorm.Session) IScaUserMessageDo
+ Columns(cols ...field.Expr) gen.Columns
+ Clauses(conds ...clause.Expression) IScaUserMessageDo
+ Not(conds ...gen.Condition) IScaUserMessageDo
+ Or(conds ...gen.Condition) IScaUserMessageDo
+ Select(conds ...field.Expr) IScaUserMessageDo
+ Where(conds ...gen.Condition) IScaUserMessageDo
+ Order(conds ...field.Expr) IScaUserMessageDo
+ Distinct(cols ...field.Expr) IScaUserMessageDo
+ Omit(cols ...field.Expr) IScaUserMessageDo
+ Join(table schema.Tabler, on ...field.Expr) IScaUserMessageDo
+ LeftJoin(table schema.Tabler, on ...field.Expr) IScaUserMessageDo
+ RightJoin(table schema.Tabler, on ...field.Expr) IScaUserMessageDo
+ Group(cols ...field.Expr) IScaUserMessageDo
+ Having(conds ...gen.Condition) IScaUserMessageDo
+ Limit(limit int) IScaUserMessageDo
+ Offset(offset int) IScaUserMessageDo
+ Count() (count int64, err error)
+ Scopes(funcs ...func(gen.Dao) gen.Dao) IScaUserMessageDo
+ Unscoped() IScaUserMessageDo
+ Create(values ...*model.ScaUserMessage) error
+ CreateInBatches(values []*model.ScaUserMessage, batchSize int) error
+ Save(values ...*model.ScaUserMessage) error
+ First() (*model.ScaUserMessage, error)
+ Take() (*model.ScaUserMessage, error)
+ Last() (*model.ScaUserMessage, error)
+ Find() ([]*model.ScaUserMessage, error)
+ FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaUserMessage, err error)
+ FindInBatches(result *[]*model.ScaUserMessage, batchSize int, fc func(tx gen.Dao, batch int) error) error
+ Pluck(column field.Expr, dest interface{}) error
+ Delete(...*model.ScaUserMessage) (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) IScaUserMessageDo
+ Assign(attrs ...field.AssignExpr) IScaUserMessageDo
+ Joins(fields ...field.RelationField) IScaUserMessageDo
+ Preload(fields ...field.RelationField) IScaUserMessageDo
+ FirstOrInit() (*model.ScaUserMessage, error)
+ FirstOrCreate() (*model.ScaUserMessage, error)
+ FindByPage(offset int, limit int) (result []*model.ScaUserMessage, 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) IScaUserMessageDo
+ UnderlyingDB() *gorm.DB
+ schema.Tabler
+}
+
+func (s scaUserMessageDo) Debug() IScaUserMessageDo {
+ return s.withDO(s.DO.Debug())
+}
+
+func (s scaUserMessageDo) WithContext(ctx context.Context) IScaUserMessageDo {
+ return s.withDO(s.DO.WithContext(ctx))
+}
+
+func (s scaUserMessageDo) ReadDB() IScaUserMessageDo {
+ return s.Clauses(dbresolver.Read)
+}
+
+func (s scaUserMessageDo) WriteDB() IScaUserMessageDo {
+ return s.Clauses(dbresolver.Write)
+}
+
+func (s scaUserMessageDo) Session(config *gorm.Session) IScaUserMessageDo {
+ return s.withDO(s.DO.Session(config))
+}
+
+func (s scaUserMessageDo) Clauses(conds ...clause.Expression) IScaUserMessageDo {
+ return s.withDO(s.DO.Clauses(conds...))
+}
+
+func (s scaUserMessageDo) Returning(value interface{}, columns ...string) IScaUserMessageDo {
+ return s.withDO(s.DO.Returning(value, columns...))
+}
+
+func (s scaUserMessageDo) Not(conds ...gen.Condition) IScaUserMessageDo {
+ return s.withDO(s.DO.Not(conds...))
+}
+
+func (s scaUserMessageDo) Or(conds ...gen.Condition) IScaUserMessageDo {
+ return s.withDO(s.DO.Or(conds...))
+}
+
+func (s scaUserMessageDo) Select(conds ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.Select(conds...))
+}
+
+func (s scaUserMessageDo) Where(conds ...gen.Condition) IScaUserMessageDo {
+ return s.withDO(s.DO.Where(conds...))
+}
+
+func (s scaUserMessageDo) Order(conds ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.Order(conds...))
+}
+
+func (s scaUserMessageDo) Distinct(cols ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.Distinct(cols...))
+}
+
+func (s scaUserMessageDo) Omit(cols ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.Omit(cols...))
+}
+
+func (s scaUserMessageDo) Join(table schema.Tabler, on ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.Join(table, on...))
+}
+
+func (s scaUserMessageDo) LeftJoin(table schema.Tabler, on ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.LeftJoin(table, on...))
+}
+
+func (s scaUserMessageDo) RightJoin(table schema.Tabler, on ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.RightJoin(table, on...))
+}
+
+func (s scaUserMessageDo) Group(cols ...field.Expr) IScaUserMessageDo {
+ return s.withDO(s.DO.Group(cols...))
+}
+
+func (s scaUserMessageDo) Having(conds ...gen.Condition) IScaUserMessageDo {
+ return s.withDO(s.DO.Having(conds...))
+}
+
+func (s scaUserMessageDo) Limit(limit int) IScaUserMessageDo {
+ return s.withDO(s.DO.Limit(limit))
+}
+
+func (s scaUserMessageDo) Offset(offset int) IScaUserMessageDo {
+ return s.withDO(s.DO.Offset(offset))
+}
+
+func (s scaUserMessageDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IScaUserMessageDo {
+ return s.withDO(s.DO.Scopes(funcs...))
+}
+
+func (s scaUserMessageDo) Unscoped() IScaUserMessageDo {
+ return s.withDO(s.DO.Unscoped())
+}
+
+func (s scaUserMessageDo) Create(values ...*model.ScaUserMessage) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Create(values)
+}
+
+func (s scaUserMessageDo) CreateInBatches(values []*model.ScaUserMessage, 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 scaUserMessageDo) Save(values ...*model.ScaUserMessage) error {
+ if len(values) == 0 {
+ return nil
+ }
+ return s.DO.Save(values)
+}
+
+func (s scaUserMessageDo) First() (*model.ScaUserMessage, error) {
+ if result, err := s.DO.First(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserMessage), nil
+ }
+}
+
+func (s scaUserMessageDo) Take() (*model.ScaUserMessage, error) {
+ if result, err := s.DO.Take(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserMessage), nil
+ }
+}
+
+func (s scaUserMessageDo) Last() (*model.ScaUserMessage, error) {
+ if result, err := s.DO.Last(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserMessage), nil
+ }
+}
+
+func (s scaUserMessageDo) Find() ([]*model.ScaUserMessage, error) {
+ result, err := s.DO.Find()
+ return result.([]*model.ScaUserMessage), err
+}
+
+func (s scaUserMessageDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.ScaUserMessage, err error) {
+ buf := make([]*model.ScaUserMessage, 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 scaUserMessageDo) FindInBatches(result *[]*model.ScaUserMessage, batchSize int, fc func(tx gen.Dao, batch int) error) error {
+ return s.DO.FindInBatches(result, batchSize, fc)
+}
+
+func (s scaUserMessageDo) Attrs(attrs ...field.AssignExpr) IScaUserMessageDo {
+ return s.withDO(s.DO.Attrs(attrs...))
+}
+
+func (s scaUserMessageDo) Assign(attrs ...field.AssignExpr) IScaUserMessageDo {
+ return s.withDO(s.DO.Assign(attrs...))
+}
+
+func (s scaUserMessageDo) Joins(fields ...field.RelationField) IScaUserMessageDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Joins(_f))
+ }
+ return &s
+}
+
+func (s scaUserMessageDo) Preload(fields ...field.RelationField) IScaUserMessageDo {
+ for _, _f := range fields {
+ s = *s.withDO(s.DO.Preload(_f))
+ }
+ return &s
+}
+
+func (s scaUserMessageDo) FirstOrInit() (*model.ScaUserMessage, error) {
+ if result, err := s.DO.FirstOrInit(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserMessage), nil
+ }
+}
+
+func (s scaUserMessageDo) FirstOrCreate() (*model.ScaUserMessage, error) {
+ if result, err := s.DO.FirstOrCreate(); err != nil {
+ return nil, err
+ } else {
+ return result.(*model.ScaUserMessage), nil
+ }
+}
+
+func (s scaUserMessageDo) FindByPage(offset int, limit int) (result []*model.ScaUserMessage, 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 scaUserMessageDo) 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 scaUserMessageDo) Scan(result interface{}) (err error) {
+ return s.DO.Scan(result)
+}
+
+func (s scaUserMessageDo) Delete(models ...*model.ScaUserMessage) (result gen.ResultInfo, err error) {
+ return s.DO.Delete(models)
+}
+
+func (s *scaUserMessageDo) withDO(do gen.Dao) *scaUserMessageDo {
+ s.DO = *do.(*gen.DO)
+ return s
+}
diff --git a/app/file/api/resources/language/active.en.toml b/app/file/api/resources/language/active.en.toml
new file mode 100644
index 0000000..6b82309
--- /dev/null
+++ b/app/file/api/resources/language/active.en.toml
@@ -0,0 +1,3 @@
+[upload]
+uploadError = "upload error!"
+uploadSuccess = "upload success!"
\ No newline at end of file
diff --git a/app/file/api/resources/language/active.zh.toml b/app/file/api/resources/language/active.zh.toml
new file mode 100644
index 0000000..8b916dc
--- /dev/null
+++ b/app/file/api/resources/language/active.zh.toml
@@ -0,0 +1,3 @@
+[upload]
+uploadError = "上传失败!"
+uploadSuccess = "上传成功!"
diff --git a/app/core/api/common/captcha/generate/generate_basic_text_captcha.go b/common/captcha/generate/generate_basic_text_captcha.go
similarity index 94%
rename from app/core/api/common/captcha/generate/generate_basic_text_captcha.go
rename to common/captcha/generate/generate_basic_text_captcha.go
index 05dd370..4eeafb0 100644
--- a/app/core/api/common/captcha/generate/generate_basic_text_captcha.go
+++ b/common/captcha/generate/generate_basic_text_captcha.go
@@ -4,13 +4,12 @@ import (
"context"
"encoding/json"
"errors"
+ "schisandra-album-cloud-microservices/common/constant"
"time"
"github.com/redis/go-redis/v9"
"github.com/wenlng/go-captcha-assets/helper"
"github.com/wenlng/go-captcha/v2/click"
-
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
)
// GenerateBasicTextCaptcha generates a basic text captcha and saves it to redis.
diff --git a/app/core/api/common/captcha/generate/generate_click_shape_captcha.go b/common/captcha/generate/generate_click_shape_captcha.go
similarity index 94%
rename from app/core/api/common/captcha/generate/generate_click_shape_captcha.go
rename to common/captcha/generate/generate_click_shape_captcha.go
index d965c72..f9efd68 100644
--- a/app/core/api/common/captcha/generate/generate_click_shape_captcha.go
+++ b/common/captcha/generate/generate_click_shape_captcha.go
@@ -4,13 +4,12 @@ import (
"context"
"encoding/json"
"errors"
+ "schisandra-album-cloud-microservices/common/constant"
"time"
"github.com/redis/go-redis/v9"
"github.com/wenlng/go-captcha-assets/helper"
"github.com/wenlng/go-captcha/v2/click"
-
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
)
// GenerateClickShapeCaptcha generate click shape captcha
diff --git a/app/core/api/common/captcha/generate/generate_rotate_captcha.go b/common/captcha/generate/generate_rotate_captcha.go
similarity index 93%
rename from app/core/api/common/captcha/generate/generate_rotate_captcha.go
rename to common/captcha/generate/generate_rotate_captcha.go
index 615f6f5..6cd3fca 100644
--- a/app/core/api/common/captcha/generate/generate_rotate_captcha.go
+++ b/common/captcha/generate/generate_rotate_captcha.go
@@ -3,13 +3,12 @@ package generate
import (
"context"
"encoding/json"
+ "schisandra-album-cloud-microservices/common/constant"
"time"
"github.com/redis/go-redis/v9"
"github.com/wenlng/go-captcha-assets/helper"
"github.com/wenlng/go-captcha/v2/rotate"
-
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
)
// GenerateRotateCaptcha generate rotate captcha
diff --git a/app/core/api/common/captcha/generate/generate_slide_basic_captcha.go b/common/captcha/generate/generate_slide_basic_captcha.go
similarity index 94%
rename from app/core/api/common/captcha/generate/generate_slide_basic_captcha.go
rename to common/captcha/generate/generate_slide_basic_captcha.go
index 9c21809..eecf7da 100644
--- a/app/core/api/common/captcha/generate/generate_slide_basic_captcha.go
+++ b/common/captcha/generate/generate_slide_basic_captcha.go
@@ -3,13 +3,12 @@ package generate
import (
"context"
"encoding/json"
+ "schisandra-album-cloud-microservices/common/constant"
"time"
"github.com/redis/go-redis/v9"
"github.com/wenlng/go-captcha-assets/helper"
"github.com/wenlng/go-captcha/v2/slide"
-
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
)
// GenerateSlideBasicCaptcha generate slide basic captcha
diff --git a/app/core/api/common/captcha/generate/generate_slide_region_captcha.go b/common/captcha/generate/generate_slide_region_captcha.go
similarity index 95%
rename from app/core/api/common/captcha/generate/generate_slide_region_captcha.go
rename to common/captcha/generate/generate_slide_region_captcha.go
index fdb0dd8..1708548 100644
--- a/app/core/api/common/captcha/generate/generate_slide_region_captcha.go
+++ b/common/captcha/generate/generate_slide_region_captcha.go
@@ -4,13 +4,12 @@ import (
"context"
"encoding/json"
"errors"
+ "schisandra-album-cloud-microservices/common/constant"
"time"
"github.com/redis/go-redis/v9"
"github.com/wenlng/go-captcha-assets/helper"
"github.com/wenlng/go-captcha/v2/slide"
-
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
)
// GenerateSlideRegionCaptcha generate slide region captcha
diff --git a/app/core/api/repository/captcha/click_shape_captcha.go b/common/captcha/initialize/click_shape_captcha.go
similarity index 98%
rename from app/core/api/repository/captcha/click_shape_captcha.go
rename to common/captcha/initialize/click_shape_captcha.go
index 67f903d..363f7be 100644
--- a/app/core/api/repository/captcha/click_shape_captcha.go
+++ b/common/captcha/initialize/click_shape_captcha.go
@@ -1,4 +1,4 @@
-package captcha
+package initialize
import (
"github.com/wenlng/go-captcha-assets/resources/images"
diff --git a/app/core/api/repository/captcha/rotate_captcha.go b/common/captcha/initialize/rotate_captcha.go
similarity index 96%
rename from app/core/api/repository/captcha/rotate_captcha.go
rename to common/captcha/initialize/rotate_captcha.go
index 8714a3c..ad4a32a 100644
--- a/app/core/api/repository/captcha/rotate_captcha.go
+++ b/common/captcha/initialize/rotate_captcha.go
@@ -1,4 +1,4 @@
-package captcha
+package initialize
import (
"github.com/wenlng/go-captcha-assets/resources/images"
diff --git a/app/core/api/repository/captcha/slide_captcha.go b/common/captcha/initialize/slide_captcha.go
similarity index 98%
rename from app/core/api/repository/captcha/slide_captcha.go
rename to common/captcha/initialize/slide_captcha.go
index be03f59..f19cb37 100644
--- a/app/core/api/repository/captcha/slide_captcha.go
+++ b/common/captcha/initialize/slide_captcha.go
@@ -1,4 +1,4 @@
-package captcha
+package initialize
import (
"github.com/wenlng/go-captcha-assets/resources/images"
diff --git a/app/core/api/repository/captcha/slide_region_captcha.go b/common/captcha/initialize/slide_region_captcha.go
similarity index 98%
rename from app/core/api/repository/captcha/slide_region_captcha.go
rename to common/captcha/initialize/slide_region_captcha.go
index 3986da4..92a2c4a 100644
--- a/app/core/api/repository/captcha/slide_region_captcha.go
+++ b/common/captcha/initialize/slide_region_captcha.go
@@ -1,4 +1,4 @@
-package captcha
+package initialize
import (
"github.com/wenlng/go-captcha-assets/resources/images"
diff --git a/app/core/api/repository/captcha/text_captcha.go b/common/captcha/initialize/text_captcha.go
similarity index 99%
rename from app/core/api/repository/captcha/text_captcha.go
rename to common/captcha/initialize/text_captcha.go
index 5612a88..1946501 100644
--- a/app/core/api/repository/captcha/text_captcha.go
+++ b/common/captcha/initialize/text_captcha.go
@@ -1,4 +1,4 @@
-package captcha
+package initialize
import (
"github.com/golang/freetype/truetype"
diff --git a/app/core/api/common/captcha/verify/verify_basic_text_captcha.go b/common/captcha/verify/verify_basic_text_captcha.go
similarity index 93%
rename from app/core/api/common/captcha/verify/verify_basic_text_captcha.go
rename to common/captcha/verify/verify_basic_text_captcha.go
index 7a43e00..bb11a5f 100644
--- a/app/core/api/common/captcha/verify/verify_basic_text_captcha.go
+++ b/common/captcha/verify/verify_basic_text_captcha.go
@@ -4,13 +4,12 @@ import (
"context"
"encoding/json"
"fmt"
+ "schisandra-album-cloud-microservices/common/constant"
"strconv"
"strings"
"github.com/redis/go-redis/v9"
"github.com/wenlng/go-captcha/v2/click"
-
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
)
// VerifyBasicTextCaptcha verify basic text captcha
diff --git a/app/core/api/common/captcha/verify/verify_rotate_captcha.go b/common/captcha/verify/verify_rotate_captcha.go
similarity index 91%
rename from app/core/api/common/captcha/verify/verify_rotate_captcha.go
rename to common/captcha/verify/verify_rotate_captcha.go
index 470ce1a..82faa38 100644
--- a/app/core/api/common/captcha/verify/verify_rotate_captcha.go
+++ b/common/captcha/verify/verify_rotate_captcha.go
@@ -4,12 +4,11 @@ import (
"context"
"encoding/json"
"fmt"
+ "schisandra-album-cloud-microservices/common/constant"
"strconv"
"github.com/redis/go-redis/v9"
"github.com/wenlng/go-captcha/v2/rotate"
-
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
)
// VerifyRotateCaptcha verify rotate captcha
diff --git a/app/core/api/common/captcha/verify/verify_slide_captcha.go b/common/captcha/verify/verify_slide_captcha.go
similarity index 92%
rename from app/core/api/common/captcha/verify/verify_slide_captcha.go
rename to common/captcha/verify/verify_slide_captcha.go
index c8ca158..5355b23 100644
--- a/app/core/api/common/captcha/verify/verify_slide_captcha.go
+++ b/common/captcha/verify/verify_slide_captcha.go
@@ -4,12 +4,11 @@ import (
"context"
"encoding/json"
"fmt"
+ "schisandra-album-cloud-microservices/common/constant"
"strconv"
"github.com/redis/go-redis/v9"
"github.com/wenlng/go-captcha/v2/slide"
-
- "schisandra-album-cloud-microservices/app/core/api/common/constant"
)
// VerifySlideCaptcha verify slide captcha
diff --git a/app/core/api/repository/casbinx/casbin.go b/common/casbinx/casbin.go
similarity index 100%
rename from app/core/api/repository/casbinx/casbin.go
rename to common/casbinx/casbin.go
diff --git a/app/core/api/common/constant/comment_type.go b/common/constant/comment_type.go
similarity index 100%
rename from app/core/api/common/constant/comment_type.go
rename to common/constant/comment_type.go
diff --git a/app/core/api/common/constant/gender.go b/common/constant/gender.go
similarity index 100%
rename from app/core/api/common/constant/gender.go
rename to common/constant/gender.go
diff --git a/app/core/api/common/constant/jwt_type.go b/common/constant/jwt_type.go
similarity index 100%
rename from app/core/api/common/constant/jwt_type.go
rename to common/constant/jwt_type.go
diff --git a/app/core/api/common/constant/mongodb.go b/common/constant/mongodb.go
similarity index 100%
rename from app/core/api/common/constant/mongodb.go
rename to common/constant/mongodb.go
diff --git a/app/core/api/common/constant/oauth_type.go b/common/constant/oauth_type.go
similarity index 100%
rename from app/core/api/common/constant/oauth_type.go
rename to common/constant/oauth_type.go
diff --git a/common/constant/redis_prefix.go b/common/constant/redis_prefix.go
new file mode 100644
index 0000000..58e3eff
--- /dev/null
+++ b/common/constant/redis_prefix.go
@@ -0,0 +1,15 @@
+package constant
+
+// 用户相关的redis key
+const (
+ UserClientPrefix string = "user:client:"
+ UserCaptchaPrefix string = "user:captcha:"
+ UserTokenPrefix string = "user:token:"
+ UserSmsRedisPrefix string = "user:sms:"
+ UserQrcodePrefix = "user:qrcode:"
+)
+
+// 系统相关的redis key
+const (
+ SystemApiNoncePrefix = "system:nonce:"
+)
diff --git a/app/core/api/common/constant/time.go b/common/constant/time.go
similarity index 100%
rename from app/core/api/common/constant/time.go
rename to common/constant/time.go
diff --git a/app/core/api/common/constant/uid_key.go b/common/constant/uid_key.go
similarity index 100%
rename from app/core/api/common/constant/uid_key.go
rename to common/constant/uid_key.go
diff --git a/app/core/api/common/constant/user_role.go b/common/constant/user_role.go
similarity index 100%
rename from app/core/api/common/constant/user_role.go
rename to common/constant/user_role.go
diff --git a/app/core/api/common/encrypt/aes.go b/common/encrypt/aes.go
similarity index 100%
rename from app/core/api/common/encrypt/aes.go
rename to common/encrypt/aes.go
diff --git a/app/core/api/common/errors/errors.go b/common/errors/errors.go
similarity index 100%
rename from app/core/api/common/errors/errors.go
rename to common/errors/errors.go
diff --git a/app/core/api/common/i18n/bundle.go b/common/i18n/bundle.go
similarity index 100%
rename from app/core/api/common/i18n/bundle.go
rename to common/i18n/bundle.go
diff --git a/app/core/api/common/i18n/cache.go b/common/i18n/cache.go
similarity index 100%
rename from app/core/api/common/i18n/cache.go
rename to common/i18n/cache.go
diff --git a/app/core/api/common/i18n/i18n.go b/common/i18n/i18n.go
similarity index 100%
rename from app/core/api/common/i18n/i18n.go
rename to common/i18n/i18n.go
diff --git a/app/core/api/common/i18n/keys.go b/common/i18n/keys.go
similarity index 100%
rename from app/core/api/common/i18n/keys.go
rename to common/i18n/keys.go
diff --git a/app/core/api/common/i18n/middleware.go b/common/i18n/middleware.go
similarity index 100%
rename from app/core/api/common/i18n/middleware.go
rename to common/i18n/middleware.go
diff --git a/app/core/api/common/i18n/parse.go b/common/i18n/parse.go
similarity index 100%
rename from app/core/api/common/i18n/parse.go
rename to common/i18n/parse.go
diff --git a/app/core/api/common/i18n/rpc_interceptor.go b/common/i18n/rpc_interceptor.go
similarity index 100%
rename from app/core/api/common/i18n/rpc_interceptor.go
rename to common/i18n/rpc_interceptor.go
diff --git a/app/core/api/repository/idgenerator/idgenerator.go b/common/idgenerator/idgenerator.go
similarity index 80%
rename from app/core/api/repository/idgenerator/idgenerator.go
rename to common/idgenerator/idgenerator.go
index c3819a1..7b337d5 100644
--- a/app/core/api/repository/idgenerator/idgenerator.go
+++ b/common/idgenerator/idgenerator.go
@@ -2,8 +2,8 @@ package idgenerator
import "github.com/yitter/idgenerator-go/idgen"
-func NewIDGenerator() {
- var options = idgen.NewIdGeneratorOptions(1)
+func NewIDGenerator(workerId uint16) {
+ var options = idgen.NewIdGeneratorOptions(workerId)
options.WorkerIdBitLength = 6 // 默认值6,限定 WorkerId 最大值为2^6-1,即默认最多支持64个节点。
options.SeqBitLength = 6 // 默认值6,限制每毫秒生成的ID个数。若生成速度超过5万个/秒,建议加大 SeqBitLength 到 10。
idgen.SetIdGenerator(options)
diff --git a/app/core/api/repository/ip2region/ip2region.go b/common/ip2region/ip2region.go
similarity index 100%
rename from app/core/api/repository/ip2region/ip2region.go
rename to common/ip2region/ip2region.go
diff --git a/app/core/api/common/jwt/access_token.go b/common/jwt/access_token.go
similarity index 94%
rename from app/core/api/common/jwt/access_token.go
rename to common/jwt/access_token.go
index 30727ad..b9c6494 100644
--- a/app/core/api/common/jwt/access_token.go
+++ b/common/jwt/access_token.go
@@ -19,7 +19,7 @@ func GenerateAccessToken(secret string, payload AccessJWTPayload) (string, int64
claims := AccessJWTClaims{
AccessJWTPayload: payload,
RegisteredClaims: jwt.RegisteredClaims{
- ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Minute * 30)),
+ ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Hour * 2)),
IssuedAt: jwt.NewNumericDate(time.Now()),
NotBefore: jwt.NewNumericDate(time.Now()),
},
diff --git a/app/core/api/common/jwt/refresh_token.go b/common/jwt/refresh_token.go
similarity index 100%
rename from app/core/api/common/jwt/refresh_token.go
rename to common/jwt/refresh_token.go
diff --git a/common/middleware/authorization_middleware.go b/common/middleware/authorization_middleware.go
new file mode 100644
index 0000000..779f282
--- /dev/null
+++ b/common/middleware/authorization_middleware.go
@@ -0,0 +1,32 @@
+package middleware
+
+import (
+ "github.com/zeromicro/go-zero/core/logx"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/xhttp"
+ "strconv"
+ "time"
+)
+
+func AuthorizationMiddleware(w http.ResponseWriter, r *http.Request) {
+ expireAtStr := r.Header.Get("X-Expire-At")
+ if expireAtStr == "" {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, errors.New(http.StatusForbidden, "unauthorized"))
+ return
+ }
+ expireAtInt, err := strconv.ParseInt(expireAtStr, 10, 64)
+ if err != nil {
+ logx.Errorf("Failed to parse X-Expire-At: %v", err)
+ xhttp.JsonBaseResponseCtx(r.Context(), w, errors.New(http.StatusForbidden, "unauthorized"))
+ return
+ }
+ expireAt := time.Unix(expireAtInt, 0)
+ currentTime := time.Now()
+
+ remainingTime := expireAt.Sub(currentTime)
+ if remainingTime < time.Minute*5 {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, errors.New(http.StatusUnauthorized, "token expired"))
+ return
+ }
+}
diff --git a/common/middleware/casbin_middleware.go b/common/middleware/casbin_middleware.go
new file mode 100644
index 0000000..ddbd0c1
--- /dev/null
+++ b/common/middleware/casbin_middleware.go
@@ -0,0 +1,18 @@
+package middleware
+
+import (
+ "github.com/casbin/casbin/v2"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/constant"
+ "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/xhttp"
+)
+
+func CasbinMiddleware(w http.ResponseWriter, r *http.Request, casbin *casbin.SyncedCachedEnforcer) {
+ userId := r.Header.Get(constant.UID_HEADER_KEY)
+ correct, err := casbin.Enforce(userId, r.URL.Path, r.Method)
+ if err != nil || !correct {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, errors.New(http.StatusForbidden, "forbidden"))
+ return
+ }
+}
diff --git a/app/core/api/common/middleware/cors_middleware.go b/common/middleware/cors_middleware.go
similarity index 100%
rename from app/core/api/common/middleware/cors_middleware.go
rename to common/middleware/cors_middleware.go
diff --git a/app/core/api/common/middleware/i18n_middleware.go b/common/middleware/i18n_middleware.go
similarity index 88%
rename from app/core/api/common/middleware/i18n_middleware.go
rename to common/middleware/i18n_middleware.go
index 2522478..5bd471e 100644
--- a/app/core/api/common/middleware/i18n_middleware.go
+++ b/common/middleware/i18n_middleware.go
@@ -4,10 +4,9 @@ import (
"net/http"
"os"
"path/filepath"
+ "schisandra-album-cloud-microservices/common/i18n"
"golang.org/x/text/language"
-
- "schisandra-album-cloud-microservices/app/core/api/common/i18n"
)
func I18nMiddleware(next http.HandlerFunc) http.HandlerFunc {
diff --git a/common/middleware/nonce_middleware.go b/common/middleware/nonce_middleware.go
new file mode 100644
index 0000000..d918e4e
--- /dev/null
+++ b/common/middleware/nonce_middleware.go
@@ -0,0 +1,32 @@
+package middleware
+
+import (
+ "github.com/redis/go-redis/v9"
+ "net/http"
+ "schisandra-album-cloud-microservices/common/constant"
+ "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/xhttp"
+ "time"
+)
+
+func NonceMiddleware(w http.ResponseWriter, r *http.Request, redisClient *redis.Client) {
+ nonce := r.Header.Get("X-Nonce")
+ if nonce == "" {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, errors.New(http.StatusBadRequest, "bad request!"))
+ return
+ }
+ if len(nonce) != 32 {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, errors.New(http.StatusBadRequest, "bad request!"))
+ return
+ }
+ result := redisClient.Get(r.Context(), constant.SystemApiNoncePrefix+nonce).Val()
+ if result != "" {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, errors.New(http.StatusBadRequest, "bad request!"))
+ return
+ }
+ err := redisClient.Set(r.Context(), constant.SystemApiNoncePrefix+nonce, nonce, time.Minute*1).Err()
+ if err != nil {
+ xhttp.JsonBaseResponseCtx(r.Context(), w, errors.New(http.StatusInternalServerError, "internal server error!"))
+ return
+ }
+}
diff --git a/app/core/api/common/middleware/security_headers_middleware.go b/common/middleware/security_headers_middleware.go
similarity index 100%
rename from app/core/api/common/middleware/security_headers_middleware.go
rename to common/middleware/security_headers_middleware.go
diff --git a/app/core/api/common/middleware/unauthorized_callback_middleware.go b/common/middleware/unauthorized_callback_middleware.go
similarity index 50%
rename from app/core/api/common/middleware/unauthorized_callback_middleware.go
rename to common/middleware/unauthorized_callback_middleware.go
index e9e46fe..e22fe0f 100644
--- a/app/core/api/common/middleware/unauthorized_callback_middleware.go
+++ b/common/middleware/unauthorized_callback_middleware.go
@@ -2,15 +2,13 @@ package middleware
import (
"net/http"
-
- "github.com/zeromicro/go-zero/rest/httpx"
-
- "schisandra-album-cloud-microservices/app/core/api/common/response"
+ "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/xhttp"
)
func UnauthorizedCallbackMiddleware() func(w http.ResponseWriter, r *http.Request, err error) {
return func(w http.ResponseWriter, r *http.Request, err error) {
- httpx.OkJsonCtx(r.Context(), w, response.ErrorWithCodeMessage(http.StatusUnauthorized, err.Error()))
+ xhttp.JsonBaseResponseCtx(r.Context(), w, errors.New(http.StatusUnauthorized, err.Error()))
return
}
}
diff --git a/app/core/api/common/middleware/unsigned_callback_middleware.go b/common/middleware/unsigned_callback_middleware.go
similarity index 56%
rename from app/core/api/common/middleware/unsigned_callback_middleware.go
rename to common/middleware/unsigned_callback_middleware.go
index 658eddd..6b5e1a8 100644
--- a/app/core/api/common/middleware/unsigned_callback_middleware.go
+++ b/common/middleware/unsigned_callback_middleware.go
@@ -1,13 +1,14 @@
package middleware
import (
- "github.com/zeromicro/go-zero/rest/httpx"
"net/http"
+ "schisandra-album-cloud-microservices/common/errors"
+ "schisandra-album-cloud-microservices/common/xhttp"
)
func UnsignedCallbackMiddleware() func(w http.ResponseWriter, r *http.Request, next http.Handler, strict bool, code int) {
return func(w http.ResponseWriter, r *http.Request, next http.Handler, strict bool, code int) {
- httpx.WriteJsonCtx(r.Context(), w, http.StatusForbidden, "forbidden")
+ xhttp.JsonBaseResponseCtx(r.Context(), w, errors.New(http.StatusForbidden, "Unsigned callback not allowed"))
return
}
}
diff --git a/app/core/api/common/random_name/actsomething.go b/common/random_name/actsomething.go
similarity index 100%
rename from app/core/api/common/random_name/actsomething.go
rename to common/random_name/actsomething.go
diff --git a/app/core/api/common/random_name/adjective.go b/common/random_name/adjective.go
similarity index 100%
rename from app/core/api/common/random_name/adjective.go
rename to common/random_name/adjective.go
diff --git a/app/core/api/common/random_name/person.go b/common/random_name/person.go
similarity index 100%
rename from app/core/api/common/random_name/person.go
rename to common/random_name/person.go
diff --git a/app/core/api/common/random_name/randomname.go b/common/random_name/randomname.go
similarity index 100%
rename from app/core/api/common/random_name/randomname.go
rename to common/random_name/randomname.go
diff --git a/app/core/api/common/random_name/randomtype.go b/common/random_name/randomtype.go
similarity index 100%
rename from app/core/api/common/random_name/randomtype.go
rename to common/random_name/randomtype.go
diff --git a/app/core/api/repository/redisx/redis.go b/common/redisx/redis.go
similarity index 100%
rename from app/core/api/repository/redisx/redis.go
rename to common/redisx/redis.go
diff --git a/app/core/api/repository/sensitivex/sensitive.go b/common/sensitivex/sensitive.go
similarity index 100%
rename from app/core/api/repository/sensitivex/sensitive.go
rename to common/sensitivex/sensitive.go
diff --git a/app/core/api/common/utils/encrypt.go b/common/utils/encrypt.go
similarity index 100%
rename from app/core/api/common/utils/encrypt.go
rename to common/utils/encrypt.go
diff --git a/app/core/api/common/utils/gen_validate_code.go b/common/utils/gen_validate_code.go
similarity index 100%
rename from app/core/api/common/utils/gen_validate_code.go
rename to common/utils/gen_validate_code.go
diff --git a/app/core/api/common/utils/generate_avatar.go b/common/utils/generate_avatar.go
similarity index 99%
rename from app/core/api/common/utils/generate_avatar.go
rename to common/utils/generate_avatar.go
index db02dbc..f6da048 100644
--- a/app/core/api/common/utils/generate_avatar.go
+++ b/common/utils/generate_avatar.go
@@ -16,7 +16,7 @@ type Options struct {
Part int
}
-var svgStart = "