Files

65 lines
1.8 KiB
Go
Raw Normal View History

2021-09-30 12:09:45 +08:00
package account
import (
"SciencesServer/app/common/model"
"SciencesServer/app/service"
2021-12-03 11:32:26 +08:00
"SciencesServer/app/session"
2021-09-30 12:09:45 +08:00
"SciencesServer/config"
"SciencesServer/utils"
2021-12-03 11:32:26 +08:00
"fmt"
"time"
2021-09-30 12:09:45 +08:00
)
type Instance struct{}
type InstanceHandle func() *Instance
type InstanceLoginCallback func(params *InstanceLoginParams) *InstanceLoginReturn
type (
InstanceLoginParams struct {
2021-12-01 14:12:23 +08:00
UID uint64
2021-12-03 11:50:57 +08:00
Avatar, Name, Mobile string
2021-12-22 14:53:45 +08:00
Vip model.UserInstanceVipKind
VipStatus bool
VipDeadline time.Time
Currency float64
2021-09-30 12:09:45 +08:00
Identity, SelectIdentity int
Status model.AccountStatusKind
}
InstanceLoginReturn struct {
Token string `json:"token"`
TokenEffectTime int `json:"token_effect_time"`
2021-09-30 12:09:45 +08:00
}
)
func (c *Instance) Login() InstanceLoginCallback {
return func(params *InstanceLoginParams) *InstanceLoginReturn {
token := utils.JWTEncrypt(config.SettingInfo.TokenEffectTime, map[string]interface{}{
2021-12-03 11:32:26 +08:00
config.TokenForUID: fmt.Sprintf("%d", params.UID),
2021-09-30 12:09:45 +08:00
})
2021-12-03 11:32:26 +08:00
_session := session.NewEnterprise()
_session.Token = token
_session.UID = params.UID
2021-12-03 11:50:57 +08:00
_session.Avatar = params.Avatar
2021-12-03 11:32:26 +08:00
_session.Name = params.Name
_session.Mobile = params.Mobile
2021-12-22 14:53:45 +08:00
_session.Vip = int(params.Vip)
_session.VipStatus = params.VipStatus
_session.VipDeadline = params.VipDeadline
_session.Currency = params.Currency
2021-12-03 11:32:26 +08:00
_session.Identity = params.Identity
_session.SelectIdentity = params.SelectIdentity
2022-01-04 11:59:58 +08:00
service.Publish(config.EventForRedisHashProduce, config.RedisKeyForAccountEnterprise, _session.UIDToString(), _session)
2021-09-30 12:09:45 +08:00
return &InstanceLoginReturn{Token: token, TokenEffectTime: config.SettingInfo.TokenEffectTime}
2021-09-30 12:09:45 +08:00
}
}
func NewInstance() InstanceHandle {
return func() *Instance {
return &Instance{}
}
}