🎨 remove ent orm & add xorm

This commit is contained in:
landaiqing
2024-11-20 18:04:54 +08:00
parent 3328647b37
commit 9b5e454eca
126 changed files with 1841 additions and 41963 deletions

View File

@@ -15,9 +15,7 @@ import (
"schisandra-album-cloud-microservices/app/core/api/internal/logic/user"
"schisandra-album-cloud-microservices/app/core/api/internal/svc"
"schisandra-album-cloud-microservices/app/core/api/internal/types"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent/scaauthuser"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent/scaauthusersocial"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -102,81 +100,84 @@ func (l *GiteeCallbackLogic) GiteeCallback(w http.ResponseWriter, r *http.Reques
if err = json.Unmarshal(marshal, &giteeUser); err != nil {
return err
}
Id := strconv.Itoa(giteeUser.ID)
tx, err := l.svcCtx.MySQLClient.Tx(l.ctx)
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 {
return err
}
Id := strconv.Itoa(giteeUser.ID)
socialUser, err := l.svcCtx.MySQLClient.ScaAuthUserSocial.Query().
Where(scaauthusersocial.OpenID(Id),
scaauthusersocial.Source(constant.OAuthSourceGitee),
scaauthusersocial.Deleted(constant.NotDeleted)).
First(l.ctx)
if err != nil && !ent.IsNotFound(err) {
return err
}
if ent.IsNotFound(err) {
if !has {
// 创建用户
uid := idgen.NextId()
uidStr := strconv.FormatInt(uid, 10)
addUser, fault := l.svcCtx.MySQLClient.ScaAuthUser.Create().
SetUID(uidStr).
SetAvatar(giteeUser.AvatarURL).
SetUsername(giteeUser.Login).
SetNickname(giteeUser.Name).
SetBlog(giteeUser.Blog).
SetEmail(giteeUser.Email).
SetDeleted(constant.NotDeleted).
SetGender(constant.Male).
Save(l.ctx)
if fault != nil {
return tx.Rollback()
addUser := model.ScaAuthUser{
UID: uidStr,
Avatar: giteeUser.AvatarURL,
Username: giteeUser.Login,
Nickname: giteeUser.Name,
Blog: giteeUser.Blog,
Email: giteeUser.Email,
Deleted: constant.NotDeleted,
Gender: constant.Male,
}
if err = l.svcCtx.MySQLClient.ScaAuthUserSocial.Create().
SetUserID(uidStr).
SetOpenID(Id).
SetSource(constant.OAuthSourceGitee).
Exec(l.ctx); err != nil {
return tx.Rollback()
affected, err := tx.Insert(&addUser)
if err != nil || affected == 0 {
return err
}
socialUser := model.ScaAuthUserSocial{
UserId: uidStr,
OpenId: Id,
Source: constant.OAuthSourceGitee,
}
insert, err := tx.Insert(&socialUser)
if err != nil || insert == 0 {
return err
}
if res, err := l.svcCtx.CasbinEnforcer.AddRoleForUser(uidStr, constant.User); !res || err != nil {
return tx.Rollback()
return err
}
if result := HandleOauthLoginResponse(addUser, l.svcCtx, r, w, l.ctx); !result {
return tx.Rollback()
if err = HandleOauthLoginResponse(addUser, l.svcCtx, r, w, l.ctx); err != nil {
return err
}
} else {
sacAuthUser, fault := l.svcCtx.MySQLClient.ScaAuthUser.Query().
Where(scaauthuser.UID(socialUser.UserID), scaauthuser.Deleted(constant.NotDeleted)).
First(l.ctx)
if fault != nil {
return tx.Rollback()
user := model.ScaAuthUser{
UID: userSocial.UserId,
Deleted: constant.NotDeleted,
}
have, err := tx.Get(&user)
if err != nil || !have {
return err
}
if result := HandleOauthLoginResponse(sacAuthUser, l.svcCtx, r, w, l.ctx); !result {
return tx.Rollback()
if err = HandleOauthLoginResponse(user, l.svcCtx, r, w, l.ctx); err != nil {
return err
}
}
if err := tx.Commit(); err != nil {
return tx.Rollback()
if err = tx.Commit(); err != nil {
return err
}
return nil
}
// HandleOauthLoginResponse 处理登录响应
func HandleOauthLoginResponse(scaAuthUser *ent.ScaAuthUser, svcCtx *svc.ServiceContext, r *http.Request, w http.ResponseWriter, ctx context.Context) bool {
data, result := user.HandleUserLogin(scaAuthUser, svcCtx, true, r, w, ctx)
if !result {
return false
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
}
responseData := response.SuccessWithData(data)
formattedScript := fmt.Sprintf(Script, responseData, svcCtx.Config.Web.URL)
@@ -187,9 +188,9 @@ func HandleOauthLoginResponse(scaAuthUser *ent.ScaAuthUser, svcCtx *svc.ServiceC
// 写入响应内容
if _, writeErr := w.Write([]byte(formattedScript)); writeErr != nil {
return false
return writeErr
}
return true
return nil
}
// GetGiteeTokenAuthUrl 获取Gitee token

View File

@@ -12,9 +12,7 @@ import (
"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/ent"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent/scaauthuser"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent/scaauthusersocial"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -102,70 +100,76 @@ func (l *GithubCallbackLogic) GithubCallback(w http.ResponseWriter, r *http.Requ
if err != nil {
return err
}
tx, err := l.svcCtx.MySQLClient.Tx(l.ctx)
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 {
return err
}
Id := strconv.Itoa(gitHubUser.ID)
socialUser, err := l.svcCtx.MySQLClient.ScaAuthUserSocial.Query().
Where(scaauthusersocial.OpenID(Id),
scaauthusersocial.Source(constant.OAuthSourceGithub),
scaauthusersocial.Deleted(constant.NotDeleted)).
First(l.ctx)
if err != nil && !ent.IsNotFound(err) {
return err
}
if ent.IsNotFound(err) {
if !has {
// 创建用户
uid := idgen.NextId()
uidStr := strconv.FormatInt(uid, 10)
addUser, fault := l.svcCtx.MySQLClient.ScaAuthUser.Create().
SetUID(uidStr).
SetAvatar(gitHubUser.AvatarURL).
SetUsername(gitHubUser.Login).
SetNickname(gitHubUser.Name).
SetBlog(gitHubUser.Blog).
SetEmail(gitHubUser.Email).
SetDeleted(constant.NotDeleted).
SetGender(constant.Male).
Save(l.ctx)
if fault != nil {
return tx.Rollback()
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,
}
affected, err := tx.Insert(&addUser)
if err != nil || affected == 0 {
return err
}
if err = l.svcCtx.MySQLClient.ScaAuthUserSocial.Create().
SetUserID(uidStr).
SetOpenID(Id).
SetSource(constant.OAuthSourceGithub).
Exec(l.ctx); err != nil {
return tx.Rollback()
socialUser := model.ScaAuthUserSocial{
UserId: uidStr,
OpenId: Id,
Source: constant.OAuthSourceGithub,
}
insert, err := tx.Insert(&socialUser)
if err != nil || insert == 0 {
return err
}
if res, err := l.svcCtx.CasbinEnforcer.AddRoleForUser(uidStr, constant.User); !res || err != nil {
return tx.Rollback()
return err
}
if result := HandleOauthLoginResponse(addUser, l.svcCtx, r, w, l.ctx); !result {
return tx.Rollback()
if err = HandleOauthLoginResponse(addUser, l.svcCtx, r, w, l.ctx); err != nil {
return err
}
} else {
sacAuthUser, fault := l.svcCtx.MySQLClient.ScaAuthUser.Query().
Where(scaauthuser.UID(socialUser.UserID), scaauthuser.Deleted(constant.NotDeleted)).
First(l.ctx)
if fault != nil {
return tx.Rollback()
user := model.ScaAuthUser{
UID: userSocial.UserId,
Deleted: constant.NotDeleted,
}
have, err := tx.Get(&user)
if err != nil || !have {
return err
}
if result := HandleOauthLoginResponse(sacAuthUser, l.svcCtx, r, w, l.ctx); !result {
return tx.Rollback()
if err = HandleOauthLoginResponse(user, l.svcCtx, r, w, l.ctx); err != nil {
return err
}
}
if err := tx.Commit(); err != nil {
return tx.Rollback()
return err
}
return nil
}

View File

@@ -12,9 +12,7 @@ import (
"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/ent"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent/scaauthuser"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent/scaauthusersocial"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -99,67 +97,74 @@ func (l *QqCallbackLogic) QqCallback(w http.ResponseWriter, r *http.Request, req
if err != nil {
return err
}
tx, err := l.svcCtx.MySQLClient.Tx(l.ctx)
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 {
return err
}
socialUser, err := l.svcCtx.MySQLClient.ScaAuthUserSocial.Query().
Where(scaauthusersocial.OpenID(authQQme.OpenID),
scaauthusersocial.Source(constant.OAuthSourceQQ),
scaauthusersocial.Deleted(constant.NotDeleted)).
First(l.ctx)
if err != nil && !ent.IsNotFound(err) {
return err
}
if ent.IsNotFound(err) {
if !has {
// 创建用户
uid := idgen.NextId()
uidStr := strconv.FormatInt(uid, 10)
addUser, fault := l.svcCtx.MySQLClient.ScaAuthUser.Create().
SetUID(uidStr).
SetAvatar(qqUserInfo.FigureurlQq1).
SetUsername(authQQme.OpenID).
SetNickname(qqUserInfo.Nickname).
SetDeleted(constant.NotDeleted).
SetGender(constant.Male).
Save(l.ctx)
if fault != nil {
return tx.Rollback()
addUser := model.ScaAuthUser{
UID: uidStr,
Avatar: qqUserInfo.FigureurlQq1,
Username: authQQme.OpenID,
Nickname: qqUserInfo.Nickname,
Deleted: constant.NotDeleted,
Gender: constant.Male,
}
affected, err := tx.Insert(&addUser)
if err != nil || affected == 0 {
return err
}
if err = l.svcCtx.MySQLClient.ScaAuthUserSocial.Create().
SetUserID(uidStr).
SetOpenID(authQQme.OpenID).
SetSource(constant.OAuthSourceQQ).
Exec(l.ctx); err != nil {
return tx.Rollback()
socialUser := model.ScaAuthUserSocial{
UserId: uidStr,
OpenId: authQQme.OpenID,
Source: constant.OAuthSourceGithub,
}
insert, err := tx.Insert(&socialUser)
if err != nil || insert == 0 {
return err
}
if res, err := l.svcCtx.CasbinEnforcer.AddRoleForUser(uidStr, constant.User); !res || err != nil {
return tx.Rollback()
return err
}
if result := HandleOauthLoginResponse(addUser, l.svcCtx, r, w, l.ctx); !result {
return tx.Rollback()
if err = HandleOauthLoginResponse(addUser, l.svcCtx, r, w, l.ctx); err != nil {
return err
}
} else {
sacAuthUser, fault := l.svcCtx.MySQLClient.ScaAuthUser.Query().
Where(scaauthuser.UID(socialUser.UserID), scaauthuser.Deleted(constant.NotDeleted)).
First(l.ctx)
if fault != nil {
return tx.Rollback()
user := model.ScaAuthUser{
UID: userSocial.UserId,
Deleted: constant.NotDeleted,
}
have, err := tx.Get(&user)
if err != nil || !have {
return err
}
if result := HandleOauthLoginResponse(sacAuthUser, l.svcCtx, r, w, l.ctx); !result {
return tx.Rollback()
if err = HandleOauthLoginResponse(user, l.svcCtx, r, w, l.ctx); err != nil {
return err
}
}
if err := tx.Commit(); err != nil {
return tx.Rollback()
return err
}
return nil
}

View File

@@ -23,9 +23,7 @@ import (
"schisandra-album-cloud-microservices/app/core/api/internal/logic/user"
"schisandra-album-cloud-microservices/app/core/api/internal/logic/websocket"
"schisandra-album-cloud-microservices/app/core/api/internal/svc"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent/scaauthuser"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent/scaauthusersocial"
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
)
type WechatCallbackLogic struct {
@@ -115,86 +113,92 @@ func (l *WechatCallbackLogic) HandlerWechatLogin(openId string, clientId string,
if openId == "" {
return errors.New("openId is empty")
}
socialUser, err := l.svcCtx.MySQLClient.ScaAuthUserSocial.Query().
Where(scaauthusersocial.OpenID(openId),
scaauthusersocial.Source(constant.OAuthSourceWechat),
scaauthusersocial.Deleted(constant.NotDeleted)).
First(l.ctx)
if err != nil && !ent.IsNotFound(err) {
tx := l.svcCtx.DB.NewSession()
defer tx.Close()
if err := tx.Begin(); err != nil {
return err
}
tx, err := l.svcCtx.MySQLClient.Tx(l.ctx)
userSocial := model.ScaAuthUserSocial{
OpenId: openId,
Source: constant.OAuthSourceWechat,
Deleted: constant.NotDeleted,
}
has, err := tx.Get(&userSocial)
if err != nil {
return err
}
if ent.IsNotFound(err) {
if !has {
// 创建用户
uid := idgen.NextId()
uidStr := strconv.FormatInt(uid, 10)
avatar := utils.GenerateAvatar(uidStr)
name := randomname.GenerateName()
addUser, fault := l.svcCtx.MySQLClient.ScaAuthUser.Create().
SetUID(uidStr).
SetAvatar(avatar).
SetUsername(openId).
SetNickname(name).
SetDeleted(constant.NotDeleted).
SetGender(constant.Male).
Save(l.ctx)
if fault != nil {
return tx.Rollback()
addUser := model.ScaAuthUser{
UID: uidStr,
Avatar: avatar,
Username: openId,
Nickname: name,
Deleted: constant.NotDeleted,
Gender: constant.Male,
}
affected, err := tx.Insert(&addUser)
if err != nil || affected == 0 {
return err
}
if err = l.svcCtx.MySQLClient.ScaAuthUserSocial.Create().
SetUserID(uidStr).
SetOpenID(openId).
SetSource(constant.OAuthSourceWechat).
Exec(l.ctx); err != nil {
return tx.Rollback()
socialUser := model.ScaAuthUserSocial{
UserId: uidStr,
OpenId: openId,
Source: constant.OAuthSourceGithub,
}
insert, err := tx.Insert(&socialUser)
if err != nil || insert == 0 {
return err
}
if res, err := l.svcCtx.CasbinEnforcer.AddRoleForUser(uidStr, constant.User); !res || err != nil {
return tx.Rollback()
return err
}
data, result := user.HandleUserLogin(addUser, l.svcCtx, true, r, w, l.ctx)
if !result {
return tx.Rollback()
data, err := user.HandleUserLogin(addUser, l.svcCtx, true, r, w, l.ctx)
if err != nil {
return err
}
marshal, fault := json.Marshal(data)
if fault != nil {
return tx.Rollback()
marshal, err := json.Marshal(data)
if err != nil {
return err
}
err = websocket.QrcodeWebSocketHandler.SendMessageToClient(clientId, marshal)
if err != nil {
return tx.Rollback()
return err
}
} else {
sacAuthUser, fault := l.svcCtx.MySQLClient.ScaAuthUser.Query().
Where(scaauthuser.UID(socialUser.UserID), scaauthuser.Deleted(constant.NotDeleted)).
First(l.ctx)
if fault != nil {
return tx.Rollback()
authUser := model.ScaAuthUser{
UID: userSocial.UserId,
Deleted: constant.NotDeleted,
}
have, err := tx.Get(&authUser)
if err != nil || !have {
return err
}
data, result := user.HandleUserLogin(sacAuthUser, l.svcCtx, true, r, w, l.ctx)
if !result {
return tx.Rollback()
data, err := user.HandleUserLogin(authUser, l.svcCtx, true, r, w, l.ctx)
if err != nil {
return err
}
marshal, fault := json.Marshal(data)
if fault != nil {
return tx.Rollback()
marshal, err := json.Marshal(data)
if err != nil {
return err
}
err = websocket.QrcodeWebSocketHandler.SendMessageToClient(clientId, marshal)
if err != nil {
return tx.Rollback()
return err
}
}
if err := tx.Commit(); err != nil {
return tx.Rollback()
return err
}
return nil