coai/auth/package.go
2023-10-28 08:15:47 +08:00

79 lines
1.5 KiB
Go

package auth
import "database/sql"
type GiftResponse struct {
Cert bool `json:"cert"`
Teenager bool `json:"teenager"`
}
func (u *User) HasPackage(db *sql.DB, _t string) bool {
var count int
if err := db.QueryRow(`SELECT COUNT(*) FROM package where user_id = ? AND type = ?`, u.ID, _t).Scan(&count); err != nil {
return false
}
return count > 0
}
func (u *User) HasCertPackage(db *sql.DB) bool {
return u.HasPackage(db, "cert")
}
func (u *User) HasTeenagerPackage(db *sql.DB) bool {
return u.HasPackage(db, "teenager")
}
func NewPackage(db *sql.DB, user *User, _t string) bool {
id := user.GetID(db)
var count int
if err := db.QueryRow(`SELECT COUNT(*) FROM package where user_id = ? AND type = ?`, id, _t).Scan(&count); err != nil {
return false
}
if count > 0 {
return false
}
_ = db.QueryRow(`INSERT INTO package (user_id, type) VALUES (?, ?)`, id, _t)
return true
}
func NewCertPackage(db *sql.DB, user *User) bool {
res := NewPackage(db, user, "cert")
if !res {
return false
}
return user.IncreaseQuota(db, 50)
}
func NewTeenagerPackage(db *sql.DB, user *User) bool {
res := NewPackage(db, user, "teenager")
if !res {
return false
}
return user.IncreaseQuota(db, 150)
}
func RefreshPackage(db *sql.DB, user *User) *GiftResponse {
resp := Cert(user.Username)
if resp == nil || resp.Status == false {
return nil
}
if resp.Cert {
NewCertPackage(db, user)
}
if resp.Teenager {
NewTeenagerPackage(db, user)
}
return &GiftResponse{
Cert: resp.Cert,
Teenager: resp.Teenager,
}
}