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

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

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