first commit
This commit is contained in:
179
apns/deviceToken.go
Normal file
179
apns/deviceToken.go
Normal file
@@ -0,0 +1,179 @@
|
||||
package apns
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 连接MySQL数据库
|
||||
func ConnectDB() (*sql.DB, error) {
|
||||
// 数据库连接信息
|
||||
dsn := "wechat_mmtls:hNPpcsT2RH6pYRRk@tcp(106.53.106.115:3306)/wechat_mmtls"
|
||||
|
||||
// 连接到数据库
|
||||
db, err := sql.Open("mysql", dsn)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 测试连接是否成功
|
||||
err = db.Ping()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return db, nil
|
||||
}
|
||||
|
||||
// 结果结构体
|
||||
type APNSVip struct {
|
||||
ID int
|
||||
DeviceToken string
|
||||
Status int
|
||||
UserName string
|
||||
WxID string
|
||||
}
|
||||
|
||||
// 结果结构体
|
||||
type LicenseKey struct {
|
||||
ID int
|
||||
DeviceToken string
|
||||
Status int
|
||||
License string
|
||||
expiryDate string
|
||||
}
|
||||
|
||||
// 查询数据
|
||||
func QueryData(db *sql.DB, query string) ([]APNSVip, error) {
|
||||
// 查询数据
|
||||
rows, err := db.Query(query)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var result []APNSVip
|
||||
|
||||
for rows.Next() {
|
||||
var apns APNSVip
|
||||
if err := rows.Scan(&apns.ID, &apns.DeviceToken, &apns.Status, &apns.UserName, &apns.WxID); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result = append(result, apns)
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// 查询单条记录数据(防止 SQL 注入)
|
||||
func queryDataByField(db *sql.DB, fieldName string, value interface{}) (*APNSVip, error) {
|
||||
// 构建查询语句
|
||||
query := fmt.Sprintf("SELECT * FROM apns_vip WHERE %s = ? LIMIT 1", fieldName)
|
||||
|
||||
// 查询数据
|
||||
row := db.QueryRow(query, value)
|
||||
|
||||
var apns APNSVip
|
||||
err := row.Scan(&apns.ID, &apns.DeviceToken, &apns.Status, &apns.UserName, &apns.WxID)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
// 如果未找到记录,则返回 nil 和 nil
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &apns, nil
|
||||
}
|
||||
|
||||
func IsLicenseBind(db *sql.DB, value string) (*LicenseKey, error) {
|
||||
// 构建查询语句
|
||||
query := fmt.Sprintf("SELECT * FROM license_key WHERE license = ? and status=1 LIMIT 1")
|
||||
// 查询数据
|
||||
row := db.QueryRow(query, value)
|
||||
|
||||
var licenseKey LicenseKey
|
||||
err := row.Scan(&licenseKey.ID, &licenseKey.DeviceToken, &licenseKey.Status, &licenseKey.License, &licenseKey.expiryDate)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
// 如果未找到记录,则返回 nil 和 nil
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &licenseKey, nil
|
||||
}
|
||||
|
||||
func UpdateLicenseBindStatus(db *sql.DB, device_token string, license string) error {
|
||||
// 构建更新语句
|
||||
query := "UPDATE license_key SET status = 1,device_token=? WHERE license = ? and status=0"
|
||||
|
||||
// 执行更新操作
|
||||
_, err := db.Exec(query, device_token, license)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func HasLicense(db *sql.DB, value string) (*LicenseKey, error) {
|
||||
// 构建查询语句
|
||||
query := fmt.Sprintf("SELECT license FROM license_key WHERE license = ? LIMIT 1")
|
||||
// 查询数据
|
||||
row := db.QueryRow(query, value)
|
||||
|
||||
var licenseKey LicenseKey
|
||||
err := row.Scan(&licenseKey.License)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
// 如果未找到记录,则返回 nil 和 nil
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &licenseKey, nil
|
||||
}
|
||||
|
||||
// CheckExpiry 检查日期是否过期
|
||||
func CheckExpiry(expiryDateString string) bool {
|
||||
// 将字符串解析为时间对象
|
||||
expiryDate, err := time.Parse("2006-01-02", expiryDateString)
|
||||
if err != nil {
|
||||
fmt.Println("Error parsing expiry date:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
// 获取当前时间
|
||||
currentTime := time.Now()
|
||||
|
||||
// 比较过期日期和当前日期
|
||||
if expiryDate.Before(currentTime) {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func main777() {
|
||||
// 连接数据库
|
||||
db, err := ConnectDB()
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
// 根据字段查询数据(防止 SQL 注入)
|
||||
license := "123"
|
||||
license_key, err := IsLicenseBind(db, license)
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
}
|
||||
_ = UpdateLicenseBindStatus(db, "333", "123")
|
||||
|
||||
fmt.Println(license_key)
|
||||
}
|
||||
Reference in New Issue
Block a user