first commit

This commit is contained in:
2026-02-17 13:06:23 +08:00
commit 7cbd3d061d
349 changed files with 126558 additions and 0 deletions

81
apns/Apns.go Normal file
View File

@@ -0,0 +1,81 @@
package apns
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type RequestBody struct {
DeviceToken string `json:"device_token"`
Title string `json:"title"`
Content string `json:"content"`
Source string `json:"source"`
WxID string `json:"wxid"`
}
func ApnsPush(msg string, title string, device_token string, wxid string) (response string) {
url := "http://106.53.106.115/api/apns/push"
method := "POST"
headers := map[string]string{
"Content-Type": "application/json",
}
bodyData := RequestBody{
DeviceToken: device_token,
Title: title,
Content: msg,
Source: "bark",
WxID: wxid,
}
body, err := json.Marshal(bodyData)
if err != nil {
fmt.Println("序列化请求体失败:", err)
return
}
// 发送HTTP请求
responseBytes, err := HTTPRequest(method, url, headers, body)
if err != nil {
fmt.Println("请求失败:", err)
return
}
return string(responseBytes)
}
// HTTPRequest 发送HTTP请求并返回响应结果和错误如果有
func HTTPRequest(method, url string, headers map[string]string, body []byte) ([]byte, error) {
client := &http.Client{}
// 创建请求
req, err := http.NewRequest(method, url, bytes.NewBuffer(body))
if err != nil {
return nil, fmt.Errorf("创建%s请求失败: %v", method, err)
}
// 添加请求头
for key, value := range headers {
req.Header.Set(key, value)
}
// 发送请求
resp, err := client.Do(req)
if err != nil {
return nil, fmt.Errorf("%s请求失败: %v", method, err)
}
defer resp.Body.Close()
// 读取响应体
respBody, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("读取响应体失败: %v", err)
}
return respBody, nil
}
func main2() {
// 示例调用
ApnsPush("消息内容", "消息标题", "设备令牌", "微信ID")
}

179
apns/deviceToken.go Normal file
View 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)
}