| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package exchange
- import (
- "fmt"
- "github.com/shopspring/decimal"
- "time"
- )
- type ExPower struct {
- expr int64
- power decimal.Decimal
- }
- var exPower = &ExPower{
- expr: 0,
- power: decimal.Zero,
- }
- var totalPower = decimal.NewFromFloat(21 * 10000 * 1000)
- var hisProduct = decimal.NewFromFloat(28080000)
- type ExPowerResp struct {
- Code int `json:"code"`
- Msg string `json:"msg"`
- Time int `json:"time"`
- Data string `json:"data"`
- }
- func GetExPower() decimal.Decimal {
- nowProduct := exPower.power
- if exPower.expr < time.Now().Unix() {
- nowProduct = lastPower()
- }
- lessPower := totalPower.Sub(nowProduct)
- if lessPower.LessThanOrEqual(decimal.Zero) || lessPower.GreaterThanOrEqual(totalPower.Sub(hisProduct)) {
- return totalPower.Sub(hisProduct)
- }
- return lessPower
- }
- func lastPower() decimal.Decimal {
- url := fmt.Sprintf("https://openapi.aichash.xyz/openapi/v1/server/wholeNetwork")
- resp, err := get[ExPowerResp](url)
- if err != nil {
- return exPower.power
- }
- if resp.Code == 200 {
- power, err := decimal.NewFromString(resp.Data)
- if err != nil {
- return exPower.power
- } else {
- setLastPower(power)
- }
- }
- return exPower.power
- }
- func setLastPower(power decimal.Decimal) {
- exPower.expr = time.Now().Unix() + 3600
- exPower.power = power
- }
|