🎨 update project structure
This commit is contained in:
29
api/api.go
29
api/api.go
@@ -1,29 +0,0 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/api/captcha_api"
|
||||
"schisandra-cloud-album/api/client_api"
|
||||
"schisandra-cloud-album/api/comment_api"
|
||||
"schisandra-cloud-album/api/oauth_api"
|
||||
"schisandra-cloud-album/api/permission_api"
|
||||
"schisandra-cloud-album/api/role_api"
|
||||
"schisandra-cloud-album/api/sms_api"
|
||||
"schisandra-cloud-album/api/user_api"
|
||||
"schisandra-cloud-album/api/websocket_api"
|
||||
)
|
||||
|
||||
// Apis 统一导出的api
|
||||
type Apis struct {
|
||||
UserApi user_api.UserAPI
|
||||
CaptchaApi captcha_api.CaptchaAPI
|
||||
SmsApi sms_api.SmsAPI
|
||||
OAuthApi oauth_api.OAuthAPI
|
||||
WebsocketApi websocket_api.WebsocketAPI
|
||||
RoleApi role_api.RoleAPI
|
||||
PermissionApi permission_api.PermissionAPI
|
||||
ClientApi client_api.ClientAPI
|
||||
CommonApi comment_api.CommentAPI
|
||||
}
|
||||
|
||||
// Api new函数实例化,实例化完成后会返回结构体地指针类型
|
||||
var Api = new(Apis)
|
@@ -1,3 +0,0 @@
|
||||
package captcha_api
|
||||
|
||||
type CaptchaAPI struct{}
|
@@ -1,7 +0,0 @@
|
||||
package client_api
|
||||
|
||||
import "sync"
|
||||
|
||||
type ClientAPI struct{}
|
||||
|
||||
var mu sync.Mutex
|
@@ -1,3 +0,0 @@
|
||||
package permission_api
|
||||
|
||||
type PermissionAPI struct{}
|
@@ -1,3 +0,0 @@
|
||||
package role_api
|
||||
|
||||
type RoleAPI struct{}
|
@@ -1,3 +0,0 @@
|
||||
package sms_api
|
||||
|
||||
type SmsAPI struct{}
|
@@ -1,7 +0,0 @@
|
||||
package user_api
|
||||
|
||||
import "sync"
|
||||
|
||||
type UserAPI struct{}
|
||||
|
||||
var mu sync.Mutex
|
@@ -1,4 +0,0 @@
|
||||
package websocket_api
|
||||
|
||||
type WebsocketAPI struct {
|
||||
}
|
@@ -19,5 +19,5 @@ const (
|
||||
// 系统相关的redis key
|
||||
|
||||
const (
|
||||
SystemApiNonceRedisKey = "system:api:nonce:"
|
||||
SystemApiNonceRedisKey = "system:controller:nonce:"
|
||||
)
|
||||
|
3
controller/captcha_controller/captcha.go
Normal file
3
controller/captcha_controller/captcha.go
Normal file
@@ -0,0 +1,3 @@
|
||||
package captcha_controller
|
||||
|
||||
type CaptchaController struct{}
|
@@ -1,4 +1,4 @@
|
||||
package captcha_api
|
||||
package captcha_controller
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
@@ -24,8 +24,8 @@ import (
|
||||
// @Description 生成旋转验证码
|
||||
// @Tags 旋转验证码
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/captcha/rotate/get [get]
|
||||
func (CaptchaAPI) GenerateRotateCaptcha(c *gin.Context) {
|
||||
// @Router /controller/captcha/rotate/get [get]
|
||||
func (CaptchaController) GenerateRotateCaptcha(c *gin.Context) {
|
||||
captchaData, err := global.RotateCaptcha.Generate()
|
||||
if err != nil {
|
||||
global.LOG.Fatalln(err)
|
||||
@@ -69,8 +69,8 @@ func (CaptchaAPI) GenerateRotateCaptcha(c *gin.Context) {
|
||||
// @Param angle query string true "验证码角度"
|
||||
// @Param key query string true "验证码key"
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/captcha/rotate/check [post]
|
||||
func (CaptchaAPI) CheckRotateData(c *gin.Context) {
|
||||
// @Router /controller/captcha/rotate/check [post]
|
||||
func (CaptchaController) CheckRotateData(c *gin.Context) {
|
||||
var rotateRequest RotateCaptchaRequest
|
||||
if err := c.ShouldBindJSON(&rotateRequest); err != nil {
|
||||
result.FailWithNull(c)
|
||||
@@ -110,8 +110,8 @@ func (CaptchaAPI) CheckRotateData(c *gin.Context) {
|
||||
// @Tags 基础文字验证码
|
||||
// @Param type query string true "验证码类型"
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/captcha/text/get [get]
|
||||
func (CaptchaAPI) GenerateBasicTextCaptcha(c *gin.Context) {
|
||||
// @Router /controller/captcha/text/get [get]
|
||||
func (CaptchaController) GenerateBasicTextCaptcha(c *gin.Context) {
|
||||
var capt click.Captcha
|
||||
if c.Query("type") == "light" {
|
||||
capt = global.LightTextCaptcha
|
||||
@@ -157,8 +157,8 @@ func (CaptchaAPI) GenerateBasicTextCaptcha(c *gin.Context) {
|
||||
// @Param captcha query string true "验证码"
|
||||
// @Param key query string true "验证码key"
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/captcha/text/check [get]
|
||||
func (CaptchaAPI) CheckClickData(c *gin.Context) {
|
||||
// @Router /controller/captcha/text/check [get]
|
||||
func (CaptchaController) CheckClickData(c *gin.Context) {
|
||||
dots := c.Query("dots")
|
||||
key := c.Query("key")
|
||||
if dots == "" || key == "" {
|
||||
@@ -204,8 +204,8 @@ func (CaptchaAPI) CheckClickData(c *gin.Context) {
|
||||
// @Description 生成点击形状验证码
|
||||
// @Tags 点击形状验证码
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/captcha/shape/get [get]
|
||||
func (CaptchaAPI) GenerateClickShapeCaptcha(c *gin.Context) {
|
||||
// @Router /controller/captcha/shape/get [get]
|
||||
func (CaptchaController) GenerateClickShapeCaptcha(c *gin.Context) {
|
||||
captData, err := global.ClickShapeCaptcha.Generate()
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
@@ -243,8 +243,8 @@ func (CaptchaAPI) GenerateClickShapeCaptcha(c *gin.Context) {
|
||||
// @Description 滑块基础验证码
|
||||
// @Tags 滑块基础验证码
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/captcha/slide/generate [get]
|
||||
func (CaptchaAPI) GenerateSlideBasicCaptData(c *gin.Context) {
|
||||
// @Router /controller/captcha/slide/generate [get]
|
||||
func (CaptchaController) GenerateSlideBasicCaptData(c *gin.Context) {
|
||||
captData, err := global.SlideCaptcha.Generate()
|
||||
if err != nil {
|
||||
global.LOG.Fatalln(err)
|
||||
@@ -287,8 +287,8 @@ func (CaptchaAPI) GenerateSlideBasicCaptData(c *gin.Context) {
|
||||
// @Description 生成滑动区域形状验证码
|
||||
// @Tags 生成滑动区域形状验证码
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/captcha/shape/slide/region/get [get]
|
||||
func (CaptchaAPI) GenerateSlideRegionCaptData(c *gin.Context) {
|
||||
// @Router /controller/captcha/shape/slide/region/get [get]
|
||||
func (CaptchaController) GenerateSlideRegionCaptData(c *gin.Context) {
|
||||
captData, err := global.SlideRegionCaptcha.Generate()
|
||||
if err != nil {
|
||||
global.LOG.Fatalln(err)
|
||||
@@ -335,8 +335,8 @@ func (CaptchaAPI) GenerateSlideRegionCaptData(c *gin.Context) {
|
||||
// @Param point query string true "点击坐标"
|
||||
// @Param key query string true "验证码key"
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/captcha/shape/slide/check [get]
|
||||
func (CaptchaAPI) CheckSlideData(c *gin.Context) {
|
||||
// @Router /controller/captcha/shape/slide/check [get]
|
||||
func (CaptchaController) CheckSlideData(c *gin.Context) {
|
||||
point := c.Query("point")
|
||||
key := c.Query("key")
|
||||
if point == "" || key == "" {
|
@@ -1,4 +1,4 @@
|
||||
package captcha_api
|
||||
package captcha_controller
|
||||
|
||||
type RotateCaptchaRequest struct {
|
||||
Angle int `json:"angle" binding:"required"`
|
7
controller/client_controller/client.go
Normal file
7
controller/client_controller/client.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package client_controller
|
||||
|
||||
import "sync"
|
||||
|
||||
type ClientController struct{}
|
||||
|
||||
var mu sync.Mutex
|
@@ -1,4 +1,4 @@
|
||||
package client_api
|
||||
package client_controller
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -16,8 +16,8 @@ import (
|
||||
// @Description 生成客户端ID
|
||||
// @Tags 微信公众号
|
||||
// @Produce json
|
||||
// @Router /api/oauth/generate_client_id [get]
|
||||
func (ClientAPI) GenerateClientId(c *gin.Context) {
|
||||
// @Router /controller/oauth/generate_client_id [get]
|
||||
func (ClientController) GenerateClientId(c *gin.Context) {
|
||||
// 获取客户端IP
|
||||
ip := utils.GetClientIP(c)
|
||||
// 加锁
|
@@ -1,16 +1,16 @@
|
||||
package comment_api
|
||||
package comment_controller
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/service"
|
||||
"schisandra-cloud-album/service/impl"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
type CommentAPI struct{}
|
||||
type CommentController struct{}
|
||||
|
||||
var wg sync.WaitGroup
|
||||
var mx sync.Mutex
|
||||
var commentReplyService = service.Service.CommentReplyService
|
||||
var commentReplyService = impl.CommentReplyServiceImpl{}
|
||||
|
||||
// CommentImages 评论图片
|
||||
type CommentImages struct {
|
@@ -1,4 +1,4 @@
|
||||
package comment_api
|
||||
package comment_controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
@@ -28,7 +28,7 @@ import (
|
||||
// @Produce json
|
||||
// @Param comment_request body CommentRequest true "评论请求"
|
||||
// @Router /auth/comment/submit [post]
|
||||
func (CommentAPI) CommentSubmit(c *gin.Context) {
|
||||
func (CommentController) CommentSubmit(c *gin.Context) {
|
||||
commentRequest := CommentRequest{}
|
||||
if err := c.ShouldBindJSON(&commentRequest); err != nil {
|
||||
return
|
||||
@@ -90,7 +90,7 @@ func (CommentAPI) CommentSubmit(c *gin.Context) {
|
||||
// 使用 goroutine 进行异步评论保存
|
||||
errCh := make(chan error, 2)
|
||||
go func() {
|
||||
errCh <- commentReplyService.CreateCommentReply(&commentReply)
|
||||
errCh <- commentReplyService.CreateCommentReplyService(&commentReply)
|
||||
}()
|
||||
|
||||
// 等待评论回复的创建
|
||||
@@ -149,7 +149,7 @@ func (CommentAPI) CommentSubmit(c *gin.Context) {
|
||||
// @Produce json
|
||||
// @Param reply_comment_request body ReplyCommentRequest true "回复评论请求"
|
||||
// @Router /auth/reply/submit [post]
|
||||
func (CommentAPI) ReplySubmit(c *gin.Context) {
|
||||
func (CommentController) ReplySubmit(c *gin.Context) {
|
||||
replyCommentRequest := ReplyCommentRequest{}
|
||||
if err := c.ShouldBindJSON(&replyCommentRequest); err != nil {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "ParamsError"), c)
|
||||
@@ -214,11 +214,11 @@ func (CommentAPI) ReplySubmit(c *gin.Context) {
|
||||
errCh := make(chan error)
|
||||
go func() {
|
||||
|
||||
errCh <- commentReplyService.CreateCommentReply(&commentReply)
|
||||
errCh <- commentReplyService.CreateCommentReplyService(&commentReply)
|
||||
}()
|
||||
go func() {
|
||||
|
||||
errCh <- commentReplyService.UpdateCommentReplyCount(replyCommentRequest.ReplyId)
|
||||
errCh <- commentReplyService.UpdateCommentReplyCountService(replyCommentRequest.ReplyId)
|
||||
}()
|
||||
// 等待评论回复的创建
|
||||
if err = <-errCh; err != nil {
|
||||
@@ -276,7 +276,7 @@ func (CommentAPI) ReplySubmit(c *gin.Context) {
|
||||
// @Produce json
|
||||
// @Param reply_reply_request body ReplyReplyRequest true "回复回复请求"
|
||||
// @Router /auth/reply/reply/submit [post]
|
||||
func (CommentAPI) ReplyReplySubmit(c *gin.Context) {
|
||||
func (CommentController) ReplyReplySubmit(c *gin.Context) {
|
||||
replyReplyRequest := ReplyReplyRequest{}
|
||||
if err := c.ShouldBindJSON(&replyReplyRequest); err != nil {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "ParamsError"), c)
|
||||
@@ -341,10 +341,10 @@ func (CommentAPI) ReplyReplySubmit(c *gin.Context) {
|
||||
|
||||
errCh := make(chan error, 2)
|
||||
go func() {
|
||||
errCh <- commentReplyService.CreateCommentReply(&commentReply)
|
||||
errCh <- commentReplyService.CreateCommentReplyService(&commentReply)
|
||||
}()
|
||||
go func() {
|
||||
errCh <- commentReplyService.UpdateCommentReplyCount(replyReplyRequest.ReplyId)
|
||||
errCh <- commentReplyService.UpdateCommentReplyCountService(replyReplyRequest.ReplyId)
|
||||
}()
|
||||
|
||||
if err = <-errCh; err != nil {
|
||||
@@ -401,7 +401,7 @@ func (CommentAPI) ReplyReplySubmit(c *gin.Context) {
|
||||
// @Produce json
|
||||
// @Param comment_list_request body CommentListRequest true "评论列表请求"
|
||||
// @Router /auth/comment/list [post]
|
||||
func (CommentAPI) CommentList(c *gin.Context) {
|
||||
func (CommentController) CommentList(c *gin.Context) {
|
||||
commentListRequest := CommentListRequest{}
|
||||
err := c.ShouldBindJSON(&commentListRequest)
|
||||
if err != nil {
|
||||
@@ -576,7 +576,7 @@ func (CommentAPI) CommentList(c *gin.Context) {
|
||||
// @Produce json
|
||||
// @Param reply_list_request body ReplyListRequest true "回复列表请求"
|
||||
// @Router /auth/reply/list [post]
|
||||
func (CommentAPI) ReplyList(c *gin.Context) {
|
||||
func (CommentController) ReplyList(c *gin.Context) {
|
||||
replyListRequest := ReplyListRequest{}
|
||||
err := c.ShouldBindJSON(&replyListRequest)
|
||||
if err != nil {
|
||||
@@ -757,7 +757,7 @@ func (CommentAPI) ReplyList(c *gin.Context) {
|
||||
// @Produce json
|
||||
// @Param comment_like_request body CommentLikeRequest true "点赞请求"
|
||||
// @Router /auth/comment/like [post]
|
||||
func (CommentAPI) CommentLikes(c *gin.Context) {
|
||||
func (CommentController) CommentLikes(c *gin.Context) {
|
||||
likeRequest := CommentLikeRequest{}
|
||||
err := c.ShouldBindJSON(&likeRequest)
|
||||
if err != nil {
|
||||
@@ -790,7 +790,7 @@ func (CommentAPI) CommentLikes(c *gin.Context) {
|
||||
|
||||
// 异步更新点赞计数
|
||||
go func() {
|
||||
if err = commentReplyService.UpdateCommentLikesCount(likeRequest.CommentId, likeRequest.TopicId); err != nil {
|
||||
if err = commentReplyService.UpdateCommentLikesCountService(likeRequest.CommentId, likeRequest.TopicId); err != nil {
|
||||
global.LOG.Errorln(err)
|
||||
}
|
||||
}()
|
||||
@@ -814,7 +814,7 @@ func (CommentAPI) CommentLikes(c *gin.Context) {
|
||||
// @Produce json
|
||||
// @Param comment_like_request body CommentLikeRequest true "取消点赞请求"
|
||||
// @Router /auth/comment/cancel_like [post]
|
||||
func (CommentAPI) CancelCommentLikes(c *gin.Context) {
|
||||
func (CommentController) CancelCommentLikes(c *gin.Context) {
|
||||
cancelLikeRequest := CommentLikeRequest{}
|
||||
if err := c.ShouldBindJSON(&cancelLikeRequest); err != nil {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "ParamsError"), c)
|
||||
@@ -843,7 +843,7 @@ func (CommentAPI) CancelCommentLikes(c *gin.Context) {
|
||||
|
||||
// 异步更新点赞计数
|
||||
go func() {
|
||||
if err := commentReplyService.DecrementCommentLikesCount(cancelLikeRequest.CommentId, cancelLikeRequest.TopicId); err != nil {
|
||||
if err := commentReplyService.DecrementCommentLikesCountService(cancelLikeRequest.CommentId, cancelLikeRequest.TopicId); err != nil {
|
||||
global.LOG.Errorln(err)
|
||||
}
|
||||
}()
|
@@ -1,4 +1,4 @@
|
||||
package comment_api
|
||||
package comment_controller
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
@@ -1,4 +1,4 @@
|
||||
package comment_api
|
||||
package comment_controller
|
||||
|
||||
type CommentRequest struct {
|
||||
Content string `json:"content" binding:"required"`
|
29
controller/controller.go
Normal file
29
controller/controller.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/controller/captcha_controller"
|
||||
"schisandra-cloud-album/controller/client_controller"
|
||||
"schisandra-cloud-album/controller/comment_controller"
|
||||
"schisandra-cloud-album/controller/oauth_controller"
|
||||
"schisandra-cloud-album/controller/permission_controller"
|
||||
"schisandra-cloud-album/controller/role_controller"
|
||||
"schisandra-cloud-album/controller/sms_controller"
|
||||
"schisandra-cloud-album/controller/user_controller"
|
||||
"schisandra-cloud-album/controller/websocket_controller"
|
||||
)
|
||||
|
||||
// Controllers 统一导出的控制器接口
|
||||
type Controllers struct {
|
||||
UserController user_controller.UserController
|
||||
CaptchaController captcha_controller.CaptchaController
|
||||
SmsController sms_controller.SmsController
|
||||
OAuthController oauth_controller.OAuthController
|
||||
WebsocketController websocket_controller.WebsocketController
|
||||
RoleController role_controller.RoleController
|
||||
PermissionController permission_controller.PermissionController
|
||||
ClientController client_controller.ClientController
|
||||
CommonController comment_controller.CommentController
|
||||
}
|
||||
|
||||
// Controller new函数实例化,实例化完成后会返回结构体地指针类型
|
||||
var Controller = new(Controllers)
|
@@ -1,4 +1,4 @@
|
||||
package oauth_api
|
||||
package oauth_controller
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
@@ -55,8 +55,8 @@ type GiteeUser struct {
|
||||
// @Tags Gitee OAuth
|
||||
// @Produce json
|
||||
// @Success 200 {string} string "登录地址"
|
||||
// @Router /api/oauth/gitee/get_url [get]
|
||||
func (OAuthAPI) GetGiteeRedirectUrl(c *gin.Context) {
|
||||
// @Router /controller/oauth/gitee/get_url [get]
|
||||
func (OAuthController) GetGiteeRedirectUrl(c *gin.Context) {
|
||||
clientID := global.CONFIG.OAuth.Gitee.ClientID
|
||||
redirectURI := global.CONFIG.OAuth.Gitee.RedirectURI
|
||||
url := "https://gitee.com/oauth/authorize?client_id=" + clientID + "&redirect_uri=" + redirectURI + "&response_type=code"
|
||||
@@ -133,8 +133,8 @@ func GetGiteeUserInfo(token *Token) (map[string]interface{}, error) {
|
||||
// @Description 处理Gitee回调
|
||||
// @Tags Gitee OAuth
|
||||
// @Produce json
|
||||
// @Router /api/oauth/gitee/callback [get]
|
||||
func (OAuthAPI) GiteeCallback(c *gin.Context) {
|
||||
// @Router /controller/oauth/gitee/callback [get]
|
||||
func (OAuthController) GiteeCallback(c *gin.Context) {
|
||||
var err error
|
||||
// 获取 code
|
||||
var code = c.Query("code")
|
||||
@@ -191,7 +191,7 @@ func (OAuthAPI) GiteeCallback(c *gin.Context) {
|
||||
}
|
||||
|
||||
Id := strconv.Itoa(giteeUser.ID)
|
||||
userSocial, err := userSocialService.QueryUserSocialByUUID(Id, enum.OAuthSourceGitee)
|
||||
userSocial, err := userSocialService.QueryUserSocialByOpenIDService(Id, enum.OAuthSourceGitee)
|
||||
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
db := global.DB
|
||||
tx := db.Begin() // 开始事务
|
||||
@@ -216,7 +216,7 @@ func (OAuthAPI) GiteeCallback(c *gin.Context) {
|
||||
Email: &giteeUser.Email,
|
||||
Gender: &enum.Male,
|
||||
}
|
||||
addUser, err := userService.AddUser(user)
|
||||
addUser, err := userService.AddUserService(user)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
global.LOG.Error(err)
|
||||
@@ -228,7 +228,7 @@ func (OAuthAPI) GiteeCallback(c *gin.Context) {
|
||||
OpenID: &Id,
|
||||
Source: &gitee,
|
||||
}
|
||||
err = userSocialService.AddUserSocial(userSocial)
|
||||
err = userSocialService.AddUserSocialService(userSocial)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
global.LOG.Error(err)
|
@@ -1,4 +1,4 @@
|
||||
package oauth_api
|
||||
package oauth_controller
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
@@ -58,8 +58,8 @@ type GitHubUser struct {
|
||||
// @Tags Github OAuth
|
||||
// @Produce json
|
||||
// @Success 200 {string} string "登录url"
|
||||
// @Router /api/oauth/github/get_url [get]
|
||||
func (OAuthAPI) GetRedirectUrl(c *gin.Context) {
|
||||
// @Router /controller/oauth/github/get_url [get]
|
||||
func (OAuthController) GetRedirectUrl(c *gin.Context) {
|
||||
state := c.Query("state")
|
||||
clientId := global.CONFIG.OAuth.Github.ClientID
|
||||
redirectUrl := global.CONFIG.OAuth.Github.RedirectURI
|
||||
@@ -139,8 +139,8 @@ func GetUserInfo(token *Token) (map[string]interface{}, error) {
|
||||
// @Produce json
|
||||
// @Param code query string true "code"
|
||||
// @Success 200 {string} string "登录成功"
|
||||
// @Router /api/oauth/github/callback [get]
|
||||
func (OAuthAPI) Callback(c *gin.Context) {
|
||||
// @Router /controller/oauth/github/callback [get]
|
||||
func (OAuthController) Callback(c *gin.Context) {
|
||||
var err error
|
||||
// 获取 code
|
||||
var code = c.Query("code")
|
||||
@@ -201,7 +201,7 @@ func (OAuthAPI) Callback(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
Id := strconv.Itoa(gitHubUser.ID)
|
||||
userSocial, err := userSocialService.QueryUserSocialByUUID(Id, enum.OAuthSourceGithub)
|
||||
userSocial, err := userSocialService.QueryUserSocialByOpenIDService(Id, enum.OAuthSourceGithub)
|
||||
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
db := global.DB
|
||||
tx := db.Begin() // 开始事务
|
||||
@@ -226,7 +226,7 @@ func (OAuthAPI) Callback(c *gin.Context) {
|
||||
Email: &gitHubUser.Email,
|
||||
Gender: &enum.Male,
|
||||
}
|
||||
addUser, err := userService.AddUser(user)
|
||||
addUser, err := userService.AddUserService(user)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
global.LOG.Error(err)
|
||||
@@ -238,7 +238,7 @@ func (OAuthAPI) Callback(c *gin.Context) {
|
||||
OpenID: &Id,
|
||||
Source: &github,
|
||||
}
|
||||
err = userSocialService.AddUserSocial(userSocial)
|
||||
err = userSocialService.AddUserSocialService(userSocial)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
global.LOG.Error(err)
|
@@ -1,4 +1,4 @@
|
||||
package oauth_api
|
||||
package oauth_controller
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
@@ -13,7 +13,7 @@ import (
|
||||
"schisandra-cloud-album/common/result"
|
||||
"schisandra-cloud-album/global"
|
||||
"schisandra-cloud-album/model"
|
||||
"schisandra-cloud-album/service"
|
||||
"schisandra-cloud-album/service/impl"
|
||||
"schisandra-cloud-album/utils"
|
||||
"sync"
|
||||
"time"
|
||||
@@ -21,11 +21,11 @@ import (
|
||||
|
||||
var mu sync.Mutex
|
||||
|
||||
type OAuthAPI struct{}
|
||||
type OAuthController struct{}
|
||||
|
||||
var userService = service.Service.UserService
|
||||
var userSocialService = service.Service.UserSocialService
|
||||
var userDeviceService = service.Service.UserDeviceService
|
||||
var userSocialService = impl.UserSocialServiceImpl{}
|
||||
var userService = impl.UserServiceImpl{}
|
||||
var userDeviceService = impl.UserDeviceServiceImpl{}
|
||||
|
||||
type Token struct {
|
||||
AccessToken string `json:"access_token"`
|
||||
@@ -131,7 +131,7 @@ func HandelUserLogin(userId string, c *gin.Context) (bool, result.Response) {
|
||||
}
|
||||
|
||||
// GetUserLoginDevice 获取用户登录设备
|
||||
func (OAuthAPI) GetUserLoginDevice(c *gin.Context) {
|
||||
func (OAuthController) GetUserLoginDevice(c *gin.Context) {
|
||||
userId := c.Query("user_id")
|
||||
if userId == "" {
|
||||
return
|
||||
@@ -174,16 +174,16 @@ func (OAuthAPI) GetUserLoginDevice(c *gin.Context) {
|
||||
}
|
||||
mu.Lock()
|
||||
defer mu.Unlock()
|
||||
userDevice, err := userDeviceService.GetUserDeviceByUIDIPAgent(userId, ip, userAgent)
|
||||
userDevice, err := userDeviceService.GetUserDeviceByUIDIPAgentService(userId, ip, userAgent)
|
||||
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
err = userDeviceService.AddUserDevice(&device)
|
||||
err = userDeviceService.AddUserDeviceService(&device)
|
||||
if err != nil {
|
||||
global.LOG.Errorln(err)
|
||||
return
|
||||
}
|
||||
return
|
||||
} else {
|
||||
err := userDeviceService.UpdateUserDevice(userDevice.ID, &device)
|
||||
err := userDeviceService.UpdateUserDeviceService(userDevice.ID, &device)
|
||||
if err != nil {
|
||||
global.LOG.Errorln(err)
|
||||
return
|
@@ -1,4 +1,4 @@
|
||||
package oauth_api
|
||||
package oauth_controller
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
@@ -55,8 +55,8 @@ type QQUserInfo struct {
|
||||
// @Tags QQ OAuth
|
||||
// @Produce json
|
||||
// @Success 200 {string} string "登录地址"
|
||||
// @Router /api/oauth/qq/get_url [get]
|
||||
func (OAuthAPI) GetQQRedirectUrl(c *gin.Context) {
|
||||
// @Router /controller/oauth/qq/get_url [get]
|
||||
func (OAuthController) GetQQRedirectUrl(c *gin.Context) {
|
||||
state := c.Query("state")
|
||||
clientId := global.CONFIG.OAuth.QQ.ClientID
|
||||
redirectURI := global.CONFIG.OAuth.QQ.RedirectURI
|
||||
@@ -164,8 +164,8 @@ func GetQQUserUserInfo(token *QQToken, openId string) (map[string]interface{}, e
|
||||
// @Description QQ登录回调
|
||||
// @Tags QQ OAuth
|
||||
// @Produce json
|
||||
// @Router /api/oauth/qq/callback [get]
|
||||
func (OAuthAPI) QQCallback(c *gin.Context) {
|
||||
// @Router /controller/oauth/qq/callback [get]
|
||||
func (OAuthController) QQCallback(c *gin.Context) {
|
||||
var err error
|
||||
// 获取 code
|
||||
var code = c.Query("code")
|
||||
@@ -244,7 +244,7 @@ func (OAuthAPI) QQCallback(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
userSocial, err := userSocialService.QueryUserSocialByOpenID(authQQme.OpenID, enum.OAuthSourceQQ)
|
||||
userSocial, err := userSocialService.QueryUserSocialByOpenIDService(authQQme.OpenID, enum.OAuthSourceQQ)
|
||||
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
db := global.DB
|
||||
tx := db.Begin() // 开始事务
|
||||
@@ -267,7 +267,7 @@ func (OAuthAPI) QQCallback(c *gin.Context) {
|
||||
Avatar: &qqUserInfo.FigureurlQq1,
|
||||
Gender: &qqUserInfo.Gender,
|
||||
}
|
||||
addUser, err := userService.AddUser(user)
|
||||
addUser, err := userService.AddUserService(user)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
global.LOG.Error(err)
|
||||
@@ -279,7 +279,7 @@ func (OAuthAPI) QQCallback(c *gin.Context) {
|
||||
OpenID: &authQQme.OpenID,
|
||||
Source: &qq,
|
||||
}
|
||||
err = userSocialService.AddUserSocial(userSocial)
|
||||
err = userSocialService.AddUserSocialService(userSocial)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
global.LOG.Error(err)
|
@@ -1,4 +1,4 @@
|
||||
package oauth_api
|
||||
package oauth_controller
|
||||
|
||||
import "encoding/json"
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package oauth_api
|
||||
package oauth_controller
|
||||
|
||||
import (
|
||||
"encoding/gob"
|
||||
@@ -14,12 +14,12 @@ import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/yitter/idgenerator-go/idgen"
|
||||
"gorm.io/gorm"
|
||||
"schisandra-cloud-album/api/websocket_api"
|
||||
"schisandra-cloud-album/common/constant"
|
||||
"schisandra-cloud-album/common/enum"
|
||||
"schisandra-cloud-album/common/randomname"
|
||||
"schisandra-cloud-album/common/redis"
|
||||
"schisandra-cloud-album/common/result"
|
||||
"schisandra-cloud-album/controller/websocket_controller"
|
||||
"schisandra-cloud-album/global"
|
||||
"schisandra-cloud-album/model"
|
||||
"schisandra-cloud-album/utils"
|
||||
@@ -33,8 +33,8 @@ import (
|
||||
// @Tags 微信公众号
|
||||
// @Description 微信回调
|
||||
// @Produce json
|
||||
// @Router /api/oauth/callback_notify [POST]
|
||||
func (OAuthAPI) CallbackNotify(c *gin.Context) {
|
||||
// @Router /controller/oauth/callback_notify [POST]
|
||||
func (OAuthController) CallbackNotify(c *gin.Context) {
|
||||
rs, err := global.Wechat.Server.Notify(c.Request, func(event contract.EventInterface) interface{} {
|
||||
switch event.GetMsgType() {
|
||||
case models2.CALLBACK_MSG_TYPE_EVENT:
|
||||
@@ -102,8 +102,8 @@ func (OAuthAPI) CallbackNotify(c *gin.Context) {
|
||||
// @Tags 微信公众号
|
||||
// @Description 微信回调验证
|
||||
// @Produce json
|
||||
// @Router /api/oauth/callback_verify [get]
|
||||
func (OAuthAPI) CallbackVerify(c *gin.Context) {
|
||||
// @Router /controller/oauth/callback_verify [get]
|
||||
func (OAuthController) CallbackVerify(c *gin.Context) {
|
||||
rs, err := global.Wechat.Server.VerifyURL(c.Request)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
@@ -117,8 +117,8 @@ func (OAuthAPI) CallbackVerify(c *gin.Context) {
|
||||
// @Description 获取临时二维码
|
||||
// @Produce json
|
||||
// @Param client_id query string true "客户端ID"
|
||||
// @Router /api/oauth/get_temp_qrcode [get]
|
||||
func (OAuthAPI) GetTempQrCode(c *gin.Context) {
|
||||
// @Router /controller/oauth/get_temp_qrcode [get]
|
||||
func (OAuthController) GetTempQrCode(c *gin.Context) {
|
||||
clientId := c.Query("client_id")
|
||||
if clientId == "" {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "ParamsError"), c)
|
||||
@@ -169,7 +169,7 @@ func wechatLoginHandler(openId string, clientId string, c *gin.Context) bool {
|
||||
if openId == "" {
|
||||
return false
|
||||
}
|
||||
authUserSocial, err := userSocialService.QueryUserSocialByOpenID(openId, enum.OAuthSourceWechat)
|
||||
authUserSocial, err := userSocialService.QueryUserSocialByOpenIDService(openId, enum.OAuthSourceWechat)
|
||||
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
tx := global.DB.Begin()
|
||||
defer func() {
|
||||
@@ -198,7 +198,7 @@ func wechatLoginHandler(openId string, clientId string, c *gin.Context) bool {
|
||||
addUserChan := make(chan *model.ScaAuthUser, 1)
|
||||
errChan := make(chan error, 1)
|
||||
go func() {
|
||||
addUser, err := userService.AddUser(createUser)
|
||||
addUser, err := userService.AddUserService(createUser)
|
||||
if err != nil {
|
||||
errChan <- err
|
||||
return
|
||||
@@ -225,7 +225,7 @@ func wechatLoginHandler(openId string, clientId string, c *gin.Context) bool {
|
||||
// 异步添加用户社交信息
|
||||
wrongChan := make(chan error, 1)
|
||||
go func() {
|
||||
wrong := userSocialService.AddUserSocial(userSocial)
|
||||
wrong := userSocialService.AddUserSocialService(userSocial)
|
||||
wrongChan <- wrong
|
||||
}()
|
||||
|
||||
@@ -319,7 +319,7 @@ func handelUserLogin(userId string, clientId string, c *gin.Context) bool {
|
||||
return
|
||||
}
|
||||
// gws方式发送消息
|
||||
err = websocket_api.Handler.SendMessageToClient(clientId, tokenData)
|
||||
err = websocket_controller.Handler.SendMessageToClient(clientId, tokenData)
|
||||
if err != nil {
|
||||
global.LOG.Error(err)
|
||||
resultChan <- false
|
3
controller/permission_controller/permission.go
Normal file
3
controller/permission_controller/permission.go
Normal file
@@ -0,0 +1,3 @@
|
||||
package permission_controller
|
||||
|
||||
type PermissionController struct{}
|
@@ -1,14 +1,14 @@
|
||||
package permission_api
|
||||
package permission_controller
|
||||
|
||||
import (
|
||||
ginI18n "github.com/gin-contrib/i18n"
|
||||
"github.com/gin-gonic/gin"
|
||||
"schisandra-cloud-album/common/result"
|
||||
"schisandra-cloud-album/global"
|
||||
"schisandra-cloud-album/service"
|
||||
"schisandra-cloud-album/service/impl"
|
||||
)
|
||||
|
||||
var permissionService = service.Service.PermissionService
|
||||
var permissionService = impl.PermissionServiceImpl{}
|
||||
|
||||
// AddPermissions 批量添加权限
|
||||
// @Summary 批量添加权限
|
||||
@@ -17,15 +17,15 @@ var permissionService = service.Service.PermissionService
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param permissions body AddPermissionRequest true "权限列表"
|
||||
// @Router /api/auth/permission/add [post]
|
||||
func (PermissionAPI) AddPermissions(c *gin.Context) {
|
||||
// @Router /controller/auth/permission/add [post]
|
||||
func (PermissionController) AddPermissions(c *gin.Context) {
|
||||
addPermissionRequest := AddPermissionRequest{}
|
||||
err := c.ShouldBind(&addPermissionRequest.Permissions)
|
||||
if err != nil {
|
||||
global.LOG.Error(err)
|
||||
return
|
||||
}
|
||||
err = permissionService.CreatePermissions(addPermissionRequest.Permissions)
|
||||
err = permissionService.CreatePermissionsService(addPermissionRequest.Permissions)
|
||||
if err != nil {
|
||||
global.LOG.Error(err)
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "CreatedFailed"), c)
|
||||
@@ -42,8 +42,8 @@ func (PermissionAPI) AddPermissions(c *gin.Context) {
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param permissions body AddPermissionToRoleRequest true "权限列表"
|
||||
// @Router /api/auth/permission/assign [post]
|
||||
func (PermissionAPI) AssignPermissionsToRole(c *gin.Context) {
|
||||
// @Router /controller/auth/permission/assign [post]
|
||||
func (PermissionController) AssignPermissionsToRole(c *gin.Context) {
|
||||
permissionToRoleRequest := AddPermissionToRoleRequest{}
|
||||
|
||||
err := c.ShouldBind(&permissionToRoleRequest)
|
||||
@@ -69,7 +69,7 @@ func (PermissionAPI) AssignPermissionsToRole(c *gin.Context) {
|
||||
}
|
||||
|
||||
// GetUserPermissions 获取用户角色权限
|
||||
func (PermissionAPI) GetUserPermissions(c *gin.Context) {
|
||||
func (PermissionController) GetUserPermissions(c *gin.Context) {
|
||||
getPermissionRequest := GetPermissionRequest{}
|
||||
err := c.ShouldBindJSON(&getPermissionRequest)
|
||||
if err != nil {
|
@@ -1,4 +1,4 @@
|
||||
package permission_api
|
||||
package permission_controller
|
||||
|
||||
import "schisandra-cloud-album/model"
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package role_api
|
||||
package role_controller
|
||||
|
||||
type RoleRequest struct {
|
||||
RoleName string `json:"role_name" binding:"required"`
|
3
controller/role_controller/role.go
Normal file
3
controller/role_controller/role.go
Normal file
@@ -0,0 +1,3 @@
|
||||
package role_controller
|
||||
|
||||
type RoleController struct{}
|
@@ -1,4 +1,4 @@
|
||||
package role_api
|
||||
package role_controller
|
||||
|
||||
import (
|
||||
ginI18n "github.com/gin-contrib/i18n"
|
||||
@@ -6,10 +6,10 @@ import (
|
||||
"schisandra-cloud-album/common/result"
|
||||
"schisandra-cloud-album/global"
|
||||
"schisandra-cloud-album/model"
|
||||
"schisandra-cloud-album/service"
|
||||
"schisandra-cloud-album/service/impl"
|
||||
)
|
||||
|
||||
var roleService = service.Service.RoleService
|
||||
var roleService = impl.RoleServiceImpl{}
|
||||
|
||||
// CreateRole 创建角色
|
||||
// @Summary 创建角色
|
||||
@@ -18,8 +18,8 @@ var roleService = service.Service.RoleService
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param roleRequestDto body RoleRequest true "角色信息"
|
||||
// @Router /api/auth/role/create [post]
|
||||
func (RoleAPI) CreateRole(c *gin.Context) {
|
||||
// @Router /controller/auth/role/create [post]
|
||||
func (RoleController) CreateRole(c *gin.Context) {
|
||||
roleRequest := RoleRequest{}
|
||||
err := c.ShouldBindJSON(&roleRequest)
|
||||
if err != nil {
|
||||
@@ -30,7 +30,7 @@ func (RoleAPI) CreateRole(c *gin.Context) {
|
||||
RoleName: roleRequest.RoleName,
|
||||
RoleKey: roleRequest.RoleKey,
|
||||
}
|
||||
err = roleService.AddRole(role)
|
||||
err = roleService.AddRoleService(role)
|
||||
if err != nil {
|
||||
global.LOG.Error(err)
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "CreatedFailed"), c)
|
||||
@@ -46,8 +46,8 @@ func (RoleAPI) CreateRole(c *gin.Context) {
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param addRoleToUserRequestDto body AddRoleToUserRequest true "给指定用户添加角色"
|
||||
// @Router /api/auth/role/add_role_to_user [post]
|
||||
func (RoleAPI) AddRoleToUser(c *gin.Context) {
|
||||
// @Router /controller/auth/role/add_role_to_user [post]
|
||||
func (RoleController) AddRoleToUser(c *gin.Context) {
|
||||
addRoleToUserRequest := AddRoleToUserRequest{}
|
||||
err := c.ShouldBindJSON(&addRoleToUserRequest)
|
||||
if err != nil {
|
@@ -1,4 +1,4 @@
|
||||
package sms_api
|
||||
package sms_controller
|
||||
|
||||
type SmsRequest struct {
|
||||
Phone string `json:"phone" binding:"required"`
|
3
controller/sms_controller/sms.go
Normal file
3
controller/sms_controller/sms.go
Normal file
@@ -0,0 +1,3 @@
|
||||
package sms_controller
|
||||
|
||||
type SmsController struct{}
|
@@ -1,4 +1,4 @@
|
||||
package sms_api
|
||||
package sms_controller
|
||||
|
||||
import (
|
||||
ginI18n "github.com/gin-contrib/i18n"
|
||||
@@ -21,8 +21,8 @@ import (
|
||||
// @Tags 短信验证码
|
||||
// @Produce json
|
||||
// @Param phone query string true "手机号"
|
||||
// @Router /api/sms/ali/send [get]
|
||||
func (SmsAPI) SendMessageByAli(c *gin.Context) {
|
||||
// @Router /controller/sms/ali/send [get]
|
||||
func (SmsController) SendMessageByAli(c *gin.Context) {
|
||||
smsRequest := SmsRequest{}
|
||||
err := c.ShouldBindJSON(&smsRequest)
|
||||
if err != nil {
|
||||
@@ -80,8 +80,8 @@ func (SmsAPI) SendMessageByAli(c *gin.Context) {
|
||||
// @Tags 短信验证码
|
||||
// @Produce json
|
||||
// @Param phone query string true "手机号"
|
||||
// @Router /api/sms/smsbao/send [post]
|
||||
func (SmsAPI) SendMessageBySmsBao(c *gin.Context) {
|
||||
// @Router /controller/sms/smsbao/send [post]
|
||||
func (SmsController) SendMessageBySmsBao(c *gin.Context) {
|
||||
smsRequest := SmsRequest{}
|
||||
err := c.ShouldBindJSON(&smsRequest)
|
||||
if err != nil {
|
||||
@@ -132,8 +132,8 @@ func (SmsAPI) SendMessageBySmsBao(c *gin.Context) {
|
||||
// @Tags 短信验证码
|
||||
// @Produce json
|
||||
// @Param phone query string true "手机号"
|
||||
// @Router /api/sms/test/send [post]
|
||||
func (SmsAPI) SendMessageTest(c *gin.Context) {
|
||||
// @Router /controller/sms/test/send [post]
|
||||
func (SmsController) SendMessageTest(c *gin.Context) {
|
||||
smsRequest := SmsRequest{}
|
||||
err := c.ShouldBindJSON(&smsRequest)
|
||||
if err != nil {
|
@@ -1,4 +1,4 @@
|
||||
package user_api
|
||||
package user_controller
|
||||
|
||||
import (
|
||||
"encoding/gob"
|
||||
@@ -66,9 +66,9 @@ func getUserLoginDevice(user model.ScaAuthUser, c *gin.Context) bool {
|
||||
mu.Lock()
|
||||
defer mu.Unlock()
|
||||
|
||||
userDevice, err := userDeviceService.GetUserDeviceByUIDIPAgent(*user.UID, ip, userAgent)
|
||||
userDevice, err := userDeviceService.GetUserDeviceByUIDIPAgentService(*user.UID, ip, userAgent)
|
||||
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
err = userDeviceService.AddUserDevice(&device)
|
||||
err = userDeviceService.AddUserDeviceService(&device)
|
||||
if err != nil {
|
||||
global.LOG.Errorln(err)
|
||||
return false
|
||||
@@ -77,7 +77,7 @@ func getUserLoginDevice(user model.ScaAuthUser, c *gin.Context) bool {
|
||||
global.LOG.Errorln(err)
|
||||
return false
|
||||
} else {
|
||||
err := userDeviceService.UpdateUserDevice(userDevice.ID, &device)
|
||||
err := userDeviceService.UpdateUserDeviceService(userDevice.ID, &device)
|
||||
if err != nil {
|
||||
global.LOG.Errorln(err)
|
||||
return false
|
@@ -1,4 +1,4 @@
|
||||
package user_api
|
||||
package user_controller
|
||||
|
||||
import "encoding/json"
|
||||
|
12
controller/user_controller/user.go
Normal file
12
controller/user_controller/user.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package user_controller
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/service/impl"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type UserController struct{}
|
||||
|
||||
var mu sync.Mutex
|
||||
var userService = impl.UserServiceImpl{}
|
||||
var userDeviceService = impl.UserDeviceServiceImpl{}
|
@@ -1,4 +1,4 @@
|
||||
package user_api
|
||||
package user_controller
|
||||
|
||||
import (
|
||||
ginI18n "github.com/gin-contrib/i18n"
|
||||
@@ -13,22 +13,18 @@ import (
|
||||
"schisandra-cloud-album/common/result"
|
||||
"schisandra-cloud-album/global"
|
||||
"schisandra-cloud-album/model"
|
||||
"schisandra-cloud-album/service"
|
||||
"schisandra-cloud-album/utils"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
var userService = service.Service.UserService
|
||||
var userDeviceService = service.Service.UserDeviceService
|
||||
|
||||
// GetUserList
|
||||
// @Summary 获取所有用户列表
|
||||
// @Tags 用户模块
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/auth/user/List [get]
|
||||
func (UserAPI) GetUserList(c *gin.Context) {
|
||||
userList := userService.GetUserList()
|
||||
// @Router /controller/auth/user/List [get]
|
||||
func (UserController) GetUserList(c *gin.Context) {
|
||||
userList := userService.GetUserListService()
|
||||
result.OkWithData(userList, c)
|
||||
}
|
||||
|
||||
@@ -37,10 +33,10 @@ func (UserAPI) GetUserList(c *gin.Context) {
|
||||
// @Tags 用户模块
|
||||
// @Param username query string true "用户名"
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/auth/user/query_by_username [get]
|
||||
func (UserAPI) QueryUserByUsername(c *gin.Context) {
|
||||
// @Router /controller/auth/user/query_by_username [get]
|
||||
func (UserController) QueryUserByUsername(c *gin.Context) {
|
||||
username := c.Query("username")
|
||||
user := userService.QueryUserByUsername(username)
|
||||
user := userService.QueryUserByUsernameService(username)
|
||||
if reflect.DeepEqual(user, model.ScaAuthUser{}) {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "NotFoundUser"), c)
|
||||
return
|
||||
@@ -51,17 +47,13 @@ func (UserAPI) QueryUserByUsername(c *gin.Context) {
|
||||
// QueryUserByUuid
|
||||
// @Summary 根据uuid查询用户
|
||||
// @Tags 用户模块
|
||||
// @Param uuid query string true "用户uuid"
|
||||
// @Param uid query string true "用户uid"
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/auth/user/query_by_uuid [get]
|
||||
func (UserAPI) QueryUserByUuid(c *gin.Context) {
|
||||
uuid := c.Query("uuid")
|
||||
user, err := userService.QueryUserByUuid(&uuid)
|
||||
if err != nil {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "NotFoundUser"), c)
|
||||
return
|
||||
}
|
||||
if reflect.DeepEqual(user, model.ScaAuthUser{}) {
|
||||
// @Router /controller/auth/user/query_by_uid [get]
|
||||
func (UserController) QueryUserByUuid(c *gin.Context) {
|
||||
uid := c.Query("uid")
|
||||
user := userService.QueryUserByUuidService(&uid)
|
||||
if user.ID == 0 {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "NotFoundUser"), c)
|
||||
return
|
||||
}
|
||||
@@ -71,12 +63,12 @@ func (UserAPI) QueryUserByUuid(c *gin.Context) {
|
||||
// DeleteUser 删除用户
|
||||
// @Summary 删除用户
|
||||
// @Tags 用户模块
|
||||
// @Param uuid query string true "用户uuid"
|
||||
// @Param uid query string true "用户uid"
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/auth/user/delete [delete]
|
||||
func (UserAPI) DeleteUser(c *gin.Context) {
|
||||
uuid := c.Query("uuid")
|
||||
err := userService.DeleteUser(uuid)
|
||||
// @Router /controller/auth/user/delete [delete]
|
||||
func (UserController) DeleteUser(c *gin.Context) {
|
||||
uid := c.Query("uid")
|
||||
err := userService.DeleteUserService(uid)
|
||||
if err != nil {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "DeletedFailed"), c)
|
||||
return
|
||||
@@ -89,11 +81,11 @@ func (UserAPI) DeleteUser(c *gin.Context) {
|
||||
// @Tags 用户模块
|
||||
// @Param phone query string true "手机号"
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/auth/user/query_by_phone [get]
|
||||
func (UserAPI) QueryUserByPhone(c *gin.Context) {
|
||||
// @Router /controller/auth/user/query_by_phone [get]
|
||||
func (UserController) QueryUserByPhone(c *gin.Context) {
|
||||
phone := c.Query("phone")
|
||||
user := userService.QueryUserByPhone(phone)
|
||||
if reflect.DeepEqual(user, model.ScaAuthUser{}) {
|
||||
user := userService.QueryUserByPhoneService(phone)
|
||||
if user.ID == 0 {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "NotFoundUser"), c)
|
||||
return
|
||||
}
|
||||
@@ -105,8 +97,8 @@ func (UserAPI) QueryUserByPhone(c *gin.Context) {
|
||||
// @Tags 用户模块
|
||||
// @Param user body AccountLoginRequest true "用户信息"
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/user/login [post]
|
||||
func (UserAPI) AccountLogin(c *gin.Context) {
|
||||
// @Router /controller/user/login [post]
|
||||
func (UserController) AccountLogin(c *gin.Context) {
|
||||
accountLoginRequest := AccountLoginRequest{}
|
||||
err := c.ShouldBindJSON(&accountLoginRequest)
|
||||
if err != nil {
|
||||
@@ -123,17 +115,17 @@ func (UserAPI) AccountLogin(c *gin.Context) {
|
||||
|
||||
var user model.ScaAuthUser
|
||||
if utils.IsPhone(account) {
|
||||
user = userService.QueryUserByPhone(account)
|
||||
user = userService.QueryUserByPhoneService(account)
|
||||
} else if utils.IsEmail(account) {
|
||||
user = userService.QueryUserByEmail(account)
|
||||
user = userService.QueryUserByEmailService(account)
|
||||
} else if utils.IsUsername(account) {
|
||||
user = userService.QueryUserByUsername(account)
|
||||
user = userService.QueryUserByUsernameService(account)
|
||||
} else {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "AccountErrorFormat"), c)
|
||||
return
|
||||
}
|
||||
|
||||
if reflect.DeepEqual(user, model.ScaAuthUser{}) {
|
||||
if user.ID == 0 {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "NotFoundUser"), c)
|
||||
return
|
||||
}
|
||||
@@ -150,8 +142,8 @@ func (UserAPI) AccountLogin(c *gin.Context) {
|
||||
// @Tags 用户模块
|
||||
// @Param user body PhoneLoginRequest true "用户信息"
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/user/phone_login [post]
|
||||
func (UserAPI) PhoneLogin(c *gin.Context) {
|
||||
// @Router /controller/user/phone_login [post]
|
||||
func (UserController) PhoneLogin(c *gin.Context) {
|
||||
request := PhoneLoginRequest{}
|
||||
err := c.ShouldBind(&request)
|
||||
if err != nil {
|
||||
@@ -168,14 +160,14 @@ func (UserAPI) PhoneLogin(c *gin.Context) {
|
||||
|
||||
userChan := make(chan model.ScaAuthUser)
|
||||
go func() {
|
||||
user := userService.QueryUserByPhone(phone)
|
||||
user := userService.QueryUserByPhoneService(phone)
|
||||
userChan <- user
|
||||
}()
|
||||
|
||||
user := <-userChan
|
||||
close(userChan)
|
||||
|
||||
if reflect.DeepEqual(user, model.ScaAuthUser{}) {
|
||||
if user.ID == 0 {
|
||||
// 未注册
|
||||
codeChan := make(chan *string)
|
||||
go func() {
|
||||
@@ -211,7 +203,7 @@ func (UserAPI) PhoneLogin(c *gin.Context) {
|
||||
errChan := make(chan error)
|
||||
go func() {
|
||||
err := global.DB.Transaction(func(tx *gorm.DB) error {
|
||||
addUser, err := userService.AddUser(createUser)
|
||||
addUser, err := userService.AddUserService(createUser)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -259,8 +251,8 @@ func (UserAPI) PhoneLogin(c *gin.Context) {
|
||||
// @Tags 用户模块
|
||||
// @Param refresh_token query string true "刷新token"
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/token/refresh [post]
|
||||
func (UserAPI) RefreshHandler(c *gin.Context) {
|
||||
// @Router /controller/token/refresh [post]
|
||||
func (UserController) RefreshHandler(c *gin.Context) {
|
||||
request := RefreshTokenRequest{}
|
||||
if err := c.ShouldBindJSON(&request); err != nil {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "ParamsError"), c)
|
||||
@@ -302,8 +294,8 @@ func (UserAPI) RefreshHandler(c *gin.Context) {
|
||||
// @Tags 用户模块
|
||||
// @Param user body ResetPasswordRequest true "用户信息"
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/user/reset_password [post]
|
||||
func (UserAPI) ResetPassword(c *gin.Context) {
|
||||
// @Router /controller/user/reset_password [post]
|
||||
func (UserController) ResetPassword(c *gin.Context) {
|
||||
var resetPasswordRequest ResetPasswordRequest
|
||||
if err := c.ShouldBindJSON(&resetPasswordRequest); err != nil {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "ParamsError"), c)
|
||||
@@ -360,7 +352,7 @@ func (UserAPI) ResetPassword(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
user := userService.QueryUserByPhone(phone)
|
||||
user := userService.QueryUserByPhoneService(phone)
|
||||
if reflect.DeepEqual(user, model.ScaAuthUser{}) {
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "PhoneNotRegister"), c)
|
||||
return
|
||||
@@ -372,7 +364,7 @@ func (UserAPI) ResetPassword(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
if err := userService.UpdateUser(phone, encrypt); err != nil {
|
||||
if err := userService.UpdateUserService(phone, encrypt); err != nil {
|
||||
tx.Rollback()
|
||||
result.FailWithMessage(ginI18n.MustGetMessage(c, "ResetPasswordError"), c)
|
||||
return
|
||||
@@ -386,8 +378,8 @@ func (UserAPI) ResetPassword(c *gin.Context) {
|
||||
// @Summary 退出登录
|
||||
// @Tags 用户模块
|
||||
// @Success 200 {string} json
|
||||
// @Router /api/auth/user/logout [post]
|
||||
func (UserAPI) Logout(c *gin.Context) {
|
||||
// @Router /controller/auth/user/logout [post]
|
||||
func (UserController) Logout(c *gin.Context) {
|
||||
userId := c.Query("user_id")
|
||||
if userId == "" {
|
||||
global.LOG.Errorln("userId is empty")
|
@@ -1,4 +1,4 @@
|
||||
package websocket_api
|
||||
package websocket_controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
@@ -28,8 +28,8 @@ var Handler = NewWebSocket()
|
||||
// @Summary 创建websocket服务
|
||||
// @Description 创建websocket服务
|
||||
// @Tags websocket
|
||||
// @Router /api/ws/gws [get]
|
||||
func (WebsocketAPI) NewGWSServer(c *gin.Context) {
|
||||
// @Router /controller/ws/gws [get]
|
||||
func (WebsocketController) NewGWSServer(c *gin.Context) {
|
||||
|
||||
upgrader := gws.NewUpgrader(Handler, &gws.ServerOption{
|
||||
HandshakeTimeout: 5 * time.Second, // 握手超时时间
|
4
controller/websocket_controller/websocket.go
Normal file
4
controller/websocket_controller/websocket.go
Normal file
@@ -0,0 +1,4 @@
|
||||
package websocket_controller
|
||||
|
||||
type WebsocketController struct {
|
||||
}
|
18
dao/comment_reply_dao.go
Normal file
18
dao/comment_reply_dao.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package dao
|
||||
|
||||
import "schisandra-cloud-album/model"
|
||||
|
||||
type CommentReplyDao interface {
|
||||
// CreateCommentReply 创建评论回复
|
||||
CreateCommentReply(comment *model.ScaCommentReply) error
|
||||
// GetCommentListOrderByCreatedTimeDesc 获取评论列表 按创建时间排序
|
||||
GetCommentListOrderByCreatedTimeDesc(topicID uint, page, pageSize int) ([]model.ScaCommentReply, error)
|
||||
// GetCommentListOrderByLikesDesc 获取评论列表按点赞数排序
|
||||
GetCommentListOrderByLikesDesc(topicID uint, page, pageSize int) ([]model.ScaCommentReply, error)
|
||||
// UpdateCommentReplyCount 更新评论回复数
|
||||
UpdateCommentReplyCount(commentID int64) error
|
||||
// UpdateCommentLikesCount 更新评论点赞数
|
||||
UpdateCommentLikesCount(commentID int64, topicID string) error
|
||||
// DecrementCommentLikesCount 减少评论点赞数
|
||||
DecrementCommentLikesCount(commentID int64, topicID string) error
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
package comment_reply_service
|
||||
package impl
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@@ -7,8 +7,10 @@ import (
|
||||
"schisandra-cloud-album/model"
|
||||
)
|
||||
|
||||
type CommentReplyDaoImpl struct{}
|
||||
|
||||
// CreateCommentReply 创建评论
|
||||
func (CommentReplyService) CreateCommentReply(comment *model.ScaCommentReply) error {
|
||||
func (CommentReplyDaoImpl) CreateCommentReply(comment *model.ScaCommentReply) error {
|
||||
if err := global.DB.Create(&comment).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -16,7 +18,7 @@ func (CommentReplyService) CreateCommentReply(comment *model.ScaCommentReply) er
|
||||
}
|
||||
|
||||
// GetCommentListOrderByCreatedTimeDesc 通过topic_id获取评论列表
|
||||
func (CommentReplyService) GetCommentListOrderByCreatedTimeDesc(topicID uint, page, pageSize int) ([]model.ScaCommentReply, error) {
|
||||
func (CommentReplyDaoImpl) GetCommentListOrderByCreatedTimeDesc(topicID uint, page, pageSize int) ([]model.ScaCommentReply, error) {
|
||||
var comments []model.ScaCommentReply
|
||||
// 计算偏移量
|
||||
offset := (page - 1) * pageSize
|
||||
@@ -29,7 +31,7 @@ func (CommentReplyService) GetCommentListOrderByCreatedTimeDesc(topicID uint, pa
|
||||
}
|
||||
|
||||
// GetCommentListOrderByLikesDesc 通过topic_id获取评论列表
|
||||
func (CommentReplyService) GetCommentListOrderByLikesDesc(topicID uint, page, pageSize int) ([]model.ScaCommentReply, error) {
|
||||
func (CommentReplyDaoImpl) GetCommentListOrderByLikesDesc(topicID uint, page, pageSize int) ([]model.ScaCommentReply, error) {
|
||||
var comments []model.ScaCommentReply
|
||||
// 计算偏移量
|
||||
offset := (page - 1) * pageSize
|
||||
@@ -42,7 +44,7 @@ func (CommentReplyService) GetCommentListOrderByLikesDesc(topicID uint, page, pa
|
||||
}
|
||||
|
||||
// UpdateCommentReplyCount 更新评论
|
||||
func (CommentReplyService) UpdateCommentReplyCount(commentID int64) error {
|
||||
func (CommentReplyDaoImpl) UpdateCommentReplyCount(commentID int64) error {
|
||||
// 使用事务处理错误
|
||||
err := global.DB.Transaction(func(tx *gorm.DB) error {
|
||||
result := tx.Model(&model.ScaCommentReply{}).Where("id = ? and deleted = 0", commentID).Update("reply_count", gorm.Expr("reply_count + ?", 1))
|
||||
@@ -58,7 +60,7 @@ func (CommentReplyService) UpdateCommentReplyCount(commentID int64) error {
|
||||
}
|
||||
|
||||
// UpdateCommentLikesCount 更新评论 likes 数量
|
||||
func (CommentReplyService) UpdateCommentLikesCount(commentID int64, topicID string) error {
|
||||
func (CommentReplyDaoImpl) UpdateCommentLikesCount(commentID int64, topicID string) error {
|
||||
// 使用事务处理错误
|
||||
err := global.DB.Transaction(func(tx *gorm.DB) error {
|
||||
result := tx.Model(&model.ScaCommentReply{}).Where("id = ? and topic_id = ? and deleted = 0", commentID, topicID).Update("likes", gorm.Expr("likes + ?", 1))
|
||||
@@ -74,7 +76,7 @@ func (CommentReplyService) UpdateCommentLikesCount(commentID int64, topicID stri
|
||||
}
|
||||
|
||||
// DecrementCommentLikesCount 减少评论 likes 数量
|
||||
func (CommentReplyService) DecrementCommentLikesCount(commentID int64, topicID string) error {
|
||||
func (CommentReplyDaoImpl) DecrementCommentLikesCount(commentID int64, topicID string) error {
|
||||
// 使用事务处理错误
|
||||
err := global.DB.Transaction(func(tx *gorm.DB) error {
|
||||
result := tx.Model(&model.ScaCommentReply{}).Where("id = ? and topic_id = ? and deleted = 0", commentID, topicID).Update("likes", gorm.Expr("likes - ?", 1))
|
@@ -1,12 +1,14 @@
|
||||
package permission_service
|
||||
package impl
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/global"
|
||||
"schisandra-cloud-album/model"
|
||||
)
|
||||
|
||||
type PermissionDaoImpl struct{}
|
||||
|
||||
// GetPermissionsByIds 通过权限ID列表获取权限列表
|
||||
func (PermissionService) GetPermissionsByIds(ids []int64) ([]model.ScaAuthPermission, error) {
|
||||
func (PermissionDaoImpl) GetPermissionsByIds(ids []int64) ([]model.ScaAuthPermission, error) {
|
||||
var permissions []model.ScaAuthPermission
|
||||
if err := global.DB.Where("id IN ? and deleted = 0", ids).Find(&permissions).Error; err != nil {
|
||||
return nil, err
|
||||
@@ -15,7 +17,7 @@ func (PermissionService) GetPermissionsByIds(ids []int64) ([]model.ScaAuthPermis
|
||||
}
|
||||
|
||||
// CreatePermissions 批量创建权限
|
||||
func (PermissionService) CreatePermissions(permissions []model.ScaAuthPermission) error {
|
||||
func (PermissionDaoImpl) CreatePermissions(permissions []model.ScaAuthPermission) error {
|
||||
if err := global.DB.Model(&model.ScaAuthPermission{}).CreateInBatches(&permissions, len(permissions)).Error; err != nil {
|
||||
return err
|
||||
}
|
@@ -1,12 +1,14 @@
|
||||
package role_service
|
||||
package impl
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/global"
|
||||
"schisandra-cloud-album/model"
|
||||
)
|
||||
|
||||
type RoleDaoImpl struct{}
|
||||
|
||||
// GetRoleListByIds : 通过Id列表获取角色信息列表
|
||||
func (RoleService) GetRoleListByIds(id []*int64) ([]model.ScaAuthRole, error) {
|
||||
func (RoleDaoImpl) GetRoleListByIds(id []*int64) ([]model.ScaAuthRole, error) {
|
||||
var roles []model.ScaAuthRole
|
||||
if err := global.DB.Where("id IN ?", id).Find(&roles).Error; err != nil {
|
||||
return nil, err
|
||||
@@ -15,7 +17,7 @@ func (RoleService) GetRoleListByIds(id []*int64) ([]model.ScaAuthRole, error) {
|
||||
}
|
||||
|
||||
// AddRole 新增角色
|
||||
func (RoleService) AddRole(role model.ScaAuthRole) error {
|
||||
func (RoleDaoImpl) AddRole(role model.ScaAuthRole) error {
|
||||
if err := global.DB.Create(&role).Error; err != nil {
|
||||
return err
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
package user_service
|
||||
package impl
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/common/enum"
|
||||
@@ -6,15 +6,18 @@ import (
|
||||
"schisandra-cloud-album/model"
|
||||
)
|
||||
|
||||
type UserDaoImpl struct {
|
||||
}
|
||||
|
||||
// GetUserList 获取所有用户列表
|
||||
func (UserService) GetUserList() []*model.ScaAuthUser {
|
||||
func (UserDaoImpl) GetUserList() []*model.ScaAuthUser {
|
||||
data := make([]*model.ScaAuthUser, 0)
|
||||
global.DB.Where("deleted = 0 ").Find(&data)
|
||||
return data
|
||||
}
|
||||
|
||||
// QueryUserByUsername 根据用户名查询用户
|
||||
func (UserService) QueryUserByUsername(username string) model.ScaAuthUser {
|
||||
func (UserDaoImpl) QueryUserByUsername(username string) model.ScaAuthUser {
|
||||
authUser := model.ScaAuthUser{}
|
||||
err := global.DB.Where("username = ? and deleted = 0", username).First(&authUser).Error
|
||||
if err != nil {
|
||||
@@ -24,7 +27,7 @@ func (UserService) QueryUserByUsername(username string) model.ScaAuthUser {
|
||||
}
|
||||
|
||||
// QueryUserByUuid 根据用户uuid查询用户
|
||||
func (UserService) QueryUserByUuid(uuid *string) (model.ScaAuthUser, error) {
|
||||
func (UserDaoImpl) QueryUserByUuid(uuid *string) (model.ScaAuthUser, error) {
|
||||
authUser := model.ScaAuthUser{}
|
||||
if err := global.DB.Where("uid = ? and deleted = 0", uuid).First(&authUser).Error; err != nil {
|
||||
return model.ScaAuthUser{}, err
|
||||
@@ -33,7 +36,7 @@ func (UserService) QueryUserByUuid(uuid *string) (model.ScaAuthUser, error) {
|
||||
}
|
||||
|
||||
// QueryUserById 根据用户id查询用户
|
||||
func (UserService) QueryUserById(id *int64) (model.ScaAuthUser, error) {
|
||||
func (UserDaoImpl) QueryUserById(id *int64) (model.ScaAuthUser, error) {
|
||||
authUser := model.ScaAuthUser{}
|
||||
if err := global.DB.Where("id = ? and deleted = 0", id).First(&authUser).Error; err != nil {
|
||||
return model.ScaAuthUser{}, err
|
||||
@@ -42,7 +45,7 @@ func (UserService) QueryUserById(id *int64) (model.ScaAuthUser, error) {
|
||||
}
|
||||
|
||||
// AddUser 添加用户
|
||||
func (UserService) AddUser(user model.ScaAuthUser) (*model.ScaAuthUser, error) {
|
||||
func (UserDaoImpl) AddUser(user model.ScaAuthUser) (*model.ScaAuthUser, error) {
|
||||
if err := global.DB.Create(&user).Error; err != nil {
|
||||
return &model.ScaAuthUser{}, err
|
||||
}
|
||||
@@ -55,25 +58,25 @@ func (UserService) AddUser(user model.ScaAuthUser) (*model.ScaAuthUser, error) {
|
||||
}
|
||||
|
||||
// UpdateUser 更新用户
|
||||
func (UserService) UpdateUser(phone string, password string) error {
|
||||
func (UserDaoImpl) UpdateUser(phone string, password string) error {
|
||||
return global.DB.Model(&model.ScaAuthUser{}).Where("phone = ? and deleted = 0", phone).Updates(&model.ScaAuthUser{Password: &password}).Error
|
||||
}
|
||||
|
||||
// DeleteUser 删除用户
|
||||
func (UserService) DeleteUser(uuid string) error {
|
||||
func (UserDaoImpl) DeleteUser(uuid string) error {
|
||||
authUser := model.ScaAuthUser{}
|
||||
return global.DB.Model(&authUser).Where("uid = ?", uuid).Updates(&model.ScaAuthUser{Deleted: &enum.DELETED}).Error
|
||||
}
|
||||
|
||||
// QueryUserByPhone 根据手机号查询用户
|
||||
func (UserService) QueryUserByPhone(phone string) model.ScaAuthUser {
|
||||
func (UserDaoImpl) QueryUserByPhone(phone string) model.ScaAuthUser {
|
||||
authUser := model.ScaAuthUser{}
|
||||
global.DB.Where("phone = ? and deleted = 0", phone).First(&authUser)
|
||||
return authUser
|
||||
}
|
||||
|
||||
// QueryUserByEmail 根据邮箱查询用户
|
||||
func (UserService) QueryUserByEmail(email string) model.ScaAuthUser {
|
||||
func (UserDaoImpl) QueryUserByEmail(email string) model.ScaAuthUser {
|
||||
authUser := model.ScaAuthUser{}
|
||||
global.DB.Where("email = ? and deleted = 0", email).First(&authUser)
|
||||
return authUser
|
@@ -1,12 +1,14 @@
|
||||
package user_device_service
|
||||
package impl
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/global"
|
||||
"schisandra-cloud-album/model"
|
||||
)
|
||||
|
||||
type UserDeviceImpl struct{}
|
||||
|
||||
// AddUserDevice 新增用户设备信息
|
||||
func (UserDeviceService) AddUserDevice(userDevice *model.ScaAuthUserDevice) error {
|
||||
func (UserDeviceImpl) AddUserDevice(userDevice *model.ScaAuthUserDevice) error {
|
||||
if err := global.DB.Create(&userDevice).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -14,7 +16,7 @@ func (UserDeviceService) AddUserDevice(userDevice *model.ScaAuthUserDevice) erro
|
||||
}
|
||||
|
||||
// GetUserDeviceByUIDIPAgent 根据uid / IP / agent 查询用户设备信息
|
||||
func (UserDeviceService) GetUserDeviceByUIDIPAgent(uid, ip, agent string) (*model.ScaAuthUserDevice, error) {
|
||||
func (UserDeviceImpl) GetUserDeviceByUIDIPAgent(uid, ip, agent string) (*model.ScaAuthUserDevice, error) {
|
||||
var userDevice model.ScaAuthUserDevice
|
||||
if err := global.DB.Where("user_id =? AND ip =? AND agent =? AND deleted = 0 ", uid, ip, agent).First(&userDevice).Error; err != nil {
|
||||
return nil, err
|
||||
@@ -23,7 +25,7 @@ func (UserDeviceService) GetUserDeviceByUIDIPAgent(uid, ip, agent string) (*mode
|
||||
}
|
||||
|
||||
// UpdateUserDevice 更新用户设备信息
|
||||
func (UserDeviceService) UpdateUserDevice(id int64, userDevice *model.ScaAuthUserDevice) error {
|
||||
func (UserDeviceImpl) UpdateUserDevice(id int64, userDevice *model.ScaAuthUserDevice) error {
|
||||
result := global.DB.Model(&userDevice).Where("id =? AND deleted = 0 ", id).Updates(model.ScaAuthUserDevice{
|
||||
IP: userDevice.IP,
|
||||
Location: userDevice.Location,
|
32
dao/impl/user_social_dao_impl.go
Normal file
32
dao/impl/user_social_dao_impl.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package impl
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"gorm.io/gorm"
|
||||
"schisandra-cloud-album/global"
|
||||
"schisandra-cloud-album/model"
|
||||
)
|
||||
|
||||
type UserSocialImpl struct{}
|
||||
|
||||
// AddUserSocial 添加社会化登录用户信息
|
||||
func (UserSocialImpl) AddUserSocial(user model.ScaAuthUserSocial) error {
|
||||
result := global.DB.Create(&user)
|
||||
if result.Error != nil {
|
||||
return result.Error
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// QueryUserSocialByOpenID 根据openID和source查询用户信息
|
||||
func (UserSocialImpl) QueryUserSocialByOpenID(openID string, source string) (model.ScaAuthUserSocial, error) {
|
||||
var user model.ScaAuthUserSocial
|
||||
result := global.DB.Where("open_id = ? and source = ? and deleted = 0", openID, source).First(&user)
|
||||
if result.Error != nil {
|
||||
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
||||
return model.ScaAuthUserSocial{}, result.Error
|
||||
}
|
||||
return model.ScaAuthUserSocial{}, result.Error
|
||||
}
|
||||
return user, nil
|
||||
}
|
10
dao/permission_dao.go
Normal file
10
dao/permission_dao.go
Normal file
@@ -0,0 +1,10 @@
|
||||
package dao
|
||||
|
||||
import "schisandra-cloud-album/model"
|
||||
|
||||
type PermissionDao interface {
|
||||
// GetPermissionsByIds 返回权限列表 根据权限ID列表
|
||||
GetPermissionsByIds(ids []int64) ([]model.ScaAuthPermission, error)
|
||||
// CreatePermissions 创建权限
|
||||
CreatePermissions(permissions []model.ScaAuthPermission) error
|
||||
}
|
10
dao/role_dao.go
Normal file
10
dao/role_dao.go
Normal file
@@ -0,0 +1,10 @@
|
||||
package dao
|
||||
|
||||
import "schisandra-cloud-album/model"
|
||||
|
||||
type RoleDAO interface {
|
||||
// GetRoleListByIds 获取角色列表 by id
|
||||
GetRoleListByIds(id []*int64) ([]model.ScaAuthRole, error)
|
||||
// AddRole 新增角色
|
||||
AddRole(role model.ScaAuthRole) error
|
||||
}
|
24
dao/user_dao.go
Normal file
24
dao/user_dao.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package dao
|
||||
|
||||
import "schisandra-cloud-album/model"
|
||||
|
||||
type UserDao interface {
|
||||
// GetUserList 获取用户列表
|
||||
GetUserList() []*model.ScaAuthUser
|
||||
// QueryUserByUsername 根据用户名查询用户
|
||||
QueryUserByUsername(username string) model.ScaAuthUser
|
||||
// QueryUserByUuid 根据uuid查询用户
|
||||
QueryUserByUuid(uuid *string) (model.ScaAuthUser, error)
|
||||
// QueryUserById 根据id查询用户
|
||||
QueryUserById(id *int64) (model.ScaAuthUser, error)
|
||||
// AddUser 新增用户
|
||||
AddUser(user model.ScaAuthUser) (*model.ScaAuthUser, error)
|
||||
// UpdateUser 更新用户
|
||||
UpdateUser(phone string, password string) error
|
||||
// DeleteUser 删除用户
|
||||
DeleteUser(uuid string) error
|
||||
// QueryUserByPhone 根据手机号查询用户
|
||||
QueryUserByPhone(phone string) model.ScaAuthUser
|
||||
// QueryUserByEmail 根据邮箱查询用户
|
||||
QueryUserByEmail(email string) model.ScaAuthUser
|
||||
}
|
12
dao/user_device_dao.go
Normal file
12
dao/user_device_dao.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package dao
|
||||
|
||||
import "schisandra-cloud-album/model"
|
||||
|
||||
type UserDeviceDao interface {
|
||||
// AddUserDevice 添加用户设备信息
|
||||
AddUserDevice(userDevice *model.ScaAuthUserDevice) error
|
||||
// GetUserDeviceByUIDIPAgent 根据用户ID、IP、Agent获取用户设备信息
|
||||
GetUserDeviceByUIDIPAgent(uid, ip, agent string) (*model.ScaAuthUserDevice, error)
|
||||
// UpdateUserDevice 更新用户设备信息
|
||||
UpdateUserDevice(id int64, userDevice *model.ScaAuthUserDevice) error
|
||||
}
|
10
dao/user_social_dao.go
Normal file
10
dao/user_social_dao.go
Normal file
@@ -0,0 +1,10 @@
|
||||
package dao
|
||||
|
||||
import "schisandra-cloud-album/model"
|
||||
|
||||
type UserSocialDao interface {
|
||||
// AddUserSocial 添加用户第三方登录信息
|
||||
AddUserSocial(user model.ScaAuthUserSocial) error
|
||||
// QueryUserSocialByOpenID 根据第三方登录的 openID 查询用户信息
|
||||
QueryUserSocialByOpenID(openID string, source string) (model.ScaAuthUserSocial, error)
|
||||
}
|
126
docs/docs.go
126
docs/docs.go
@@ -15,7 +15,7 @@ const docTemplate = `{
|
||||
"host": "{{.Host}}",
|
||||
"basePath": "{{.BasePath}}",
|
||||
"paths": {
|
||||
"/api/auth/permission/add": {
|
||||
"/controller/auth/permission/add": {
|
||||
"post": {
|
||||
"description": "批量添加权限",
|
||||
"consumes": [
|
||||
@@ -35,14 +35,14 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/permission_api.AddPermissionRequest"
|
||||
"$ref": "#/definitions/permission_controller.AddPermissionRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/api/auth/permission/assign": {
|
||||
"/controller/auth/permission/assign": {
|
||||
"post": {
|
||||
"description": "给指定角色分配权限",
|
||||
"consumes": [
|
||||
@@ -62,14 +62,14 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/permission_api.AddPermissionToRoleRequest"
|
||||
"$ref": "#/definitions/permission_controller.AddPermissionToRoleRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/api/auth/role/add_role_to_user": {
|
||||
"/controller/auth/role/add_role_to_user": {
|
||||
"post": {
|
||||
"description": "给指定用户添加角色",
|
||||
"consumes": [
|
||||
@@ -89,14 +89,14 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/role_api.AddRoleToUserRequest"
|
||||
"$ref": "#/definitions/role_controller.AddRoleToUserRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/api/auth/role/create": {
|
||||
"/controller/auth/role/create": {
|
||||
"post": {
|
||||
"description": "创建角色",
|
||||
"consumes": [
|
||||
@@ -116,14 +116,14 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/role_api.RoleRequest"
|
||||
"$ref": "#/definitions/role_controller.RoleRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/api/auth/user/List": {
|
||||
"/controller/auth/user/List": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"用户模块"
|
||||
@@ -139,7 +139,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/auth/user/delete": {
|
||||
"/controller/auth/user/delete": {
|
||||
"delete": {
|
||||
"tags": [
|
||||
"用户模块"
|
||||
@@ -164,7 +164,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/auth/user/logout": {
|
||||
"/controller/auth/user/logout": {
|
||||
"post": {
|
||||
"tags": [
|
||||
"用户模块"
|
||||
@@ -180,7 +180,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/auth/user/query_by_phone": {
|
||||
"/controller/auth/user/query_by_phone": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"用户模块"
|
||||
@@ -205,7 +205,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/auth/user/query_by_username": {
|
||||
"/controller/auth/user/query_by_username": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"用户模块"
|
||||
@@ -230,7 +230,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/auth/user/query_by_uuid": {
|
||||
"/controller/auth/user/query_by_uuid": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"用户模块"
|
||||
@@ -255,7 +255,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/captcha/rotate/check": {
|
||||
"/controller/captcha/rotate/check": {
|
||||
"post": {
|
||||
"description": "验证旋转验证码",
|
||||
"tags": [
|
||||
@@ -288,7 +288,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/captcha/rotate/get": {
|
||||
"/controller/captcha/rotate/get": {
|
||||
"get": {
|
||||
"description": "生成旋转验证码",
|
||||
"tags": [
|
||||
@@ -305,7 +305,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/captcha/shape/get": {
|
||||
"/controller/captcha/shape/get": {
|
||||
"get": {
|
||||
"description": "生成点击形状验证码",
|
||||
"tags": [
|
||||
@@ -322,7 +322,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/captcha/shape/slide/check": {
|
||||
"/controller/captcha/shape/slide/check": {
|
||||
"get": {
|
||||
"description": "验证滑动验证码",
|
||||
"tags": [
|
||||
@@ -355,7 +355,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/captcha/shape/slide/region/get": {
|
||||
"/controller/captcha/shape/slide/region/get": {
|
||||
"get": {
|
||||
"description": "生成滑动区域形状验证码",
|
||||
"tags": [
|
||||
@@ -372,7 +372,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/captcha/slide/generate": {
|
||||
"/controller/captcha/slide/generate": {
|
||||
"get": {
|
||||
"description": "滑块基础验证码",
|
||||
"tags": [
|
||||
@@ -389,7 +389,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/captcha/text/check": {
|
||||
"/controller/captcha/text/check": {
|
||||
"get": {
|
||||
"description": "验证基础文字验证码",
|
||||
"tags": [
|
||||
@@ -422,7 +422,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/captcha/text/get": {
|
||||
"/controller/captcha/text/get": {
|
||||
"get": {
|
||||
"description": "生成基础文字验证码",
|
||||
"tags": [
|
||||
@@ -448,7 +448,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/oauth/callback_notify": {
|
||||
"/controller/oauth/callback_notify": {
|
||||
"post": {
|
||||
"description": "微信回调",
|
||||
"produces": [
|
||||
@@ -461,7 +461,7 @@ const docTemplate = `{
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/api/oauth/callback_verify": {
|
||||
"/controller/oauth/callback_verify": {
|
||||
"get": {
|
||||
"description": "微信回调验证",
|
||||
"produces": [
|
||||
@@ -474,7 +474,7 @@ const docTemplate = `{
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/api/oauth/generate_client_id": {
|
||||
"/controller/oauth/generate_client_id": {
|
||||
"get": {
|
||||
"description": "生成客户端ID",
|
||||
"produces": [
|
||||
@@ -487,7 +487,7 @@ const docTemplate = `{
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/api/oauth/get_temp_qrcode": {
|
||||
"/controller/oauth/get_temp_qrcode": {
|
||||
"get": {
|
||||
"description": "获取临时二维码",
|
||||
"produces": [
|
||||
@@ -509,7 +509,7 @@ const docTemplate = `{
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/api/oauth/gitee/callback": {
|
||||
"/controller/oauth/gitee/callback": {
|
||||
"get": {
|
||||
"description": "处理Gitee回调",
|
||||
"produces": [
|
||||
@@ -522,7 +522,7 @@ const docTemplate = `{
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/api/oauth/gitee/get_url": {
|
||||
"/controller/oauth/gitee/get_url": {
|
||||
"get": {
|
||||
"description": "获取Gitee登录地址",
|
||||
"produces": [
|
||||
@@ -542,7 +542,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/oauth/github/callback": {
|
||||
"/controller/oauth/github/callback": {
|
||||
"get": {
|
||||
"description": "登录回调函数",
|
||||
"produces": [
|
||||
@@ -571,7 +571,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/oauth/github/get_url": {
|
||||
"/controller/oauth/github/get_url": {
|
||||
"get": {
|
||||
"description": "获取github登录url",
|
||||
"produces": [
|
||||
@@ -591,7 +591,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/oauth/qq/callback": {
|
||||
"/controller/oauth/qq/callback": {
|
||||
"get": {
|
||||
"description": "QQ登录回调",
|
||||
"produces": [
|
||||
@@ -604,7 +604,7 @@ const docTemplate = `{
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/api/oauth/qq/get_url": {
|
||||
"/controller/oauth/qq/get_url": {
|
||||
"get": {
|
||||
"description": "获取QQ登录地址",
|
||||
"produces": [
|
||||
@@ -624,7 +624,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/sms/ali/send": {
|
||||
"/controller/sms/ali/send": {
|
||||
"get": {
|
||||
"description": "发送短信验证码",
|
||||
"produces": [
|
||||
@@ -646,7 +646,7 @@ const docTemplate = `{
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/api/sms/smsbao/send": {
|
||||
"/controller/sms/smsbao/send": {
|
||||
"post": {
|
||||
"description": "短信宝发送短信验证码",
|
||||
"produces": [
|
||||
@@ -668,7 +668,7 @@ const docTemplate = `{
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/api/sms/test/send": {
|
||||
"/controller/sms/test/send": {
|
||||
"post": {
|
||||
"description": "发送测试短信验证码",
|
||||
"produces": [
|
||||
@@ -690,7 +690,7 @@ const docTemplate = `{
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/api/token/refresh": {
|
||||
"/controller/token/refresh": {
|
||||
"post": {
|
||||
"tags": [
|
||||
"用户模块"
|
||||
@@ -715,7 +715,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/user/login": {
|
||||
"/controller/user/login": {
|
||||
"post": {
|
||||
"tags": [
|
||||
"用户模块"
|
||||
@@ -728,7 +728,7 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/user_api.AccountLoginRequest"
|
||||
"$ref": "#/definitions/user_controller.AccountLoginRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -742,7 +742,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/user/phone_login": {
|
||||
"/controller/user/phone_login": {
|
||||
"post": {
|
||||
"tags": [
|
||||
"用户模块"
|
||||
@@ -755,7 +755,7 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/user_api.PhoneLoginRequest"
|
||||
"$ref": "#/definitions/user_controller.PhoneLoginRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -769,7 +769,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/user/reset_password": {
|
||||
"/controller/user/reset_password": {
|
||||
"post": {
|
||||
"tags": [
|
||||
"用户模块"
|
||||
@@ -782,7 +782,7 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/user_api.ResetPasswordRequest"
|
||||
"$ref": "#/definitions/user_controller.ResetPasswordRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -796,7 +796,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/ws/gws": {
|
||||
"/controller/ws/gws": {
|
||||
"get": {
|
||||
"description": "创建websocket服务",
|
||||
"tags": [
|
||||
@@ -826,7 +826,7 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/comment_api.CommentLikeRequest"
|
||||
"$ref": "#/definitions/comment_controller.CommentLikeRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -853,7 +853,7 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/comment_api.CommentLikeRequest"
|
||||
"$ref": "#/definitions/comment_controller.CommentLikeRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -880,7 +880,7 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/comment_api.CommentListRequest"
|
||||
"$ref": "#/definitions/comment_controller.CommentListRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -907,7 +907,7 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/comment_api.CommentRequest"
|
||||
"$ref": "#/definitions/comment_controller.CommentRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -934,7 +934,7 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/comment_api.ReplyListRequest"
|
||||
"$ref": "#/definitions/comment_controller.ReplyListRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -961,7 +961,7 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/comment_api.ReplyReplyRequest"
|
||||
"$ref": "#/definitions/comment_controller.ReplyReplyRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -988,7 +988,7 @@ const docTemplate = `{
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/comment_api.ReplyCommentRequest"
|
||||
"$ref": "#/definitions/comment_controller.ReplyCommentRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -997,7 +997,7 @@ const docTemplate = `{
|
||||
}
|
||||
},
|
||||
"definitions": {
|
||||
"comment_api.CommentLikeRequest": {
|
||||
"comment_controller.CommentLikeRequest": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"comment_id",
|
||||
@@ -1016,7 +1016,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"comment_api.CommentListRequest": {
|
||||
"comment_controller.CommentListRequest": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"topic_id",
|
||||
@@ -1043,7 +1043,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"comment_api.CommentRequest": {
|
||||
"comment_controller.CommentRequest": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"author",
|
||||
@@ -1083,7 +1083,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"comment_api.ReplyCommentRequest": {
|
||||
"comment_controller.ReplyCommentRequest": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"author",
|
||||
@@ -1131,7 +1131,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"comment_api.ReplyListRequest": {
|
||||
"comment_controller.ReplyListRequest": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"comment_id",
|
||||
@@ -1158,7 +1158,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"comment_api.ReplyReplyRequest": {
|
||||
"comment_controller.ReplyReplyRequest": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"author",
|
||||
@@ -1278,7 +1278,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"permission_api.AddPermissionRequest": {
|
||||
"permission_controller.AddPermissionRequest": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"permissions": {
|
||||
@@ -1289,7 +1289,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"permission_api.AddPermissionToRoleRequest": {
|
||||
"permission_controller.AddPermissionToRoleRequest": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"method": {
|
||||
@@ -1303,7 +1303,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"role_api.AddRoleToUserRequest": {
|
||||
"role_controller.AddRoleToUserRequest": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"role_key",
|
||||
@@ -1318,7 +1318,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"role_api.RoleRequest": {
|
||||
"role_controller.RoleRequest": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"role_key",
|
||||
@@ -1333,7 +1333,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"user_api.AccountLoginRequest": {
|
||||
"user_controller.AccountLoginRequest": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"account",
|
||||
@@ -1360,7 +1360,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"user_api.PhoneLoginRequest": {
|
||||
"user_controller.PhoneLoginRequest": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"auto_login",
|
||||
@@ -1379,7 +1379,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"user_api.ResetPasswordRequest": {
|
||||
"user_controller.ResetPasswordRequest": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"captcha",
|
||||
|
@@ -37,7 +37,7 @@ func CommentLikeProducer(messageBody []byte) {
|
||||
func CommentLikeConsumer() {
|
||||
consumer := core.InitConsumer(CommentLikeTopic)
|
||||
consumer.AddHandler(&MessageHandler{})
|
||||
err := consumer.ConnectToNSQLookupd(global.CONFIG.NSQ.LookupdAddr())
|
||||
err := consumer.ConnectToNSQD(global.CONFIG.NSQ.NsqAddr())
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
@@ -2,10 +2,10 @@ package modules
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"schisandra-cloud-album/api"
|
||||
"schisandra-cloud-album/controller"
|
||||
)
|
||||
|
||||
var captchaApi = api.Api.CaptchaApi
|
||||
var captchaApi = controller.Controller.CaptchaController
|
||||
|
||||
func CaptchaRouter(router *gin.RouterGroup) {
|
||||
group := router.Group("/captcha")
|
||||
|
@@ -2,10 +2,10 @@ package modules
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"schisandra-cloud-album/api"
|
||||
"schisandra-cloud-album/controller"
|
||||
)
|
||||
|
||||
var clientApi = api.Api.ClientApi
|
||||
var clientApi = controller.Controller.ClientController
|
||||
|
||||
func ClientRouter(router *gin.RouterGroup) {
|
||||
router.GET("/client/generate_client_id", clientApi.GenerateClientId)
|
||||
|
@@ -2,10 +2,10 @@ package modules
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"schisandra-cloud-album/api"
|
||||
"schisandra-cloud-album/controller"
|
||||
)
|
||||
|
||||
var commonApi = api.Api.CommonApi
|
||||
var commonApi = controller.Controller.CommonController
|
||||
|
||||
func CommentRouter(router *gin.RouterGroup) {
|
||||
router.POST("/auth/comment/submit", commonApi.CommentSubmit)
|
||||
|
@@ -2,10 +2,10 @@ package modules
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"schisandra-cloud-album/api"
|
||||
"schisandra-cloud-album/controller"
|
||||
)
|
||||
|
||||
var oauth = api.Api.OAuthApi
|
||||
var oauth = controller.Controller.OAuthController
|
||||
|
||||
func OauthRouter(router *gin.RouterGroup) {
|
||||
group := router.Group("/oauth")
|
||||
|
@@ -2,10 +2,10 @@ package modules
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"schisandra-cloud-album/api"
|
||||
"schisandra-cloud-album/controller"
|
||||
)
|
||||
|
||||
var permissionApi = api.Api.PermissionApi
|
||||
var permissionApi = controller.Controller.PermissionController
|
||||
|
||||
func PermissionRouter(router *gin.RouterGroup) {
|
||||
group := router.Group("/auth/permission")
|
||||
|
@@ -2,10 +2,10 @@ package modules
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"schisandra-cloud-album/api"
|
||||
"schisandra-cloud-album/controller"
|
||||
)
|
||||
|
||||
var roleApi = api.Api.RoleApi
|
||||
var roleApi = controller.Controller.RoleController
|
||||
|
||||
func RoleRouter(router *gin.RouterGroup) {
|
||||
group := router.Group("/auth")
|
||||
|
@@ -2,10 +2,10 @@ package modules
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"schisandra-cloud-album/api"
|
||||
"schisandra-cloud-album/controller"
|
||||
)
|
||||
|
||||
var smsApi = api.Api.SmsApi
|
||||
var smsApi = controller.Controller.SmsController
|
||||
|
||||
func SmsRouter(router *gin.RouterGroup) {
|
||||
group := router.Group("/sms")
|
||||
|
@@ -2,10 +2,10 @@ package modules
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"schisandra-cloud-album/api"
|
||||
"schisandra-cloud-album/controller"
|
||||
)
|
||||
|
||||
var userApi = api.Api.UserApi
|
||||
var userApi = controller.Controller.UserController
|
||||
|
||||
// UserRouter 用户相关路由 有auth接口组需要token验证,没有auth接口组不需要token验证
|
||||
func UserRouter(router *gin.RouterGroup) {
|
||||
|
@@ -2,10 +2,10 @@ package modules
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"schisandra-cloud-album/api"
|
||||
"schisandra-cloud-album/controller"
|
||||
)
|
||||
|
||||
var websocketAPI = api.Api.WebsocketApi
|
||||
var websocketAPI = controller.Controller.WebsocketController
|
||||
|
||||
func WebsocketRouter(router *gin.RouterGroup) {
|
||||
group := router.Group("/ws")
|
||||
|
@@ -1,3 +0,0 @@
|
||||
package comment_likes_service
|
||||
|
||||
type CommentLikes struct{}
|
@@ -1 +0,0 @@
|
||||
package comment_likes_service
|
10
service/comment_reply_service.go
Normal file
10
service/comment_reply_service.go
Normal file
@@ -0,0 +1,10 @@
|
||||
package service
|
||||
|
||||
import "schisandra-cloud-album/model"
|
||||
|
||||
type CommentReplyService interface {
|
||||
CreateCommentReplyService(comment *model.ScaCommentReply) error
|
||||
UpdateCommentReplyCountService(replyId int64) error
|
||||
UpdateCommentLikesCountService(commentId int64, topicId string) error
|
||||
DecrementCommentLikesCountService(commentId int64, topicId string) error
|
||||
}
|
@@ -1,3 +0,0 @@
|
||||
package comment_reply_service
|
||||
|
||||
type CommentReplyService struct{}
|
32
service/impl/comment_reply_service_impl.go
Normal file
32
service/impl/comment_reply_service_impl.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package impl
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/dao/impl"
|
||||
"schisandra-cloud-album/model"
|
||||
)
|
||||
|
||||
var commentReplyDao = impl.CommentReplyDaoImpl{}
|
||||
|
||||
type CommentReplyServiceImpl struct{}
|
||||
|
||||
// CreateCommentReplyService 创建评论回复
|
||||
func (CommentReplyServiceImpl) CreateCommentReplyService(comment *model.ScaCommentReply) error {
|
||||
return commentReplyDao.CreateCommentReply(comment)
|
||||
|
||||
}
|
||||
|
||||
// UpdateCommentReplyCountService 更新评论回复数
|
||||
func (CommentReplyServiceImpl) UpdateCommentReplyCountService(replyId int64) error {
|
||||
return commentReplyDao.UpdateCommentReplyCount(replyId)
|
||||
|
||||
}
|
||||
|
||||
// UpdateCommentLikesCountService 更新评论点赞数
|
||||
func (CommentReplyServiceImpl) UpdateCommentLikesCountService(commentId int64, topicId string) error {
|
||||
return commentReplyDao.UpdateCommentLikesCount(commentId, topicId)
|
||||
}
|
||||
|
||||
// DecrementCommentLikesCountService 减少评论点赞数
|
||||
func (CommentReplyServiceImpl) DecrementCommentLikesCountService(commentId int64, topicId string) error {
|
||||
return commentReplyDao.DecrementCommentLikesCount(commentId, topicId)
|
||||
}
|
15
service/impl/permission_service_impl.go
Normal file
15
service/impl/permission_service_impl.go
Normal file
@@ -0,0 +1,15 @@
|
||||
package impl
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/dao/impl"
|
||||
"schisandra-cloud-album/model"
|
||||
)
|
||||
|
||||
var permissionDao = impl.PermissionDaoImpl{}
|
||||
|
||||
type PermissionServiceImpl struct{}
|
||||
|
||||
// CreatePermissionsService 创建权限
|
||||
func (PermissionServiceImpl) CreatePermissionsService(permissions []model.ScaAuthPermission) error {
|
||||
return permissionDao.CreatePermissions(permissions)
|
||||
}
|
16
service/impl/role_service_impl.go
Normal file
16
service/impl/role_service_impl.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package impl
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/dao/impl"
|
||||
"schisandra-cloud-album/model"
|
||||
)
|
||||
|
||||
var roleDao = impl.RoleDaoImpl{}
|
||||
|
||||
type RoleServiceImpl struct{}
|
||||
|
||||
// AddRoleService 添加角色
|
||||
func (RoleServiceImpl) AddRoleService(role model.ScaAuthRole) error {
|
||||
return roleDao.AddRole(role)
|
||||
|
||||
}
|
25
service/impl/user_device_service_impl.go
Normal file
25
service/impl/user_device_service_impl.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package impl
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/dao/impl"
|
||||
"schisandra-cloud-album/model"
|
||||
)
|
||||
|
||||
var userDeviceDao = impl.UserDeviceImpl{}
|
||||
|
||||
type UserDeviceServiceImpl struct{}
|
||||
|
||||
// GetUserDeviceByUIDIPAgentService 获取用户设备信息 根据用户ID、IP、User-Agent
|
||||
func (UserDeviceServiceImpl) GetUserDeviceByUIDIPAgentService(userId, ip, userAgent string) (*model.ScaAuthUserDevice, error) {
|
||||
return userDeviceDao.GetUserDeviceByUIDIPAgent(userId, ip, userAgent)
|
||||
}
|
||||
|
||||
// AddUserDeviceService 新增用户设备信息
|
||||
func (UserDeviceServiceImpl) AddUserDeviceService(userDevice *model.ScaAuthUserDevice) error {
|
||||
return userDeviceDao.AddUserDevice(userDevice)
|
||||
}
|
||||
|
||||
// UpdateUserDeviceService 更新用户设备信息
|
||||
func (UserDeviceServiceImpl) UpdateUserDeviceService(userId int64, userDevice *model.ScaAuthUserDevice) error {
|
||||
return userDeviceDao.UpdateUserDevice(userId, userDevice)
|
||||
}
|
54
service/impl/user_service_impl.go
Normal file
54
service/impl/user_service_impl.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package impl
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/dao/impl"
|
||||
"schisandra-cloud-album/model"
|
||||
)
|
||||
|
||||
var userDao = impl.UserDaoImpl{}
|
||||
|
||||
type UserServiceImpl struct{}
|
||||
|
||||
// GetUserListService 返回用户列表
|
||||
func (UserServiceImpl) GetUserListService() []*model.ScaAuthUser {
|
||||
return userDao.GetUserList()
|
||||
}
|
||||
|
||||
// QueryUserByUsernameService 根据用户名查询用户
|
||||
func (UserServiceImpl) QueryUserByUsernameService(username string) model.ScaAuthUser {
|
||||
return userDao.QueryUserByUsername(username)
|
||||
}
|
||||
|
||||
// QueryUserByUuidService 根据uid查询用户
|
||||
func (UserServiceImpl) QueryUserByUuidService(uid *string) model.ScaAuthUser {
|
||||
user, err := userDao.QueryUserByUuid(uid)
|
||||
if err != nil {
|
||||
return model.ScaAuthUser{}
|
||||
}
|
||||
return user
|
||||
}
|
||||
|
||||
// DeleteUserService 根据uid删除用户
|
||||
func (UserServiceImpl) DeleteUserService(uid string) error {
|
||||
return userDao.DeleteUser(uid)
|
||||
}
|
||||
|
||||
// QueryUserByPhoneService 根据手机号查询用户
|
||||
func (UserServiceImpl) QueryUserByPhoneService(phone string) model.ScaAuthUser {
|
||||
return userDao.QueryUserByPhone(phone)
|
||||
}
|
||||
|
||||
// QueryUserByEmailService 根据邮箱查询用户
|
||||
func (UserServiceImpl) QueryUserByEmailService(email string) model.ScaAuthUser {
|
||||
return userDao.QueryUserByEmail(email)
|
||||
}
|
||||
|
||||
// AddUserService 新增用户
|
||||
func (UserServiceImpl) AddUserService(user model.ScaAuthUser) (*model.ScaAuthUser, error) {
|
||||
return userDao.AddUser(user)
|
||||
}
|
||||
|
||||
// UpdateUserService 更新用户信息
|
||||
func (UserServiceImpl) UpdateUserService(phone, encrypt string) error {
|
||||
return userDao.UpdateUser(phone, encrypt)
|
||||
}
|
20
service/impl/user_social_service_impl.go
Normal file
20
service/impl/user_social_service_impl.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package impl
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/dao/impl"
|
||||
"schisandra-cloud-album/model"
|
||||
)
|
||||
|
||||
var userSocialDao = impl.UserSocialImpl{}
|
||||
|
||||
type UserSocialServiceImpl struct{}
|
||||
|
||||
// QueryUserSocialByOpenIDService 查询用户第三方账号信息
|
||||
func (UserSocialServiceImpl) QueryUserSocialByOpenIDService(openID string, source string) (model.ScaAuthUserSocial, error) {
|
||||
return userSocialDao.QueryUserSocialByOpenID(openID, source)
|
||||
}
|
||||
|
||||
// AddUserSocialService 新增用户第三方账号信息
|
||||
func (UserSocialServiceImpl) AddUserSocialService(userSocial model.ScaAuthUserSocial) error {
|
||||
return userSocialDao.AddUserSocial(userSocial)
|
||||
}
|
8
service/permission_service.go
Normal file
8
service/permission_service.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package service
|
||||
|
||||
import "schisandra-cloud-album/model"
|
||||
|
||||
type PermissionService interface {
|
||||
// CreatePermissionsService 创建权限
|
||||
CreatePermissionsService(permissions []model.ScaAuthPermission) error
|
||||
}
|
@@ -1,3 +0,0 @@
|
||||
package permission_service
|
||||
|
||||
type PermissionService struct{}
|
8
service/role_service.go
Normal file
8
service/role_service.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package service
|
||||
|
||||
import "schisandra-cloud-album/model"
|
||||
|
||||
type RoleService interface {
|
||||
// AddRoleService 添加角色
|
||||
AddRoleService(role model.ScaAuthRole) error
|
||||
}
|
@@ -1,3 +0,0 @@
|
||||
package role_service
|
||||
|
||||
type RoleService struct{}
|
@@ -1,23 +0,0 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"schisandra-cloud-album/service/comment_reply_service"
|
||||
"schisandra-cloud-album/service/permission_service"
|
||||
"schisandra-cloud-album/service/role_service"
|
||||
"schisandra-cloud-album/service/user_device_service"
|
||||
"schisandra-cloud-album/service/user_service"
|
||||
"schisandra-cloud-album/service/user_social_service"
|
||||
)
|
||||
|
||||
// Services 统一导出的service
|
||||
type Services struct {
|
||||
UserService user_service.UserService
|
||||
RoleService role_service.RoleService
|
||||
PermissionService permission_service.PermissionService
|
||||
UserSocialService user_social_service.UserSocialService
|
||||
UserDeviceService user_device_service.UserDeviceService
|
||||
CommentReplyService comment_reply_service.CommentReplyService
|
||||
}
|
||||
|
||||
// Service new函数实例化,实例化完成后会返回结构体地指针类型
|
||||
var Service = new(Services)
|
9
service/user_device_service.go
Normal file
9
service/user_device_service.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package service
|
||||
|
||||
import "schisandra-cloud-album/model"
|
||||
|
||||
type UserDeviceService interface {
|
||||
GetUserDeviceByUIDIPAgentService(userId, ip, userAgent string) (*model.ScaAuthUserDevice, error)
|
||||
AddUserDeviceService(userDevice *model.ScaAuthUserDevice) error
|
||||
UpdateUserDeviceService(userId int64, userDevice *model.ScaAuthUserDevice) error
|
||||
}
|
@@ -1,3 +0,0 @@
|
||||
package user_device_service
|
||||
|
||||
type UserDeviceService struct{}
|
22
service/user_service.go
Normal file
22
service/user_service.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package service
|
||||
|
||||
import "schisandra-cloud-album/model"
|
||||
|
||||
type UserService interface {
|
||||
// GetUserListService 返回用户列表
|
||||
GetUserListService() []*model.ScaAuthUser
|
||||
// QueryUserByUsernameService 根据用户名查询用户
|
||||
QueryUserByUsernameService(username string) model.ScaAuthUser
|
||||
// QueryUserByUuidService 根据用户ID查询用户
|
||||
QueryUserByUuidService(uid *string) model.ScaAuthUser
|
||||
// DeleteUserService 根据用户ID删除用户
|
||||
DeleteUserService(uid string) error
|
||||
// QueryUserByPhoneService 根据手机号查询用户
|
||||
QueryUserByPhoneService(phone string) model.ScaAuthUser
|
||||
// QueryUserByEmailService 根据邮箱查询用户
|
||||
QueryUserByEmailService(email string) model.ScaAuthUser
|
||||
// AddUserService 新增用户
|
||||
AddUserService(user model.ScaAuthUser) (*model.ScaAuthUser, error)
|
||||
// UpdateUserService 更新用户信息
|
||||
UpdateUserService(phone, encrypt string) error
|
||||
}
|
@@ -1,3 +0,0 @@
|
||||
package user_service
|
||||
|
||||
type UserService struct{}
|
8
service/user_social_service.go
Normal file
8
service/user_social_service.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package service
|
||||
|
||||
import "schisandra-cloud-album/model"
|
||||
|
||||
type UserSocialService interface {
|
||||
QueryUserSocialByOpenIDService(openID string, source string) (model.ScaAuthUserSocial, error)
|
||||
AddUserSocialService(userSocial model.ScaAuthUserSocial) error
|
||||
}
|
@@ -1,3 +0,0 @@
|
||||
package user_social_service
|
||||
|
||||
type UserSocialService struct{}
|
@@ -1,44 +0,0 @@
|
||||
package user_social_service
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"gorm.io/gorm"
|
||||
"schisandra-cloud-album/global"
|
||||
"schisandra-cloud-album/model"
|
||||
)
|
||||
|
||||
// AddUserSocial 添加社会化登录用户信息
|
||||
|
||||
func (UserSocialService) AddUserSocial(user model.ScaAuthUserSocial) error {
|
||||
result := global.DB.Create(&user)
|
||||
if result.Error != nil {
|
||||
return result.Error
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// QueryUserSocialByOpenID 根据openID和source查询用户信息
|
||||
func (UserSocialService) QueryUserSocialByOpenID(openID string, source string) (model.ScaAuthUserSocial, error) {
|
||||
var user model.ScaAuthUserSocial
|
||||
result := global.DB.Where("open_id = ? and source = ? and deleted = 0", openID, source).First(&user)
|
||||
if result.Error != nil {
|
||||
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
||||
return model.ScaAuthUserSocial{}, result.Error
|
||||
}
|
||||
return model.ScaAuthUserSocial{}, result.Error
|
||||
}
|
||||
return user, nil
|
||||
}
|
||||
|
||||
// QueryUserSocialByUUID 根据uuid和source查询用户信息
|
||||
func (UserSocialService) QueryUserSocialByUUID(openID string, source string) (model.ScaAuthUserSocial, error) {
|
||||
var user model.ScaAuthUserSocial
|
||||
result := global.DB.Where("uuid = ? and source = ? and deleted = 0", openID, source).First(&user)
|
||||
if result.Error != nil {
|
||||
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
||||
return model.ScaAuthUserSocial{}, result.Error
|
||||
}
|
||||
return model.ScaAuthUserSocial{}, result.Error
|
||||
}
|
||||
return user, nil
|
||||
}
|
Reference in New Issue
Block a user