chore: use connect user

pull/407/head
Zero 2 years ago
parent c49cf5d117
commit 386974c663

@ -5,6 +5,7 @@
package core package core
import ( import (
connectMidleware "github.com/go-zoox/connect/pkg/middleware"
"github.com/rocboss/paopao-ce/internal/core/cs" "github.com/rocboss/paopao-ce/internal/core/cs"
"github.com/rocboss/paopao-ce/internal/core/ms" "github.com/rocboss/paopao-ce/internal/core/ms"
) )
@ -20,6 +21,8 @@ type UserManageService interface {
CreateUser(user *ms.User) (*ms.User, error) CreateUser(user *ms.User) (*ms.User, error)
UpdateUser(user *ms.User) error UpdateUser(user *ms.User) error
GetRegisterUserCount() (int64, error) GetRegisterUserCount() (int64, error)
//
GetOrCreateUserByEmail(email string, connectUser *connectMidleware.User) (*ms.User, error)
} }
// ContactManageService 联系人管理服务 // ContactManageService 联系人管理服务

@ -18,6 +18,7 @@ type User struct {
*Model *Model
Nickname string `json:"nickname"` Nickname string `json:"nickname"`
Username string `json:"username"` Username string `json:"username"`
Email string `json:"email"`
Phone string `json:"phone"` Phone string `json:"phone"`
Password string `json:"password"` Password string `json:"password"`
Salt string `json:"salt"` Salt string `json:"salt"`
@ -59,6 +60,8 @@ func (u *User) Get(db *gorm.DB) (*User, error) {
db = db.Where("id= ? AND is_del = ?", u.Model.ID, 0) db = db.Where("id= ? AND is_del = ?", u.Model.ID, 0)
} else if u.Phone != "" { } else if u.Phone != "" {
db = db.Where("phone = ? AND is_del = ?", u.Phone, 0) db = db.Where("phone = ? AND is_del = ?", u.Phone, 0)
} else if u.Email != "" {
db = db.Where("email = ? AND is_del = ?", u.Email, 0)
} else { } else {
db = db.Where("username = ? AND is_del = ?", u.Username, 0) db = db.Where("username = ? AND is_del = ?", u.Username, 0)
} }

