提交 f6310ad3 authored 作者: LJJ's avatar LJJ

根据区块链2.0接口文档进行接口开发

上级 c7bde80a
......@@ -33,5 +33,21 @@ public interface BcUrl {
* 记录批量查询
*/
String FETCH_HISTORY = "/blockchain/fetch/history";
/**
* 文本追加更新
*/
String APPEND_TEXT = "/blockchain/append/text";
/**
* 哈希追加更新
*/
String APPEND_HASH = "/blockchain/append/hash";
/**
* 文本防篡改校验
*/
String VERIFY_TEXT = "/blockchain/verify/text";
/**
* 哈希防篡改校验
*/
String VERIFY_HASH = "/blockchain/verify/text";
}
package com.tykj.dev.blockcha.subject.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author LJJ cnljj1995@gmail.com
* on 2020-11-05
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BcVerify {
/**
* 结果状态码,成功为0
*/
private Integer code;
/**
* 结果状态文字描述
*/
private String info;
/**
* 接口返回结果
*/
private BcVerifyData data;
}
package com.tykj.dev.blockcha.subject.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author LJJ cnljj1995@gmail.com
* on 2020-11-05
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BcVerifyData {
/**
* 状态: ok: 正常; expired:已更新; tampered: 已篡改
*/
private String status;
}
......@@ -15,6 +15,7 @@ public interface BlockChainUtil {
/**
* 获取区块链状态
* ps:白鸟区块链1,0时可用,2.0经测试仍然可用,但不在接口文档中
*
* @return BS
*/
......@@ -22,6 +23,7 @@ public interface BlockChainUtil {
/**
* 业务类型码注册
* ps:白鸟区块链1.0时使用。2.0版本已弃用
*
* @param subName 业务名称,可以是中英文
* @return br
......@@ -41,7 +43,7 @@ public interface BlockChainUtil {
* hash 上链
*
* @param subCode 业务代码编号
* @param content 内容哈希,256bits hex编码。 方法可参考本模块HexUtil
* @param content 内容哈希,256bits hex编码。 方法可参考本模块HexUtil,方法内已转换,直接传入内容即可
* @return bh
*/
BcHash sendHash(Integer subCode, String content);
......@@ -75,4 +77,41 @@ public interface BlockChainUtil {
*/
BcHistory fetchHistory(Map<String, Object> map);
/**
* 文本追加更新
*
* @param content 内容文本,上限为200KB
* @param recordId 本条记录上次上链或追加返回的记录id, 确保顺序追加
* @return bc
*/
BcText appendText(String content, String recordId);
/**
* 哈希追加更新
*
* @param content 内容哈希,256bits hex编码,方法内已转换,直接传入内容即可
* @param recordId 本条记录上次上链或追加返回的记录id, 确保顺序追加
* @return bc
*/
BcHash appendHash(String content, String recordId);
/**
* 哈希防篡改校验
*
* @param content 内容哈希,256bits hex编码,直接传内容即可
* @param recordId 记录id
* @return bc
*/
BcVerify verifyHash(String content, String recordId);
/**
* 文本防篡改校验
*
* @param content 内容文本,上限为200KB
* @param recordId 记录id
* @return bc
*/
BcVerify verifyText(String content, String recordId);
}
......@@ -81,14 +81,10 @@ public class BlockChainUtilImpl implements BlockChainUtil {
@Override
public BcHash sendHash(Integer subCode, String content) {
SortedMap<Object, Object> request = getRequest();
// content=str2HexStr(content);
request.put("content", HexUtil.hex64(content));
request.put("subCode", subCode);
String s = ApiSignatureUtil.getApiSignature(request, SECRET_KEY);
request.put("apiSignature", s);
log.info("[block] 生成的Signature是:{}", s);
return new RestTemplate().postForObject(
BLOCK_CHAIN_URL + BcUrl.SEND_HASH,
request,
......@@ -101,7 +97,6 @@ public class BlockChainUtilImpl implements BlockChainUtil {
SortedMap<Object, Object> request = getRequest();
request.put("recordID", recordId);
request.put("apiSignature", ApiSignatureUtil.getApiSignature(request, SECRET_KEY));
return new RestTemplate().postForObject(
BLOCK_CHAIN_URL + BcUrl.FETCH_RECORD,
request,
......@@ -115,7 +110,6 @@ public class BlockChainUtilImpl implements BlockChainUtil {
SortedMap<Object, Object> request = getRequest();
map.forEach(request::put);
request.put("apiSignature", ApiSignatureUtil.getApiSignature(request, SECRET_KEY));
log.info("{}", request);
return new RestTemplate().postForObject(
BLOCK_CHAIN_URL + BcUrl.FETCH_HISTORY,
request,
......@@ -123,6 +117,66 @@ public class BlockChainUtilImpl implements BlockChainUtil {
);
}
@Override
public BcText appendText(String content, String recordId) {
SortedMap<Object, Object> request = getRequest();
request.put("content", content);
request.put("recordID", recordId);
String s = ApiSignatureUtil.getApiSignature(request, SECRET_KEY);
request.put("apiSignature", s);
return new RestTemplate().postForObject(
BLOCK_CHAIN_URL + BcUrl.APPEND_TEXT,
request,
BcText.class);
}
@Override
public BcHash appendHash(String content, String recordId) {
SortedMap<Object, Object> request = getRequest();
request.put("content", HexUtil.hex64(content));
request.put("recordID", recordId);
String s = ApiSignatureUtil.getApiSignature(request, SECRET_KEY);
request.put("apiSignature", s);
return new RestTemplate().postForObject(
BLOCK_CHAIN_URL + BcUrl.APPEND_HASH,
request,
BcHash.class
);
}
@Override
public BcVerify verifyHash(String content, String recordId) {
SortedMap<Object, Object> request = getRequest();
request.put("content", HexUtil.hex64(content));
request.put("recordID", recordId);
String s = ApiSignatureUtil.getApiSignature(request, SECRET_KEY);
request.put("apiSignature", s);
return new RestTemplate().postForObject(
BLOCK_CHAIN_URL + BcUrl.VERIFY_HASH,
request,
BcVerify.class
);
}
@Override
public BcVerify verifyText(String content, String recordId) {
SortedMap<Object, Object> request = getRequest();
request.put("content", content);
request.put("recordID", recordId);
String s = ApiSignatureUtil.getApiSignature(request, SECRET_KEY);
request.put("apiSignature", s);
return new RestTemplate().postForObject(
BLOCK_CHAIN_URL + BcUrl.VERIFY_TEXT,
request,
BcVerify.class
);
}
/**
* 存储通用参数
*
......
package com.tykj.dev.blockcha.subject.service.impl;
import lombok.extern.slf4j.Slf4j;
/**
* @author LJJ cnljj1995@gmail.com
* on 2020-08-19
*/
@Slf4j
public class HexUtil {
/**
* @param b 字节数组
* @return 16进制字符串
......@@ -97,6 +101,7 @@ public class HexUtil {
try {
return bytes2HexString(strPart.getBytes(tochartype));
} catch (Exception e) {
log.info("[HexUtil] string2HexString方法出错:{}", e.toString());
return "";
}
}
......@@ -164,7 +169,7 @@ public class HexUtil {
return new String(new String(bts, oldchartype).getBytes(), chartype);
}
} catch (Exception e) {
log.info("[HexUtil] hexString2String:{}", e.toString());
return "";
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论