user_auth.go 3.7 KB
package models

import (
	"fmt"
	"oppmg/common/log"
	"time"

	"github.com/astaxie/beego/orm"
)

type UserAuth struct {
	Id               int64     `orm:"column(id);auto"`
	UserId           int64     `orm:"column(user_id)" description:"表user.id "`
	RefreshToken     string    `orm:"column(refresh_token);size(64)" description:"refresh token   "`
	RefreshTokenExp  time.Time `orm:"column(refresh_token_exp);type(timestamp)" description:"refresh token 过期时间"`
	AccessToken      string    `orm:"column(access_token);size(64)" description:"access_token   "`
	AccessTokenExp   time.Time `orm:"column(access_token_exp);type(timestamp)" description:"access token 过期时间"`
	AuthCode         string    `orm:"column(auth_code);size(64)" description:"auth_code"`
	AuthCodeExp      time.Time `orm:"column(auth_code_exp);type(timestamp)" description:"auth_code过期时间"`
	DeviceType       int8      `orm:"column(device_type)" description:"设备类型 1:ios 2:安卓 3:web "`
	ClientId         string    `orm:"column(client_id);size(100)" description:"设备识别码 推送标识"`
	DeviceToken      string    `orm:"column(device_token);size(100)" description:"设备识别码 推送标识"`
	CreateAt         time.Time `orm:"column(create_at);type(timestamp)" description:"创建时间"`
	UpdateAt         time.Time `orm:"column(update_at);type(timestamp)" description:"更新时间"`
	CurrentCompanyId int64     `orm:"column(current_company_id)"`
}

func (t *UserAuth) TableName() string {
	return "user_auth"
}

func init() {
	orm.RegisterModel(new(UserAuth))
}

//设备类型 1:ios 2:安卓 3:web
const (
	_ int8 = iota
	DEVICE_TYPE_IOS
	DEVICE_TYPE_ANDROID
	DEVICE_TYPE_WEB
)

// AddUserAuth insert a new UserAuth into database and returns
// last inserted Id on success.
func AddUserAuth(m *UserAuth) (id int64, err error) {
	o := orm.NewOrm()
	id, err = o.Insert(m)
	return
}

// GetUserAuthById retrieves UserAuth by Id. Returns error if
// Id doesn't exist
func GetUserAuthById(id int64) (v *UserAuth, err error) {
	o := orm.NewOrm()
	v = &UserAuth{Id: id}
	if err = o.Read(v); err == nil {
		return v, nil
	}
	return nil, err
}

// UpdateUserAuth updates UserAuth by Id and returns error if
// the record to be updated doesn't exist
func UpdateUserAuthById(m *UserAuth, col []string, om ...orm.Ormer) (err error) {
	var o orm.Ormer
	if len(om) > 0 {
		o = om[0]
	} else {
		o = orm.NewOrm()
	}
	// ascertain id exists in the database
	var num int64
	if num, err = o.Update(m, col...); err == nil {
		log.Info("Number of records updated in database:%d", num)
	}
	return
}

// DeleteUserAuth deletes UserAuth by Id and returns error if
// the record to be deleted doesn't exist
func DeleteUserAuth(id int64) (err error) {
	o := orm.NewOrm()
	v := UserAuth{Id: id}
	// ascertain id exists in the database
	if err = o.Read(&v); err == nil {
		var num int64
		if num, err = o.Delete(&UserAuth{Id: id}); err == nil {
			fmt.Println("Number of records deleted in database:", num)
		}
	}
	return
}

func ValidateDdevice(deviceType int8) bool {
	switch deviceType {
	case DEVICE_TYPE_IOS:
		return true
	case DEVICE_TYPE_ANDROID:
		return true
	case DEVICE_TYPE_WEB:
		return true
	}
	return false
}

//ReadUserAuthByDevice 读取或创建
func GetUserAuthByUser(userId int64) (*UserAuth, error) {
	o := orm.NewOrm()
	uAuth := &UserAuth{
		UserId:     userId,
		DeviceType: DEVICE_TYPE_WEB,
	}
	err := o.Read(uAuth, "UserId", "DeviceType")
	if err == nil {
		return uAuth, nil
	}
	return nil, err
}

func GetUserAuthByDeviceTye(userId int64, devType int8) (*UserAuth, error) {
	o := orm.NewOrm()
	uAuth := &UserAuth{
		UserId:     userId,
		DeviceType: devType,
	}
	err := o.Read(uAuth, "UserId", "DeviceType")
	if err == nil {
		return uAuth, nil
	}
	return nil, err
}