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