| | |
| | | import cc.mrbird.febs.mall.vo.AdminTeamEqualsPerkVo; |
| | | import cc.mrbird.febs.system.mapper.UserMapper; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.math.MathUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | |
| | | private final MallGoodsMapper mallGoodsMapper; |
| | | |
| | | private final ICommonService commonService; |
| | | |
| | | private final MallProductBuyRecordMapper mallProductBuyRecordMapper; |
| | | private final MallProductBuyMapper mallProductBuyMapper; |
| | | private final MallProductSellMapper mallProductSellMapper; |
| | | private final MallProductSellRecordMapper mallProductSellRecordMapper; |
| | | private final MallProductNftMapper mallProductNftMapper; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | List<MallMember> secondLevelRecord = getStarRecord(thirdLevelRecord, MemberLevelEnum.SECOND_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_TWO.getValue()); |
| | | } |
| | | |
| | | @Override |
| | | public void BuyToSell() { |
| | | /** |
| | | * nft产品周期到期的已完成买单变成卖单 |
| | | * 计算收益,本金 |
| | | */ |
| | | List<MallProductNft> mallProductNfts = mallProductNftMapper.selectList(null); |
| | | if(CollUtil.isEmpty(mallProductNfts)){ |
| | | return; |
| | | } |
| | | DateTime now = DateUtil.date(); |
| | | for(MallProductNft mallProductNft : mallProductNfts){ |
| | | Long nftId = mallProductNft.getId(); |
| | | List<MallProductBuy> mallProductBuys = mallProductBuyMapper.selectListByStateAndProductNFTId( |
| | | ProductEnum.PRODUCT_BUY_SUCCESS.getValue(), |
| | | nftId, |
| | | ProductEnum.PRODUCT_BUY_MATE_STATE_FAIL.getValue()); |
| | | if(CollUtil.isEmpty(mallProductBuys)){ |
| | | continue; |
| | | } |
| | | //周期 |
| | | int cycle = mallProductNft.getCycle(); |
| | | //收益率 |
| | | BigDecimal profitPercent = mallProductNft.getProfit(); |
| | | for(MallProductBuy mallProductBuy : mallProductBuys){ |
| | | |
| | | Date payTime = mallProductBuy.getPayTime(); |
| | | //偏移时间 |
| | | DateTime dateTime = DateUtil.offsetDay(payTime, cycle); |
| | | int compare = DateUtil.compare(now, dateTime); |
| | | if(compare <= 0){ |
| | | /** |
| | | * 更新买单状态 |
| | | * 收益生成一条卖单 |
| | | * 本金生成一条卖单 |
| | | */ |
| | | mallProductBuy.setMateState(ProductEnum.PRODUCT_BUY_MATE_STATE_SUCCESS.getValue()); |
| | | mallProductBuyMapper.updateById(mallProductBuy); |
| | | BigDecimal nftTotal = mallProductBuy.getNftTotal(); |
| | | insertSell(mallProductBuy.getMemberId(),nftTotal,nftTotal,BigDecimal.ZERO,BigDecimal.ZERO); |
| | | BigDecimal profit = nftTotal.multiply(profitPercent.multiply(new BigDecimal(0.01))); |
| | | insertSell(mallProductBuy.getMemberId(),profit,profit,BigDecimal.ZERO,BigDecimal.ZERO); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | public void insertSell(Long memberId,BigDecimal nftCnt,BigDecimal nftCntAva, |
| | | BigDecimal nftFee,BigDecimal fcmFeeCnt){ |
| | | String orderNo = MallUtils.getOrderNum("NFT"); |
| | | MallProductSell mallProductSell = new MallProductSell(); |
| | | mallProductSell.setMemberId(memberId); |
| | | mallProductSell.setOrderNo(orderNo); |
| | | mallProductSell.setNftTotal(nftCnt); |
| | | mallProductSell.setNftCnt(nftCntAva); |
| | | mallProductSell.setNftCntAva(nftCntAva); |
| | | mallProductSell.setNftFee(nftFee); |
| | | mallProductSell.setFcmFee(fcmFeeCnt); |
| | | mallProductSell.setState(ProductEnum.PRODUCT_SELL_ON_GOING.getValue()); |
| | | mallProductSellMapper.insert(mallProductSell); |
| | | } |
| | | |
| | | } |