🏗️ microservice fabric splitting
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -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
|
||||
|
4520
.idea/GOHCache.xml
generated
4520
.idea/GOHCache.xml
generated
File diff suppressed because it is too large
Load Diff
@@ -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)
|
||||
}
|
||||
|
@@ -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()
|
||||
}
|
@@ -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
|
3
app/auth/api/generate.go
Normal file
3
app/auth/api/generate.go
Normal file
@@ -0,0 +1,3 @@
|
||||
package main
|
||||
|
||||
//go:generate goctl api go -api auth.api -dir . --style=go_zero
|
@@ -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
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
28
app/auth/api/internal/handler/oauth/qq_callback_handler.go
Normal file
28
app/auth/api/internal/handler/oauth/qq_callback_handler.go
Normal file
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
@@ -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",
|
@@ -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)
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
21
app/auth/api/internal/handler/token/refresh_token_handler.go
Normal file
21
app/auth/api/internal/handler/token/refresh_token_handler.go
Normal file
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
29
app/auth/api/internal/handler/user/account_login_handler.go
Normal file
29
app/auth/api/internal/handler/user/account_login_handler.go
Normal file
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
29
app/auth/api/internal/handler/user/phone_login_handler.go
Normal file
29
app/auth/api/internal/handler/user/phone_login_handler.go
Normal file
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
24
app/auth/api/internal/handler/user/reset_password_handler.go
Normal file
24
app/auth/api/internal/handler/user/reset_password_handler.go
Normal file
@@ -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)
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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 {
|
@@ -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 {
|
@@ -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
|
||||
}
|
@@ -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
|
||||
}
|
@@ -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
|
||||
}
|
@@ -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
|
||||
}
|
@@ -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
|
||||
}
|
@@ -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
|
||||
}
|
@@ -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
|
||||
}
|
@@ -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)
|
@@ -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)
|
@@ -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
|
||||
}
|
@@ -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 {
|
@@ -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
|
||||
|
||||
}
|
@@ -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
|
||||
}
|
@@ -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
|
||||
}
|
@@ -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
|
||||
}
|
@@ -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
|
||||
}
|
@@ -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
|
||||
}
|
@@ -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
|
||||
}
|
||||
}
|
76
app/auth/api/internal/logic/user/reset_password_logic.go
Normal file
76
app/auth/api/internal/logic/user/reset_password_logic.go
Normal file
@@ -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
|
||||
}
|
@@ -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
|
||||
|
||||
}
|
||||
}
|
@@ -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 {
|
@@ -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 {
|
20
app/auth/api/internal/middleware/authorization_middleware.go
Normal file
20
app/auth/api/internal/middleware/authorization_middleware.go
Normal file
@@ -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)
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
24
app/auth/api/internal/middleware/nonce_middleware.go
Normal file
24
app/auth/api/internal/middleware/nonce_middleware.go
Normal file
@@ -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)
|
||||
}
|
||||
}
|
@@ -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 {
|
56
app/auth/api/internal/svc/service_context.go
Normal file
56
app/auth/api/internal/svc/service_context.go
Normal file
@@ -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(),
|
||||
}
|
||||
}
|
79
app/auth/api/internal/types/types.go
Normal file
79
app/auth/api/internal/types/types.go
Normal file
@@ -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"`
|
||||
}
|
107
app/auth/api/model/mysql/generate/generate.go
Normal file
107
app/auth/api/model/mysql/generate/generate.go
Normal file
@@ -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()
|
||||
}
|
64
app/auth/api/model/mysql/mysql.go
Normal file
64
app/auth/api/model/mysql/mysql.go
Normal file
@@ -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
|
||||
}
|
159
app/auth/api/model/mysql/query/gen.go
Normal file
159
app/auth/api/model/mysql/query/gen.go
Normal file
@@ -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
|
||||
}
|
427
app/auth/api/model/mysql/query/sca_auth_menu.gen.go
Normal file
427
app/auth/api/model/mysql/query/sca_auth_menu.gen.go
Normal file
@@ -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
|
||||
}
|
407
app/auth/api/model/mysql/query/sca_auth_permission_rule.gen.go
Normal file
407
app/auth/api/model/mysql/query/sca_auth_permission_rule.gen.go
Normal file
@@ -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
|
||||
}
|
399
app/auth/api/model/mysql/query/sca_auth_role.gen.go
Normal file
399
app/auth/api/model/mysql/query/sca_auth_role.gen.go
Normal file
@@ -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
|
||||
}
|
443
app/auth/api/model/mysql/query/sca_auth_user.gen.go
Normal file
443
app/auth/api/model/mysql/query/sca_auth_user.gen.go
Normal file
@@ -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
|
||||
}
|
443
app/auth/api/model/mysql/query/sca_auth_user_device.gen.go
Normal file
443
app/auth/api/model/mysql/query/sca_auth_user_device.gen.go
Normal file
@@ -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
|
||||
}
|
407
app/auth/api/model/mysql/query/sca_auth_user_social.gen.go
Normal file
407
app/auth/api/model/mysql/query/sca_auth_user_social.gen.go
Normal file
@@ -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
|
||||
}
|
419
app/auth/api/model/mysql/query/sca_user_level.gen.go
Normal file
419
app/auth/api/model/mysql/query/sca_user_level.gen.go
Normal file
@@ -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
|
||||
}
|
411
app/auth/api/model/mysql/query/sca_user_message.gen.go
Normal file
411
app/auth/api/model/mysql/query/sca_user_message.gen.go
Normal file
@@ -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
|
||||
}
|
@@ -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!"
|
||||
smsSendSuccess = "sms send success!"
|
@@ -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 = "上传成功!"
|
152
app/community/api/community.api
Normal file
152
app/community/api/community.api
Normal file
@@ -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)
|
||||
}
|
||||
|
36
app/community/api/community.go
Normal file
36
app/community/api/community.go
Normal file
@@ -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()
|
||||
}
|
84
app/community/api/etc/community.yaml
Normal file
84
app/community/api/etc/community.yaml
Normal file
@@ -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
|
3
app/community/api/generate.go
Normal file
3
app/community/api/generate.go
Normal file
@@ -0,0 +1,3 @@
|
||||
package main
|
||||
|
||||
//go:generate goctl api go -api community.api -dir . --style=go_zero
|
27
app/community/api/internal/config/config.go
Normal file
27
app/community/api/internal/config/config.go
Normal file
@@ -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
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
63
app/community/api/internal/handler/routes.go
Normal file
63
app/community/api/internal/handler/routes.go
Normal file
@@ -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),
|
||||
)
|
||||
}
|
@@ -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
|
||||
}
|
@@ -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
|
||||
}
|
@@ -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
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user