package dto

import (
	"github.com/golang-jwt/jwt/v5"
	"time"
)

type UserVO struct {
	Sn       string `json:"sn"`
	Token    string `json:"token"`
	Platform string `json:"platform"`

	Account  *string `json:"Account"`
	Nickname *string `json:"nickname"`
	Avatar   *string `json:"avatar"`
}

type LoginTokenVo struct {
	jwt.RegisteredClaims

	Sn          string `json:"sn"`
	AccessToken string `json:"accessToken"`
	Platform    string `json:"platform"`
}

func (vo *LoginTokenVo) SetExtByPlatform(platform string) *LoginTokenVo {
	switch platform {
	case "web":
		{
			vo.Platform = "web"
			vo.ExpiresAt = jwt.NewNumericDate(time.Now().Add(time.Hour * 24 * 7))
		}
	case "android":
		{
			vo.Platform = "android"
			vo.ExpiresAt = jwt.NewNumericDate(time.Now().Add(time.Hour * 24 * 30))
		}
	case "ios":
		{
			vo.Platform = "ios"
			vo.ExpiresAt = jwt.NewNumericDate(time.Now().Add(time.Hour * 24 * 30))
		}
	default:
		{
			vo.Platform = "web"
			vo.ExpiresAt = jwt.NewNumericDate(time.Now().Add(time.Hour * 7 * 30))
		}
	}

	return vo
}