Commit b8308684 authored by wp's avatar wp

拷贝逻辑修改

parent a9215cf4
......@@ -245,7 +245,7 @@
// // log.info("【平行链充值程序】充值交易查询开始,当前确认高度:" + current_height + ",链上高度:" +
// // leastHeight);
// }
// if (current_height >= leastHeight) { // 如果已经确认到最新高度,那么稍等一会再确认
// if (current_height > leastHeight) { // 如果已经确认到最新高度,那么稍等一会再确认
// try {
// Thread.sleep(10 * 1000);
// } catch (InterruptedException ie) {
......@@ -272,7 +272,7 @@
// continue;
// }
//
// // 判断币的类型 COINS
// /*// 判断币的类型 COINS
// if ((adminProperties.getTitle() + CHAIN33_COINS).equals(execer)) {
// log.info("【平行链充值程序】解析到COINS交易,区块高度:{},Hash:{},详情:{}", current_height, txHash,
// JSON.toJSONString(txDetail));
......@@ -301,7 +301,7 @@
// Merchant fromUserAddress = merchantService.queryByAddress(fromAddr, false);
// if (fromUserAddress != null && !StringUtil.isNullOrEmpty(fromUserAddress.getMerchantId())) {
// // 检索提币交易记录的hash是否包含当前hash以及代扣hash
// /*ArrayList<String> hashList = Lists.newArrayList();
// *//*ArrayList<String> hashList = Lists.newArrayList();
// hashList.add(txDetail.getHash());
// String grpTxHash = paraClient.getGrpTxHashFromReal(txDetail.getHash());
// if (!StringUtil.isNullOrEmpty(grpTxHash)) {
......@@ -311,7 +311,7 @@
// if (hashCount <= 0) {
// log.info("【平行链充值程序】-EVM-系统内部非提币交易的Hash,过滤");
// continue;
// }*/
// }*//*
// log.info("【平行链充值程序】-COINS-系统内部提币交易的Hash,过滤");
// }
//
......@@ -321,8 +321,8 @@
//
// merchantAssetsService.updateAssets(toUserAddress.getMerchantId(), toUserAddress.getExternalTokenAddr(),
// txDetail.getAssetType(), amount);
// /*coinService.addUserCoin(toUserAddress.getUid(), 1, txDetail.getAssetType(), 1,
// amount.toPlainString(), 4, fromAddr);*/
// *//*coinService.addUserCoin(toUserAddress.getUid(), 1, txDetail.getAssetType(), 1,
// amount.toPlainString(), 4, fromAddr);*//*
// merchantAssetsFlowService.saveOutRecharge(toUserAddress.getMerchantId(), txDetail.getAssetType(),
// amount, 20, fromAddr);
//
......@@ -340,7 +340,7 @@
// externalTokenTradeService.addTrade(commodityPassId, fromAddr, amount);
//
// // 添加进当前高度的充值集合
// /*TxInfoByBlock txinfo = new TxInfoByBlock();
// *//*TxInfoByBlock txinfo = new TxInfoByBlock();
// txinfo.setFrom(txDetail.getFrom());
// txinfo.setBlocktime(txDetail.getBlocktime() + "");
// txinfo.setHash(txDetail.getHash());
......@@ -352,15 +352,15 @@
// txinfo.setTxIndex(txDetail.getIndex());
// txinfo.setValue(
// txDetail.getAmount().divide(BigDecimal.valueOf(100000000L)).toPlainString());
// list.add(txinfo);*/
// list.add(txinfo);*//*
//
// // 发起转币 ===> 系统账户
// /*String hash = paraClient.localTran(RC4Util.decrypt(toUserAddress.getPrivateKey(), null),
// *//*String hash = paraClient.localTran(RC4Util.decrypt(toUserAddress.getPrivateKey(), null),
// adminProperties.getAddr(),
// (amount.multiply(BigDecimal.valueOf(100000000L))), "", false,
// txDetail.getAssetType(), false);
// log.info("【平行链充值程序】将用户地址的充值资产转入系统账户 UID:{},数量:{},Hash:{}", toUserAddress.getUid(), amount,
// hash);*/
// hash);*//*
//
// }
//
......@@ -393,7 +393,7 @@
// Merchant fromUserAddress = merchantService.queryByAddress(fromAddr, false);
// if (fromUserAddress != null && !StringUtil.isNullOrEmpty(fromUserAddress.getMerchantId())) {
// // 检索提币交易记录的hash是否包含当前hash以及代扣hash
// /*ArrayList<String> hashList = Lists.newArrayList();
// *//*ArrayList<String> hashList = Lists.newArrayList();
// hashList.add(txDetail.getHash());
// String grpTxHash = paraClient.getGrpTxHashFromReal(txDetail.getHash());
// if (!StringUtil.isNullOrEmpty(grpTxHash)) {
......@@ -403,7 +403,7 @@
// if (hashCount <= 0) {
// log.info("【平行链充值程序】-EVM-系统内部非提币交易的Hash,过滤");
// continue;
// }*/
// }*//*
// log.info("【平行链充值程序】-TOKEN-系统内部提币交易的Hash,过滤");
// }
//
......@@ -413,8 +413,8 @@
//
// merchantAssetsService.updateAssets(toUserAddress.getMerchantId(), toUserAddress.getExternalTokenAddr(),
// txDetail.getAssetType(), amount);
// /*coinService.addUserCoin(toUserAddress.getUid(), 1, txDetail.getAssetType(), 1,
// amount.toPlainString(), 4, fromAddr);*/
// *//*coinService.addUserCoin(toUserAddress.getUid(), 1, txDetail.getAssetType(), 1,
// amount.toPlainString(), 4, fromAddr);*//*
// merchantAssetsFlowService.saveOutRecharge(toUserAddress.getMerchantId(), txDetail.getAssetType(),
// amount, 19, fromAddr);
//
......@@ -432,7 +432,7 @@
// externalTokenTradeService.addTrade(commodityPassId, fromAddr, amount);
//
// // 添加进当前高度的充值集合
// /*TxInfoByBlock txinfo = new TxInfoByBlock();
// *//*TxInfoByBlock txinfo = new TxInfoByBlock();
// txinfo.setFrom(txDetail.getFrom());
// txinfo.setBlocktime(txDetail.getBlocktime() + "");
// txinfo.setHash(txDetail.getHash());
......@@ -444,16 +444,16 @@
// txinfo.setTxIndex(txDetail.getIndex());
// txinfo.setValue(
// txDetail.getAmount().divide(BigDecimal.valueOf(100000000L)).toPlainString());
// list.add(txinfo);*/
// list.add(txinfo);*//*
//
// // 发起转币 ===> 系统账户
// /*String hash = paraClient.localTran(RC4Util.decrypt(toUserAddress.getPrivateKey(), null),
// *//*String hash = paraClient.localTran(RC4Util.decrypt(toUserAddress.getPrivateKey(), null),
// adminProperties.getAddr(),
// (amount.multiply(BigDecimal.valueOf(100000000L))), "", true,
// txDetail.getAssetType(), false);
// log.info("【平行链充值程序】将用户地址的充值资产转入系统账户 UID:{},数量:{},Hash:{}", toUserAddress.getUid(), amount,
// hash);*/
// }
// hash);*//*
// }*/
//
// // EVM NFT
// if ((adminProperties.getTitle() + CHAIN33_EVM).equals(execer) &&
......
......@@ -281,10 +281,10 @@ public class SlcRechargeTask {
continue;
}
// TxDetail txDetail = paraClient.queryTxDetailByHash(txHash);
TxDetail txDetail = paraClient.queryTxDetailByHash(txHash);
// System.err.println(txHash);
// System.err.println(paraClient.queryTxDetailByHash(txHash));
TxDetail txDetail = paraClient.evmQueryTxByRealhash(txHash, "1MbJCfsBwEkTJhfbEgQ5ScHYTMPL3Nf8KF", "0xdefc650e", true);
// TxDetail txDetail = paraClient.evmQueryTxByRealhash(txHash, "1MbJCfsBwEkTJhfbEgQ5ScHYTMPL3Nf8KF", "0xdefc650e", true);
log.info("【平行链充值程序】-txDetail:" + txDetail);
if (txDetail == null) {
continue;
......@@ -565,7 +565,7 @@ public class SlcRechargeTask {
// 转给商户
if (toMerchant != null) {
for (int i = 0; i < txDetail.getTokenIds().length; i++) {
/*for (int i = 0; i < txDetail.getTokenIds().length; i++) {
merchantAssetsService.updateAssets(toMerchant.getMerchantId(), toMerchant.getTokenIssueAddr(),
chainUtil.getGoodsAttribute(txDetail.getTokenIds()[i], toAddr)[6], new BigDecimal(txDetail.getAmounts()[i]));
merchantAssetsFlowService.saveOutRecharge(toMerchant.getMerchantId(), chainUtil.getGoodsAttribute(txDetail.getTokenIds()[i], toAddr)[6],
......@@ -592,7 +592,36 @@ public class SlcRechargeTask {
commodityPassId = UUIDUtil.getUUID();
}
externalTokenTradeService.addTrade(commodityPassId, fromAddr, new BigDecimal(txDetail.getAmounts()[i]));
}*/
merchantAssetsService.updateAssets(toMerchant.getMerchantId(), toMerchant.getTokenIssueAddr(),
"NFT-" + txDetail.getTokenId(), amount);
/*coinService.addUserCoin(toUserAddress.getUid(), 1, txDetail.getAssetType(), 1,
amount.toPlainString(), 4, fromAddr);*/
merchantAssetsFlowService.saveOutRecharge(toMerchant.getMerchantId(), "NFT-" + txDetail.getTokenId(),
amount, 18, fromAddr);
log.info("【平行链充值程序】解析到一条充值记录,UID:{},资产类型:{},数量:{}", toMerchant.getMerchantId(),
txDetail.getTokenId(), amount);
externalTokenService.addToken(toMerchant.getMerchantId(),
"NFT-" + txDetail.getTokenId(),
txDetail.getTokenId(),
0,
"",
amount,
3,
0L,
""
);
ExternalToken externalToken = externalTokenService.queryByLabelNameAndMerchantId("NFT-" + txDetail.getTokenId(), toMerchant.getMerchantId());
String commodityPassId;
if (externalToken != null) {
commodityPassId = externalToken.getCommodityPassId();
} else {
commodityPassId = UUIDUtil.getUUID();
}
externalTokenTradeService.addTrade(commodityPassId, fromAddr, amount);
}
// 转给用户
......
......@@ -3,6 +3,7 @@ package com.fzm.mall.server.admin.goods_center.model;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -19,7 +20,7 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("goods_sku_usufruct")
@ApiModel(value="GoodsSkuUsufruct对象", description="使用权")
@ApiModel(value = "GoodsSkuUsufruct对象", description = "使用权")
public class GoodsSkuUsufruct implements Serializable {
private static final long serialVersionUID = 1L;
......@@ -33,6 +34,12 @@ public class GoodsSkuUsufruct implements Serializable {
@ApiModelProperty(value = "序列号")
private String serialNo;
@ApiModelProperty(value = "外部通证编号")
private String commodityPassId;
@ApiModelProperty(value = "商户号")
private String merchantId;
@ApiModelProperty(value = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Long createTime;
......
......@@ -117,13 +117,13 @@ public class ExternalTokenServiceImpl extends ServiceImpl<ExternalTokenMapper, E
externalToken.setPublishTime(publishTime);
externalToken.setPublisher(publisher);
Map<String, Object> map = new HashMap<>();
/*Map<String, Object> map = new HashMap<>();
map.put("tokenId", tokenId);
String httpGet = HttpUtil.httpGet(url, map);
JSONObject json = JSONObject.parseObject(httpGet);
if (json.getString("code").equals("200")) {
externalToken.setHash(json.getString("data"));
}
}*/
//TODO 唐拓接口
save(externalToken);
}
......
......@@ -87,6 +87,7 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
sku.setSkuId(skuId);
sku.setGoodsId(goodsId);
sku.setCoinName(coinName);
sku.setCirculation(kDTO.getStock());
if (commodityPass.equals(1) && !pDTOType.equals(6)) {
//发行商品币
......@@ -124,16 +125,16 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
if (kDTO.getNftSalesType().equals(2)) {
//发行NFT
System.err.println(kDTO.getCoinName());
ExternalToken externalToken = externalTokenService.queryByLabelNameAndMerchantId(kDTO.getCoinName(), merchantId);
String tokenId = externalToken.getTokenId().toString();
long[] nos = new long[Math.toIntExact(kDTO.getStock() + 1)];
long[] nos = new long[Math.toIntExact(kDTO.getStock())];
String[] hashs = new String[Math.toIntExact(kDTO.getStock())];
nos[0] = 0;
for (int i = 0; i < kDTO.getStock(); i++) {
String hash = chainUtil.evmPublishTokenSplit(merchant.getTokenIssueAddr(), Long.parseLong(tokenId + (i + 1)), 1L);
nos[i + 1] = 1;
String suffix = i + 1 + "";
Long suffixAll = Long.parseLong(tokenId + "00000000".substring(0, 8 - suffix.length()) + suffix);
String hash = chainUtil.evmPublishTokenSplit(merchant.getTokenIssueAddr(), Long.parseLong(tokenId + suffixAll), 1L);
nos[i] = suffixAll;
hashs[i] = hash;
}
......@@ -141,6 +142,8 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
map.put("goodsId", goodsId);
map.put("hashs", hashs);
map.put("prefix", tokenId);
map.put("merchantId", merchantId);
map.put("commodityPassId", externalToken.getCommodityPassId());
map.put("nos", JSONArray.toJSON(nos));
producer.sendTTL(map, QueueTTLTypeEnum.NFT_USU_TTL, 10 * 1000);
}
......@@ -167,6 +170,7 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
Long oldStock = one.getStock();
one.setOriginalPrice(kDTO.getOriginalPrice());
one.setStock(kDTO.getStock());
one.setCirculation(one.getCirculation() + kDTO.getStock() - oldStock);
one.setWeight(kDTO.getWeight());
skus.add(one);
......@@ -298,23 +302,24 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
if (kDTO.getNftSalesType().equals(2)) {
//发行NFT
ExternalToken externalToken = externalTokenService.queryByLabelNameAndMerchantId(kDTO.getCoinName(), merchantId);
String tokenId = externalToken.getTokenId().toString();
long[] nos = new long[Math.toIntExact(kDTO.getStock() + 1)];
long[] nos = new long[Math.toIntExact(kDTO.getStock())];
String[] hashs = new String[Math.toIntExact(kDTO.getStock())];
nos[0] = 0;
for (int i = 0; i < kDTO.getStock(); i++) {
long balance = chainUtil.evmBalance(merchant.getTokenIssueAddr(), Long.parseLong(tokenId + (i + 1)));
if (balance != 0) {
String hash = chainUtil.evmPublishTokenSplit(merchant.getTokenIssueAddr(), Long.parseLong(tokenId + (i + 1)), 1L);
hashs[i] = hash;
}
nos[i + 1] = 1;
String suffix = i + 1 + "";
Long suffixAll = Long.parseLong(tokenId + "00000000".substring(0, 8 - suffix.length()) + suffix);
String hash = chainUtil.evmPublishTokenSplit(merchant.getTokenIssueAddr(), Long.parseLong(tokenId + suffixAll), 1L);
nos[i] = suffixAll;
hashs[i] = hash;
}
Map<String, Object> map = new HashMap<>();
map.put("goodsId", goodsId);
map.put("hashs", hashs);
map.put("prefix", tokenId);
map.put("merchantId", merchantId);
map.put("commodityPassId", externalToken.getCommodityPassId());
map.put("nos", JSONArray.toJSON(nos));
producer.sendTTL(map, QueueTTLTypeEnum.NFT_USU_TTL, 10 * 1000);
}
......
......@@ -63,6 +63,8 @@ public class NftConsumer {
String[] hashs = (String[]) obj.get("hashs");
String prefix = obj.get("prefix") + "";
String nos = obj.get("nos") + "";
String merchantId = obj.get("merchantId") + "";
String commodityPassId = obj.get("commodityPassId") + "";
System.err.println("obj:" + obj);
int length = hashs.length;
......@@ -87,6 +89,8 @@ public class NftConsumer {
GoodsSkuUsufruct goodsSkuUsufruct = new GoodsSkuUsufruct();
goodsSkuUsufruct.setPrefix(prefix);
goodsSkuUsufruct.setSerialNo(nos.toString());
goodsSkuUsufruct.setCommodityPassId(commodityPassId);
goodsSkuUsufruct.setMerchantId(merchantId);
goodsSkuUsufructService.save(goodsSkuUsufruct);
}
}
......
......@@ -7,6 +7,8 @@
<id column="id" property="id" />
<result column="prefix" property="prefix" />
<result column="serial_no" property="serialNo" />
<result column="commodity_pass_id" property="commodityPassId" />
<result column="merchant_id" property="merchantId" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
</resultMap>
......
......@@ -15,6 +15,9 @@ import org.springframework.web.bind.annotation.RestController;
*/
@RestController
@RequestMapping("/shop-navigation")
public class ShopNavigationController {
public class
ShopNavigationController {
}
......@@ -2500,3 +2500,14 @@ ALTER TABLE `external_token`
ALTER TABLE `external_token`
ADD COLUMN `publisher` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '发行者';
ALTER TABLE `goods_spu` MODIFY `traceability_number` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '溯源编号';
CREATE TABLE `goods_sku_usufruct` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`prefix` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '使用权前缀',
`serial_no` json DEFAULT NULL COMMENT '序列号',
`create_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',
`commodity_pass_id` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '编号',
`merchant_id` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '商户号',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=103 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='使用权';
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment