package aeshelper

import (
	"encoding/json"
	"fmt"
	"testing"
	"time"
)

// 测试加密解密
func Test_EnDe(t *testing.T) {
	a := `asg`
	b := Encrypt(a, `code_verify_success`)
	c := Decrypt(b, `code_verify_success`)
	fmt.Println(`原始为`, a)
	fmt.Println(`加密后`, b)
	fmt.Println(`解密后`, c)
}
func TestAesEcbEncrypt(t *testing.T) {
	//aes := AesEcbEncrypt("123456")
	aes := AesEcbEncrypt(fmt.Sprintf("%v_%v", time.Now().Unix(), 1332355333))
	dst := AesEcbDecrypt(aes)
	fmt.Println(aes)
	fmt.Println(dst)
}

// TODO:需要加密的接口
/**
1.合约下单接口            /api/futures/trade/order
2.合约撤单              /api/futures/trade/cancelorder
3.调整保证金           /api/futures/trade/adjustmargin
4.变换逐全仓模式       /api/futures/trade/marginType
5.更改持仓模式(方向)   /api/futures/trade/positionSide/dual
6.资产划转          /api/futures/transfer
*/
func TestAesEcbEncryptOrder(t *testing.T) {
	data := addFutOrderReq{
		OrderType:     1,
		BuyType:       3,
		TriggerDecide: 3,
		IsReduce:      2,
		Coin:          "asdf",
		Price:         "333.23",
		Num:           "23.20",
		TriggerPrice:  "1.023",
		PositionSide:  "long",
	}
	b, _ := json.Marshal(data)
	aes := AesEcbEncrypt(string(b))
	dst := AesEcbDecrypt(aes)
	fmt.Println(aes)
	fmt.Println(dst)
}

type addFutOrderReq struct {
	OrderType     int    `json:"order_type"`     // 订单类型：1限价，2限价止盈止损，3市价,4市价止盈止损,5强平委托(就是限价委托)
	BuyType       int    `json:"buy_type"`       // 买卖类型：1买，2卖
	TriggerDecide int    `json:"trigger_decide"` // 触发条件 1按最新成交价格算，2按标记价格算
	IsReduce      int    `json:"is_reduce"`      // 1是只减仓位(点击仓位列表中的平仓按钮)，0正常
	Coin          string `json:"coin"`           // 交易币
	Price         string `json:"price"`          // 下单价格(限价+止盈止损时，该字段必填)
	Num           string `json:"num"`            // 下单数量(市价时该字段必填)
	TriggerPrice  string `json:"trigger_price"`  // 触发价格
	PositionSide  string `json:"position_side"`  // 持仓方向，单向持仓模式下可填both;在双向持仓模式下必填,且仅可选择 long 或 short
}