@ -7,7 +7,10 @@ package jinzhu
import ( import (
"fmt" "fmt"
"strings" "strings"
"sync"
connectMidleware "github.com/go-zoox/connect/pkg/middleware"
"github.com/go-zoox/random"
"github.com/rocboss/paopao-ce/internal/core" "github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/cs" "github.com/rocboss/paopao-ce/internal/core/cs"
"github.com/rocboss/paopao-ce/internal/core/ms" "github.com/rocboss/paopao-ce/internal/core/ms"
@ -75,6 +78,34 @@ func (s *userManageSrv) GetUserByUsername(username string) (*ms.User, error) {
return user.Get(s.db) return user.Get(s.db)
} }
var GetOrCreateUserByEmailSync = &sync.Mutex{}
func (s *userManageSrv) GetOrCreateUserByEmail(email string, connectUser *connectMidleware.User) (*ms.User, error) {
GetOrCreateUserByEmailSync.Lock()
defer GetOrCreateUserByEmailSync.Unlock()
user := &dbr.User{
Email: email,
}
u, err := user.Get(s.db)
if err == nil {
return u, nil
}
fmt.Println("[GetOrCreateUserByEmail] connectUser:", connectUser)
user.Nickname = connectUser.Nickname
user.Avatar = connectUser.Avatar
user.Status = ms.UserStatusNormal
// user.OpenID = connectUser.ID
// user.Username = random.String(16)
user.Username = strings.Split(email, "@")[0]
user.Password = random.String(32)
return s.CreateUser(user)
}
func (s *userManageSrv) UserProfileByName(username string) (res *cs.UserProfile, err error) { func (s *userManageSrv) UserProfileByName(username string) (res *cs.UserProfile, err error) {
err = s.db.Table(_user_).Joins(s._userProfileJoins). err = s.db.Table(_user_).Joins(s._userProfileJoins).
Where(s._userProfileWhere, username). Where(s._userProfileWhere, username).

@ -172,16 +172,19 @@ func (s *looseSrv) tweetCommentsFromCache(req *web.TweetCommentsReq, limit int,
} }
func (s *looseSrv) GetUserTweets(req *web.GetUserTweetsReq) (res *web.GetUserTweetsResp, err mir.Error) { func (s *looseSrv) GetUserTweets(req *web.GetUserTweetsReq) (res *web.GetUserTweetsResp, err mir.Error) {
fmt.Println("123123")
user, xerr := s.RelationTypFrom(req.User, req.Username) user, xerr := s.RelationTypFrom(req.User, req.Username)
if xerr != nil { if xerr != nil {
return nil, err return nil, err
} }
// 尝试直接从缓存中获取数据 // 尝试直接从缓存中获取数据
fmt.Println("468888")
key, ok := "", false key, ok := "", false
if res, key, ok = s.userTweetsFromCache(req, user); ok { if res, key, ok = s.userTweetsFromCache(req, user); ok {
// logrus.Debugf("GetUserTweets from cache key:%s", key) // logrus.Debugf("GetUserTweets from cache key:%s", key)
return return
} }
fmt.Println("77")
// 缓存获取未成功,只能查库了 // 缓存获取未成功,只能查库了
switch req.Style { switch req.Style {
case web.UserPostsStyleComment, web.UserPostsStyleMedia: case web.UserPostsStyleComment, web.UserPostsStyleMedia:

@ -17,6 +17,8 @@ import (
connectMidleware "github.com/go-zoox/connect/pkg/middleware" connectMidleware "github.com/go-zoox/connect/pkg/middleware"
"github.com/rocboss/paopao-ce/internal/conf" "github.com/rocboss/paopao-ce/internal/conf"
"github.com/rocboss/paopao-ce/internal/servants" "github.com/rocboss/paopao-ce/internal/servants"
"github.com/rocboss/paopao-ce/internal/servants/base"
"github.com/rocboss/paopao-ce/pkg/app"
) )
var ( var (
@ -52,9 +54,65 @@ func newWebEngine() *gin.Engine {
e.Use(connectMidleware.CreateGinMiddleware(os.Getenv("SECRET_KEY"))) e.Use(connectMidleware.CreateGinMiddleware(os.Getenv("SECRET_KEY")))
e.Use(func(ctx *gin.Context) { e.Use(func(ctx *gin.Context) {
v, _ := ctx.Get(connectMidleware.ContextUserKeyForGin) u, ok := ctx.Get(connectMidleware.ContextUserKeyForGin)
if !ok {
ctx.JSON(http.StatusUnauthorized, gin.H{
"message": "unauthorized (1)",
})
ctx.Abort()
return
}
connectUser, ok := u.(*connectMidleware.User)
if !ok {
ctx.JSON(http.StatusUnauthorized, gin.H{
"message": "unauthorized (2)",
})
ctx.Abort()
return
}
fmt.Println("user:", v) fmt.Println("connect user:", connectUser)
dao := base.NewDaoServant()
user, err := dao.Ds.GetOrCreateUserByEmail(connectUser.Email, connectUser)
if err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{
"message": fmt.Sprintf("failed to get user by email: %s", err),
})
ctx.Abort()
return
}
// auth login
if ctx.Request.URL.Path == "/v1/auth/login" {
token, err := app.GenerateToken(user)
if err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{
"message": "failed to generate token",
})
ctx.Abort()
return
}
ctx.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": gin.H{
"token": token,
},
})
ctx.Abort()
return
} else if ctx.Request.URL.Path == "/v1/user/info" {
// user info
ctx.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": user,
})
ctx.Abort()
return
}
ctx.Next() ctx.Next()
}) })

@ -342,6 +342,7 @@ CREATE TABLE `p_user` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID', `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`nickname` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '昵称', `nickname` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '昵称',
`username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户名', `username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户名',
`email` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '邮箱',
`phone` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号', `phone` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号',
`password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'MD5密码', `password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'MD5密码',
`salt` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '盐值', `salt` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '盐值',

@ -280,6 +280,7 @@ CREATE TABLE p_user (
id BIGINT NOT NULL DEFAULT nextval('user_id_seq'::regclass), id BIGINT NOT NULL DEFAULT nextval('user_id_seq'::regclass),
nickname VARCHAR(32) NOT NULL DEFAULT '', nickname VARCHAR(32) NOT NULL DEFAULT '',
username VARCHAR(32) NOT NULL DEFAULT '', username VARCHAR(32) NOT NULL DEFAULT '',
email VARCHAR(64) NOT NULL DEFAULT '',
phone VARCHAR(16) NOT NULL DEFAULT '', -- 手机号 phone VARCHAR(16) NOT NULL DEFAULT '', -- 手机号
password VARCHAR(32) NOT NULL DEFAULT '', -- MD5密码 password VARCHAR(32) NOT NULL DEFAULT '', -- MD5密码
salt VARCHAR(16) NOT NULL DEFAULT '', -- 盐值 salt VARCHAR(16) NOT NULL DEFAULT '', -- 盐值

@ -290,7 +290,32 @@ onMounted(() => {
store.commit('userLogout'); store.commit('userLogout');
}); });
} else { } else {
store.commit('userLogout'); // store.commit('userLogout');
userLogin({
username: "placeholder",
password: "placeholder",
})
.then((res) => {
const token = res?.token || '';
// 写入用户信息
localStorage.setItem('PAOPAO_TOKEN', token);
return userInfo(token);
})
.then((res) => {
// window.$message.success('登录成功');
loading.value = false;
store.commit('updateUserinfo', res);
store.commit('triggerAuth', false);
store.commit('refresh')
loginForm.username = '';
loginForm.password = '';
})
.catch((err) => {
loading.value = false;
});
} }
}); });
</script> </script>

Loading…
Cancel
Save