100 lines
2.9 KiB
Go
Executable File
100 lines
2.9 KiB
Go
Executable File
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
"log"
|
|
|
|
_ "github.com/go-sql-driver/mysql"
|
|
)
|
|
|
|
func main() {
|
|
dsn := "root:bindbox2025kdy@tcp(150.158.78.154:3306)/bindbox_game?charset=utf8mb4&parseTime=True&loc=Local"
|
|
db, err := sql.Open("mysql", dsn)
|
|
if err != nil {
|
|
log.Fatal("连接失败:", err)
|
|
}
|
|
defer db.Close()
|
|
|
|
orderNo := "O20260115145414801"
|
|
|
|
// 查询订单和抽奖记录
|
|
fmt.Println("=== 订单抽奖记录 ===")
|
|
rows, err := db.Query(`
|
|
SELECT
|
|
o.id as order_id,
|
|
o.order_no,
|
|
o.user_id,
|
|
dl.id as draw_log_id,
|
|
dl.reward_id,
|
|
dl.issue_id,
|
|
dl.created_at as draw_time,
|
|
ar.product_id,
|
|
ar.weight,
|
|
p.name as reward_name
|
|
FROM orders o
|
|
LEFT JOIN activity_draw_logs dl ON dl.order_id = o.id
|
|
LEFT JOIN activity_reward_settings ar ON ar.id = dl.reward_id
|
|
LEFT JOIN products p ON p.id = ar.product_id
|
|
WHERE o.order_no = ?
|
|
`, orderNo)
|
|
if err != nil {
|
|
log.Fatal("查询订单失败:", err)
|
|
}
|
|
defer rows.Close()
|
|
|
|
for rows.Next() {
|
|
var orderID, userID, drawLogID, rewardID, issueID, productID sql.NullInt64
|
|
var orderNoRes, drawTime, rewardName sql.NullString
|
|
var weight sql.NullInt64
|
|
err := rows.Scan(&orderID, &orderNoRes, &userID, &drawLogID, &rewardID, &issueID, &drawTime, &productID, &weight, &rewardName)
|
|
if err != nil {
|
|
log.Fatal("扫描失败:", err)
|
|
}
|
|
fmt.Printf("订单ID: %d, 用户ID: %d, 期次ID: %d\n", orderID.Int64, userID.Int64, issueID.Int64)
|
|
fmt.Printf("抽奖记录ID: %d, 奖品ID: %d, 产品ID: %d, 权重: %d\n", drawLogID.Int64, rewardID.Int64, productID.Int64, weight.Int64)
|
|
fmt.Printf("中奖奖品: %s, 抽奖时间: %s\n", rewardName.String, drawTime.String)
|
|
}
|
|
|
|
// 查询抽奖凭证
|
|
fmt.Println("\n=== 抽奖凭证详情 ===")
|
|
receiptRows, err := db.Query(`
|
|
SELECT
|
|
dr.id,
|
|
dr.draw_log_id,
|
|
dr.algo_version,
|
|
dr.server_seed_hash,
|
|
dr.server_sub_seed,
|
|
dr.rand_salt,
|
|
dr.weights_snapshot,
|
|
dr.rand_value,
|
|
dr.result_reward_id
|
|
FROM activity_draw_receipts dr
|
|
JOIN activity_draw_logs dl ON dl.id = dr.draw_log_id
|
|
JOIN orders o ON o.id = dl.order_id
|
|
WHERE o.order_no = ?
|
|
`, orderNo)
|
|
if err != nil {
|
|
log.Fatal("查询凭证失败:", err)
|
|
}
|
|
defer receiptRows.Close()
|
|
|
|
for receiptRows.Next() {
|
|
var id, drawLogID, resultRewardID sql.NullInt64
|
|
var algoVersion, seedHash, subSeed, salt, weights sql.NullString
|
|
var randValue sql.NullInt64
|
|
err := receiptRows.Scan(&id, &drawLogID, &algoVersion, &seedHash, &subSeed, &salt, &weights, &randValue, &resultRewardID)
|
|
if err != nil {
|
|
log.Fatal("扫描凭证失败:", err)
|
|
}
|
|
fmt.Printf("凭证ID: %d, 抽奖记录ID: %d\n", id.Int64, drawLogID.Int64)
|
|
fmt.Printf("算法版本: %s\n", algoVersion.String)
|
|
fmt.Printf("种子哈希: %s\n", seedHash.String)
|
|
fmt.Printf("子种子: %s\n", subSeed.String)
|
|
fmt.Printf("Salt: %s\n", salt.String)
|
|
fmt.Printf("随机值: %d\n", randValue.Int64)
|
|
fmt.Printf("结果奖品ID: %d\n", resultRewardID.Int64)
|
|
fmt.Printf("权重快照: %s\n", weights.String)
|
|
}
|
|
}
|