Commit f1865d72 authored by 秦兴亮's avatar 秦兴亮

最新代码

parent 5d85b2b6
......@@ -62,4 +62,8 @@ public class UserAsset implements Serializable {
@ApiModelProperty(value = "库存总价")
@TableField(exist = false)
private BigDecimal totalPrice;
@ApiModelProperty(value = "商品币对于skuId")
private String goodsCoin;
}
......@@ -23,4 +23,7 @@ public interface GoodSpuMapper extends BaseMapper<GoodSpu> {
@Select("select a.commodity_pass from goods_spu a left join goods_sku b on a.goods_id = b.goods_id where b.sku_id = #{skuId} ")
int getCommodityBySkuId(@Param("skuId") String skuId);
@Select("select nft_sales_type from goods_sku where sku_id = #{skuId} ")
int getNftSalesType(@Param("skuId") String skuId);
}
package com.fzm.mall.server.front.goods.mapper;
import com.alibaba.fastjson.JSON;
import com.fzm.mall.server.front.goods.model.Sku;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fzm.mall.server.front.goods.model.vo.SkuVo;
import com.fzm.mall.server.front.order.model.vo.ShopInfoVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
......@@ -38,4 +40,13 @@ public interface SkuMapper extends BaseMapper<Sku> {
@Select("select token_id from external_token where label_name = #{coin} limit 1")
Long getTrueCoin(@Param("coin") String coin);
@Select("select token_id from goods_sku a left join external_token b on a.commodity_pass_id = b.commodity_pass_id where a.sku_id = #{skuId}")
Long getTokenId(@Param("skuId") String skuId);
@Select("select serial_no from goods_sku_usufruct where commodity_pass_id = #{commodity_pass_id}")
String getSerialNo(@Param("commodity_pass_id") String tokenId);
@Update("update goods_sku_usufruct set serial_no = #{toJSONString} where commodity_pass_id = #{commodityPassId}")
void updateSerialNo(@Param("toJSONString") String toJSONString, @Param("commodityPassId") String commodityPassId);
}
......@@ -64,4 +64,6 @@ public class SkuVo {
private Integer type;
private String commodityPassId;
}
......@@ -17,4 +17,6 @@ public interface IGoodSpuService extends IService<GoodSpu> {
String getTemplateIdByGoodsId(String goodsId);
int getCommodityBySkuId(String skuId);
int getNftSalesType(String skuId);
}
package com.fzm.mall.server.front.goods.service;
import com.alibaba.fastjson.JSON;
import com.fzm.mall.server.front.goods.model.Sku;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fzm.mall.server.front.goods.model.vo.SkuVo;
......@@ -34,4 +35,10 @@ public interface ISkuService extends IService<Sku> {
Boolean checkOrder(OrderVo orderVo);
Long getTrueCoin(String coin);
Long getTokenId(String skuId);
String getSerialNo(String tokenId);
void updateSerialNo(String toJSONString,String commodityPassId);
}
......@@ -54,4 +54,9 @@ public class GoodSpuServiceImpl extends ServiceImpl<GoodSpuMapper, GoodSpu> impl
return goodSpuMapper.getCommodityBySkuId(skuId);
}
@Override
public int getNftSalesType(String skuId) {
return goodSpuMapper.getNftSalesType(skuId);
}
}
package com.fzm.mall.server.front.goods.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzm.mall.server.front.goods.model.Sku;
......@@ -80,6 +81,21 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
return skuMapper.getTrueCoin(coin);
}
@Override
public Long getTokenId(String skuId) {
return skuMapper.getTokenId(skuId);
}
@Override
public String getSerialNo(String tokenId) {
return skuMapper.getSerialNo(tokenId);
}
@Override
public void updateSerialNo(String toJSONString,String commodityPassId) {
skuMapper.updateSerialNo(toJSONString,commodityPassId);
}
private boolean checkMerchantIdAndSkuId(String merchantId, String skuId) {
SkuVo skuVo = skuMapper.getBySkuId(skuId);
if(merchantId.equals(skuVo.getMerchantId())){
......
......@@ -107,4 +107,6 @@ public class Delivery implements Serializable {
@ApiModelProperty(value = "邮费")
private BigDecimal postFee;
private String serialNo;
}
......@@ -88,4 +88,6 @@ public class OrderDetail implements Serializable {
@ApiModelProperty(value = "店铺名称")
@TableField(exist = false)
private String shopName;
private String serialNo;
}
......@@ -319,12 +319,36 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
if (i != 1) {
throw new RuntimeException("库存不足!!!");
}
//统计每家店对应商品数量
merchantGoodSize = merchantGoodSize + orderSkuVo.getNum();
//统计每家店对应商品重量
//merchantGoodWeight = merchantGoodWeight.add(skuVo.getWeight().multiply(new BigDecimal(orderSkuVo.getNum())));
templateId = skuVo.getTemplateId();
OrderDetail orderDetail = new OrderDetail();
int commodity = spuService.getCommodityBySkuId(orderSkuVo.getSkuId());
if(commodity == 3){
int saleType = spuService.getNftSalesType(orderSkuVo.getSkuId());
if(saleType == 2){
String serialNo = skuService.getSerialNo(skuVo.getCommodityPassId());
JSONArray array = JSON.parseArray(serialNo);
if(array.size()<orderSkuVo.getNum()){
throw new RuntimeException("库存不足!!!");
}
int index = 1;
List<String> list = new ArrayList<>();
for (Object o:array) {
if(index<=orderSkuVo.getNum()){
list.add(o.toString());
}else{
break;
}
}
array.remove(list);
skuService.updateSerialNo(JSON.toJSONString(array),skuVo.getCommodityPassId());
orderDetail.setSerialNo(JSON.toJSONString(list));
}
}
orderDetail.setOid(order.getOid());
orderDetail.setGoodsId(skuVo.getGoodsId());
orderDetail.setSkuId(skuVo.getSkuId());
......@@ -407,7 +431,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
pay.setTotal(all);
pay.setPaidAmount(BigDecimal.ZERO);
pay.setUnpaidAmount(all);
pay.setPayType(0);
pay.setPayType(4);
pay.setOidsJson(a.toJSONString());
payService.save(pay);
return pay.getPayId();
......@@ -659,122 +683,475 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
if (order.getDelivery() == 0) {
for (OrderDetail orderDetail : details) {
SkuVo skuVo = skuService.getBySkuId(orderDetail.getSkuId());
//打币
UserAsset coin = userAssetService.getCoin(order.getUid(), orderDetail.getCoin());
if (coin == null) {
coin = new UserAsset();
coin.setCoin(orderDetail.getCoin());
coin.setAmount(new BigDecimal(orderDetail.getNumber()));
coin.setUid(order.getUid());
coin.setType(1);
userAssetService.save(coin);
} else {
userAssetService.addCoin(coin.getId(), new BigDecimal(orderDetail.getNumber()));
}
log.error("skuVo+++"+skuVo.toString());
//String hash = paraChainUtil.evmTransfer(, null, user.getAddress(), , orderDetail.getCoin());
//String replace = orderDetail.getCoin().replace(MALLGlobalConfig.GOODS_NFT_PREFIX,"");
String hash = tranCoinAndNft(skuVo.getSkuId(),m.getTokenIssueAddr(),user.getAddress(),new BigDecimal(orderDetail.getNumber()),skuVo.getType(),orderDetail.getCoin());
int commodity = spuService.getCommodityBySkuId(orderDetail.getSkuId());
if(commodity == 1){
//打币
UserAsset coin = userAssetService.getCoin(order.getUid(), orderDetail.getCoin());
if (coin == null) {
coin = new UserAsset();
coin.setCoin(orderDetail.getCoin());
coin.setAmount(new BigDecimal(orderDetail.getNumber()));
coin.setUid(order.getUid());
coin.setType(1);
coin.setGoodsCoin(orderDetail.getCoin());
userAssetService.save(coin);
} else {
userAssetService.addCoin(coin.getId(), new BigDecimal(orderDetail.getNumber()));
}
String coinName = orderDetail.getCoin().replace(MALLGlobalConfig.GOODS_NFT_PREFIX, "");
String hash = chainUtil.tranToken(m.getTokenIssueAddr(),"",user.getAddress(),new BigDecimal(orderDetail.getNumber()),coinName);
UserAssetRecord userAssetRecord = new UserAssetRecord();
userAssetRecord.setUid(order.getUid());
userAssetRecord.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord.setCoin(orderDetail.getCoin());
userAssetRecord.setFlowId(OrderUtil.getFlowId());
userAssetRecord.setType(12);
userAssetRecord.setStatus(2);
userAssetRecord.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord);
//加销量
countService.addSale(orderDetail.getGoodsId(), orderDetail.getNumber());
goodSkuService.addSales(orderDetail.getSkuId(), orderDetail.getNumber());
//转币
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
tranDto.setDelivery(order.getDelivery() == 1);
tranDto.setRecoAddr("");
tranDto.setPrice(orderDetail.getAmount());
tranDto.setUpdateTime(System.currentTimeMillis());
log.error(JSONObject.toJSONString(tranDto));
msgProducer.sendTTL(JSONObject.toJSONString(tranDto), QueueTTLTypeEnum.CONFIRM_WITHDRAW_TTL, 5 * 1000);
}else if(commodity == 2){
//打币
UserAsset coin = userAssetService.getCoin(order.getUid(), orderDetail.getCoin());
if (coin == null) {
coin = new UserAsset();
coin.setCoin(orderDetail.getCoin());
coin.setAmount(new BigDecimal(orderDetail.getNumber()));
coin.setUid(order.getUid());
coin.setType(1);
coin.setGoodsCoin(orderDetail.getCoin());
userAssetService.save(coin);
} else {
userAssetService.addCoin(coin.getId(), new BigDecimal(orderDetail.getNumber()));
}
String coinName = orderDetail.getCoin().replace(MALLGlobalConfig.GOODS_NFT_PREFIX, "");
String hash = chainUtil.tranToken(m.getTokenIssueAddr(),"",user.getAddress(),new BigDecimal(orderDetail.getNumber()),coinName);
UserAssetRecord userAssetRecord = new UserAssetRecord();
userAssetRecord.setUid(order.getUid());
userAssetRecord.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord.setCoin(orderDetail.getCoin());
userAssetRecord.setFlowId(OrderUtil.getFlowId());
userAssetRecord.setType(12);
userAssetRecord.setStatus(2);
userAssetRecord.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord);
//加销量
countService.addSale(orderDetail.getGoodsId(), orderDetail.getNumber());
goodSkuService.addSales(orderDetail.getSkuId(), orderDetail.getNumber());
//转币
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
tranDto.setDelivery(order.getDelivery() == 1);
tranDto.setRecoAddr("");
tranDto.setPrice(orderDetail.getAmount());
tranDto.setUpdateTime(System.currentTimeMillis());
log.error(JSONObject.toJSONString(tranDto));
msgProducer.sendTTL(JSONObject.toJSONString(tranDto), QueueTTLTypeEnum.CONFIRM_WITHDRAW_TTL, 5 * 1000);
}else if(commodity == 3){
int saleType = spuService.getNftSalesType(orderDetail.getSkuId());
if(saleType ==1){
//打币
UserAsset coin = userAssetService.getCoin(order.getUid(), orderDetail.getCoin());
if (coin == null) {
coin = new UserAsset();
coin.setCoin(orderDetail.getCoin());
coin.setAmount(new BigDecimal(orderDetail.getNumber()));
coin.setUid(order.getUid());
coin.setType(1);
coin.setGoodsCoin(orderDetail.getCoin());
userAssetService.save(coin);
} else {
userAssetService.addCoin(coin.getId(), new BigDecimal(orderDetail.getNumber()));
}
String hash = chainUtil.evmTransfer(user.getAddress(),m.getTokenIssueAddr(),Long.valueOf(orderDetail.getCoin()),orderDetail.getAmount().longValue());
UserAssetRecord userAssetRecord = new UserAssetRecord();
userAssetRecord.setUid(order.getUid());
userAssetRecord.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord.setCoin(orderDetail.getCoin());
userAssetRecord.setFlowId(OrderUtil.getFlowId());
userAssetRecord.setType(12);
userAssetRecord.setStatus(2);
userAssetRecord.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord);
//加销量
countService.addSale(orderDetail.getGoodsId(), orderDetail.getNumber());
goodSkuService.addSales(orderDetail.getSkuId(), orderDetail.getNumber());
//转币
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
tranDto.setDelivery(order.getDelivery() == 1);
tranDto.setRecoAddr("");
tranDto.setPrice(orderDetail.getAmount());
tranDto.setUpdateTime(System.currentTimeMillis());
log.error(JSONObject.toJSONString(tranDto));
msgProducer.sendTTL(JSONObject.toJSONString(tranDto), QueueTTLTypeEnum.CONFIRM_WITHDRAW_TTL, 5 * 1000);
}else{
String json = orderDetail.getSerialNo();
JSONArray array = JSON.parseArray(json);
for (Object o:array) {
//打币
UserAsset coin = userAssetService.getCoin(order.getUid(), o.toString());
if (coin == null) {
coin = new UserAsset();
coin.setCoin(orderDetail.getCoin());
coin.setAmount(new BigDecimal(orderDetail.getNumber()));
coin.setUid(order.getUid());
coin.setType(1);
coin.setGoodsCoin(orderDetail.getCoin());
userAssetService.save(coin);
} else {
userAssetService.addCoin(coin.getId(), new BigDecimal(orderDetail.getNumber()));
}
String hash = chainUtil.evmTransfer(user.getAddress(),m.getTokenIssueAddr(),Long.valueOf(o.toString()),1);
UserAssetRecord userAssetRecord = new UserAssetRecord();
userAssetRecord.setUid(order.getUid());
userAssetRecord.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord.setCoin(orderDetail.getCoin());
userAssetRecord.setFlowId(OrderUtil.getFlowId());
userAssetRecord.setType(12);
userAssetRecord.setStatus(2);
userAssetRecord.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord);
//加销量
countService.addSale(orderDetail.getGoodsId(), orderDetail.getNumber());
goodSkuService.addSales(orderDetail.getSkuId(), orderDetail.getNumber());
//转币
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
tranDto.setDelivery(order.getDelivery() == 1);
tranDto.setRecoAddr("");
tranDto.setPrice(orderDetail.getAmount());
tranDto.setUpdateTime(System.currentTimeMillis());
log.error(JSONObject.toJSONString(tranDto));
msgProducer.sendTTL(JSONObject.toJSONString(tranDto), QueueTTLTypeEnum.CONFIRM_WITHDRAW_TTL, 5 * 1000);
}
}
}
//String hash = tranCoinAndNft(skuVo.getSkuId(),m.getTokenIssueAddr(),user.getAddress(),new BigDecimal(orderDetail.getNumber()),skuVo.getType(),orderDetail.getCoin());
//记录
UserAssetRecord userAssetRecord = new UserAssetRecord();
userAssetRecord.setUid(order.getUid());
userAssetRecord.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord.setCoin(orderDetail.getCoin());
userAssetRecord.setFlowId(OrderUtil.getFlowId());
userAssetRecord.setType(12);
userAssetRecord.setStatus(2);
userAssetRecord.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord);
//加销量
countService.addSale(orderDetail.getGoodsId(), orderDetail.getNumber());
goodSkuService.addSales(orderDetail.getSkuId(), orderDetail.getNumber());
//转币
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
tranDto.setDelivery(order.getDelivery() == 1);
tranDto.setRecoAddr("");
tranDto.setPrice(orderDetail.getAmount());
tranDto.setUpdateTime(System.currentTimeMillis());
log.error(JSONObject.toJSONString(tranDto));
msgProducer.sendTTL(JSONObject.toJSONString(tranDto), QueueTTLTypeEnum.CONFIRM_WITHDRAW_TTL, 5 * 1000);
}
} else {
Collection<Delivery> list = new ArrayList<>();
for (OrderDetail orderDetail : details) {
//打币
SkuVo skuVo = skuService.getBySkuId(orderDetail.getSkuId());
String hash = tranCoinAndNft(skuVo.getSkuId(),m.getTokenIssueAddr(),user.getAddress(),new BigDecimal(orderDetail.getNumber()),skuVo.getType(),orderDetail.getCoin());
UserAsset coin = userAssetService.getCoin(order.getUid(), orderDetail.getCoin());
if (coin == null) {
coin = new UserAsset();
coin.setCoin(orderDetail.getCoin());
coin.setFrozen(new BigDecimal(orderDetail.getNumber()));
coin.setUid(order.getUid());
coin.setType(1);
userAssetService.save(coin);
} else {
userAssetService.addUserfrozenAsset(coin.getId(), new BigDecimal(orderDetail.getNumber()));
int commodity = spuService.getCommodityBySkuId(orderDetail.getSkuId());
if(commodity == 1){
//打币
UserAsset coin = userAssetService.getCoin(order.getUid(), orderDetail.getCoin());
if (coin == null) {
coin = new UserAsset();
coin.setCoin(orderDetail.getCoin());
coin.setAmount(new BigDecimal(orderDetail.getNumber()));
coin.setUid(order.getUid());
coin.setType(1);
coin.setGoodsCoin(orderDetail.getCoin());
userAssetService.save(coin);
} else {
userAssetService.addCoin(coin.getId(), new BigDecimal(orderDetail.getNumber()));
}
String coinName = orderDetail.getCoin().replace(MALLGlobalConfig.GOODS_NFT_PREFIX, "");
String hash = chainUtil.tranToken(m.getTokenIssueAddr(),"",user.getAddress(),new BigDecimal(orderDetail.getNumber()),coinName);
UserAssetRecord userAssetRecord = new UserAssetRecord();
userAssetRecord.setUid(order.getUid());
userAssetRecord.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord.setCoin(orderDetail.getCoin());
userAssetRecord.setFlowId(OrderUtil.getFlowId());
userAssetRecord.setType(12);
userAssetRecord.setStatus(2);
userAssetRecord.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord);
//加销量
countService.addSale(orderDetail.getGoodsId(), orderDetail.getNumber());
goodSkuService.addSales(orderDetail.getSkuId(), orderDetail.getNumber());
//转币
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
tranDto.setDelivery(order.getDelivery() == 1);
tranDto.setRecoAddr("");
tranDto.setPrice(orderDetail.getAmount());
tranDto.setUpdateTime(System.currentTimeMillis());
log.error(JSONObject.toJSONString(tranDto));
msgProducer.sendTTL(JSONObject.toJSONString(tranDto), QueueTTLTypeEnum.CONFIRM_WITHDRAW_TTL, 5 * 1000);
//提货
UserAssetRecord userAssetRecord2 = new UserAssetRecord();
userAssetRecord2.setUid(order.getUid());
userAssetRecord2.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord2.setCoin(orderDetail.getCoin());
userAssetRecord2.setFlowId(OrderUtil.getFlowId());
userAssetRecord2.setType(18);
userAssetRecord2.setStatus(2);
userAssetRecord2.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord2);
Delivery delivery = new Delivery();
delivery.setOrderDeliveryId(OrderUtil.getDeliveryId());
delivery.setUid(order.getUid());
delivery.setMerchantId(order.getMerchantId());
delivery.setGoodsId(orderDetail.getGoodsId());
delivery.setSkuId(orderDetail.getSkuId());
delivery.setCoin(orderDetail.getCoin());
delivery.setName(orderDetail.getName());
delivery.setNumber(orderDetail.getNumber());
delivery.setUname(order.getUname());
delivery.setPhone(order.getPhone());
delivery.setAddress(order.getAddress());
delivery.setNote(orderDetail.getNote());
delivery.setDeliveryState(0);
list.add(delivery);
}else if(commodity == 2){
//打币
UserAsset coin = userAssetService.getCoin(order.getUid(), orderDetail.getCoin());
if (coin == null) {
coin = new UserAsset();
coin.setCoin(orderDetail.getCoin());
coin.setAmount(new BigDecimal(orderDetail.getNumber()));
coin.setUid(order.getUid());
coin.setType(1);
coin.setGoodsCoin(orderDetail.getCoin());
userAssetService.save(coin);
} else {
userAssetService.addCoin(coin.getId(), new BigDecimal(orderDetail.getNumber()));
}
String coinName = orderDetail.getCoin().replace(MALLGlobalConfig.GOODS_NFT_PREFIX, "");
String hash = chainUtil.tranToken(m.getTokenIssueAddr(),"",user.getAddress(),new BigDecimal(orderDetail.getNumber()),coinName);
UserAssetRecord userAssetRecord = new UserAssetRecord();
userAssetRecord.setUid(order.getUid());
userAssetRecord.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord.setCoin(orderDetail.getCoin());
userAssetRecord.setFlowId(OrderUtil.getFlowId());
userAssetRecord.setType(12);
userAssetRecord.setStatus(2);
userAssetRecord.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord);
//加销量
countService.addSale(orderDetail.getGoodsId(), orderDetail.getNumber());
goodSkuService.addSales(orderDetail.getSkuId(), orderDetail.getNumber());
//转币
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
tranDto.setDelivery(order.getDelivery() == 1);
tranDto.setRecoAddr("");
tranDto.setPrice(orderDetail.getAmount());
tranDto.setUpdateTime(System.currentTimeMillis());
log.error(JSONObject.toJSONString(tranDto));
msgProducer.sendTTL(JSONObject.toJSONString(tranDto), QueueTTLTypeEnum.CONFIRM_WITHDRAW_TTL, 5 * 1000);
//提货
UserAssetRecord userAssetRecord2 = new UserAssetRecord();
userAssetRecord2.setUid(order.getUid());
userAssetRecord2.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord2.setCoin(orderDetail.getCoin());
userAssetRecord2.setFlowId(OrderUtil.getFlowId());
userAssetRecord2.setType(18);
userAssetRecord2.setStatus(2);
userAssetRecord2.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord2);
Delivery delivery = new Delivery();
delivery.setOrderDeliveryId(OrderUtil.getDeliveryId());
delivery.setUid(order.getUid());
delivery.setMerchantId(order.getMerchantId());
delivery.setGoodsId(orderDetail.getGoodsId());
delivery.setSkuId(orderDetail.getSkuId());
delivery.setCoin(orderDetail.getCoin());
delivery.setName(orderDetail.getName());
delivery.setNumber(orderDetail.getNumber());
delivery.setUname(order.getUname());
delivery.setPhone(order.getPhone());
delivery.setAddress(order.getAddress());
delivery.setNote(orderDetail.getNote());
delivery.setDeliveryState(0);
list.add(delivery);
}else if(commodity == 3){
int saleType = spuService.getNftSalesType(orderDetail.getSkuId());
if(saleType ==1){
//打币
UserAsset coin = userAssetService.getCoin(order.getUid(), orderDetail.getCoin());
if (coin == null) {
coin = new UserAsset();
coin.setCoin(orderDetail.getCoin());
coin.setAmount(new BigDecimal(orderDetail.getNumber()));
coin.setUid(order.getUid());
coin.setType(1);
coin.setGoodsCoin(orderDetail.getCoin());
userAssetService.save(coin);
} else {
userAssetService.addCoin(coin.getId(), new BigDecimal(orderDetail.getNumber()));
}
String hash = chainUtil.evmTransfer(user.getAddress(),m.getTokenIssueAddr(),Long.valueOf(orderDetail.getCoin()),orderDetail.getAmount().longValue());
UserAssetRecord userAssetRecord = new UserAssetRecord();
userAssetRecord.setUid(order.getUid());
userAssetRecord.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord.setCoin(orderDetail.getCoin());
userAssetRecord.setFlowId(OrderUtil.getFlowId());
userAssetRecord.setType(12);
userAssetRecord.setStatus(2);
userAssetRecord.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord);
//加销量
countService.addSale(orderDetail.getGoodsId(), orderDetail.getNumber());
goodSkuService.addSales(orderDetail.getSkuId(), orderDetail.getNumber());
//转币
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
tranDto.setDelivery(order.getDelivery() == 1);
tranDto.setRecoAddr("");
tranDto.setPrice(orderDetail.getAmount());
tranDto.setUpdateTime(System.currentTimeMillis());
log.error(JSONObject.toJSONString(tranDto));
msgProducer.sendTTL(JSONObject.toJSONString(tranDto), QueueTTLTypeEnum.CONFIRM_WITHDRAW_TTL, 5 * 1000);
//提货
UserAssetRecord userAssetRecord2 = new UserAssetRecord();
userAssetRecord2.setUid(order.getUid());
userAssetRecord2.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord2.setCoin(orderDetail.getCoin());
userAssetRecord2.setFlowId(OrderUtil.getFlowId());
userAssetRecord2.setType(18);
userAssetRecord2.setStatus(2);
userAssetRecord2.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord2);
Delivery delivery = new Delivery();
delivery.setOrderDeliveryId(OrderUtil.getDeliveryId());
delivery.setUid(order.getUid());
delivery.setMerchantId(order.getMerchantId());
delivery.setGoodsId(orderDetail.getGoodsId());
delivery.setSkuId(orderDetail.getSkuId());
delivery.setCoin(orderDetail.getCoin());
delivery.setName(orderDetail.getName());
delivery.setNumber(orderDetail.getNumber());
delivery.setUname(order.getUname());
delivery.setPhone(order.getPhone());
delivery.setAddress(order.getAddress());
delivery.setNote(orderDetail.getNote());
delivery.setDeliveryState(0);
list.add(delivery);
}else{
String json = orderDetail.getSerialNo();
JSONArray array = JSON.parseArray(json);
for (Object o:array) {
//打币
UserAsset coin = userAssetService.getCoin(order.getUid(), o.toString());
if (coin == null) {
coin = new UserAsset();
coin.setCoin(orderDetail.getCoin());
coin.setAmount(new BigDecimal(orderDetail.getNumber()));
coin.setUid(order.getUid());
coin.setType(1);
coin.setGoodsCoin(orderDetail.getCoin());
userAssetService.save(coin);
} else {
userAssetService.addCoin(coin.getId(), new BigDecimal(orderDetail.getNumber()));
}
String hash = chainUtil.evmTransfer(user.getAddress(),m.getTokenIssueAddr(),Long.valueOf(o.toString()),1);
UserAssetRecord userAssetRecord = new UserAssetRecord();
userAssetRecord.setUid(order.getUid());
userAssetRecord.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord.setCoin(orderDetail.getCoin());
userAssetRecord.setFlowId(OrderUtil.getFlowId());
userAssetRecord.setType(12);
userAssetRecord.setStatus(2);
userAssetRecord.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord);
//加销量
countService.addSale(orderDetail.getGoodsId(), orderDetail.getNumber());
goodSkuService.addSales(orderDetail.getSkuId(), orderDetail.getNumber());
//转币
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
tranDto.setDelivery(order.getDelivery() == 1);
tranDto.setRecoAddr("");
tranDto.setPrice(orderDetail.getAmount());
tranDto.setUpdateTime(System.currentTimeMillis());
log.error(JSONObject.toJSONString(tranDto));
msgProducer.sendTTL(JSONObject.toJSONString(tranDto), QueueTTLTypeEnum.CONFIRM_WITHDRAW_TTL, 5 * 1000);
//提货
UserAssetRecord userAssetRecord2 = new UserAssetRecord();
userAssetRecord2.setUid(order.getUid());
userAssetRecord2.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord2.setCoin(orderDetail.getCoin());
userAssetRecord2.setFlowId(OrderUtil.getFlowId());
userAssetRecord2.setType(18);
userAssetRecord2.setStatus(2);
userAssetRecord2.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord2);
}
Delivery delivery = new Delivery();
delivery.setOrderDeliveryId(OrderUtil.getDeliveryId());
delivery.setUid(order.getUid());
delivery.setMerchantId(order.getMerchantId());
delivery.setGoodsId(orderDetail.getGoodsId());
delivery.setSkuId(orderDetail.getSkuId());
delivery.setCoin(orderDetail.getCoin());
delivery.setName(orderDetail.getName());
delivery.setNumber(orderDetail.getNumber());
delivery.setUname(order.getUname());
delivery.setPhone(order.getPhone());
delivery.setAddress(order.getAddress());
delivery.setNote(orderDetail.getNote());
delivery.setDeliveryState(0);
delivery.setSerialNo(orderDetail.getSerialNo());
list.add(delivery);
}
}
//String hash = tranCoinAndNft(skuVo.getSkuId(),m.getTokenIssueAddr(),user.getAddress(),new BigDecimal(orderDetail.getNumber()),skuVo.getType(),orderDetail.getCoin());
//记录
UserAssetRecord userAssetRecord = new UserAssetRecord();
userAssetRecord.setUid(order.getUid());
userAssetRecord.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord.setCoin(orderDetail.getCoin());
userAssetRecord.setFlowId(OrderUtil.getFlowId());
userAssetRecord.setType(12);
userAssetRecord.setStatus(2);
userAssetRecord.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord);
//提货
UserAssetRecord userAssetRecord2 = new UserAssetRecord();
userAssetRecord2.setUid(order.getUid());
userAssetRecord2.setAmount(new BigDecimal(orderDetail.getNumber()));
userAssetRecord2.setCoin(orderDetail.getCoin());
userAssetRecord2.setFlowId(OrderUtil.getFlowId());
userAssetRecord2.setType(18);
userAssetRecord2.setStatus(2);
userAssetRecord2.setNote(order.getOid());
userAssetRecordService.save(userAssetRecord2);
Delivery delivery = new Delivery();
delivery.setOrderDeliveryId(OrderUtil.getDeliveryId());
delivery.setUid(order.getUid());
delivery.setMerchantId(order.getMerchantId());
delivery.setGoodsId(orderDetail.getGoodsId());
delivery.setSkuId(orderDetail.getSkuId());
delivery.setCoin(orderDetail.getCoin());
delivery.setName(orderDetail.getName());
delivery.setNumber(orderDetail.getNumber());
delivery.setUname(order.getUname());
delivery.setPhone(order.getPhone());
delivery.setAddress(order.getAddress());
delivery.setNote(orderDetail.getNote());
delivery.setDeliveryState(0);
list.add(delivery);
//转币
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
tranDto.setDelivery(order.getDelivery() == 1);
tranDto.setRecoAddr(m.getTokenRecoverAddr());
tranDto.setPrice(orderDetail.getAmount());
tranDto.setUpdateTime(System.currentTimeMillis());
log.error(JSONObject.toJSONString(tranDto));
msgProducer.sendTTL(JSONObject.toJSONString(tranDto), QueueTTLTypeEnum.CONFIRM_WITHDRAW_TTL, 5 * 1000);
//加销量
countService.addSale(orderDetail.getGoodsId(), orderDetail.getNumber());
goodSkuService.addSales(orderDetail.getSkuId(), orderDetail.getNumber());
deliveryService.saveBatch(list);
}
deliveryService.saveBatch(list);
}
}
......@@ -795,6 +1172,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
for (OrderDetail orderDetail : list) {
//加库存
goodSkuService.addStock(orderDetail.getSkuId(), orderDetail.getNumber());
String no = orderDetail.getSerialNo();
List<Long> noList = JSON.parseArray(no, Long.class);
SkuVo skuVo = goodSkuService.getSkuVoBySkuId(orderDetail.getSkuId());
String serialNo = skuService.getSerialNo(skuVo.getCommodityPassId());
List<Long> serialNoList = JSON.parseArray(serialNo, Long.class);
serialNoList.addAll(noList);
Collections.sort(serialNoList);
skuService.updateSerialNo(JSON.toJSONString(serialNoList),skuVo.getCommodityPassId());
}
}
......@@ -963,12 +1348,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
}
public static void main(String[] args) {
String str = "NTF-128938890";
str = str.replace("NTF-", "");
System.out.println(str);
String str = "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]";
JSONArray array = JSON.parseArray(str);
System.out.println(array.toJSONString());
}
private String tranCoinAndNft(String skuId,String from,String to,BigDecimal number,int goodsType,String coin) {
/* private String tranCoinAndNft(String skuId,String from,String to,BigDecimal number,int goodsType,String coin) {
//商品通证(0.否 1.是,自动生成Token 2.是,使用外部既有Token)
int commodity = spuService.getCommodityBySkuId(skuId);
if(goodsType == 1||goodsType == 2){
......@@ -985,12 +1370,28 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
String coinName = coin.replace(MALLGlobalConfig.GOODS_NFT_PREFIX, "");
return chainUtil.evmTransfer(to,from,Long.valueOf(coinName),number.longValue());
}else if(commodity == 2){
Long trueCoin = skuService.getTrueCoin(coin);
long [] a = new long[]{trueCoin};
long [] b = new long[]{number.longValue()};
return chainUtil.evmExec(a,b,from,to);
return chainUtil.evmTransfer(to,from,Long.valueOf(coin),number.longValue());
}else if(commodity == 3){
int saleType = spuService.getNftSalesType(skuId);
if(saleType ==1){
return chainUtil.evmTransfer(to,from,Long.valueOf(coin),number.longValue());
}else{
Long tokenId = skuService.getTokenId(skuId);
String json = skuService.getSerialNo(tokenId);
JSONArray array = JSON.parseArray(json);
for(int i = 1;i<=number.intValue();i++){
for (int j = 1;j<=array.size();j++) {
if(array.getInteger(j)==1){
String coinName = tokenId+""+j;
chainUtil.evmTransfer(to,from,Long.valueOf(coinName),1);
}
}
}
}
}
}
return "";
}
}*/
}
......@@ -2481,4 +2481,12 @@ ALTER TABLE `goods_spu`
ADD COLUMN `hash` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '通邦nfthash', AFTER `nft_file`;
ALTER TABLE `opration_function`
ADD COLUMN `param` varchar(500) NOT NULL DEFAULT '' COMMENT '功能区跳转参数';
\ No newline at end of file
ADD COLUMN `param` varchar(500) NOT NULL DEFAULT '' COMMENT '功能区跳转参数';
ALTER TABLE `order_detail`
ADD COLUMN `serial_no` JSON NULL DEFAULT NULL COMMENT '序列号' ;
ALTER TABLE `user_asset`
ADD COLUMN `goods_coin` VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '商品coin' ;
update user_asset set goods_coin = coin;
\ No newline at end of file
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