123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package token
- import (
- "crypto/md5"
- "encoding/hex"
- "errors"
- "fmt"
- "math/rand"
- "time"
- "github.com/baiy/Cadmin-server-go/models"
- "github.com/baiy/Cadmin-server-go/models/utils"
- "github.com/doug-martin/goqu/v9"
- )
- type Model struct {
- models.Model
- Token string `json:"token"`
- AdminUserId int `json:"admin_user_id"`
- ExpireTime utils.Time `json:"expire_time"`
- }
- func (m *Model) IsExpire() bool {
- return time.Time(m.ExpireTime).Before(time.Now())
- }
- func GetByToken(token string) (model *Model, err error) {
- model = new(Model)
- found, err := models.Db.From("admin_token").Where(goqu.Ex{
- "token": token,
- }).ScanStruct(model)
- if err == nil {
- if !found {
- err = errors.New("token不存在")
- }
- }
- return
- }
- func Clear() {
- _, _ = models.Db.Delete("admin_token").
- Where(goqu.Ex{"expire_time": goqu.Op{"lt": time.Now().Format("2006-01-02 15:04:05")}}).
- Executor().Exec()
- }
- func Remove(t string) {
- _, _ = models.Db.Delete("admin_token").
- Where(goqu.Ex{"token": t}).
- Executor().Exec()
- }
- func Add(userId int) string {
- tokenStr := generate()
- dd, _ := time.ParseDuration("48h")
- _, _ = models.Db.Insert("admin_token").Rows(map[string]interface{}{
- "admin_user_id": userId,
- "token": tokenStr,
- "expire_time": time.Now().Add(dd).Format("2006-01-02 15:04:05"),
- }).Executor().Exec()
- return tokenStr
- }
- func Update(userId int, token string) error {
- dd, _ := time.ParseDuration("48h")
- record := goqu.Record{"expire_time": time.Now().Add(dd).Format("2006-01-02 15:04:05")}
- _, err := models.Db.Update("admin_token").Set(record).Where(goqu.Ex{
- "admin_user_id": userId,
- "token": token,
- }).Executor().Exec()
- return err
- }
- func generate() string {
- rand.Seed(time.Now().UnixNano())
- str := fmt.Sprintf("%d%d", time.Now().UnixNano(), rand.Intn(9999))
- h := md5.New()
- h.Write([]byte(str))
- return hex.EncodeToString(h.Sum(nil))
- }
|