🎨 remove xorm & add gorm gen

This commit is contained in:
landaiqing
2024-11-21 13:03:47 +08:00
parent 9b5e454eca
commit f32ac241a6
84 changed files with 8865 additions and 3476 deletions

View File

@@ -3,12 +3,16 @@ package oauth
import (
"context"
"encoding/json"
"errors"
"fmt"
"net/http"
"strconv"
"time"
"github.com/yitter/idgenerator-go/idgen"
"gorm.io/gorm"
"github.com/zeromicro/go-zero/core/logx"
"schisandra-album-cloud-microservices/app/core/api/common/constant"
"schisandra-album-cloud-microservices/app/core/api/common/response"
@@ -16,8 +20,6 @@ import (
"schisandra-album-cloud-microservices/app/core/api/internal/svc"
"schisandra-album-cloud-microservices/app/core/api/internal/types"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
"github.com/zeromicro/go-zero/core/logx"
)
type GiteeCallbackLogic struct {
@@ -102,26 +104,19 @@ func (l *GiteeCallbackLogic) GiteeCallback(w http.ResponseWriter, r *http.Reques
}
Id := strconv.Itoa(giteeUser.ID)
tx := l.svcCtx.DB.NewSession()
defer tx.Close()
if err = tx.Begin(); err != nil {
return err
}
userSocial := model.ScaAuthUserSocial{
OpenId: Id,
Source: constant.OAuthSourceGitee,
Deleted: constant.NotDeleted,
}
has, err := tx.Get(&userSocial)
if err != nil {
tx := l.svcCtx.DB.Begin()
userSocial := l.svcCtx.DB.ScaAuthUserSocial
socialUser, err := tx.ScaAuthUserSocial.Where(userSocial.OpenID.Eq(Id), userSocial.Source.Eq(constant.OAuthSourceGitee), userSocial.Deleted.Eq(constant.NotDeleted)).First()
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}
if !has {
if socialUser == nil {
// 创建用户
uid := idgen.NextId()
uidStr := strconv.FormatInt(uid, 10)
addUser := model.ScaAuthUser{
addUser := &model.ScaAuthUser{
UID: uidStr,
Avatar: giteeUser.AvatarURL,
Username: giteeUser.Login,
@@ -131,21 +126,25 @@ func (l *GiteeCallbackLogic) GiteeCallback(w http.ResponseWriter, r *http.Reques
Deleted: constant.NotDeleted,
Gender: constant.Male,
}
affected, err := tx.Insert(&addUser)
if err != nil || affected == 0 {
err = tx.ScaAuthUser.Create(addUser)
if err != nil {
_ = tx.Rollback()
return err
}
socialUser := model.ScaAuthUserSocial{
UserId: uidStr,
OpenId: Id,
Source: constant.OAuthSourceGitee,
gitee := constant.OAuthSourceGitee
newSocialUser := &model.ScaAuthUserSocial{
UserID: uidStr,
OpenID: Id,
Source: gitee,
}
insert, err := tx.Insert(&socialUser)
if err != nil || insert == 0 {
err = tx.ScaAuthUserSocial.Create(newSocialUser)
if err != nil {
_ = tx.Rollback()
return err
}
if res, err := l.svcCtx.CasbinEnforcer.AddRoleForUser(uidStr, constant.User); !res || err != nil {
_ = tx.Rollback()
return err
}
@@ -153,16 +152,16 @@ func (l *GiteeCallbackLogic) GiteeCallback(w http.ResponseWriter, r *http.Reques
return err
}
} else {
user := model.ScaAuthUser{
UID: userSocial.UserId,
Deleted: constant.NotDeleted,
}
have, err := tx.Get(&user)
if err != nil || !have {
authUser := l.svcCtx.DB.ScaAuthUser
authUserInfo, err := tx.ScaAuthUser.Where(authUser.UID.Eq(socialUser.UserID), authUser.Deleted.Eq(constant.NotDeleted)).First()
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
_ = tx.Rollback()
return err
}
if err = HandleOauthLoginResponse(user, l.svcCtx, r, w, l.ctx); err != nil {
if err = HandleOauthLoginResponse(authUserInfo, l.svcCtx, r, w, l.ctx); err != nil {
_ = tx.Rollback()
return err
}
}
@@ -174,7 +173,7 @@ func (l *GiteeCallbackLogic) GiteeCallback(w http.ResponseWriter, r *http.Reques
}
// HandleOauthLoginResponse 处理登录响应
func HandleOauthLoginResponse(scaAuthUser model.ScaAuthUser, svcCtx *svc.ServiceContext, r *http.Request, w http.ResponseWriter, ctx context.Context) error {
func HandleOauthLoginResponse(scaAuthUser *model.ScaAuthUser, svcCtx *svc.ServiceContext, r *http.Request, w http.ResponseWriter, ctx context.Context) error {
data, err := user.HandleUserLogin(scaAuthUser, svcCtx, true, r, w, ctx)
if err != nil {
return err

View File

@@ -3,18 +3,20 @@ package oauth
import (
"context"
"encoding/json"
"errors"
"fmt"
"net/http"
"strconv"
"github.com/yitter/idgenerator-go/idgen"
"gorm.io/gorm"
"github.com/zeromicro/go-zero/core/logx"
"schisandra-album-cloud-microservices/app/core/api/common/constant"
"schisandra-album-cloud-microservices/app/core/api/internal/svc"
"schisandra-album-cloud-microservices/app/core/api/internal/types"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
"github.com/zeromicro/go-zero/core/logx"
)
type GithubCallbackLogic struct {
@@ -101,74 +103,73 @@ func (l *GithubCallbackLogic) GithubCallback(w http.ResponseWriter, r *http.Requ
return err
}
Id := strconv.Itoa(gitHubUser.ID)
tx := l.svcCtx.DB.NewSession()
defer tx.Close()
if err = tx.Begin(); err != nil {
return err
}
userSocial := model.ScaAuthUserSocial{
OpenId: Id,
Source: constant.OAuthSourceGithub,
Deleted: constant.NotDeleted,
}
has, err := tx.Get(&userSocial)
if err != nil {
tx := l.svcCtx.DB.Begin()
userSocial := l.svcCtx.DB.ScaAuthUserSocial
socialUser, err := tx.ScaAuthUserSocial.Where(userSocial.OpenID.Eq(Id), userSocial.Source.Eq(constant.OAuthSourceGithub), userSocial.Deleted.Eq(constant.NotDeleted)).First()
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}
if !has {
if socialUser == nil {
// 创建用户
uid := idgen.NextId()
uidStr := strconv.FormatInt(uid, 10)
addUser := model.ScaAuthUser{
notDeleted := constant.NotDeleted
male := constant.Male
addUser := &model.ScaAuthUser{
UID: uidStr,
Avatar: gitHubUser.AvatarURL,
Username: gitHubUser.Login,
Nickname: gitHubUser.Name,
Blog: gitHubUser.Blog,
Email: gitHubUser.Email,
Deleted: constant.NotDeleted,
Gender: constant.Male,
Deleted: notDeleted,
Gender: male,
}
affected, err := tx.Insert(&addUser)
if err != nil || affected == 0 {
err = tx.ScaAuthUser.Create(addUser)
if err != nil {
_ = tx.Rollback()
return err
}
socialUser := model.ScaAuthUserSocial{
UserId: uidStr,
OpenId: Id,
Source: constant.OAuthSourceGithub,
githubUser := constant.OAuthSourceGithub
newSocialUser := &model.ScaAuthUserSocial{
UserID: uidStr,
OpenID: Id,
Source: githubUser,
}
insert, err := tx.Insert(&socialUser)
if err != nil || insert == 0 {
err = tx.ScaAuthUserSocial.Create(newSocialUser)
if err != nil {
_ = tx.Rollback()
return err
}
if res, err := l.svcCtx.CasbinEnforcer.AddRoleForUser(uidStr, constant.User); !res || err != nil {
_ = tx.Rollback()
return err
}
if err = HandleOauthLoginResponse(addUser, l.svcCtx, r, w, l.ctx); err != nil {
_ = tx.Rollback()
return err
}
} else {
user := model.ScaAuthUser{
UID: userSocial.UserId,
Deleted: constant.NotDeleted,
}
have, err := tx.Get(&user)
if err != nil || !have {
authUser := l.svcCtx.DB.ScaAuthUser
authUserInfo, err := tx.ScaAuthUser.Where(authUser.UID.Eq(socialUser.UserID), authUser.Deleted.Eq(constant.NotDeleted)).First()
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
_ = tx.Rollback()
return err
}
if err = HandleOauthLoginResponse(user, l.svcCtx, r, w, l.ctx); err != nil {
if err = HandleOauthLoginResponse(authUserInfo, l.svcCtx, r, w, l.ctx); err != nil {
_ = tx.Rollback()
return err
}
}
if err := tx.Commit(); err != nil {
if err = tx.Commit(); err != nil {
return err
}
return nil

View File

@@ -3,18 +3,20 @@ package oauth
import (
"context"
"encoding/json"
"errors"
"fmt"
"net/http"
"strconv"
"github.com/yitter/idgenerator-go/idgen"
"gorm.io/gorm"
"github.com/zeromicro/go-zero/core/logx"
"schisandra-album-cloud-microservices/app/core/api/common/constant"
"schisandra-album-cloud-microservices/app/core/api/internal/svc"
"schisandra-album-cloud-microservices/app/core/api/internal/types"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
"github.com/zeromicro/go-zero/core/logx"
)
type QqCallbackLogic struct {
@@ -98,72 +100,72 @@ func (l *QqCallbackLogic) QqCallback(w http.ResponseWriter, r *http.Request, req
return err
}
tx := l.svcCtx.DB.NewSession()
defer tx.Close()
if err = tx.Begin(); err != nil {
return err
}
userSocial := model.ScaAuthUserSocial{
OpenId: authQQme.OpenID,
Source: constant.OAuthSourceQQ,
Deleted: constant.NotDeleted,
}
has, err := tx.Get(&userSocial)
if err != nil {
tx := l.svcCtx.DB.Begin()
userSocial := l.svcCtx.DB.ScaAuthUserSocial
socialUser, err := tx.ScaAuthUserSocial.Where(userSocial.OpenID.Eq(authQQme.OpenID), userSocial.Source.Eq(constant.OAuthSourceQQ), userSocial.Deleted.Eq(constant.NotDeleted)).First()
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}
if !has {
if socialUser == nil {
// 创建用户
uid := idgen.NextId()
uidStr := strconv.FormatInt(uid, 10)
addUser := model.ScaAuthUser{
notDeleted := constant.NotDeleted
male := constant.Male
addUser := &model.ScaAuthUser{
UID: uidStr,
Avatar: qqUserInfo.FigureurlQq1,
Username: authQQme.OpenID,
Nickname: qqUserInfo.Nickname,
Deleted: constant.NotDeleted,
Gender: constant.Male,
Deleted: notDeleted,
Gender: male,
}
affected, err := tx.Insert(&addUser)
if err != nil || affected == 0 {
err = tx.ScaAuthUser.Create(addUser)
if err != nil {
_ = tx.Rollback()
return err
}
socialUser := model.ScaAuthUserSocial{
UserId: uidStr,
OpenId: authQQme.OpenID,
Source: constant.OAuthSourceGithub,
githubUser := constant.OAuthSourceQQ
newSocialUser := &model.ScaAuthUserSocial{
UserID: uidStr,
OpenID: authQQme.OpenID,
Source: githubUser,
}
insert, err := tx.Insert(&socialUser)
if err != nil || insert == 0 {
err = tx.ScaAuthUserSocial.Create(newSocialUser)
if err != nil {
_ = tx.Rollback()
return err
}
if res, err := l.svcCtx.CasbinEnforcer.AddRoleForUser(uidStr, constant.User); !res || err != nil {
_ = tx.Rollback()
return err
}
if err = HandleOauthLoginResponse(addUser, l.svcCtx, r, w, l.ctx); err != nil {
_ = tx.Rollback()
return err
}
} else {
user := model.ScaAuthUser{
UID: userSocial.UserId,
Deleted: constant.NotDeleted,
}
have, err := tx.Get(&user)
if err != nil || !have {
authUser := l.svcCtx.DB.ScaAuthUser
authUserInfo, err := tx.ScaAuthUser.Where(authUser.UID.Eq(socialUser.UserID), authUser.Deleted.Eq(constant.NotDeleted)).First()
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
_ = tx.Rollback()
return err
}
if err = HandleOauthLoginResponse(user, l.svcCtx, r, w, l.ctx); err != nil {
if err = HandleOauthLoginResponse(authUserInfo, l.svcCtx, r, w, l.ctx); err != nil {
_ = tx.Rollback()
return err
}
}
if err := tx.Commit(); err != nil {
if err = tx.Commit(); err != nil {
return err
}
return nil

View File

@@ -15,6 +15,7 @@ import (
"github.com/ArtisanCloud/PowerWeChat/v3/src/officialAccount/server/handlers/models"
"github.com/yitter/idgenerator-go/idgen"
"github.com/zeromicro/go-zero/core/logx"
"gorm.io/gorm"
"schisandra-album-cloud-microservices/app/core/api/common/constant"
"schisandra-album-cloud-microservices/app/core/api/common/i18n"
@@ -113,91 +114,96 @@ func (l *WechatCallbackLogic) HandlerWechatLogin(openId string, clientId string,
if openId == "" {
return errors.New("openId is empty")
}
tx := l.svcCtx.DB.NewSession()
defer tx.Close()
if err := tx.Begin(); err != nil {
tx := l.svcCtx.DB.Begin()
userSocial := l.svcCtx.DB.ScaAuthUserSocial
socialUser, err := tx.ScaAuthUserSocial.Where(userSocial.OpenID.Eq(openId), userSocial.Source.Eq(constant.OAuthSourceWechat), userSocial.Deleted.Eq(constant.NotDeleted)).First()
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}
userSocial := model.ScaAuthUserSocial{
OpenId: openId,
Source: constant.OAuthSourceWechat,
Deleted: constant.NotDeleted,
}
has, err := tx.Get(&userSocial)
if err != nil {
return err
}
if !has {
if socialUser == nil {
// 创建用户
uid := idgen.NextId()
uidStr := strconv.FormatInt(uid, 10)
avatar := utils.GenerateAvatar(uidStr)
name := randomname.GenerateName()
addUser := model.ScaAuthUser{
notDeleted := constant.NotDeleted
male := constant.Male
addUser := &model.ScaAuthUser{
UID: uidStr,
Avatar: avatar,
Username: openId,
Nickname: name,
Deleted: constant.NotDeleted,
Gender: constant.Male,
Deleted: notDeleted,
Gender: male,
}
affected, err := tx.Insert(&addUser)
if err != nil || affected == 0 {
err = tx.ScaAuthUser.Create(addUser)
if err != nil {
_ = tx.Rollback()
return err
}
socialUser := model.ScaAuthUserSocial{
UserId: uidStr,
OpenId: openId,
Source: constant.OAuthSourceGithub,
wechatUser := constant.OAuthSourceWechat
newSocialUser := &model.ScaAuthUserSocial{
UserID: uidStr,
OpenID: openId,
Source: wechatUser,
}
insert, err := tx.Insert(&socialUser)
if err != nil || insert == 0 {
err = tx.ScaAuthUserSocial.Create(newSocialUser)
if err != nil {
_ = tx.Rollback()
return err
}
if res, err := l.svcCtx.CasbinEnforcer.AddRoleForUser(uidStr, constant.User); !res || err != nil {
_ = tx.Rollback()
return err
}
data, err := user.HandleUserLogin(addUser, l.svcCtx, true, r, w, l.ctx)
if err != nil {
_ = tx.Rollback()
return err
}
marshal, err := json.Marshal(data)
if err != nil {
_ = tx.Rollback()
return err
}
err = websocket.QrcodeWebSocketHandler.SendMessageToClient(clientId, marshal)
if err != nil {
_ = tx.Rollback()
return err
}
} else {
authUser := model.ScaAuthUser{
UID: userSocial.UserId,
Deleted: constant.NotDeleted,
}
have, err := tx.Get(&authUser)
if err != nil || !have {
authUser := l.svcCtx.DB.ScaAuthUser
authUserInfo, err := tx.ScaAuthUser.Where(authUser.UID.Eq(socialUser.UserID), authUser.Deleted.Eq(constant.NotDeleted)).First()
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
_ = tx.Rollback()
return err
}
data, err := user.HandleUserLogin(authUser, l.svcCtx, true, r, w, l.ctx)
data, err := user.HandleUserLogin(authUserInfo, l.svcCtx, true, r, w, l.ctx)
if err != nil {
_ = tx.Rollback()
return err
}
marshal, err := json.Marshal(data)
if err != nil {
_ = tx.Rollback()
return err
}
err = websocket.QrcodeWebSocketHandler.SendMessageToClient(clientId, marshal)
if err != nil {
_ = tx.Rollback()
return err
}
}
if err := tx.Commit(); err != nil {
if err = tx.Commit(); err != nil {
return err
}
return nil