package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"net/url"
	"os"
	"time"
)

/*
=============================================================
  查询账户点数 Demo (Go版)

  功能说明：
  查询账户剩余点数（余额）

  使用方法：
  1. 确保已安装 Go 1.18 或更高版本
  2. 将下方的 APPKEY 替换为你自己的用户密钥
  3. 运行脚本：go run query_points.go
  4. 本 Demo 仅使用 Go 标准库，无需安装第三方依赖
=============================================================
*/

const (
	APPKEY  = "你的appkey"
	APIBase = "http://api.ttocr.com/api"
)

func queryPoints() (map[string]interface{}, error) {
	client := &http.Client{Timeout: 10 * time.Second}
	endpoint := APIBase + "/points?appkey=" + url.QueryEscape(APPKEY)

	resp, err := client.Get(endpoint)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()

	var result map[string]interface{}
	if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
		return nil, err
	}

	pretty, _ := json.MarshalIndent(result, "", "  ")
	if status, ok := result["status"].(float64); ok && status == 1 {
		fmt.Printf("[成功] 查询成功！当前可用点数：%v\n", result["points"])
	} else {
		fmt.Printf("[失败] 查询失败，错误信息：%v\n", result["msg"])
		fmt.Printf("[提示] 错误状态码：%v，请参考错误代码表排查\n", result["status"])
	}
	fmt.Printf("[完整响应] %s\n", string(pretty))

	return result, nil
}

func main() {
	fmt.Println("************************************************************")
	fmt.Println("  查询账户点数 Demo (Go版)")
	fmt.Println("************************************************************")

	if APPKEY == "你的appkey" {
		fmt.Println("\n[错误] 请先在代码顶部的配置区域填写你的 APPKEY")
		os.Exit(1)
	}

	fmt.Println("==================================================")
	fmt.Println("[查询点数] 正在查询账户剩余点数...")
	fmt.Println("==================================================")

	if _, err := queryPoints(); err != nil {
		fmt.Printf("[异常] 网络请求出错：%v\n", err)
		os.Exit(1)
	}

	fmt.Println("\n==================================================")
	fmt.Println("[完成] 查询执行完毕")
	fmt.Println("==================================================")
}
