diff --git a/api/api.go b/api/api.go deleted file mode 100644 index 8b37b7d..0000000 --- a/api/api.go +++ /dev/null @@ -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) diff --git a/api/captcha_api/captcha.go b/api/captcha_api/captcha.go deleted file mode 100644 index 3939b9e..0000000 --- a/api/captcha_api/captcha.go +++ /dev/null @@ -1,3 +0,0 @@ -package captcha_api - -type CaptchaAPI struct{} diff --git a/api/client_api/client.go b/api/client_api/client.go deleted file mode 100644 index 9495648..0000000 --- a/api/client_api/client.go +++ /dev/null @@ -1,7 +0,0 @@ -package client_api - -import "sync" - -type ClientAPI struct{} - -var mu sync.Mutex diff --git a/api/permission_api/permission.go b/api/permission_api/permission.go deleted file mode 100644 index 6677581..0000000 --- a/api/permission_api/permission.go +++ /dev/null @@ -1,3 +0,0 @@ -package permission_api - -type PermissionAPI struct{} diff --git a/api/role_api/role.go b/api/role_api/role.go deleted file mode 100644 index 96ec8c6..0000000 --- a/api/role_api/role.go +++ /dev/null @@ -1,3 +0,0 @@ -package role_api - -type RoleAPI struct{} diff --git a/api/sms_api/sms.go b/api/sms_api/sms.go deleted file mode 100644 index 56a8f1e..0000000 --- a/api/sms_api/sms.go +++ /dev/null @@ -1,3 +0,0 @@ -package sms_api - -type SmsAPI struct{} diff --git a/api/user_api/user.go b/api/user_api/user.go deleted file mode 100644 index c0e79d2..0000000 --- a/api/user_api/user.go +++ /dev/null @@ -1,7 +0,0 @@ -package user_api - -import "sync" - -type UserAPI struct{} - -var mu sync.Mutex diff --git a/api/websocket_api/websocket.go b/api/websocket_api/websocket.go deleted file mode 100644 index 5e60d52..0000000 --- a/api/websocket_api/websocket.go +++ /dev/null @@ -1,4 +0,0 @@ -package websocket_api - -type WebsocketAPI struct { -} diff --git a/common/constant/redis_key.go b/common/constant/redis_key.go index 97c995e..e139fa9 100644 --- a/common/constant/redis_key.go +++ b/common/constant/redis_key.go @@ -19,5 +19,5 @@ const ( // 系统相关的redis key const ( - SystemApiNonceRedisKey = "system:api:nonce:" + SystemApiNonceRedisKey = "system:controller:nonce:" ) diff --git a/controller/captcha_controller/captcha.go b/controller/captcha_controller/captcha.go new file mode 100644 index 0000000..5a972f8 --- /dev/null +++ b/controller/captcha_controller/captcha.go @@ -0,0 +1,3 @@ +package captcha_controller + +type CaptchaController struct{} diff --git a/api/captcha_api/captcha_api.go b/controller/captcha_controller/captcha_controller.go similarity index 90% rename from api/captcha_api/captcha_api.go rename to controller/captcha_controller/captcha_controller.go index c0fa196..c712c39 100644 --- a/api/captcha_api/captcha_api.go +++ b/controller/captcha_controller/captcha_controller.go @@ -1,4 +1,4 @@ -package captcha_api +package captcha_controller import ( "encoding/json" @@ -24,8 +24,8 @@ import ( // @Description 生成旋转验证码 // @Tags 旋转验证码 // @Success 200 {string} json -// @Router /api/captcha/rotate/get [get] -func (CaptchaAPI) GenerateRotateCaptcha(c *gin.Context) { +// @Router /controller/captcha/rotate/get [get] +func (CaptchaController) GenerateRotateCaptcha(c *gin.Context) { captchaData, err := global.RotateCaptcha.Generate() if err != nil { global.LOG.Fatalln(err) @@ -69,8 +69,8 @@ func (CaptchaAPI) GenerateRotateCaptcha(c *gin.Context) { // @Param angle query string true "验证码角度" // @Param key query string true "验证码key" // @Success 200 {string} json -// @Router /api/captcha/rotate/check [post] -func (CaptchaAPI) CheckRotateData(c *gin.Context) { +// @Router /controller/captcha/rotate/check [post] +func (CaptchaController) CheckRotateData(c *gin.Context) { var rotateRequest RotateCaptchaRequest if err := c.ShouldBindJSON(&rotateRequest); err != nil { result.FailWithNull(c) @@ -110,8 +110,8 @@ func (CaptchaAPI) CheckRotateData(c *gin.Context) { // @Tags 基础文字验证码 // @Param type query string true "验证码类型" // @Success 200 {string} json -// @Router /api/captcha/text/get [get] -func (CaptchaAPI) GenerateBasicTextCaptcha(c *gin.Context) { +// @Router /controller/captcha/text/get [get] +func (CaptchaController) GenerateBasicTextCaptcha(c *gin.Context) { var capt click.Captcha if c.Query("type") == "light" { capt = global.LightTextCaptcha @@ -157,8 +157,8 @@ func (CaptchaAPI) GenerateBasicTextCaptcha(c *gin.Context) { // @Param captcha query string true "验证码" // @Param key query string true "验证码key" // @Success 200 {string} json -// @Router /api/captcha/text/check [get] -func (CaptchaAPI) CheckClickData(c *gin.Context) { +// @Router /controller/captcha/text/check [get] +func (CaptchaController) CheckClickData(c *gin.Context) { dots := c.Query("dots") key := c.Query("key") if dots == "" || key == "" { @@ -204,8 +204,8 @@ func (CaptchaAPI) CheckClickData(c *gin.Context) { // @Description 生成点击形状验证码 // @Tags 点击形状验证码 // @Success 200 {string} json -// @Router /api/captcha/shape/get [get] -func (CaptchaAPI) GenerateClickShapeCaptcha(c *gin.Context) { +// @Router /controller/captcha/shape/get [get] +func (CaptchaController) GenerateClickShapeCaptcha(c *gin.Context) { captData, err := global.ClickShapeCaptcha.Generate() if err != nil { log.Fatalln(err) @@ -243,8 +243,8 @@ func (CaptchaAPI) GenerateClickShapeCaptcha(c *gin.Context) { // @Description 滑块基础验证码 // @Tags 滑块基础验证码 // @Success 200 {string} json -// @Router /api/captcha/slide/generate [get] -func (CaptchaAPI) GenerateSlideBasicCaptData(c *gin.Context) { +// @Router /controller/captcha/slide/generate [get] +func (CaptchaController) GenerateSlideBasicCaptData(c *gin.Context) { captData, err := global.SlideCaptcha.Generate() if err != nil { global.LOG.Fatalln(err) @@ -287,8 +287,8 @@ func (CaptchaAPI) GenerateSlideBasicCaptData(c *gin.Context) { // @Description 生成滑动区域形状验证码 // @Tags 生成滑动区域形状验证码 // @Success 200 {string} json -// @Router /api/captcha/shape/slide/region/get [get] -func (CaptchaAPI) GenerateSlideRegionCaptData(c *gin.Context) { +// @Router /controller/captcha/shape/slide/region/get [get] +func (CaptchaController) GenerateSlideRegionCaptData(c *gin.Context) { captData, err := global.SlideRegionCaptcha.Generate() if err != nil { global.LOG.Fatalln(err) @@ -335,8 +335,8 @@ func (CaptchaAPI) GenerateSlideRegionCaptData(c *gin.Context) { // @Param point query string true "点击坐标" // @Param key query string true "验证码key" // @Success 200 {string} json -// @Router /api/captcha/shape/slide/check [get] -func (CaptchaAPI) CheckSlideData(c *gin.Context) { +// @Router /controller/captcha/shape/slide/check [get] +func (CaptchaController) CheckSlideData(c *gin.Context) { point := c.Query("point") key := c.Query("key") if point == "" || key == "" { diff --git a/api/captcha_api/request_param.go b/controller/captcha_controller/request_param.go similarity index 83% rename from api/captcha_api/request_param.go rename to controller/captcha_controller/request_param.go index e189bbf..163635d 100644 --- a/api/captcha_api/request_param.go +++ b/controller/captcha_controller/request_param.go @@ -1,4 +1,4 @@ -package captcha_api +package captcha_controller type RotateCaptchaRequest struct { Angle int `json:"angle" binding:"required"` diff --git a/controller/client_controller/client.go b/controller/client_controller/client.go new file mode 100644 index 0000000..778db37 --- /dev/null +++ b/controller/client_controller/client.go @@ -0,0 +1,7 @@ +package client_controller + +import "sync" + +type ClientController struct{} + +var mu sync.Mutex diff --git a/api/client_api/client_api.go b/controller/client_controller/client_controller.go similarity index 87% rename from api/client_api/client_api.go rename to controller/client_controller/client_controller.go index ec9e954..4a4b87e 100644 --- a/api/client_api/client_api.go +++ b/controller/client_controller/client_controller.go @@ -1,4 +1,4 @@ -package client_api +package client_controller import ( "github.com/gin-gonic/gin" @@ -16,8 +16,8 @@ import ( // @Description 生成客户端ID // @Tags 微信公众号 // @Produce json -// @Router /api/oauth/generate_client_id [get] -func (ClientAPI) GenerateClientId(c *gin.Context) { +// @Router /controller/oauth/generate_client_id [get] +func (ClientController) GenerateClientId(c *gin.Context) { // 获取客户端IP ip := utils.GetClientIP(c) // 加锁 diff --git a/api/comment_api/comment.go b/controller/comment_controller/comment.go similarity index 92% rename from api/comment_api/comment.go rename to controller/comment_controller/comment.go index a342bd9..28710bd 100644 --- a/api/comment_api/comment.go +++ b/controller/comment_controller/comment.go @@ -1,16 +1,16 @@ -package comment_api +package comment_controller import ( - "schisandra-cloud-album/service" + "schisandra-cloud-album/service/impl" "sync" "time" ) -type CommentAPI struct{} +type CommentController struct{} var wg sync.WaitGroup var mx sync.Mutex -var commentReplyService = service.Service.CommentReplyService +var commentReplyService = impl.CommentReplyServiceImpl{} // CommentImages 评论图片 type CommentImages struct { diff --git a/api/comment_api/comment_api.go b/controller/comment_controller/comment_controller.go similarity index 95% rename from api/comment_api/comment_api.go rename to controller/comment_controller/comment_controller.go index 9aad8de..b7d3ca5 100644 --- a/api/comment_api/comment_api.go +++ b/controller/comment_controller/comment_controller.go @@ -1,4 +1,4 @@ -package comment_api +package comment_controller import ( "context" @@ -28,7 +28,7 @@ import ( // @Produce json // @Param comment_request body CommentRequest true "评论请求" // @Router /auth/comment/submit [post] -func (CommentAPI) CommentSubmit(c *gin.Context) { +func (CommentController) CommentSubmit(c *gin.Context) { commentRequest := CommentRequest{} if err := c.ShouldBindJSON(&commentRequest); err != nil { return @@ -90,7 +90,7 @@ func (CommentAPI) CommentSubmit(c *gin.Context) { // 使用 goroutine 进行异步评论保存 errCh := make(chan error, 2) go func() { - errCh <- commentReplyService.CreateCommentReply(&commentReply) + errCh <- commentReplyService.CreateCommentReplyService(&commentReply) }() // 等待评论回复的创建 @@ -149,7 +149,7 @@ func (CommentAPI) CommentSubmit(c *gin.Context) { // @Produce json // @Param reply_comment_request body ReplyCommentRequest true "回复评论请求" // @Router /auth/reply/submit [post] -func (CommentAPI) ReplySubmit(c *gin.Context) { +func (CommentController) ReplySubmit(c *gin.Context) { replyCommentRequest := ReplyCommentRequest{} if err := c.ShouldBindJSON(&replyCommentRequest); err != nil { result.FailWithMessage(ginI18n.MustGetMessage(c, "ParamsError"), c) @@ -214,11 +214,11 @@ func (CommentAPI) ReplySubmit(c *gin.Context) { errCh := make(chan error) go func() { - errCh <- commentReplyService.CreateCommentReply(&commentReply) + errCh <- commentReplyService.CreateCommentReplyService(&commentReply) }() go func() { - errCh <- commentReplyService.UpdateCommentReplyCount(replyCommentRequest.ReplyId) + errCh <- commentReplyService.UpdateCommentReplyCountService(replyCommentRequest.ReplyId) }() // 等待评论回复的创建 if err = <-errCh; err != nil { @@ -276,7 +276,7 @@ func (CommentAPI) ReplySubmit(c *gin.Context) { // @Produce json // @Param reply_reply_request body ReplyReplyRequest true "回复回复请求" // @Router /auth/reply/reply/submit [post] -func (CommentAPI) ReplyReplySubmit(c *gin.Context) { +func (CommentController) ReplyReplySubmit(c *gin.Context) { replyReplyRequest := ReplyReplyRequest{} if err := c.ShouldBindJSON(&replyReplyRequest); err != nil { result.FailWithMessage(ginI18n.MustGetMessage(c, "ParamsError"), c) @@ -341,10 +341,10 @@ func (CommentAPI) ReplyReplySubmit(c *gin.Context) { errCh := make(chan error, 2) go func() { - errCh <- commentReplyService.CreateCommentReply(&commentReply) + errCh <- commentReplyService.CreateCommentReplyService(&commentReply) }() go func() { - errCh <- commentReplyService.UpdateCommentReplyCount(replyReplyRequest.ReplyId) + errCh <- commentReplyService.UpdateCommentReplyCountService(replyReplyRequest.ReplyId) }() if err = <-errCh; err != nil { @@ -401,7 +401,7 @@ func (CommentAPI) ReplyReplySubmit(c *gin.Context) { // @Produce json // @Param comment_list_request body CommentListRequest true "评论列表请求" // @Router /auth/comment/list [post] -func (CommentAPI) CommentList(c *gin.Context) { +func (CommentController) CommentList(c *gin.Context) { commentListRequest := CommentListRequest{} err := c.ShouldBindJSON(&commentListRequest) if err != nil { @@ -576,7 +576,7 @@ func (CommentAPI) CommentList(c *gin.Context) { // @Produce json // @Param reply_list_request body ReplyListRequest true "回复列表请求" // @Router /auth/reply/list [post] -func (CommentAPI) ReplyList(c *gin.Context) { +func (CommentController) ReplyList(c *gin.Context) { replyListRequest := ReplyListRequest{} err := c.ShouldBindJSON(&replyListRequest) if err != nil { @@ -757,7 +757,7 @@ func (CommentAPI) ReplyList(c *gin.Context) { // @Produce json // @Param comment_like_request body CommentLikeRequest true "点赞请求" // @Router /auth/comment/like [post] -func (CommentAPI) CommentLikes(c *gin.Context) { +func (CommentController) CommentLikes(c *gin.Context) { likeRequest := CommentLikeRequest{} err := c.ShouldBindJSON(&likeRequest) if err != nil { @@ -790,7 +790,7 @@ func (CommentAPI) CommentLikes(c *gin.Context) { // 异步更新点赞计数 go func() { - if err = commentReplyService.UpdateCommentLikesCount(likeRequest.CommentId, likeRequest.TopicId); err != nil { + if err = commentReplyService.UpdateCommentLikesCountService(likeRequest.CommentId, likeRequest.TopicId); err != nil { global.LOG.Errorln(err) } }() @@ -814,7 +814,7 @@ func (CommentAPI) CommentLikes(c *gin.Context) { // @Produce json // @Param comment_like_request body CommentLikeRequest true "取消点赞请求" // @Router /auth/comment/cancel_like [post] -func (CommentAPI) CancelCommentLikes(c *gin.Context) { +func (CommentController) CancelCommentLikes(c *gin.Context) { cancelLikeRequest := CommentLikeRequest{} if err := c.ShouldBindJSON(&cancelLikeRequest); err != nil { result.FailWithMessage(ginI18n.MustGetMessage(c, "ParamsError"), c) @@ -843,7 +843,7 @@ func (CommentAPI) CancelCommentLikes(c *gin.Context) { // 异步更新点赞计数 go func() { - if err := commentReplyService.DecrementCommentLikesCount(cancelLikeRequest.CommentId, cancelLikeRequest.TopicId); err != nil { + if err := commentReplyService.DecrementCommentLikesCountService(cancelLikeRequest.CommentId, cancelLikeRequest.TopicId); err != nil { global.LOG.Errorln(err) } }() diff --git a/api/comment_api/handler.go b/controller/comment_controller/handler.go similarity index 98% rename from api/comment_api/handler.go rename to controller/comment_controller/handler.go index a0acb91..e547cb7 100644 --- a/api/comment_api/handler.go +++ b/controller/comment_controller/handler.go @@ -1,4 +1,4 @@ -package comment_api +package comment_controller import ( "encoding/base64" diff --git a/api/comment_api/request_param.go b/controller/comment_controller/request_param.go similarity index 98% rename from api/comment_api/request_param.go rename to controller/comment_controller/request_param.go index 5302bcf..2dd4a40 100644 --- a/api/comment_api/request_param.go +++ b/controller/comment_controller/request_param.go @@ -1,4 +1,4 @@ -package comment_api +package comment_controller type CommentRequest struct { Content string `json:"content" binding:"required"` diff --git a/controller/controller.go b/controller/controller.go new file mode 100644 index 0000000..57d21cb --- /dev/null +++ b/controller/controller.go @@ -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) diff --git a/api/oauth_api/gitee_api.go b/controller/oauth_controller/gitee_controller.go similarity index 93% rename from api/oauth_api/gitee_api.go rename to controller/oauth_controller/gitee_controller.go index c324f50..05c7ebf 100644 --- a/api/oauth_api/gitee_api.go +++ b/controller/oauth_controller/gitee_controller.go @@ -1,4 +1,4 @@ -package oauth_api +package oauth_controller import ( "encoding/json" @@ -55,8 +55,8 @@ type GiteeUser struct { // @Tags Gitee OAuth // @Produce json // @Success 200 {string} string "登录地址" -// @Router /api/oauth/gitee/get_url [get] -func (OAuthAPI) GetGiteeRedirectUrl(c *gin.Context) { +// @Router /controller/oauth/gitee/get_url [get] +func (OAuthController) GetGiteeRedirectUrl(c *gin.Context) { clientID := global.CONFIG.OAuth.Gitee.ClientID redirectURI := global.CONFIG.OAuth.Gitee.RedirectURI url := "https://gitee.com/oauth/authorize?client_id=" + clientID + "&redirect_uri=" + redirectURI + "&response_type=code" @@ -133,8 +133,8 @@ func GetGiteeUserInfo(token *Token) (map[string]interface{}, error) { // @Description 处理Gitee回调 // @Tags Gitee OAuth // @Produce json -// @Router /api/oauth/gitee/callback [get] -func (OAuthAPI) GiteeCallback(c *gin.Context) { +// @Router /controller/oauth/gitee/callback [get] +func (OAuthController) GiteeCallback(c *gin.Context) { var err error // 获取 code var code = c.Query("code") @@ -191,7 +191,7 @@ func (OAuthAPI) GiteeCallback(c *gin.Context) { } Id := strconv.Itoa(giteeUser.ID) - userSocial, err := userSocialService.QueryUserSocialByUUID(Id, enum.OAuthSourceGitee) + userSocial, err := userSocialService.QueryUserSocialByOpenIDService(Id, enum.OAuthSourceGitee) if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { db := global.DB tx := db.Begin() // 开始事务 @@ -216,7 +216,7 @@ func (OAuthAPI) GiteeCallback(c *gin.Context) { Email: &giteeUser.Email, Gender: &enum.Male, } - addUser, err := userService.AddUser(user) + addUser, err := userService.AddUserService(user) if err != nil { tx.Rollback() global.LOG.Error(err) @@ -228,7 +228,7 @@ func (OAuthAPI) GiteeCallback(c *gin.Context) { OpenID: &Id, Source: &gitee, } - err = userSocialService.AddUserSocial(userSocial) + err = userSocialService.AddUserSocialService(userSocial) if err != nil { tx.Rollback() global.LOG.Error(err) diff --git a/api/oauth_api/github_api.go b/controller/oauth_controller/github_controller.go similarity index 94% rename from api/oauth_api/github_api.go rename to controller/oauth_controller/github_controller.go index b45b93e..6f9d2cd 100644 --- a/api/oauth_api/github_api.go +++ b/controller/oauth_controller/github_controller.go @@ -1,4 +1,4 @@ -package oauth_api +package oauth_controller import ( "encoding/json" @@ -58,8 +58,8 @@ type GitHubUser struct { // @Tags Github OAuth // @Produce json // @Success 200 {string} string "登录url" -// @Router /api/oauth/github/get_url [get] -func (OAuthAPI) GetRedirectUrl(c *gin.Context) { +// @Router /controller/oauth/github/get_url [get] +func (OAuthController) GetRedirectUrl(c *gin.Context) { state := c.Query("state") clientId := global.CONFIG.OAuth.Github.ClientID redirectUrl := global.CONFIG.OAuth.Github.RedirectURI @@ -139,8 +139,8 @@ func GetUserInfo(token *Token) (map[string]interface{}, error) { // @Produce json // @Param code query string true "code" // @Success 200 {string} string "登录成功" -// @Router /api/oauth/github/callback [get] -func (OAuthAPI) Callback(c *gin.Context) { +// @Router /controller/oauth/github/callback [get] +func (OAuthController) Callback(c *gin.Context) { var err error // 获取 code var code = c.Query("code") @@ -201,7 +201,7 @@ func (OAuthAPI) Callback(c *gin.Context) { return } Id := strconv.Itoa(gitHubUser.ID) - userSocial, err := userSocialService.QueryUserSocialByUUID(Id, enum.OAuthSourceGithub) + userSocial, err := userSocialService.QueryUserSocialByOpenIDService(Id, enum.OAuthSourceGithub) if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { db := global.DB tx := db.Begin() // 开始事务 @@ -226,7 +226,7 @@ func (OAuthAPI) Callback(c *gin.Context) { Email: &gitHubUser.Email, Gender: &enum.Male, } - addUser, err := userService.AddUser(user) + addUser, err := userService.AddUserService(user) if err != nil { tx.Rollback() global.LOG.Error(err) @@ -238,7 +238,7 @@ func (OAuthAPI) Callback(c *gin.Context) { OpenID: &Id, Source: &github, } - err = userSocialService.AddUserSocial(userSocial) + err = userSocialService.AddUserSocialService(userSocial) if err != nil { tx.Rollback() global.LOG.Error(err) diff --git a/api/oauth_api/oauth.go b/controller/oauth_controller/oauth.go similarity index 88% rename from api/oauth_api/oauth.go rename to controller/oauth_controller/oauth.go index daec188..cd4ffc7 100644 --- a/api/oauth_api/oauth.go +++ b/controller/oauth_controller/oauth.go @@ -1,4 +1,4 @@ -package oauth_api +package oauth_controller import ( "encoding/json" @@ -13,7 +13,7 @@ import ( "schisandra-cloud-album/common/result" "schisandra-cloud-album/global" "schisandra-cloud-album/model" - "schisandra-cloud-album/service" + "schisandra-cloud-album/service/impl" "schisandra-cloud-album/utils" "sync" "time" @@ -21,11 +21,11 @@ import ( var mu sync.Mutex -type OAuthAPI struct{} +type OAuthController struct{} -var userService = service.Service.UserService -var userSocialService = service.Service.UserSocialService -var userDeviceService = service.Service.UserDeviceService +var userSocialService = impl.UserSocialServiceImpl{} +var userService = impl.UserServiceImpl{} +var userDeviceService = impl.UserDeviceServiceImpl{} type Token struct { AccessToken string `json:"access_token"` @@ -131,7 +131,7 @@ func HandelUserLogin(userId string, c *gin.Context) (bool, result.Response) { } // GetUserLoginDevice 获取用户登录设备 -func (OAuthAPI) GetUserLoginDevice(c *gin.Context) { +func (OAuthController) GetUserLoginDevice(c *gin.Context) { userId := c.Query("user_id") if userId == "" { return @@ -174,16 +174,16 @@ func (OAuthAPI) GetUserLoginDevice(c *gin.Context) { } mu.Lock() defer mu.Unlock() - userDevice, err := userDeviceService.GetUserDeviceByUIDIPAgent(userId, ip, userAgent) + userDevice, err := userDeviceService.GetUserDeviceByUIDIPAgentService(userId, ip, userAgent) if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { - err = userDeviceService.AddUserDevice(&device) + err = userDeviceService.AddUserDeviceService(&device) if err != nil { global.LOG.Errorln(err) return } return } else { - err := userDeviceService.UpdateUserDevice(userDevice.ID, &device) + err := userDeviceService.UpdateUserDeviceService(userDevice.ID, &device) if err != nil { global.LOG.Errorln(err) return diff --git a/api/oauth_api/qq_api.go b/controller/oauth_controller/qq_controller.go similarity index 94% rename from api/oauth_api/qq_api.go rename to controller/oauth_controller/qq_controller.go index b85b353..b38ef6b 100644 --- a/api/oauth_api/qq_api.go +++ b/controller/oauth_controller/qq_controller.go @@ -1,4 +1,4 @@ -package oauth_api +package oauth_controller import ( "encoding/json" @@ -55,8 +55,8 @@ type QQUserInfo struct { // @Tags QQ OAuth // @Produce json // @Success 200 {string} string "登录地址" -// @Router /api/oauth/qq/get_url [get] -func (OAuthAPI) GetQQRedirectUrl(c *gin.Context) { +// @Router /controller/oauth/qq/get_url [get] +func (OAuthController) GetQQRedirectUrl(c *gin.Context) { state := c.Query("state") clientId := global.CONFIG.OAuth.QQ.ClientID redirectURI := global.CONFIG.OAuth.QQ.RedirectURI @@ -164,8 +164,8 @@ func GetQQUserUserInfo(token *QQToken, openId string) (map[string]interface{}, e // @Description QQ登录回调 // @Tags QQ OAuth // @Produce json -// @Router /api/oauth/qq/callback [get] -func (OAuthAPI) QQCallback(c *gin.Context) { +// @Router /controller/oauth/qq/callback [get] +func (OAuthController) QQCallback(c *gin.Context) { var err error // 获取 code var code = c.Query("code") @@ -244,7 +244,7 @@ func (OAuthAPI) QQCallback(c *gin.Context) { return } - userSocial, err := userSocialService.QueryUserSocialByOpenID(authQQme.OpenID, enum.OAuthSourceQQ) + userSocial, err := userSocialService.QueryUserSocialByOpenIDService(authQQme.OpenID, enum.OAuthSourceQQ) if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { db := global.DB tx := db.Begin() // 开始事务 @@ -267,7 +267,7 @@ func (OAuthAPI) QQCallback(c *gin.Context) { Avatar: &qqUserInfo.FigureurlQq1, Gender: &qqUserInfo.Gender, } - addUser, err := userService.AddUser(user) + addUser, err := userService.AddUserService(user) if err != nil { tx.Rollback() global.LOG.Error(err) @@ -279,7 +279,7 @@ func (OAuthAPI) QQCallback(c *gin.Context) { OpenID: &authQQme.OpenID, Source: &qq, } - err = userSocialService.AddUserSocial(userSocial) + err = userSocialService.AddUserSocialService(userSocial) if err != nil { tx.Rollback() global.LOG.Error(err) diff --git a/api/oauth_api/request_param.go b/controller/oauth_controller/request_param.go similarity index 94% rename from api/oauth_api/request_param.go rename to controller/oauth_controller/request_param.go index 4f07c02..17ff176 100644 --- a/api/oauth_api/request_param.go +++ b/controller/oauth_controller/request_param.go @@ -1,4 +1,4 @@ -package oauth_api +package oauth_controller import "encoding/json" diff --git a/api/oauth_api/wechat_api.go b/controller/oauth_controller/wechat_controller.go similarity index 92% rename from api/oauth_api/wechat_api.go rename to controller/oauth_controller/wechat_controller.go index 8e22a21..f8f1b9e 100644 --- a/api/oauth_api/wechat_api.go +++ b/controller/oauth_controller/wechat_controller.go @@ -1,4 +1,4 @@ -package oauth_api +package oauth_controller import ( "encoding/gob" @@ -14,12 +14,12 @@ import ( "github.com/gin-gonic/gin" "github.com/yitter/idgenerator-go/idgen" "gorm.io/gorm" - "schisandra-cloud-album/api/websocket_api" "schisandra-cloud-album/common/constant" "schisandra-cloud-album/common/enum" "schisandra-cloud-album/common/randomname" "schisandra-cloud-album/common/redis" "schisandra-cloud-album/common/result" + "schisandra-cloud-album/controller/websocket_controller" "schisandra-cloud-album/global" "schisandra-cloud-album/model" "schisandra-cloud-album/utils" @@ -33,8 +33,8 @@ import ( // @Tags 微信公众号 // @Description 微信回调 // @Produce json -// @Router /api/oauth/callback_notify [POST] -func (OAuthAPI) CallbackNotify(c *gin.Context) { +// @Router /controller/oauth/callback_notify [POST] +func (OAuthController) CallbackNotify(c *gin.Context) { rs, err := global.Wechat.Server.Notify(c.Request, func(event contract.EventInterface) interface{} { switch event.GetMsgType() { case models2.CALLBACK_MSG_TYPE_EVENT: @@ -102,8 +102,8 @@ func (OAuthAPI) CallbackNotify(c *gin.Context) { // @Tags 微信公众号 // @Description 微信回调验证 // @Produce json -// @Router /api/oauth/callback_verify [get] -func (OAuthAPI) CallbackVerify(c *gin.Context) { +// @Router /controller/oauth/callback_verify [get] +func (OAuthController) CallbackVerify(c *gin.Context) { rs, err := global.Wechat.Server.VerifyURL(c.Request) if err != nil { panic(err) @@ -117,8 +117,8 @@ func (OAuthAPI) CallbackVerify(c *gin.Context) { // @Description 获取临时二维码 // @Produce json // @Param client_id query string true "客户端ID" -// @Router /api/oauth/get_temp_qrcode [get] -func (OAuthAPI) GetTempQrCode(c *gin.Context) { +// @Router /controller/oauth/get_temp_qrcode [get] +func (OAuthController) GetTempQrCode(c *gin.Context) { clientId := c.Query("client_id") if clientId == "" { result.FailWithMessage(ginI18n.MustGetMessage(c, "ParamsError"), c) @@ -169,7 +169,7 @@ func wechatLoginHandler(openId string, clientId string, c *gin.Context) bool { if openId == "" { return false } - authUserSocial, err := userSocialService.QueryUserSocialByOpenID(openId, enum.OAuthSourceWechat) + authUserSocial, err := userSocialService.QueryUserSocialByOpenIDService(openId, enum.OAuthSourceWechat) if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { tx := global.DB.Begin() defer func() { @@ -198,7 +198,7 @@ func wechatLoginHandler(openId string, clientId string, c *gin.Context) bool { addUserChan := make(chan *model.ScaAuthUser, 1) errChan := make(chan error, 1) go func() { - addUser, err := userService.AddUser(createUser) + addUser, err := userService.AddUserService(createUser) if err != nil { errChan <- err return @@ -225,7 +225,7 @@ func wechatLoginHandler(openId string, clientId string, c *gin.Context) bool { // 异步添加用户社交信息 wrongChan := make(chan error, 1) go func() { - wrong := userSocialService.AddUserSocial(userSocial) + wrong := userSocialService.AddUserSocialService(userSocial) wrongChan <- wrong }() @@ -319,7 +319,7 @@ func handelUserLogin(userId string, clientId string, c *gin.Context) bool { return } // gws方式发送消息 - err = websocket_api.Handler.SendMessageToClient(clientId, tokenData) + err = websocket_controller.Handler.SendMessageToClient(clientId, tokenData) if err != nil { global.LOG.Error(err) resultChan <- false diff --git a/controller/permission_controller/permission.go b/controller/permission_controller/permission.go new file mode 100644 index 0000000..0e5a1f2 --- /dev/null +++ b/controller/permission_controller/permission.go @@ -0,0 +1,3 @@ +package permission_controller + +type PermissionController struct{} diff --git a/api/permission_api/permission_api.go b/controller/permission_controller/permission_controller.go similarity index 80% rename from api/permission_api/permission_api.go rename to controller/permission_controller/permission_controller.go index 83ea909..e3001e0 100644 --- a/api/permission_api/permission_api.go +++ b/controller/permission_controller/permission_controller.go @@ -1,14 +1,14 @@ -package permission_api +package permission_controller import ( ginI18n "github.com/gin-contrib/i18n" "github.com/gin-gonic/gin" "schisandra-cloud-album/common/result" "schisandra-cloud-album/global" - "schisandra-cloud-album/service" + "schisandra-cloud-album/service/impl" ) -var permissionService = service.Service.PermissionService +var permissionService = impl.PermissionServiceImpl{} // AddPermissions 批量添加权限 // @Summary 批量添加权限 @@ -17,15 +17,15 @@ var permissionService = service.Service.PermissionService // @Accept json // @Produce json // @Param permissions body AddPermissionRequest true "权限列表" -// @Router /api/auth/permission/add [post] -func (PermissionAPI) AddPermissions(c *gin.Context) { +// @Router /controller/auth/permission/add [post] +func (PermissionController) AddPermissions(c *gin.Context) { addPermissionRequest := AddPermissionRequest{} err := c.ShouldBind(&addPermissionRequest.Permissions) if err != nil { global.LOG.Error(err) return } - err = permissionService.CreatePermissions(addPermissionRequest.Permissions) + err = permissionService.CreatePermissionsService(addPermissionRequest.Permissions) if err != nil { global.LOG.Error(err) result.FailWithMessage(ginI18n.MustGetMessage(c, "CreatedFailed"), c) @@ -42,8 +42,8 @@ func (PermissionAPI) AddPermissions(c *gin.Context) { // @Accept json // @Produce json // @Param permissions body AddPermissionToRoleRequest true "权限列表" -// @Router /api/auth/permission/assign [post] -func (PermissionAPI) AssignPermissionsToRole(c *gin.Context) { +// @Router /controller/auth/permission/assign [post] +func (PermissionController) AssignPermissionsToRole(c *gin.Context) { permissionToRoleRequest := AddPermissionToRoleRequest{} err := c.ShouldBind(&permissionToRoleRequest) @@ -69,7 +69,7 @@ func (PermissionAPI) AssignPermissionsToRole(c *gin.Context) { } // GetUserPermissions 获取用户角色权限 -func (PermissionAPI) GetUserPermissions(c *gin.Context) { +func (PermissionController) GetUserPermissions(c *gin.Context) { getPermissionRequest := GetPermissionRequest{} err := c.ShouldBindJSON(&getPermissionRequest) if err != nil { diff --git a/api/permission_api/request_param.go b/controller/permission_controller/request_param.go similarity index 94% rename from api/permission_api/request_param.go rename to controller/permission_controller/request_param.go index da76c24..c67577e 100644 --- a/api/permission_api/request_param.go +++ b/controller/permission_controller/request_param.go @@ -1,4 +1,4 @@ -package permission_api +package permission_controller import "schisandra-cloud-album/model" diff --git a/api/role_api/request_param.go b/controller/role_controller/request_param.go similarity index 92% rename from api/role_api/request_param.go rename to controller/role_controller/request_param.go index e32ac4a..6e5af46 100644 --- a/api/role_api/request_param.go +++ b/controller/role_controller/request_param.go @@ -1,4 +1,4 @@ -package role_api +package role_controller type RoleRequest struct { RoleName string `json:"role_name" binding:"required"` diff --git a/controller/role_controller/role.go b/controller/role_controller/role.go new file mode 100644 index 0000000..9229677 --- /dev/null +++ b/controller/role_controller/role.go @@ -0,0 +1,3 @@ +package role_controller + +type RoleController struct{} diff --git a/api/role_api/role_api.go b/controller/role_controller/role_controller.go similarity index 80% rename from api/role_api/role_api.go rename to controller/role_controller/role_controller.go index e37cb13..9de290e 100644 --- a/api/role_api/role_api.go +++ b/controller/role_controller/role_controller.go @@ -1,4 +1,4 @@ -package role_api +package role_controller import ( ginI18n "github.com/gin-contrib/i18n" @@ -6,10 +6,10 @@ import ( "schisandra-cloud-album/common/result" "schisandra-cloud-album/global" "schisandra-cloud-album/model" - "schisandra-cloud-album/service" + "schisandra-cloud-album/service/impl" ) -var roleService = service.Service.RoleService +var roleService = impl.RoleServiceImpl{} // CreateRole 创建角色 // @Summary 创建角色 @@ -18,8 +18,8 @@ var roleService = service.Service.RoleService // @Accept json // @Produce json // @Param roleRequestDto body RoleRequest true "角色信息" -// @Router /api/auth/role/create [post] -func (RoleAPI) CreateRole(c *gin.Context) { +// @Router /controller/auth/role/create [post] +func (RoleController) CreateRole(c *gin.Context) { roleRequest := RoleRequest{} err := c.ShouldBindJSON(&roleRequest) if err != nil { @@ -30,7 +30,7 @@ func (RoleAPI) CreateRole(c *gin.Context) { RoleName: roleRequest.RoleName, RoleKey: roleRequest.RoleKey, } - err = roleService.AddRole(role) + err = roleService.AddRoleService(role) if err != nil { global.LOG.Error(err) result.FailWithMessage(ginI18n.MustGetMessage(c, "CreatedFailed"), c) @@ -46,8 +46,8 @@ func (RoleAPI) CreateRole(c *gin.Context) { // @Accept json // @Produce json // @Param addRoleToUserRequestDto body AddRoleToUserRequest true "给指定用户添加角色" -// @Router /api/auth/role/add_role_to_user [post] -func (RoleAPI) AddRoleToUser(c *gin.Context) { +// @Router /controller/auth/role/add_role_to_user [post] +func (RoleController) AddRoleToUser(c *gin.Context) { addRoleToUserRequest := AddRoleToUserRequest{} err := c.ShouldBindJSON(&addRoleToUserRequest) if err != nil { diff --git a/api/sms_api/request_param.go b/controller/sms_controller/request_param.go similarity index 88% rename from api/sms_api/request_param.go rename to controller/sms_controller/request_param.go index a211515..a3136b3 100644 --- a/api/sms_api/request_param.go +++ b/controller/sms_controller/request_param.go @@ -1,4 +1,4 @@ -package sms_api +package sms_controller type SmsRequest struct { Phone string `json:"phone" binding:"required"` diff --git a/controller/sms_controller/sms.go b/controller/sms_controller/sms.go new file mode 100644 index 0000000..a3bdaa8 --- /dev/null +++ b/controller/sms_controller/sms.go @@ -0,0 +1,3 @@ +package sms_controller + +type SmsController struct{} diff --git a/api/sms_api/sms_api.go b/controller/sms_controller/sms_controller.go similarity index 93% rename from api/sms_api/sms_api.go rename to controller/sms_controller/sms_controller.go index b156c02..6d04473 100644 --- a/api/sms_api/sms_api.go +++ b/controller/sms_controller/sms_controller.go @@ -1,4 +1,4 @@ -package sms_api +package sms_controller import ( ginI18n "github.com/gin-contrib/i18n" @@ -21,8 +21,8 @@ import ( // @Tags 短信验证码 // @Produce json // @Param phone query string true "手机号" -// @Router /api/sms/ali/send [get] -func (SmsAPI) SendMessageByAli(c *gin.Context) { +// @Router /controller/sms/ali/send [get] +func (SmsController) SendMessageByAli(c *gin.Context) { smsRequest := SmsRequest{} err := c.ShouldBindJSON(&smsRequest) if err != nil { @@ -80,8 +80,8 @@ func (SmsAPI) SendMessageByAli(c *gin.Context) { // @Tags 短信验证码 // @Produce json // @Param phone query string true "手机号" -// @Router /api/sms/smsbao/send [post] -func (SmsAPI) SendMessageBySmsBao(c *gin.Context) { +// @Router /controller/sms/smsbao/send [post] +func (SmsController) SendMessageBySmsBao(c *gin.Context) { smsRequest := SmsRequest{} err := c.ShouldBindJSON(&smsRequest) if err != nil { @@ -132,8 +132,8 @@ func (SmsAPI) SendMessageBySmsBao(c *gin.Context) { // @Tags 短信验证码 // @Produce json // @Param phone query string true "手机号" -// @Router /api/sms/test/send [post] -func (SmsAPI) SendMessageTest(c *gin.Context) { +// @Router /controller/sms/test/send [post] +func (SmsController) SendMessageTest(c *gin.Context) { smsRequest := SmsRequest{} err := c.ShouldBindJSON(&smsRequest) if err != nil { diff --git a/api/user_api/handler.go b/controller/user_controller/handler.go similarity index 92% rename from api/user_api/handler.go rename to controller/user_controller/handler.go index f8ae59c..48f9ec5 100644 --- a/api/user_api/handler.go +++ b/controller/user_controller/handler.go @@ -1,4 +1,4 @@ -package user_api +package user_controller import ( "encoding/gob" @@ -66,9 +66,9 @@ func getUserLoginDevice(user model.ScaAuthUser, c *gin.Context) bool { mu.Lock() defer mu.Unlock() - userDevice, err := userDeviceService.GetUserDeviceByUIDIPAgent(*user.UID, ip, userAgent) + userDevice, err := userDeviceService.GetUserDeviceByUIDIPAgentService(*user.UID, ip, userAgent) if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { - err = userDeviceService.AddUserDevice(&device) + err = userDeviceService.AddUserDeviceService(&device) if err != nil { global.LOG.Errorln(err) return false @@ -77,7 +77,7 @@ func getUserLoginDevice(user model.ScaAuthUser, c *gin.Context) bool { global.LOG.Errorln(err) return false } else { - err := userDeviceService.UpdateUserDevice(userDevice.ID, &device) + err := userDeviceService.UpdateUserDeviceService(userDevice.ID, &device) if err != nil { global.LOG.Errorln(err) return false diff --git a/api/user_api/request_param.go b/controller/user_controller/request_param.go similarity index 98% rename from api/user_api/request_param.go rename to controller/user_controller/request_param.go index 7def8ab..c934779 100644 --- a/api/user_api/request_param.go +++ b/controller/user_controller/request_param.go @@ -1,4 +1,4 @@ -package user_api +package user_controller import "encoding/json" diff --git a/controller/user_controller/user.go b/controller/user_controller/user.go new file mode 100644 index 0000000..7edc620 --- /dev/null +++ b/controller/user_controller/user.go @@ -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{} diff --git a/api/user_api/user_api.go b/controller/user_controller/user_controller.go similarity index 82% rename from api/user_api/user_api.go rename to controller/user_controller/user_controller.go index fa66853..5240203 100644 --- a/api/user_api/user_api.go +++ b/controller/user_controller/user_controller.go @@ -1,4 +1,4 @@ -package user_api +package user_controller import ( ginI18n "github.com/gin-contrib/i18n" @@ -13,22 +13,18 @@ import ( "schisandra-cloud-album/common/result" "schisandra-cloud-album/global" "schisandra-cloud-album/model" - "schisandra-cloud-album/service" "schisandra-cloud-album/utils" "strconv" "time" ) -var userService = service.Service.UserService -var userDeviceService = service.Service.UserDeviceService - // GetUserList // @Summary 获取所有用户列表 // @Tags 用户模块 // @Success 200 {string} json -// @Router /api/auth/user/List [get] -func (UserAPI) GetUserList(c *gin.Context) { - userList := userService.GetUserList() +// @Router /controller/auth/user/List [get] +func (UserController) GetUserList(c *gin.Context) { + userList := userService.GetUserListService() result.OkWithData(userList, c) } @@ -37,10 +33,10 @@ func (UserAPI) GetUserList(c *gin.Context) { // @Tags 用户模块 // @Param username query string true "用户名" // @Success 200 {string} json -// @Router /api/auth/user/query_by_username [get] -func (UserAPI) QueryUserByUsername(c *gin.Context) { +// @Router /controller/auth/user/query_by_username [get] +func (UserController) QueryUserByUsername(c *gin.Context) { username := c.Query("username") - user := userService.QueryUserByUsername(username) + user := userService.QueryUserByUsernameService(username) if reflect.DeepEqual(user, model.ScaAuthUser{}) { result.FailWithMessage(ginI18n.MustGetMessage(c, "NotFoundUser"), c) return @@ -51,17 +47,13 @@ func (UserAPI) QueryUserByUsername(c *gin.Context) { // QueryUserByUuid // @Summary 根据uuid查询用户 // @Tags 用户模块 -// @Param uuid query string true "用户uuid" +// @Param uid query string true "用户uid" // @Success 200 {string} json -// @Router /api/auth/user/query_by_uuid [get] -func (UserAPI) QueryUserByUuid(c *gin.Context) { - uuid := c.Query("uuid") - user, err := userService.QueryUserByUuid(&uuid) - if err != nil { - result.FailWithMessage(ginI18n.MustGetMessage(c, "NotFoundUser"), c) - return - } - if reflect.DeepEqual(user, model.ScaAuthUser{}) { +// @Router /controller/auth/user/query_by_uid [get] +func (UserController) QueryUserByUuid(c *gin.Context) { + uid := c.Query("uid") + user := userService.QueryUserByUuidService(&uid) + if user.ID == 0 { result.FailWithMessage(ginI18n.MustGetMessage(c, "NotFoundUser"), c) return } @@ -71,12 +63,12 @@ func (UserAPI) QueryUserByUuid(c *gin.Context) { // DeleteUser 删除用户 // @Summary 删除用户 // @Tags 用户模块 -// @Param uuid query string true "用户uuid" +// @Param uid query string true "用户uid" // @Success 200 {string} json -// @Router /api/auth/user/delete [delete] -func (UserAPI) DeleteUser(c *gin.Context) { - uuid := c.Query("uuid") - err := userService.DeleteUser(uuid) +// @Router /controller/auth/user/delete [delete] +func (UserController) DeleteUser(c *gin.Context) { + uid := c.Query("uid") + err := userService.DeleteUserService(uid) if err != nil { result.FailWithMessage(ginI18n.MustGetMessage(c, "DeletedFailed"), c) return @@ -89,11 +81,11 @@ func (UserAPI) DeleteUser(c *gin.Context) { // @Tags 用户模块 // @Param phone query string true "手机号" // @Success 200 {string} json -// @Router /api/auth/user/query_by_phone [get] -func (UserAPI) QueryUserByPhone(c *gin.Context) { +// @Router /controller/auth/user/query_by_phone [get] +func (UserController) QueryUserByPhone(c *gin.Context) { phone := c.Query("phone") - user := userService.QueryUserByPhone(phone) - if reflect.DeepEqual(user, model.ScaAuthUser{}) { + user := userService.QueryUserByPhoneService(phone) + if user.ID == 0 { result.FailWithMessage(ginI18n.MustGetMessage(c, "NotFoundUser"), c) return } @@ -105,8 +97,8 @@ func (UserAPI) QueryUserByPhone(c *gin.Context) { // @Tags 用户模块 // @Param user body AccountLoginRequest true "用户信息" // @Success 200 {string} json -// @Router /api/user/login [post] -func (UserAPI) AccountLogin(c *gin.Context) { +// @Router /controller/user/login [post] +func (UserController) AccountLogin(c *gin.Context) { accountLoginRequest := AccountLoginRequest{} err := c.ShouldBindJSON(&accountLoginRequest) if err != nil { @@ -123,17 +115,17 @@ func (UserAPI) AccountLogin(c *gin.Context) { var user model.ScaAuthUser if utils.IsPhone(account) { - user = userService.QueryUserByPhone(account) + user = userService.QueryUserByPhoneService(account) } else if utils.IsEmail(account) { - user = userService.QueryUserByEmail(account) + user = userService.QueryUserByEmailService(account) } else if utils.IsUsername(account) { - user = userService.QueryUserByUsername(account) + user = userService.QueryUserByUsernameService(account) } else { result.FailWithMessage(ginI18n.MustGetMessage(c, "AccountErrorFormat"), c) return } - if reflect.DeepEqual(user, model.ScaAuthUser{}) { + if user.ID == 0 { result.FailWithMessage(ginI18n.MustGetMessage(c, "NotFoundUser"), c) return } @@ -150,8 +142,8 @@ func (UserAPI) AccountLogin(c *gin.Context) { // @Tags 用户模块 // @Param user body PhoneLoginRequest true "用户信息" // @Success 200 {string} json -// @Router /api/user/phone_login [post] -func (UserAPI) PhoneLogin(c *gin.Context) { +// @Router /controller/user/phone_login [post] +func (UserController) PhoneLogin(c *gin.Context) { request := PhoneLoginRequest{} err := c.ShouldBind(&request) if err != nil { @@ -168,14 +160,14 @@ func (UserAPI) PhoneLogin(c *gin.Context) { userChan := make(chan model.ScaAuthUser) go func() { - user := userService.QueryUserByPhone(phone) + user := userService.QueryUserByPhoneService(phone) userChan <- user }() user := <-userChan close(userChan) - if reflect.DeepEqual(user, model.ScaAuthUser{}) { + if user.ID == 0 { // 未注册 codeChan := make(chan *string) go func() { @@ -211,7 +203,7 @@ func (UserAPI) PhoneLogin(c *gin.Context) { errChan := make(chan error) go func() { err := global.DB.Transaction(func(tx *gorm.DB) error { - addUser, err := userService.AddUser(createUser) + addUser, err := userService.AddUserService(createUser) if err != nil { return err } @@ -259,8 +251,8 @@ func (UserAPI) PhoneLogin(c *gin.Context) { // @Tags 用户模块 // @Param refresh_token query string true "刷新token" // @Success 200 {string} json -// @Router /api/token/refresh [post] -func (UserAPI) RefreshHandler(c *gin.Context) { +// @Router /controller/token/refresh [post] +func (UserController) RefreshHandler(c *gin.Context) { request := RefreshTokenRequest{} if err := c.ShouldBindJSON(&request); err != nil { result.FailWithMessage(ginI18n.MustGetMessage(c, "ParamsError"), c) @@ -302,8 +294,8 @@ func (UserAPI) RefreshHandler(c *gin.Context) { // @Tags 用户模块 // @Param user body ResetPasswordRequest true "用户信息" // @Success 200 {string} json -// @Router /api/user/reset_password [post] -func (UserAPI) ResetPassword(c *gin.Context) { +// @Router /controller/user/reset_password [post] +func (UserController) ResetPassword(c *gin.Context) { var resetPasswordRequest ResetPasswordRequest if err := c.ShouldBindJSON(&resetPasswordRequest); err != nil { result.FailWithMessage(ginI18n.MustGetMessage(c, "ParamsError"), c) @@ -360,7 +352,7 @@ func (UserAPI) ResetPassword(c *gin.Context) { return } - user := userService.QueryUserByPhone(phone) + user := userService.QueryUserByPhoneService(phone) if reflect.DeepEqual(user, model.ScaAuthUser{}) { result.FailWithMessage(ginI18n.MustGetMessage(c, "PhoneNotRegister"), c) return @@ -372,7 +364,7 @@ func (UserAPI) ResetPassword(c *gin.Context) { return } - if err := userService.UpdateUser(phone, encrypt); err != nil { + if err := userService.UpdateUserService(phone, encrypt); err != nil { tx.Rollback() result.FailWithMessage(ginI18n.MustGetMessage(c, "ResetPasswordError"), c) return @@ -386,8 +378,8 @@ func (UserAPI) ResetPassword(c *gin.Context) { // @Summary 退出登录 // @Tags 用户模块 // @Success 200 {string} json -// @Router /api/auth/user/logout [post] -func (UserAPI) Logout(c *gin.Context) { +// @Router /controller/auth/user/logout [post] +func (UserController) Logout(c *gin.Context) { userId := c.Query("user_id") if userId == "" { global.LOG.Errorln("userId is empty") diff --git a/api/websocket_api/gws_api.go b/controller/websocket_controller/gws_controller.go similarity index 97% rename from api/websocket_api/gws_api.go rename to controller/websocket_controller/gws_controller.go index f8fd69c..8cbd323 100644 --- a/api/websocket_api/gws_api.go +++ b/controller/websocket_controller/gws_controller.go @@ -1,4 +1,4 @@ -package websocket_api +package websocket_controller import ( "context" @@ -28,8 +28,8 @@ var Handler = NewWebSocket() // @Summary 创建websocket服务 // @Description 创建websocket服务 // @Tags websocket -// @Router /api/ws/gws [get] -func (WebsocketAPI) NewGWSServer(c *gin.Context) { +// @Router /controller/ws/gws [get] +func (WebsocketController) NewGWSServer(c *gin.Context) { upgrader := gws.NewUpgrader(Handler, &gws.ServerOption{ HandshakeTimeout: 5 * time.Second, // 握手超时时间 diff --git a/controller/websocket_controller/websocket.go b/controller/websocket_controller/websocket.go new file mode 100644 index 0000000..ff1f4cf --- /dev/null +++ b/controller/websocket_controller/websocket.go @@ -0,0 +1,4 @@ +package websocket_controller + +type WebsocketController struct { +} diff --git a/dao/comment_reply_dao.go b/dao/comment_reply_dao.go new file mode 100644 index 0000000..b3fa2dc --- /dev/null +++ b/dao/comment_reply_dao.go @@ -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 +} diff --git a/service/comment_reply_service/comment_reply_service.go b/dao/impl/comment_reply_dao_impl.go similarity index 86% rename from service/comment_reply_service/comment_reply_service.go rename to dao/impl/comment_reply_dao_impl.go index beafd0f..ee4de59 100644 --- a/service/comment_reply_service/comment_reply_service.go +++ b/dao/impl/comment_reply_dao_impl.go @@ -1,4 +1,4 @@ -package comment_reply_service +package impl import ( "fmt" @@ -7,8 +7,10 @@ import ( "schisandra-cloud-album/model" ) +type CommentReplyDaoImpl struct{} + // CreateCommentReply 创建评论 -func (CommentReplyService) CreateCommentReply(comment *model.ScaCommentReply) error { +func (CommentReplyDaoImpl) CreateCommentReply(comment *model.ScaCommentReply) error { if err := global.DB.Create(&comment).Error; err != nil { return err } @@ -16,7 +18,7 @@ func (CommentReplyService) CreateCommentReply(comment *model.ScaCommentReply) er } // GetCommentListOrderByCreatedTimeDesc 通过topic_id获取评论列表 -func (CommentReplyService) GetCommentListOrderByCreatedTimeDesc(topicID uint, page, pageSize int) ([]model.ScaCommentReply, error) { +func (CommentReplyDaoImpl) GetCommentListOrderByCreatedTimeDesc(topicID uint, page, pageSize int) ([]model.ScaCommentReply, error) { var comments []model.ScaCommentReply // 计算偏移量 offset := (page - 1) * pageSize @@ -29,7 +31,7 @@ func (CommentReplyService) GetCommentListOrderByCreatedTimeDesc(topicID uint, pa } // GetCommentListOrderByLikesDesc 通过topic_id获取评论列表 -func (CommentReplyService) GetCommentListOrderByLikesDesc(topicID uint, page, pageSize int) ([]model.ScaCommentReply, error) { +func (CommentReplyDaoImpl) GetCommentListOrderByLikesDesc(topicID uint, page, pageSize int) ([]model.ScaCommentReply, error) { var comments []model.ScaCommentReply // 计算偏移量 offset := (page - 1) * pageSize @@ -42,7 +44,7 @@ func (CommentReplyService) GetCommentListOrderByLikesDesc(topicID uint, page, pa } // UpdateCommentReplyCount 更新评论 -func (CommentReplyService) UpdateCommentReplyCount(commentID int64) error { +func (CommentReplyDaoImpl) UpdateCommentReplyCount(commentID int64) error { // 使用事务处理错误 err := global.DB.Transaction(func(tx *gorm.DB) error { result := tx.Model(&model.ScaCommentReply{}).Where("id = ? and deleted = 0", commentID).Update("reply_count", gorm.Expr("reply_count + ?", 1)) @@ -58,7 +60,7 @@ func (CommentReplyService) UpdateCommentReplyCount(commentID int64) error { } // UpdateCommentLikesCount 更新评论 likes 数量 -func (CommentReplyService) UpdateCommentLikesCount(commentID int64, topicID string) error { +func (CommentReplyDaoImpl) UpdateCommentLikesCount(commentID int64, topicID string) error { // 使用事务处理错误 err := global.DB.Transaction(func(tx *gorm.DB) error { result := tx.Model(&model.ScaCommentReply{}).Where("id = ? and topic_id = ? and deleted = 0", commentID, topicID).Update("likes", gorm.Expr("likes + ?", 1)) @@ -74,7 +76,7 @@ func (CommentReplyService) UpdateCommentLikesCount(commentID int64, topicID stri } // DecrementCommentLikesCount 减少评论 likes 数量 -func (CommentReplyService) DecrementCommentLikesCount(commentID int64, topicID string) error { +func (CommentReplyDaoImpl) DecrementCommentLikesCount(commentID int64, topicID string) error { // 使用事务处理错误 err := global.DB.Transaction(func(tx *gorm.DB) error { result := tx.Model(&model.ScaCommentReply{}).Where("id = ? and topic_id = ? and deleted = 0", commentID, topicID).Update("likes", gorm.Expr("likes - ?", 1)) diff --git a/service/permission_service/permission_service.go b/dao/impl/permission_dao_impl.go similarity index 76% rename from service/permission_service/permission_service.go rename to dao/impl/permission_dao_impl.go index 097e294..d914bee 100644 --- a/service/permission_service/permission_service.go +++ b/dao/impl/permission_dao_impl.go @@ -1,12 +1,14 @@ -package permission_service +package impl import ( "schisandra-cloud-album/global" "schisandra-cloud-album/model" ) +type PermissionDaoImpl struct{} + // GetPermissionsByIds 通过权限ID列表获取权限列表 -func (PermissionService) GetPermissionsByIds(ids []int64) ([]model.ScaAuthPermission, error) { +func (PermissionDaoImpl) GetPermissionsByIds(ids []int64) ([]model.ScaAuthPermission, error) { var permissions []model.ScaAuthPermission if err := global.DB.Where("id IN ? and deleted = 0", ids).Find(&permissions).Error; err != nil { return nil, err @@ -15,7 +17,7 @@ func (PermissionService) GetPermissionsByIds(ids []int64) ([]model.ScaAuthPermis } // CreatePermissions 批量创建权限 -func (PermissionService) CreatePermissions(permissions []model.ScaAuthPermission) error { +func (PermissionDaoImpl) CreatePermissions(permissions []model.ScaAuthPermission) error { if err := global.DB.Model(&model.ScaAuthPermission{}).CreateInBatches(&permissions, len(permissions)).Error; err != nil { return err } diff --git a/service/role_service/role_service.go b/dao/impl/role_dao_impl.go similarity index 71% rename from service/role_service/role_service.go rename to dao/impl/role_dao_impl.go index 749d7f7..7c887fa 100644 --- a/service/role_service/role_service.go +++ b/dao/impl/role_dao_impl.go @@ -1,12 +1,14 @@ -package role_service +package impl import ( "schisandra-cloud-album/global" "schisandra-cloud-album/model" ) +type RoleDaoImpl struct{} + // GetRoleListByIds : 通过Id列表获取角色信息列表 -func (RoleService) GetRoleListByIds(id []*int64) ([]model.ScaAuthRole, error) { +func (RoleDaoImpl) GetRoleListByIds(id []*int64) ([]model.ScaAuthRole, error) { var roles []model.ScaAuthRole if err := global.DB.Where("id IN ?", id).Find(&roles).Error; err != nil { return nil, err @@ -15,7 +17,7 @@ func (RoleService) GetRoleListByIds(id []*int64) ([]model.ScaAuthRole, error) { } // AddRole 新增角色 -func (RoleService) AddRole(role model.ScaAuthRole) error { +func (RoleDaoImpl) AddRole(role model.ScaAuthRole) error { if err := global.DB.Create(&role).Error; err != nil { return err } diff --git a/service/user_service/user_service.go b/dao/impl/user_dao_impl.go similarity index 77% rename from service/user_service/user_service.go rename to dao/impl/user_dao_impl.go index 443e535..962c226 100644 --- a/service/user_service/user_service.go +++ b/dao/impl/user_dao_impl.go @@ -1,4 +1,4 @@ -package user_service +package impl import ( "schisandra-cloud-album/common/enum" @@ -6,15 +6,18 @@ import ( "schisandra-cloud-album/model" ) +type UserDaoImpl struct { +} + // GetUserList 获取所有用户列表 -func (UserService) GetUserList() []*model.ScaAuthUser { +func (UserDaoImpl) GetUserList() []*model.ScaAuthUser { data := make([]*model.ScaAuthUser, 0) global.DB.Where("deleted = 0 ").Find(&data) return data } // QueryUserByUsername 根据用户名查询用户 -func (UserService) QueryUserByUsername(username string) model.ScaAuthUser { +func (UserDaoImpl) QueryUserByUsername(username string) model.ScaAuthUser { authUser := model.ScaAuthUser{} err := global.DB.Where("username = ? and deleted = 0", username).First(&authUser).Error if err != nil { @@ -24,7 +27,7 @@ func (UserService) QueryUserByUsername(username string) model.ScaAuthUser { } // QueryUserByUuid 根据用户uuid查询用户 -func (UserService) QueryUserByUuid(uuid *string) (model.ScaAuthUser, error) { +func (UserDaoImpl) QueryUserByUuid(uuid *string) (model.ScaAuthUser, error) { authUser := model.ScaAuthUser{} if err := global.DB.Where("uid = ? and deleted = 0", uuid).First(&authUser).Error; err != nil { return model.ScaAuthUser{}, err @@ -33,7 +36,7 @@ func (UserService) QueryUserByUuid(uuid *string) (model.ScaAuthUser, error) { } // QueryUserById 根据用户id查询用户 -func (UserService) QueryUserById(id *int64) (model.ScaAuthUser, error) { +func (UserDaoImpl) QueryUserById(id *int64) (model.ScaAuthUser, error) { authUser := model.ScaAuthUser{} if err := global.DB.Where("id = ? and deleted = 0", id).First(&authUser).Error; err != nil { return model.ScaAuthUser{}, err @@ -42,7 +45,7 @@ func (UserService) QueryUserById(id *int64) (model.ScaAuthUser, error) { } // AddUser 添加用户 -func (UserService) AddUser(user model.ScaAuthUser) (*model.ScaAuthUser, error) { +func (UserDaoImpl) AddUser(user model.ScaAuthUser) (*model.ScaAuthUser, error) { if err := global.DB.Create(&user).Error; err != nil { return &model.ScaAuthUser{}, err } @@ -55,25 +58,25 @@ func (UserService) AddUser(user model.ScaAuthUser) (*model.ScaAuthUser, error) { } // UpdateUser 更新用户 -func (UserService) UpdateUser(phone string, password string) error { +func (UserDaoImpl) UpdateUser(phone string, password string) error { return global.DB.Model(&model.ScaAuthUser{}).Where("phone = ? and deleted = 0", phone).Updates(&model.ScaAuthUser{Password: &password}).Error } // DeleteUser 删除用户 -func (UserService) DeleteUser(uuid string) error { +func (UserDaoImpl) DeleteUser(uuid string) error { authUser := model.ScaAuthUser{} return global.DB.Model(&authUser).Where("uid = ?", uuid).Updates(&model.ScaAuthUser{Deleted: &enum.DELETED}).Error } // QueryUserByPhone 根据手机号查询用户 -func (UserService) QueryUserByPhone(phone string) model.ScaAuthUser { +func (UserDaoImpl) QueryUserByPhone(phone string) model.ScaAuthUser { authUser := model.ScaAuthUser{} global.DB.Where("phone = ? and deleted = 0", phone).First(&authUser) return authUser } // QueryUserByEmail 根据邮箱查询用户 -func (UserService) QueryUserByEmail(email string) model.ScaAuthUser { +func (UserDaoImpl) QueryUserByEmail(email string) model.ScaAuthUser { authUser := model.ScaAuthUser{} global.DB.Where("email = ? and deleted = 0", email).First(&authUser) return authUser diff --git a/service/user_device_service/user_device_service.go b/dao/impl/user_device_dao_impl.go similarity index 78% rename from service/user_device_service/user_device_service.go rename to dao/impl/user_device_dao_impl.go index 471d4a4..6844423 100644 --- a/service/user_device_service/user_device_service.go +++ b/dao/impl/user_device_dao_impl.go @@ -1,12 +1,14 @@ -package user_device_service +package impl import ( "schisandra-cloud-album/global" "schisandra-cloud-album/model" ) +type UserDeviceImpl struct{} + // AddUserDevice 新增用户设备信息 -func (UserDeviceService) AddUserDevice(userDevice *model.ScaAuthUserDevice) error { +func (UserDeviceImpl) AddUserDevice(userDevice *model.ScaAuthUserDevice) error { if err := global.DB.Create(&userDevice).Error; err != nil { return err } @@ -14,7 +16,7 @@ func (UserDeviceService) AddUserDevice(userDevice *model.ScaAuthUserDevice) erro } // GetUserDeviceByUIDIPAgent 根据uid / IP / agent 查询用户设备信息 -func (UserDeviceService) GetUserDeviceByUIDIPAgent(uid, ip, agent string) (*model.ScaAuthUserDevice, error) { +func (UserDeviceImpl) GetUserDeviceByUIDIPAgent(uid, ip, agent string) (*model.ScaAuthUserDevice, error) { var userDevice model.ScaAuthUserDevice if err := global.DB.Where("user_id =? AND ip =? AND agent =? AND deleted = 0 ", uid, ip, agent).First(&userDevice).Error; err != nil { return nil, err @@ -23,7 +25,7 @@ func (UserDeviceService) GetUserDeviceByUIDIPAgent(uid, ip, agent string) (*mode } // UpdateUserDevice 更新用户设备信息 -func (UserDeviceService) UpdateUserDevice(id int64, userDevice *model.ScaAuthUserDevice) error { +func (UserDeviceImpl) UpdateUserDevice(id int64, userDevice *model.ScaAuthUserDevice) error { result := global.DB.Model(&userDevice).Where("id =? AND deleted = 0 ", id).Updates(model.ScaAuthUserDevice{ IP: userDevice.IP, Location: userDevice.Location, diff --git a/dao/impl/user_social_dao_impl.go b/dao/impl/user_social_dao_impl.go new file mode 100644 index 0000000..677a437 --- /dev/null +++ b/dao/impl/user_social_dao_impl.go @@ -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 +} diff --git a/dao/permission_dao.go b/dao/permission_dao.go new file mode 100644 index 0000000..5b0f5c5 --- /dev/null +++ b/dao/permission_dao.go @@ -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 +} diff --git a/dao/role_dao.go b/dao/role_dao.go new file mode 100644 index 0000000..256bcb7 --- /dev/null +++ b/dao/role_dao.go @@ -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 +} diff --git a/dao/user_dao.go b/dao/user_dao.go new file mode 100644 index 0000000..748ac63 --- /dev/null +++ b/dao/user_dao.go @@ -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 +} diff --git a/dao/user_device_dao.go b/dao/user_device_dao.go new file mode 100644 index 0000000..cee2f9c --- /dev/null +++ b/dao/user_device_dao.go @@ -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 +} diff --git a/dao/user_social_dao.go b/dao/user_social_dao.go new file mode 100644 index 0000000..450c452 --- /dev/null +++ b/dao/user_social_dao.go @@ -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) +} diff --git a/docs/docs.go b/docs/docs.go index 8c85a94..d2196c5 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -15,7 +15,7 @@ const docTemplate = `{ "host": "{{.Host}}", "basePath": "{{.BasePath}}", "paths": { - "/api/auth/permission/add": { + "/controller/auth/permission/add": { "post": { "description": "批量添加权限", "consumes": [ @@ -35,14 +35,14 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/permission_api.AddPermissionRequest" + "$ref": "#/definitions/permission_controller.AddPermissionRequest" } } ], "responses": {} } }, - "/api/auth/permission/assign": { + "/controller/auth/permission/assign": { "post": { "description": "给指定角色分配权限", "consumes": [ @@ -62,14 +62,14 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/permission_api.AddPermissionToRoleRequest" + "$ref": "#/definitions/permission_controller.AddPermissionToRoleRequest" } } ], "responses": {} } }, - "/api/auth/role/add_role_to_user": { + "/controller/auth/role/add_role_to_user": { "post": { "description": "给指定用户添加角色", "consumes": [ @@ -89,14 +89,14 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/role_api.AddRoleToUserRequest" + "$ref": "#/definitions/role_controller.AddRoleToUserRequest" } } ], "responses": {} } }, - "/api/auth/role/create": { + "/controller/auth/role/create": { "post": { "description": "创建角色", "consumes": [ @@ -116,14 +116,14 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/role_api.RoleRequest" + "$ref": "#/definitions/role_controller.RoleRequest" } } ], "responses": {} } }, - "/api/auth/user/List": { + "/controller/auth/user/List": { "get": { "tags": [ "用户模块" @@ -139,7 +139,7 @@ const docTemplate = `{ } } }, - "/api/auth/user/delete": { + "/controller/auth/user/delete": { "delete": { "tags": [ "用户模块" @@ -164,7 +164,7 @@ const docTemplate = `{ } } }, - "/api/auth/user/logout": { + "/controller/auth/user/logout": { "post": { "tags": [ "用户模块" @@ -180,7 +180,7 @@ const docTemplate = `{ } } }, - "/api/auth/user/query_by_phone": { + "/controller/auth/user/query_by_phone": { "get": { "tags": [ "用户模块" @@ -205,7 +205,7 @@ const docTemplate = `{ } } }, - "/api/auth/user/query_by_username": { + "/controller/auth/user/query_by_username": { "get": { "tags": [ "用户模块" @@ -230,7 +230,7 @@ const docTemplate = `{ } } }, - "/api/auth/user/query_by_uuid": { + "/controller/auth/user/query_by_uuid": { "get": { "tags": [ "用户模块" @@ -255,7 +255,7 @@ const docTemplate = `{ } } }, - "/api/captcha/rotate/check": { + "/controller/captcha/rotate/check": { "post": { "description": "验证旋转验证码", "tags": [ @@ -288,7 +288,7 @@ const docTemplate = `{ } } }, - "/api/captcha/rotate/get": { + "/controller/captcha/rotate/get": { "get": { "description": "生成旋转验证码", "tags": [ @@ -305,7 +305,7 @@ const docTemplate = `{ } } }, - "/api/captcha/shape/get": { + "/controller/captcha/shape/get": { "get": { "description": "生成点击形状验证码", "tags": [ @@ -322,7 +322,7 @@ const docTemplate = `{ } } }, - "/api/captcha/shape/slide/check": { + "/controller/captcha/shape/slide/check": { "get": { "description": "验证滑动验证码", "tags": [ @@ -355,7 +355,7 @@ const docTemplate = `{ } } }, - "/api/captcha/shape/slide/region/get": { + "/controller/captcha/shape/slide/region/get": { "get": { "description": "生成滑动区域形状验证码", "tags": [ @@ -372,7 +372,7 @@ const docTemplate = `{ } } }, - "/api/captcha/slide/generate": { + "/controller/captcha/slide/generate": { "get": { "description": "滑块基础验证码", "tags": [ @@ -389,7 +389,7 @@ const docTemplate = `{ } } }, - "/api/captcha/text/check": { + "/controller/captcha/text/check": { "get": { "description": "验证基础文字验证码", "tags": [ @@ -422,7 +422,7 @@ const docTemplate = `{ } } }, - "/api/captcha/text/get": { + "/controller/captcha/text/get": { "get": { "description": "生成基础文字验证码", "tags": [ @@ -448,7 +448,7 @@ const docTemplate = `{ } } }, - "/api/oauth/callback_notify": { + "/controller/oauth/callback_notify": { "post": { "description": "微信回调", "produces": [ @@ -461,7 +461,7 @@ const docTemplate = `{ "responses": {} } }, - "/api/oauth/callback_verify": { + "/controller/oauth/callback_verify": { "get": { "description": "微信回调验证", "produces": [ @@ -474,7 +474,7 @@ const docTemplate = `{ "responses": {} } }, - "/api/oauth/generate_client_id": { + "/controller/oauth/generate_client_id": { "get": { "description": "生成客户端ID", "produces": [ @@ -487,7 +487,7 @@ const docTemplate = `{ "responses": {} } }, - "/api/oauth/get_temp_qrcode": { + "/controller/oauth/get_temp_qrcode": { "get": { "description": "获取临时二维码", "produces": [ @@ -509,7 +509,7 @@ const docTemplate = `{ "responses": {} } }, - "/api/oauth/gitee/callback": { + "/controller/oauth/gitee/callback": { "get": { "description": "处理Gitee回调", "produces": [ @@ -522,7 +522,7 @@ const docTemplate = `{ "responses": {} } }, - "/api/oauth/gitee/get_url": { + "/controller/oauth/gitee/get_url": { "get": { "description": "获取Gitee登录地址", "produces": [ @@ -542,7 +542,7 @@ const docTemplate = `{ } } }, - "/api/oauth/github/callback": { + "/controller/oauth/github/callback": { "get": { "description": "登录回调函数", "produces": [ @@ -571,7 +571,7 @@ const docTemplate = `{ } } }, - "/api/oauth/github/get_url": { + "/controller/oauth/github/get_url": { "get": { "description": "获取github登录url", "produces": [ @@ -591,7 +591,7 @@ const docTemplate = `{ } } }, - "/api/oauth/qq/callback": { + "/controller/oauth/qq/callback": { "get": { "description": "QQ登录回调", "produces": [ @@ -604,7 +604,7 @@ const docTemplate = `{ "responses": {} } }, - "/api/oauth/qq/get_url": { + "/controller/oauth/qq/get_url": { "get": { "description": "获取QQ登录地址", "produces": [ @@ -624,7 +624,7 @@ const docTemplate = `{ } } }, - "/api/sms/ali/send": { + "/controller/sms/ali/send": { "get": { "description": "发送短信验证码", "produces": [ @@ -646,7 +646,7 @@ const docTemplate = `{ "responses": {} } }, - "/api/sms/smsbao/send": { + "/controller/sms/smsbao/send": { "post": { "description": "短信宝发送短信验证码", "produces": [ @@ -668,7 +668,7 @@ const docTemplate = `{ "responses": {} } }, - "/api/sms/test/send": { + "/controller/sms/test/send": { "post": { "description": "发送测试短信验证码", "produces": [ @@ -690,7 +690,7 @@ const docTemplate = `{ "responses": {} } }, - "/api/token/refresh": { + "/controller/token/refresh": { "post": { "tags": [ "用户模块" @@ -715,7 +715,7 @@ const docTemplate = `{ } } }, - "/api/user/login": { + "/controller/user/login": { "post": { "tags": [ "用户模块" @@ -728,7 +728,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/user_api.AccountLoginRequest" + "$ref": "#/definitions/user_controller.AccountLoginRequest" } } ], @@ -742,7 +742,7 @@ const docTemplate = `{ } } }, - "/api/user/phone_login": { + "/controller/user/phone_login": { "post": { "tags": [ "用户模块" @@ -755,7 +755,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/user_api.PhoneLoginRequest" + "$ref": "#/definitions/user_controller.PhoneLoginRequest" } } ], @@ -769,7 +769,7 @@ const docTemplate = `{ } } }, - "/api/user/reset_password": { + "/controller/user/reset_password": { "post": { "tags": [ "用户模块" @@ -782,7 +782,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/user_api.ResetPasswordRequest" + "$ref": "#/definitions/user_controller.ResetPasswordRequest" } } ], @@ -796,7 +796,7 @@ const docTemplate = `{ } } }, - "/api/ws/gws": { + "/controller/ws/gws": { "get": { "description": "创建websocket服务", "tags": [ @@ -826,7 +826,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/comment_api.CommentLikeRequest" + "$ref": "#/definitions/comment_controller.CommentLikeRequest" } } ], @@ -853,7 +853,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/comment_api.CommentLikeRequest" + "$ref": "#/definitions/comment_controller.CommentLikeRequest" } } ], @@ -880,7 +880,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/comment_api.CommentListRequest" + "$ref": "#/definitions/comment_controller.CommentListRequest" } } ], @@ -907,7 +907,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/comment_api.CommentRequest" + "$ref": "#/definitions/comment_controller.CommentRequest" } } ], @@ -934,7 +934,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/comment_api.ReplyListRequest" + "$ref": "#/definitions/comment_controller.ReplyListRequest" } } ], @@ -961,7 +961,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/comment_api.ReplyReplyRequest" + "$ref": "#/definitions/comment_controller.ReplyReplyRequest" } } ], @@ -988,7 +988,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/comment_api.ReplyCommentRequest" + "$ref": "#/definitions/comment_controller.ReplyCommentRequest" } } ], @@ -997,7 +997,7 @@ const docTemplate = `{ } }, "definitions": { - "comment_api.CommentLikeRequest": { + "comment_controller.CommentLikeRequest": { "type": "object", "required": [ "comment_id", @@ -1016,7 +1016,7 @@ const docTemplate = `{ } } }, - "comment_api.CommentListRequest": { + "comment_controller.CommentListRequest": { "type": "object", "required": [ "topic_id", @@ -1043,7 +1043,7 @@ const docTemplate = `{ } } }, - "comment_api.CommentRequest": { + "comment_controller.CommentRequest": { "type": "object", "required": [ "author", @@ -1083,7 +1083,7 @@ const docTemplate = `{ } } }, - "comment_api.ReplyCommentRequest": { + "comment_controller.ReplyCommentRequest": { "type": "object", "required": [ "author", @@ -1131,7 +1131,7 @@ const docTemplate = `{ } } }, - "comment_api.ReplyListRequest": { + "comment_controller.ReplyListRequest": { "type": "object", "required": [ "comment_id", @@ -1158,7 +1158,7 @@ const docTemplate = `{ } } }, - "comment_api.ReplyReplyRequest": { + "comment_controller.ReplyReplyRequest": { "type": "object", "required": [ "author", @@ -1278,7 +1278,7 @@ const docTemplate = `{ } } }, - "permission_api.AddPermissionRequest": { + "permission_controller.AddPermissionRequest": { "type": "object", "properties": { "permissions": { @@ -1289,7 +1289,7 @@ const docTemplate = `{ } } }, - "permission_api.AddPermissionToRoleRequest": { + "permission_controller.AddPermissionToRoleRequest": { "type": "object", "properties": { "method": { @@ -1303,7 +1303,7 @@ const docTemplate = `{ } } }, - "role_api.AddRoleToUserRequest": { + "role_controller.AddRoleToUserRequest": { "type": "object", "required": [ "role_key", @@ -1318,7 +1318,7 @@ const docTemplate = `{ } } }, - "role_api.RoleRequest": { + "role_controller.RoleRequest": { "type": "object", "required": [ "role_key", @@ -1333,7 +1333,7 @@ const docTemplate = `{ } } }, - "user_api.AccountLoginRequest": { + "user_controller.AccountLoginRequest": { "type": "object", "required": [ "account", @@ -1360,7 +1360,7 @@ const docTemplate = `{ } } }, - "user_api.PhoneLoginRequest": { + "user_controller.PhoneLoginRequest": { "type": "object", "required": [ "auto_login", @@ -1379,7 +1379,7 @@ const docTemplate = `{ } } }, - "user_api.ResetPasswordRequest": { + "user_controller.ResetPasswordRequest": { "type": "object", "required": [ "captcha", diff --git a/mq/comment_like_mq.go b/mq/comment_like_mq.go index c5db9e5..70df13c 100644 --- a/mq/comment_like_mq.go +++ b/mq/comment_like_mq.go @@ -37,7 +37,7 @@ func CommentLikeProducer(messageBody []byte) { func CommentLikeConsumer() { consumer := core.InitConsumer(CommentLikeTopic) consumer.AddHandler(&MessageHandler{}) - err := consumer.ConnectToNSQLookupd(global.CONFIG.NSQ.LookupdAddr()) + err := consumer.ConnectToNSQD(global.CONFIG.NSQ.NsqAddr()) if err != nil { log.Fatal(err) } diff --git a/router/modules/captcha_router.go b/router/modules/captcha_router.go index c97c12c..208f7be 100644 --- a/router/modules/captcha_router.go +++ b/router/modules/captcha_router.go @@ -2,10 +2,10 @@ package modules import ( "github.com/gin-gonic/gin" - "schisandra-cloud-album/api" + "schisandra-cloud-album/controller" ) -var captchaApi = api.Api.CaptchaApi +var captchaApi = controller.Controller.CaptchaController func CaptchaRouter(router *gin.RouterGroup) { group := router.Group("/captcha") diff --git a/router/modules/client_router.go b/router/modules/client_router.go index 5825c50..29efb80 100644 --- a/router/modules/client_router.go +++ b/router/modules/client_router.go @@ -2,10 +2,10 @@ package modules import ( "github.com/gin-gonic/gin" - "schisandra-cloud-album/api" + "schisandra-cloud-album/controller" ) -var clientApi = api.Api.ClientApi +var clientApi = controller.Controller.ClientController func ClientRouter(router *gin.RouterGroup) { router.GET("/client/generate_client_id", clientApi.GenerateClientId) diff --git a/router/modules/comment_router.go b/router/modules/comment_router.go index daff17f..1ff61a2 100644 --- a/router/modules/comment_router.go +++ b/router/modules/comment_router.go @@ -2,10 +2,10 @@ package modules import ( "github.com/gin-gonic/gin" - "schisandra-cloud-album/api" + "schisandra-cloud-album/controller" ) -var commonApi = api.Api.CommonApi +var commonApi = controller.Controller.CommonController func CommentRouter(router *gin.RouterGroup) { router.POST("/auth/comment/submit", commonApi.CommentSubmit) diff --git a/router/modules/oauth_router.go b/router/modules/oauth_router.go index 11b1004..12c8be5 100644 --- a/router/modules/oauth_router.go +++ b/router/modules/oauth_router.go @@ -2,10 +2,10 @@ package modules import ( "github.com/gin-gonic/gin" - "schisandra-cloud-album/api" + "schisandra-cloud-album/controller" ) -var oauth = api.Api.OAuthApi +var oauth = controller.Controller.OAuthController func OauthRouter(router *gin.RouterGroup) { group := router.Group("/oauth") diff --git a/router/modules/permission_router.go b/router/modules/permission_router.go index 243676a..5ec26c6 100644 --- a/router/modules/permission_router.go +++ b/router/modules/permission_router.go @@ -2,10 +2,10 @@ package modules import ( "github.com/gin-gonic/gin" - "schisandra-cloud-album/api" + "schisandra-cloud-album/controller" ) -var permissionApi = api.Api.PermissionApi +var permissionApi = controller.Controller.PermissionController func PermissionRouter(router *gin.RouterGroup) { group := router.Group("/auth/permission") diff --git a/router/modules/role_router.go b/router/modules/role_router.go index cb61ce8..8e69b43 100644 --- a/router/modules/role_router.go +++ b/router/modules/role_router.go @@ -2,10 +2,10 @@ package modules import ( "github.com/gin-gonic/gin" - "schisandra-cloud-album/api" + "schisandra-cloud-album/controller" ) -var roleApi = api.Api.RoleApi +var roleApi = controller.Controller.RoleController func RoleRouter(router *gin.RouterGroup) { group := router.Group("/auth") diff --git a/router/modules/sms_router.go b/router/modules/sms_router.go index eb47969..9090663 100644 --- a/router/modules/sms_router.go +++ b/router/modules/sms_router.go @@ -2,10 +2,10 @@ package modules import ( "github.com/gin-gonic/gin" - "schisandra-cloud-album/api" + "schisandra-cloud-album/controller" ) -var smsApi = api.Api.SmsApi +var smsApi = controller.Controller.SmsController func SmsRouter(router *gin.RouterGroup) { group := router.Group("/sms") diff --git a/router/modules/user_router.go b/router/modules/user_router.go index 79cc40f..e2886bf 100644 --- a/router/modules/user_router.go +++ b/router/modules/user_router.go @@ -2,10 +2,10 @@ package modules import ( "github.com/gin-gonic/gin" - "schisandra-cloud-album/api" + "schisandra-cloud-album/controller" ) -var userApi = api.Api.UserApi +var userApi = controller.Controller.UserController // UserRouter 用户相关路由 有auth接口组需要token验证,没有auth接口组不需要token验证 func UserRouter(router *gin.RouterGroup) { diff --git a/router/modules/websocket_router.go b/router/modules/websocket_router.go index 2937d34..fefaf9e 100644 --- a/router/modules/websocket_router.go +++ b/router/modules/websocket_router.go @@ -2,10 +2,10 @@ package modules import ( "github.com/gin-gonic/gin" - "schisandra-cloud-album/api" + "schisandra-cloud-album/controller" ) -var websocketAPI = api.Api.WebsocketApi +var websocketAPI = controller.Controller.WebsocketController func WebsocketRouter(router *gin.RouterGroup) { group := router.Group("/ws") diff --git a/service/comment_likes_service/comment_likes.go b/service/comment_likes_service/comment_likes.go deleted file mode 100644 index 33d5841..0000000 --- a/service/comment_likes_service/comment_likes.go +++ /dev/null @@ -1,3 +0,0 @@ -package comment_likes_service - -type CommentLikes struct{} diff --git a/service/comment_likes_service/comment_likes_service.go b/service/comment_likes_service/comment_likes_service.go deleted file mode 100644 index bc01796..0000000 --- a/service/comment_likes_service/comment_likes_service.go +++ /dev/null @@ -1 +0,0 @@ -package comment_likes_service diff --git a/service/comment_reply_service.go b/service/comment_reply_service.go new file mode 100644 index 0000000..18bab5e --- /dev/null +++ b/service/comment_reply_service.go @@ -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 +} diff --git a/service/comment_reply_service/comment_reply.go b/service/comment_reply_service/comment_reply.go deleted file mode 100644 index f4a5984..0000000 --- a/service/comment_reply_service/comment_reply.go +++ /dev/null @@ -1,3 +0,0 @@ -package comment_reply_service - -type CommentReplyService struct{} diff --git a/service/impl/comment_reply_service_impl.go b/service/impl/comment_reply_service_impl.go new file mode 100644 index 0000000..a54810b --- /dev/null +++ b/service/impl/comment_reply_service_impl.go @@ -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) +} diff --git a/service/impl/permission_service_impl.go b/service/impl/permission_service_impl.go new file mode 100644 index 0000000..519c973 --- /dev/null +++ b/service/impl/permission_service_impl.go @@ -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) +} diff --git a/service/impl/role_service_impl.go b/service/impl/role_service_impl.go new file mode 100644 index 0000000..6a5884f --- /dev/null +++ b/service/impl/role_service_impl.go @@ -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) + +} diff --git a/service/impl/user_device_service_impl.go b/service/impl/user_device_service_impl.go new file mode 100644 index 0000000..8edd804 --- /dev/null +++ b/service/impl/user_device_service_impl.go @@ -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) +} diff --git a/service/impl/user_service_impl.go b/service/impl/user_service_impl.go new file mode 100644 index 0000000..1661493 --- /dev/null +++ b/service/impl/user_service_impl.go @@ -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) +} diff --git a/service/impl/user_social_service_impl.go b/service/impl/user_social_service_impl.go new file mode 100644 index 0000000..440418a --- /dev/null +++ b/service/impl/user_social_service_impl.go @@ -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) +} diff --git a/service/permission_service.go b/service/permission_service.go new file mode 100644 index 0000000..a7e1cdf --- /dev/null +++ b/service/permission_service.go @@ -0,0 +1,8 @@ +package service + +import "schisandra-cloud-album/model" + +type PermissionService interface { + // CreatePermissionsService 创建权限 + CreatePermissionsService(permissions []model.ScaAuthPermission) error +} diff --git a/service/permission_service/permission.go b/service/permission_service/permission.go deleted file mode 100644 index 73efc92..0000000 --- a/service/permission_service/permission.go +++ /dev/null @@ -1,3 +0,0 @@ -package permission_service - -type PermissionService struct{} diff --git a/service/role_service.go b/service/role_service.go new file mode 100644 index 0000000..dec2496 --- /dev/null +++ b/service/role_service.go @@ -0,0 +1,8 @@ +package service + +import "schisandra-cloud-album/model" + +type RoleService interface { + // AddRoleService 添加角色 + AddRoleService(role model.ScaAuthRole) error +} diff --git a/service/role_service/role.go b/service/role_service/role.go deleted file mode 100644 index eda2b8a..0000000 --- a/service/role_service/role.go +++ /dev/null @@ -1,3 +0,0 @@ -package role_service - -type RoleService struct{} diff --git a/service/service.go b/service/service.go deleted file mode 100644 index bdcc3ca..0000000 --- a/service/service.go +++ /dev/null @@ -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) diff --git a/service/user_device_service.go b/service/user_device_service.go new file mode 100644 index 0000000..fc63c87 --- /dev/null +++ b/service/user_device_service.go @@ -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 +} diff --git a/service/user_device_service/user_device.go b/service/user_device_service/user_device.go deleted file mode 100644 index f03077c..0000000 --- a/service/user_device_service/user_device.go +++ /dev/null @@ -1,3 +0,0 @@ -package user_device_service - -type UserDeviceService struct{} diff --git a/service/user_service.go b/service/user_service.go new file mode 100644 index 0000000..3b924bf --- /dev/null +++ b/service/user_service.go @@ -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 +} diff --git a/service/user_service/user.go b/service/user_service/user.go deleted file mode 100644 index 1ae6bca..0000000 --- a/service/user_service/user.go +++ /dev/null @@ -1,3 +0,0 @@ -package user_service - -type UserService struct{} diff --git a/service/user_social_service.go b/service/user_social_service.go new file mode 100644 index 0000000..2a63fd5 --- /dev/null +++ b/service/user_social_service.go @@ -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 +} diff --git a/service/user_social_service/user_social.go b/service/user_social_service/user_social.go deleted file mode 100644 index 4e310d4..0000000 --- a/service/user_social_service/user_social.go +++ /dev/null @@ -1,3 +0,0 @@ -package user_social_service - -type UserSocialService struct{} diff --git a/service/user_social_service/user_social_service.go b/service/user_social_service/user_social_service.go deleted file mode 100644 index d50f7e7..0000000 --- a/service/user_social_service/user_social_service.go +++ /dev/null @@ -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 -}