From 74cae02c58eb057e6f9422038d5b3ed30b7c9a2f Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Sat, 11 May 2024 10:40:07 +0800
Subject: [PATCH] 香港新环境
---
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java | 450 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 420 insertions(+), 30 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 e8b8d60..69926b9 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
@@ -5,15 +5,17 @@
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.*;
-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.*;
+import cc.mrbird.febs.dapp.enumerate.AccountFlowEnum;
+import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
+import cc.mrbird.febs.dapp.enumerate.FundFlowEnum;
+import cc.mrbird.febs.dapp.enumerate.MemberLevelEnum;
import cc.mrbird.febs.dapp.mapper.*;
import cc.mrbird.febs.dapp.service.DappMemberService;
+import cc.mrbird.febs.dapp.soccer.entity.SoccerLeagues;
import cc.mrbird.febs.dapp.vo.*;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cc.mrbird.febs.system.entity.User;
@@ -28,13 +30,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.math.BigInteger;
import java.util.*;
import java.util.stream.Collectors;
@@ -68,6 +67,10 @@
private final MallAchieveRecordMapper mallAchieveRecordMapper;
private final DappAccountMoneyChangeDao dappAccountMoneyChangeDao;
private final MallAddressInfoMapper mallAddressInfoMapper;
+ private final MallGoodsCategoryMapper mallGoodsCategoryMapper;
+ private final PlatformBannerMapper platformBannerMapper;
+ private final MallGoodsImagesMapper goodsImagesMapper;
+ private final MemberCoinWithdrawDao memberCoinWithdrawDao;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -160,6 +163,11 @@
member = insertMember(connectDto.getAddress(), referenceID,nodeType);
}
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(member.getId());
+ if(2 == dappMemberEntity.getChangeAble()){
+ throw new FebsException("账号已冻结");
+ }
+
String key = LoginUserUtil.getLoginKey(connectDto.getAddress(), connectDto.getNonce(), connectDto.getSign());
redisUtils.hset(AppContants.REDIS_KEY_MEMBER_INFO, connectDto.getAddress(), member);
@@ -208,17 +216,29 @@
member.setCurrentUser(currentUser.getUserId());
}
IPage<DappMemberEntity> dappMemberEntityIPage = dappMemberDao.selectInPage(member, page);
-// List<DappMemberEntity> records = dappMemberEntityIPage.getRecords();
-// if(CollUtil.isNotEmpty(records)){
-// for(DappMemberEntity memberEntity : records){
-// Long memberId = memberEntity.getId();
-// DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
-// memberEntity.setCoinAmount(ObjectUtil.isEmpty(dappWalletCoinEntity) ? BigDecimal.ZERO : dappWalletCoinEntity.getAvailableAmount());
-//
-// DappWalletMineEntity dappWalletMineEntity = dappWalletMineDao.selectByMemberId(memberId);
-// memberEntity.setScoreAmount(ObjectUtil.isEmpty(dappWalletMineEntity) ? BigDecimal.ZERO : dappWalletMineEntity.getAvailableAmount());
-// }
-// }
+ List<DappMemberEntity> records = dappMemberEntityIPage.getRecords();
+ if(CollUtil.isNotEmpty(records)){
+ for(DappMemberEntity memberEntity : records){
+ Long memberId = memberEntity.getId();
+
+// List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId);
+ List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberIdAndScore(memberId);
+ BigDecimal myShareAchieve = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(mallAchieveRecords)){
+ Date payTime = mallAchieveRecords.get(0).getPayTime();
+ //下第一单之后的共享区全部业绩
+ myShareAchieve = mallAchieveRecordMapper.selectAchieveTotalByCreateTime(payTime);
+ }
+ memberEntity.setMyShareAchieve(myShareAchieve);
+
+
+ BigDecimal totalIncomeMember = dappMemberDao.selectAllAchieveByRefId(memberEntity.getInviteId());
+ memberEntity.setMyTeamAchieve(totalIncomeMember);
+
+ BigDecimal withdrawAmount = memberCoinWithdrawDao.selectByMemberIdAndStatus(memberId, MemberCoinWithdrawEntity.STATUS_YES);
+ memberEntity.setWithdrawAmount(withdrawAmount);
+ }
+ }
return dappMemberEntityIPage;
}
@@ -398,6 +418,7 @@
teamChildListVo.setOrderCnt(mallAchieveRecords.size());
}
}
+ myTeamVo.setTeam(list);
}
return myTeamVo;
}
@@ -521,10 +542,22 @@
DappWalletMineEntity dappWalletMineEntity = dappWalletMineDao.selectByMemberId(member.getId());
dappMemberInfoVo.setScore(ObjectUtil.isEmpty(dappWalletMineEntity) ? BigDecimal.ZERO : dappWalletMineEntity.getTotalAmount());
- QueryWrapper<MallOrderInfo> objectQueryWrapper = new QueryWrapper<>();
- objectQueryWrapper.eq("status", 1);
- Integer selectCount = mallOrderInfoMapper.selectCount(objectQueryWrapper);
- dappMemberInfoVo.setWaitPayCnt(selectCount);
+ Integer waitPayCnt = dappMemberDao.selectOrderCntByMemberIdAndStatus(member.getId(),1);
+ Integer payCnt = dappMemberDao.selectOrderCntByMemberIdAndStatus(member.getId(),2);
+ Integer cancelCnt = dappMemberDao.selectOrderCntByMemberIdAndStatus(member.getId(),3);
+ dappMemberInfoVo.setWaitPayCnt(waitPayCnt);
+ dappMemberInfoVo.setPayCnt(payCnt);
+ dappMemberInfoVo.setCancelCnt(cancelCnt);
+
+// List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(member.getId());
+ List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberIdAndScore(member.getId());
+ BigDecimal myShareAchieve = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(mallAchieveRecords)){
+ Date payTime = mallAchieveRecords.get(0).getPayTime();
+ //下第一单之后的共享区全部业绩
+ myShareAchieve = mallAchieveRecordMapper.selectAchieveTotalByCreateTime(payTime);
+ }
+ dappMemberInfoVo.setMyShareAchieve(myShareAchieve);
return new FebsResponse().success().data(dappMemberInfoVo);
}
@@ -565,7 +598,12 @@
@Override
public List<AdminAgentLevelOptionTreeVo> getAgentLevelOption() {
- return dataDictionaryCustomMapper.getAgentLevelOption();
+ List<AdminAgentLevelOptionTreeVo> agentLevelOption = dataDictionaryCustomMapper.getAgentLevelOption();
+ AdminAgentLevelOptionTreeVo adminAgentLevelOptionTreeVo = new AdminAgentLevelOptionTreeVo();
+ adminAgentLevelOptionTreeVo.setId("MEMBER");
+ adminAgentLevelOptionTreeVo.setName("MEMBER");
+ agentLevelOption.add(adminAgentLevelOptionTreeVo);
+ return agentLevelOption;
}
@Override
@@ -615,6 +653,9 @@
public MallGoodsListVo findGoodsDetailsById(Long id) {
DappMemberEntity member = LoginUserUtil.getAppUser();
MallGoodsListVo mallGoodsListVo = dappMemberDao.selectMallGoodsListVoById(id);
+
+ List<String> images = goodsImagesMapper.selectGoodsImagesByGoodsId(id);
+ mallGoodsListVo.setImages(images);
return mallGoodsListVo;
}
@@ -622,11 +663,17 @@
@Transactional
public Long createOrder(AddOrderDto addOrderDto) {
DappMemberEntity member = LoginUserUtil.getAppUser();
+
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(member.getId());
+ if(2 == dappMemberEntity.getChangeAble()){
+ throw new FebsException("账号已冻结");
+ }
// DappMemberEntity member = dappMemberDao.selectById(1L);
/**
* 1、商品是否上架
* 2、用户余额是否足够
*/
+
MallGoods mallGoods = mallGoodsMapper.selectById(addOrderDto.getGoodsId());
if(ObjectUtil.isEmpty(mallGoods)){
throw new FebsException("商品不存在");
@@ -659,9 +706,10 @@
mallOrderInfo.setAmount(totalAmount);
mallOrderInfo.setStatus(MallOrderInfo.STATUS_WAIT);
mallOrderInfo.setDeliverType(addOrderDto.getDeliverType());
- if(1 == addOrderDto.getDeliverType()){
- mallOrderInfo.setAddressId(addOrderDto.getAddressId());
- }
+ mallOrderInfo.setAddressId(addOrderDto.getAddressId());
+// if(1 == addOrderDto.getDeliverType()){
+// mallOrderInfo.setAddressId(addOrderDto.getAddressId());
+// }
mallOrderInfo.setOrderType(1);
mallOrderInfoMapper.insert(mallOrderInfo);
MallOrderItem mallOrderItem = new MallOrderItem();
@@ -742,7 +790,7 @@
}
BigDecimal totalAmount = orderInfo.getAmount();
if(achieveAva.compareTo(totalAmount) < 0){
- throw new FebsException("用户最多购买"+achieveAva.setScale(2,BigDecimal.ROUND_DOWN)+"USDT");
+ throw new FebsException("用户最多购买"+achieveAva.setScale(2,BigDecimal.ROUND_DOWN));
}
DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(member.getId());
@@ -783,8 +831,8 @@
/**
* todo 发送一条订单出的消息
*/
- chainProducer.sendSpeedPayOrderMsg(id);
- chainProducer.sendAutoLevelUpTeamMsg(member.getId());
+// chainProducer.sendSpeedPayOrderMsg(id);
+// chainProducer.sendAutoLevelUpTeamMsg(member.getId());
}
@Override
@@ -802,7 +850,7 @@
DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
);
- BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(8, BigDecimal.ROUND_DOWN);
packageInfoVo.setPackageScorePrice(packageScorePrice);
DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
@@ -815,7 +863,15 @@
public FebsResponse salePackage(SalePackageDto salePackageDto) {
Long memberId = LoginUserUtil.getAppUser().getId();
BigDecimal cnt = salePackageDto.getCnt();
+
+ if(ObjectUtil.isEmpty(salePackageDto.getCnt())){
+ throw new FebsException("请输入正确的数量");
+ }
DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+
+ if(2 == dappMemberEntity.getChangeAble()){
+ throw new FebsException("账号已冻结");
+ }
BigDecimal saleDoing = dappFundFlowDao.selectSumAmountByMemberIdAndTypeAndStatus(memberId, FundFlowEnum.SALE_PACKAGE.getCode(), DappFundFlowEntity.WITHDRAW_STATUS_ING);
if(BigDecimal.ZERO.compareTo(saleDoing) < 0){
throw new FebsException("正在进行中,请稍后再试");
@@ -840,7 +896,7 @@
dappMemberEntity.setBalance(subtract);
dappMemberDao.updateById(dappMemberEntity);
- chainProducer.sendSalePackageMsg(scoreFlow.getId());
+// chainProducer.sendSalePackageMsg(scoreFlow.getId());
return new FebsResponse().success();
}
@@ -904,6 +960,10 @@
@Override
public void delOrder(Long id) {
Long memberId = LoginUserUtil.getAppUser().getId();
+ MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(id);
+ if(MallOrderInfo.STATUS_PAY == mallOrderInfo.getStatus()){
+ throw new FebsException("当前订单不允许删除");
+ }
mallOrderInfoMapper.deleteById(id);
QueryWrapper<MallOrderItem> objectQueryWrapper = new QueryWrapper<>();
@@ -944,6 +1004,7 @@
public IPage<MallAddressInfo> findAddressList(MallGoodsQueryDto queryDto) {
Long memberId = LoginUserUtil.getAppUser().getId();
Page<MallAddressInfo> page = new Page<>(queryDto.getPageNow(), queryDto.getPageSize());
+ queryDto.setMemberId(memberId);
return dappMemberDao.selectAddressListInPage(queryDto, page);
}
@@ -969,6 +1030,335 @@
mallAddressInfoMapper.updateById(mallAddressInfo);
}
+ @Override
+ public List<MallGoodsCategory> categoryList() {
+ return mallGoodsCategoryMapper.selectRecommendCategoryList();
+ }
+
+ @Override
+ public FebsResponse balanceSystem() {
+
+ List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectAllMemberForInCome();
+ if(CollUtil.isNotEmpty(dappMemberEntities)){
+ //总划入
+ BigDecimal totalAdd = BigDecimal.ZERO;
+ //资产包卖出划入底池比例
+ DataDictionaryCustom packageToPoorPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getType(),
+ DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getCode()
+ );
+ BigDecimal packageToPoorPercent = new BigDecimal(ObjectUtil.isEmpty(packageToPoorPercentDic) ? "0.1" : packageToPoorPercentDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ //资产包积分价格
+ DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
+ DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
+ );
+ BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ //卖出积分直接销毁。
+ DataDictionaryCustom packageTotalScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getType(),
+ DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getCode()
+ );
+ BigDecimal avaPackageTotalScore = new BigDecimal(ObjectUtil.isEmpty(packageTotalScoreDic) ? "21000" : packageTotalScoreDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ DataDictionaryCustom packagePoorDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_POOR.getType(),
+ DataDictionaryEnum.PACKAGE_POOR.getCode()
+ );
+ BigDecimal packagePoor = new BigDecimal(ObjectUtil.isEmpty(packagePoorDic) ? "0" : packagePoorDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+
+ if(dappMemberEntities.size() <= 100){
+ for(DappMemberEntity dappMemberEntity : dappMemberEntities){
+ Long memberId = dappMemberEntity.getId();
+ BigDecimal balance = dappMemberEntity.getBalance();
+ //前一百卖出一半
+ BigDecimal cnt = balance.divide(new BigDecimal(2) , 2 ,BigDecimal.ROUND_DOWN);
+ dappMemberEntity.setBalance(balance.subtract(cnt));
+ dappMemberDao.updateById(dappMemberEntity);
+ //卖出资产乘以价格获取到预期获取的总额
+ BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
+ //划入底池的金额
+ BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
+ //实际获取的金额
+ BigDecimal realAmount = totalAmount.subtract(poorAmount);
+ //生成一条资金流水
+ DappFundFlowEntity scoreFlow = new DappFundFlowEntity(
+ memberId,
+ realAmount,
+ FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(scoreFlow);
+ dappWalletCoinDao.addTotalAndaddAvailableByMemberId(memberId,realAmount);
+ DappFundFlowEntity feeFlow = new DappFundFlowEntity(
+ memberId,
+ poorAmount.negate(),
+ FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(feeFlow);
+ totalAdd = totalAdd.add(poorAmount);
+ }
+ }else{
+ List<MallAchieveRecord> mallAchieveRecordList = new ArrayList<>();
+ for(DappMemberEntity dappMemberEntity : dappMemberEntities){
+ //获取每个人的业绩
+ //业绩集合
+ List<BigDecimal> list = new ArrayList<>();
+ //所有直推团队,就是这个会员的所有区域的业绩。
+
+ BigDecimal teamIncomeMax = dappFundFlowDao.selectSumAmountByMemberIdAndTypeAndStatus(dappMemberEntity.getId(),
+ FundFlowEnum.ADD_AMOUNT_REAL.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE);
+ if(BigDecimal.ZERO.compareTo(teamIncomeMax) >= 0){
+ continue;
+ }
+
+ MallAchieveRecord mallAchieveRecord = new MallAchieveRecord();
+ mallAchieveRecord.setMemberId(dappMemberEntity.getId());
+ mallAchieveRecord.setAmount(teamIncomeMax);
+ mallAchieveRecordList.add(mallAchieveRecord);
+// // 直推用户
+// List<DappMemberEntity> childs = dappMemberDao.selectMemberInfoByRefererId(dappMemberEntity.getInviteId());
+// List<String> childsInviteIds = childs.stream().map(DappMemberEntity::getInviteId).collect(Collectors.toList());
+// if(CollUtil.isNotEmpty(childsInviteIds)){
+// for(String inviteId : childsInviteIds){
+// BigDecimal totalIncomeMember = dappMemberDao.selectAchieveRecordByInviteId(inviteId);
+// teamIncomeMax = teamIncomeMax.add(totalIncomeMember);
+// list.add(totalIncomeMember);
+// }
+// //去掉一个最大区的业绩
+// BigDecimal bigMax = list.stream().max(BigDecimal::compareTo).get();
+// teamIncomeMax = teamIncomeMax.subtract(bigMax);
+// }
+ }
+ if(CollUtil.isNotEmpty(mallAchieveRecordList)){
+ //按照小区业绩的多少排名
+ List<MallAchieveRecord> collect = mallAchieveRecordList
+ .stream()
+ .sorted(Comparator.comparing(MallAchieveRecord::getAmount))
+ .collect(Collectors.toList());
+
+ List<MallAchieveRecord> top100Performances = collect.stream()
+ .limit(100)
+ .collect(Collectors.toList());
+ if(CollUtil.isNotEmpty(top100Performances)){
+ for(MallAchieveRecord mallAchieveRecord : top100Performances){
+ Long memberId = mallAchieveRecord.getMemberId();
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ BigDecimal balance = dappMemberEntity.getBalance();
+
+ BigDecimal cnt = balance.divide(new BigDecimal(2) , 2 ,BigDecimal.ROUND_DOWN);
+ dappMemberEntity.setBalance(balance.subtract(cnt));
+ dappMemberDao.updateById(dappMemberEntity);
+ //卖出资产乘以价格获取到预期获取的总额
+ BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
+ //划入底池的金额
+ BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
+ //实际获取的金额
+ BigDecimal realAmount = totalAmount.subtract(poorAmount);
+ //生成一条资金流水
+ DappFundFlowEntity scoreFlow = new DappFundFlowEntity(
+ memberId,
+ realAmount,
+ FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(scoreFlow);
+ dappWalletCoinDao.addTotalAndaddAvailableByMemberId(memberId,realAmount);
+ DappFundFlowEntity feeFlow = new DappFundFlowEntity(
+ memberId,
+ poorAmount.negate(),
+ FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(feeFlow);
+ totalAdd = totalAdd.add(poorAmount);
+ }
+ }
+
+ List<MallAchieveRecord> remainingUsers = mallAchieveRecordList
+ .stream()
+ .sorted(Comparator.comparing(MallAchieveRecord::getAmount).reversed())
+ .skip(100)
+ .collect(Collectors.toList());
+ if(CollUtil.isNotEmpty(remainingUsers)){
+ for(MallAchieveRecord mallAchieveRecord : remainingUsers){
+ Long memberId = mallAchieveRecord.getMemberId();
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ BigDecimal balance = dappMemberEntity.getBalance();
+
+ BigDecimal cnt = balance;
+ dappMemberEntity.setBalance(balance.subtract(cnt));
+ dappMemberDao.updateById(dappMemberEntity);
+ //卖出资产乘以价格获取到预期获取的总额
+ BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
+ //资产包卖出划入底池比例
+ //划入底池的金额
+ BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
+ //实际获取的金额
+ BigDecimal realAmount = totalAmount.subtract(poorAmount);
+ //生成一条资金流水
+ DappFundFlowEntity scoreFlow = new DappFundFlowEntity(
+ memberId,
+ realAmount,
+ FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(scoreFlow);
+ dappWalletCoinDao.addTotalAndaddAvailableByMemberId(memberId,realAmount);
+ DappFundFlowEntity feeFlow = new DappFundFlowEntity(
+ memberId,
+ poorAmount.negate(),
+ FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(feeFlow);
+ totalAdd = totalAdd.add(poorAmount);
+ }
+ }
+ }
+ }
+ BigDecimal avaPackagePoor = packagePoor.add(totalAdd);
+ packagePoorDic.setValue(avaPackagePoor.toString());
+ dataDictionaryCustomMapper.updateById(packagePoorDic);
+ //计算当前价格
+ BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 8, BigDecimal.ROUND_DOWN);
+ packageScorePriceDic.setValue(divide.toString());
+ dataDictionaryCustomMapper.updateById(packageScorePriceDic);
+
+
+ DappFundFlowEntity backFlow = new DappFundFlowEntity(
+ 1L,
+ totalAdd,
+ FundFlowEnum.SYSTEM_SALE_PACKAGE_BACK.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(backFlow);
+
+ DappAKlineEntity dappAKlineEntity = new DappAKlineEntity();
+ dappAKlineEntity.setOpenPrice(divide);
+ dappAKlineEntity.setType(1);
+ dappAKlineMapper.insert(dappAKlineEntity);
+ }
+ return new FebsResponse().success();
+ }
+
+ @Override
+ public IPage<MallAddressInfo> shopAddressList(MallGoodsQueryDto queryDto) {
+ Long memberId = LoginUserUtil.getAppUser().getId();
+ Page<MallAddressInfo> page = new Page<>(queryDto.getPageNow(), queryDto.getPageSize());
+ queryDto.setMemberId(1L);
+ return dappMemberDao.selectShopAddressListInPage(queryDto, page);
+ }
+
+ @Override
+ public FebsResponse findAllBanner() {
+ QueryWrapper<PlatformBanner> queryWrapper = new QueryWrapper<>();
+ queryWrapper.orderByAsc("is_top");
+ List<PlatformBanner> paymentMethodList = platformBannerMapper.selectList(queryWrapper);
+ return new FebsResponse().success().data(paymentMethodList);
+ }
+
+ @Override
+ public void setDefaultAddress(Long id) {
+ Long memberId = LoginUserUtil.getAppUser().getId();
+ MallAddressInfo addressInfo = mallAddressInfoMapper.selectById(id);
+ if (addressInfo == null) {
+ throw new FebsException("地址不存在");
+ }
+ this.baseMapper.updateIsDefault(MallAddressInfo.IS_YOUR_N, memberId, null);
+
+ this.baseMapper.updateIsDefault(MallAddressInfo.IS_YOUR_Y, memberId, id);
+ }
+
+ @Override
+ public void confirmOrder(Long id) {
+ Long memberId = LoginUserUtil.getAppUser().getId();
+ MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(id);
+ if (ObjectUtil.isEmpty(orderInfo)) {
+ throw new FebsException("订单不存在");
+ }
+
+ if (orderInfo.getStatus() != MallOrderInfo.STATUS_PAY) {
+ throw new FebsException("该状态不能确认收货");
+ }
+ if (orderInfo.getDeliverState() != MallOrderInfo.DELIVER_STATUS_DONE) {
+ throw new FebsException("该状态不能确认收货");
+ }
+
+ orderInfo.setDeliverState(MallOrderInfo.DELIVER_STATUS_OVER);
+ mallOrderInfoMapper.updateById(orderInfo);
+ }
+
+ @Override
+ public MallAddressInfo findAddress() {
+ Long memberId = LoginUserUtil.getAppUser().getId();
+ MallAddressInfo mallAddressInfo = dappMemberDao.selectAddressOneByMemberId(memberId);
+ return mallAddressInfo;
+ }
+
+ @Override
+ public List<PackageRecordVo> packageRecord(PackageRecordDto packageRecordDto) {
+ List<PackageRecordVo> packageRecordVos = new ArrayList<>();
+ Integer type = packageRecordDto.getType();
+ if(2 == type){
+ packageRecordVos = dappMemberDao.selectPackageRecordWeekInPage(DateUtil.beginOfWeek(DateUtil.date()));
+ }else if(3 == type){
+ packageRecordVos = dappMemberDao.selectPackageRecordMonthInPage(DateUtil.date());
+ }else{
+ packageRecordVos = dappMemberDao.selectPackageRecordDayInPage(DateUtil.date());
+ }
+ if(CollUtil.isNotEmpty(packageRecordVos)){
+ Integer packageNum = 0;
+ for(PackageRecordVo packageRecordVo : packageRecordVos){
+ packageNum = packageNum + 1;
+ packageRecordVo.setPackageNum(packageNum);
+ }
+ }
+ return packageRecordVos;
+ }
+
+ @Override
+ public List<AKLineLimitVo> packageKline() {
+// return dappAKlineMapper.selectListByTypeAndLimit(2, 30);
+ List<AKLineLimitVo> akLineLimitVos = dappAKlineMapper.selectListByTypeAndLimitDesc(1, 60);
+ List<AKLineLimitVo> sortedList = akLineLimitVos.stream()
+ .sorted((k1, k2) -> k1.getCreateTime().compareTo(k2.getCreateTime()))
+ .collect(Collectors.toList());
+ return sortedList;
+ }
+
+ @Override
+ public FebsResponse changeAbleYes(Long id) {
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(id);
+ if(ObjectUtil.isEmpty(dappMemberEntity)) {
+ return new FebsResponse().fail().message("会员信息不存在");
+ }
+ dappMemberEntity.setChangeAble(2);
+ dappMemberDao.updateById(dappMemberEntity);
+ return new FebsResponse().success();
+ }
+ @Override
+ public FebsResponse changeAbleNo(Long id) {
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(id);
+ if(ObjectUtil.isEmpty(dappMemberEntity)) {
+ return new FebsResponse().fail().message("会员信息不存在");
+ }
+ dappMemberEntity.setChangeAble(1);
+ dappMemberDao.updateById(dappMemberEntity);
+
+ redisUtils.hdel(AppContants.REDIS_KEY_SIGN, dappMemberEntity.getAddress());
+ redisUtils.hdel(AppContants.REDIS_KEY_MEMBER_INFO, dappMemberEntity.getAddress());
+ return new FebsResponse().success();
+ }
+
+ @Override
+ public IPage<SoccerLeagues> selectSoccerLeaguesInPage(SoccerLeagues soccerLeagues, QueryRequest request) {
+ Page<SoccerLeagues> page = new Page<>(request.getPageNum(), request.getPageSize());
+ IPage<SoccerLeagues> soccerLeaguesIPage = dappMemberDao.selectSoccerLeaguesInPage(soccerLeagues, page);
+ return soccerLeaguesIPage;
+ }
+
public static List<List<String>> partitionList(List<String> originalList, int partitionSize) {
List<List<String>> partitionedList = new ArrayList<>();
int size = originalList.size();
--
Gitblit v1.9.1