package zxsdk import ( "fmt" wallet "wallet_sdk" "zxsdk/constant" "zxsdk/log" model2 "zxsdk/model" "zxsdk/tools" ) func (zx ZxChainClient) KvSave(kvKey, kvValue, operateId string) error { if kvKey == "" { log.Logger.Errorf("local sdk error: kv key cannot be empty") return constant.KVKEY_CANNOT_BE_EMPTY_ERROR } if kvValue == "" { log.Logger.Errorf("local sdk error: kv value cannot be empty") return constant.KVVALUE_CANNOT_BE_EMPTY_ERROR } if operateId == "" { log.Logger.Errorf("local sdk error: operate id cannot be empty") return constant.OPERATE_ID_CANNOT_BE_EMPTY_ERROR } hash, _ := wallet.SM3Hash([]byte(kvValue)) req := &model2.KvSaveReq{ PublicKey: zx.publicKey, KvKey: zx.addr + "_" + kvKey, KvValue: kvValue, OperateId: operateId, } sign, err := wallet.SignByPriKey(zx.privateKey, tools.GetSignData(req.PublicKey, req.KvKey, hash, req.OperateId)) if err != nil { log.Logger.Errorf("local sdk error: signature kvsave param error: %s", err.Error()) return constant.SIGNATURE_ERROR } req.Sign = sign trigger := tools.HttpTrigger{ Client: tools.DefaultHttpClient, HeaderDic: zx.makeHeader(), } err = trigger.HttpPost(constant.ZxChainBaseUrl+"/api/v1/kv/save", req, nil) if err != nil { log.Logger.TraceErrorf(trigger.HeaderDic[constant.TraceKey], "kv save error: %s", err.Error()) return err } return nil } func (zx ZxChainClient) KvQuery(kvKey string, isNeedValue bool) (*model2.KvQueryResp, error) { if kvKey == "" { log.Logger.Errorf("local sdk error: kv key cannot be empty") return nil, constant.KVKEY_CANNOT_BE_EMPTY_ERROR } trigger := tools.HttpTrigger{ Client: tools.DefaultHttpClient, HeaderDic: zx.makeHeader(), QueryDic: map[string]string{ "kvKey": zx.addr + "_" + kvKey, "isNeedValue": fmt.Sprintf("%v", isNeedValue), }, } resp := &model2.KvQueryResp{} err := trigger.HttpGet(constant.ZxChainBaseUrl+"/api/v1/kv/query", resp) if err != nil { log.Logger.Errorf(trigger.HeaderDic[constant.TraceKey], "kv query error: %s", err.Error()) return nil, err } return resp, nil } func (zx ZxChainClient) GetKvCert(txId string) (string, error) { if txId == "" { log.Logger.Errorf("local sdk error: tx id cannot be empty") return "", constant.TXID_CANNOT_BE_EMPTY_ERROR } return constant.KvCertBaseUrl + txId, nil }