From 65cf739fe077c398d35e58a083a1c7be40a3b7a2 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Sun, 06 Aug 2023 23:32:39 +0800
Subject: [PATCH] 数据修改
---
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java | 225 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 210 insertions(+), 15 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
index b029950..dfb2b33 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -9,6 +9,7 @@
import cc.mrbird.febs.dapp.chain.ChainEnum;
import cc.mrbird.febs.dapp.chain.ChainService;
import cc.mrbird.febs.dapp.chain.ContractChainService;
+import cc.mrbird.febs.dapp.contract.andao.AndaoContractMain;
import cc.mrbird.febs.dapp.dto.*;
import cc.mrbird.febs.dapp.entity.*;
import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
@@ -30,8 +31,10 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
+import org.jsoup.helper.DataUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.web3j.utils.Strings;
import java.math.BigDecimal;
import java.util.*;
@@ -61,6 +64,9 @@
private final DappMemberNodeMapper dappMemberNodeMapper;
private final DappAKlineMapper dappAKlineMapper;
private final DappUsdtPerkEntityMapper dappUsdtPerkEntityMapper;
+ private final MallGoodsMapper mallGoodsMapper;
+ private final MallOrderInfoMapper mallOrderInfoMapper;
+ private final MallOrderItemMapper mallOrderItemMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -138,25 +144,30 @@
if (member == null) {
String referenceID = null;
+ int nodeType = 0;
+ //
if (!"asdf4321".equals(connectDto.getInviteId())) {
-// DappMemberEntity parent = dappMemberDao.selectMemberInfoByInviteId(connectDto.getInviteId());
- DappMemberEntity parent = dappMemberDao.selectByAddress(connectDto.getInviteId(), null);
+ DappMemberEntity left = dappMemberDao.selectInviteLeft(connectDto.getInviteId());
+ DappMemberEntity right = dappMemberDao.selectInviteRight(connectDto.getInviteId());
+ if(ObjectUtil.isEmpty(left) && ObjectUtil.isEmpty(right)){
+ throw new FebsException("recommender is not exist");
+ }
+ if(ObjectUtil.isEmpty(left)){
+ nodeType = 2;
+ }else{
+ nodeType = 1;
+ }
+ String inviteId = ObjectUtil.isEmpty(left) ? right.getInviteId() : left.getInviteId();
+ DappMemberEntity parent = dappMemberDao.selectByAddress(inviteId, null);
if (parent == null) {
throw new FebsException("recommender is not exist");
}
referenceID = parent.getInviteId();
-// List<DappMemberEntity> child = dappMemberDao.selectChildMemberDirectOrNot(connectDto.getInviteId(), 1, null);
-// if (child.size() == 6) {
-// throw new FebsException("Invite Code is Invalid");
-// }
} else {
connectDto.setInviteId(null);
}
- member = insertMember(connectDto.getAddress(), referenceID);
- //升级用户的代理等级
-// DappMemberEntity dappMemberEntity = dappMemberDao.selectMemberInfoByInviteId(connectDto.getInviteId());
-// chainProducer.sendAgentUpMsg(dappMemberEntity.getId());
+ member = insertMember(connectDto.getAddress(), referenceID,nodeType);
}
String key = LoginUserUtil.getLoginKey(connectDto.getAddress(), connectDto.getNonce(), connectDto.getSign());
@@ -310,18 +321,19 @@
}
@Override
- public DappMemberEntity insertMember(String address, String refererId) {
+ public DappMemberEntity insertMember(String address, String refererId,int nodeType) {
- return insertMember(address, refererId, "BSC", DataDictionaryEnum.MEMBER.getCode());
+ return insertMember(address, refererId, "BSC", MemberLevelEnum.MEMBER.getType(),nodeType);
}
@Override
- public DappMemberEntity insertMember(String address, String refererId, String chainType, String accountType) {
+ public DappMemberEntity insertMember(String address, String refererId, String chainType, String accountType,int nodeType) {
DappMemberEntity member = new DappMemberEntity();
member.setAddress(address);
member.setChainType(chainType);
member.setAccountType(accountType);
member.setActiveStatus(2);
+ member.setNodeType(nodeType);
dappMemberDao.insert(member);
@@ -338,8 +350,10 @@
// 若没有推荐人,则直接激活
member.setActiveStatus(2);
}
-
- member.setInviteId(ShareCodeUtil.toSerialCode(member.getId()));
+ String inviteIdStr = ShareCodeUtil.toSerialCode(member.getId());
+ member.setInviteId(inviteIdStr);
+ member.setInviteLeft(inviteIdStr+"L");
+ member.setInviteRight(inviteIdStr+"R");
member.setRefererId(refererId);
if (StrUtil.isNotBlank(refererId)) {
boolean flag = false;
@@ -576,6 +590,23 @@
BigDecimal subtract = closePriceNow.subtract(closePriceStart);
BigDecimal bigDecimal = subtract.divide(closePriceStart, 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
dappMemberInfoVo.setTodayIncrease(bigDecimal);
+
+ /**
+ * 全网剩余ANDAO总量,燃烧ANDAO总量
+ */
+ DataDictionaryCustom coinACntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.COIN_A_CNT.getType(),
+ PoolEnum.COIN_A_CNT.getCode()
+ );
+ dappMemberInfoVo.setAndaoNum(
+ ObjectUtil.isEmpty(coinACntDic) ?
+ new BigDecimal("0") :
+ new BigDecimal(coinACntDic.getValue()).setScale(2,BigDecimal.ROUND_DOWN)
+ );
+
+ BigDecimal bigDecimal1 = dappFundFlowDao.selectSumAmountByType(FundFlowEnum.A_COIN_FIRE.getCode());
+ dappMemberInfoVo.setFireAndaoNum(bigDecimal1.setScale(2,BigDecimal.ROUND_DOWN));
+
return new FebsResponse().success().data(dappMemberInfoVo);
}
@@ -765,6 +796,170 @@
return new FebsResponse().success();
}
+ @Override
+ public IPage<MallGoodsListVo> findMallGoodsListInPage(MallGoodsQueryDto queryDto) {
+ Page<MallGoodsListVo> page = new Page<>(queryDto.getPageNow(), queryDto.getPageSize());
+ return dappMemberDao.selectMallGoodsListQueryInPage(queryDto, page);
+ }
+
+ @Override
+ public IPage<MallOrderListVo> findMallOrderListInPage(MallOrderQueryDto queryDto) {
+ DappMemberEntity member = LoginUserUtil.getAppUser();
+ queryDto.setMemberId(member.getId());
+ Page<MallOrderListVo> page = new Page<>(queryDto.getPageNow(), queryDto.getPageSize());
+ return dappMemberDao.selectMallOrderListQueryInPage(queryDto, page);
+ }
+
+ @Override
+ public MallOrderListVo findOrderDetailsById(Long id) {
+ DappMemberEntity member = LoginUserUtil.getAppUser();
+ MallOrderListVo mallOrderListVo = dappMemberDao.selectMallOrderListVoById(id);
+ List<MallOrderItemVo> mallOrderItemVoList = dappMemberDao.selectMallOrderItemVoByOrderId(id);
+ mallOrderListVo.setItems(mallOrderItemVoList);
+ return mallOrderListVo;
+ }
+
+ @Override
+ public MallGoodsListVo findGoodsDetailsById(Long id) {
+ DappMemberEntity member = LoginUserUtil.getAppUser();
+ MallGoodsListVo mallGoodsListVo = dappMemberDao.selectMallGoodsListVoById(id);
+ return mallGoodsListVo;
+ }
+
+ @Override
+ @Transactional
+ public Long createOrder(AddOrderDto addOrderDto) {
+ DappMemberEntity member = LoginUserUtil.getAppUser();
+ /**
+ * 1、商品是否上架
+ * 2、用户余额是否足够
+ */
+ MallGoods mallGoods = mallGoodsMapper.selectById(addOrderDto.getGoodsId());
+ if(ObjectUtil.isEmpty(mallGoods)){
+ throw new FebsException("商品不存在");
+ }
+ if(MallGoods.ISSALE_STATUS_DISABLED == mallGoods.getIsSale()){
+ throw new FebsException("商品已下架");
+ }
+ DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(member.getId());
+ if(ObjectUtil.isEmpty(dappWalletCoinEntity)){
+ throw new FebsException("余额不足");
+ }
+ BigDecimal presentPrice = new BigDecimal(mallGoods.getPresentPrice());
+ BigDecimal totalAmount = presentPrice.multiply(new BigDecimal(addOrderDto.getGoodsCnt())).setScale(2,BigDecimal.ROUND_DOWN);
+ if(BigDecimal.ZERO.compareTo(totalAmount) >= 0){
+ throw new FebsException("商品异常");
+ }
+ BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
+ if(totalAmount.compareTo(availableAmount) > 0){
+ throw new FebsException("余额不足");
+ }
+ /**
+ * 生成一条待支付的订单
+ */
+
+ String orderNo = MallUtils.getOrderNum();
+ MallOrderInfo mallOrderInfo = new MallOrderInfo();
+ mallOrderInfo.setOrderNo(orderNo);
+ mallOrderInfo.setMemberId(member.getId());
+ mallOrderInfo.setOrderTime(DateUtil.date());
+ mallOrderInfo.setAmount(totalAmount);
+ mallOrderInfo.setStatus(MallOrderInfo.STATUS_WAIT);
+ mallOrderInfo.setOrderType(1);
+ mallOrderInfoMapper.insert(mallOrderInfo);
+ MallOrderItem mallOrderItem = new MallOrderItem();
+ mallOrderItem.setOrderId(mallOrderInfo.getId());
+ mallOrderItem.setGoodsId(addOrderDto.getGoodsId());
+ mallOrderItem.setGoodsName(mallGoods.getGoodsName());
+ mallOrderItem.setCnt(addOrderDto.getGoodsCnt());
+ mallOrderItem.setPrice(presentPrice);
+ mallOrderItem.setAmount(totalAmount);
+ mallOrderItemMapper.insert(mallOrderItem);
+ return mallOrderInfo.getId();
+ }
+
+ @Override
+ @Transactional
+ public void cancelOrder(Long id) {
+ DappMemberEntity member = LoginUserUtil.getAppUser();
+ MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(id);
+ if (ObjectUtil.isEmpty(orderInfo)) {
+ throw new FebsException("订单异常");
+ }
+
+ if (MallOrderInfo.STATUS_WAIT != orderInfo.getStatus()) {
+ throw new FebsException("只能取消待支付的订单");
+ }
+
+ orderInfo.setStatus(MallOrderInfo.STATUS_CANCEL);
+ orderInfo.setCancelType(MallOrderInfo.CANCEL_BY_SELF);
+ mallOrderInfoMapper.updateById(orderInfo);
+ }
+
+ @Override
+ @Transactional
+ public void payOrder(Long id) {
+ DappMemberEntity member = LoginUserUtil.getAppUser();
+ MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(id);
+ if (ObjectUtil.isEmpty(orderInfo)) {
+ throw new FebsException("订单异常");
+ }
+
+ if (MallOrderInfo.STATUS_WAIT != orderInfo.getStatus()) {
+ throw new FebsException("只能支付待支付的订单");
+ }
+ DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(member.getId());
+ BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
+ BigDecimal totalAmount = orderInfo.getAmount();
+ if(totalAmount.compareTo(availableAmount) > 0){
+ throw new FebsException("余额不足");
+ }
+ orderInfo.setPayTime(DateUtil.date());
+ String payOrderNo = MallUtils.getOrderNum("PAY");
+ orderInfo.setPayOrderNo(payOrderNo);
+ orderInfo.setPayMethod("余额支付");
+ orderInfo.setPayResult("成功");
+ orderInfo.setStatus(MallOrderInfo.STATUS_PAY);
+ mallOrderInfoMapper.updateById(orderInfo);
+ /**
+ * 更新用户余额
+ */
+ dappWalletCoinDao.reduceTotalAndAvailableByMemberId(member.getId(),totalAmount);
+ DappFundFlowEntity donateScoreFlow = new DappFundFlowEntity(
+ member.getId(),
+ totalAmount.negate(),
+ FundFlowEnum.PAY_ORDER.getCode(),
+ 2,
+ BigDecimal.ZERO,
+ payOrderNo,
+ id);
+
+ /**
+ * 支付成功,消费后成有效账户后可分享(有效用户可推广)
+ */
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(member.getId());
+ if(2 == dappMemberEntity.getActiveStatus()){
+ dappMemberEntity.setActiveStatus(1);
+ dappMemberDao.updateById(dappMemberEntity);
+ }
+ /**
+ * todo 发送一条订单出的消息
+ */
+ chainProducer.sendSpeedPayOrderMsg(id);
+ chainProducer.sendAutoLevelUpMsg(member.getId());
+ }
+
+ public static List<List<String>> partitionList(List<String> originalList, int partitionSize) {
+ List<List<String>> partitionedList = new ArrayList<>();
+ int size = originalList.size();
+ for (int i = 0; i < size; i += partitionSize) {
+ int end = Math.min(size, i + partitionSize);
+ List<String> sublist = originalList.subList(i, end);
+ partitionedList.add(sublist);
+ }
+ return partitionedList;
+ }
+
/**
* 获取用户的大小区业绩
* @param memberId
--
Gitblit v1.9.1