feat: service-lark update
continuous-integration/drone/push Build is passing

This commit is contained in:
2022-01-12 00:40:37 +08:00
parent 6dab1ffda3
commit c048909a9d
13 changed files with 420 additions and 88 deletions
@@ -0,0 +1,12 @@
package model
import (
"git.icechen.cn/monorepo/backend/pkg/orm"
)
func init() {
err := orm.DB.AutoMigrate(&UserInfo{})
if err != nil {
panic(err)
}
}
@@ -0,0 +1,42 @@
package model
import (
"git.icechen.cn/monorepo/backend/pkg/orm"
"gorm.io/gorm"
)
type UserInfo struct {
gorm.Model
AccessToken string `json:"access_token,omitempty" gorm:"access_token"`
TokenType string `json:"token_type,omitempty" gorm:"token_type"`
ExpiresIn int `json:"expires_in,omitempty" gorm:"expires_in"`
Name string `json:"name,omitempty" gorm:"name"`
EnName string `json:"en_name,omitempty" gorm:"en_name"`
AvatarUrl string `json:"avatar_url,omitempty" gorm:"avatar_url"`
AvatarThumb string `json:"avatar_thumb,omitempty" gorm:"avatar_thumb"`
AvatarMiddle string `json:"avatar_middle,omitempty" gorm:"avatar_middle"`
AvatarBig string `json:"avatar_big,omitempty" gorm:"avatar_big"`
OpenId string `json:"open_id,omitempty" gorm:"open_id;uniqueIndex"`
UnionId string `json:"union_id,omitempty" gorm:"union_id;uniqueIndex"`
Email string `json:"email,omitempty" gorm:"email;uniqueIndex"`
UserId string `json:"user_id,omitempty" gorm:"user_id"`
Mobile string `json:"mobile,omitempty" gorm:"mobile;uniqueIndex"`
TenantKey string `json:"tenant_key,omitempty" gorm:"tenant_key"`
RefreshExpiresIn int `json:"refresh_expires_in,omitempty" gorm:"refresh_expires_in"`
RefreshToken string `json:"refresh_token,omitempty" gorm:"refresh_token"`
}
func (UserInfo) TableName() string {
return "user_info"
}
// CreateUser 创建用户
func CreateUser(user *UserInfo) error {
return orm.DB.Where("open_id = ?", user.OpenId).Assign(user).FirstOrCreate(user).Error
}
// GetUserByID 根据ID获取用户信息
func GetUserByID(userID uint) (info UserInfo, err error) {
err = orm.DB.First(&info, userID).Error
return
}
@@ -0,0 +1,47 @@
package model
import (
"git.icechen.cn/monorepo/backend/pkg/orm"
"github.com/gofiber/fiber/v2/utils"
"gorm.io/gorm"
"time"
)
// TokenEffectiveTime token有效时长
const TokenEffectiveTime = time.Hour * 2
type UserToken struct {
gorm.Model
Token string `json:"token" gorm:"token;uniqueIndex"`
ExpiresTime time.Time `json:"expires_time" gorm:"expires_time"`
UserInfoID uint `json:"user_info_id" gorm:"user_info_id"`
}
func (UserToken) TableName() string {
return "user_token"
}
// CreateToken 创建Token
func CreateToken(userInfoID uint) (string, error) {
userToken := UserToken{
Token: genToken(),
ExpiresTime: time.Now().Add(TokenEffectiveTime),
UserInfoID: userInfoID,
}
err := orm.DB.Where("user_info_id = ?", userInfoID).
Assign(UserToken{UserInfoID: userInfoID}).
FirstOrCreate(&userToken).Error
return userToken.Token, err
}
func genToken() string {
return utils.UUIDv4()
}
// GetToken 根据token获取token对象
func GetToken(token string) (UserToken, error) {
userToken := UserToken{}
err := orm.DB.Where("token = ? AND expires_time < ?", token, time.Now()).
First(&userToken).Error
return userToken, err
}