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"
|
2021-12-10 11:34:19 +08:00
|
|
|
"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
|
2021-12-10 11:34:19 +08:00
|
|
|
VipDeadline time.Time
|
|
|
|
Currency float64
|
2021-09-30 12:09:45 +08:00
|
|
|
Identity, SelectIdentity int
|
|
|
|
Status model.AccountStatusKind
|
|
|
|
}
|
|
|
|
InstanceLoginReturn struct {
|
2021-12-15 14:31:14 +08:00
|
|
|
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
|
2021-12-10 11:34:19 +08:00
|
|
|
_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
|
|
|
|
2021-12-15 14:31:14 +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{}
|
|
|
|
}
|
|
|
|
}
|