From 3882ab4f0e77d46cddb08a4c67bbda6ba44ce8d8 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 19 Feb 2024 15:52:07 +0800 Subject: [PATCH] 文件上传服务器地址 --- src/main/resources/templates/febs/views/modules/news/productNFTUpdate.html | 10 +++++ src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 34 +++++++++++++++++ src/main/java/cc/mrbird/febs/mall/mapper/MallProductBuyMapper.java | 2 + src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 9 ++++ src/main/java/cc/mrbird/febs/mall/vo/AdminMallProductNftVo.java | 1 src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 8 ++++ src/main/resources/templates/febs/views/modules/news/productNFTList.html | 1 src/main/resources/mapper/modules/MallProductBuyMapper.xml | 6 +++ src/main/java/cc/mrbird/febs/mall/service/IAgentService.java | 2 + 9 files changed, 73 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallProductBuyMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallProductBuyMapper.java index b22b56d..5fd4cd1 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallProductBuyMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallProductBuyMapper.java @@ -31,4 +31,6 @@ Integer selectListByMemberIdAndState(@Param("memberId")Long id); IPage<ApiOrderSellVo> selectSellListInPage(IPage<ApiOrderSellVo> page, @Param("record")ApiOrderSellDto apiOrderBuyDto); + + List<MallProductBuy> selectTotalPerk(); } diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java index abcc8fa..dee4e73 100644 --- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java +++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java @@ -125,6 +125,14 @@ agentService.BuyToSell(); } + /** + * 用户预约完成之后,根据产品周期,将用户买单变成买单 + */ + @Scheduled(cron = "0 0 3 * * ?") + public void memberLevelDown() { + agentService.memberLevelDown(); + } + /** * 用户等级升级 diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java index 6579919..685d6a8 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java @@ -55,4 +55,6 @@ void equalsMemberPerk(); void memberLevelUp(); + + void memberLevelDown(); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java index 7bdf4dd..93cdfb0 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java @@ -891,8 +891,24 @@ /** * 用户的账户增加对应的收益 */ + + BigDecimal totalPerk = mallProductBuy.getTotalPerk(); + if(BigDecimal.ZERO.compareTo(totalPerk) >= 0){ + mallProductBuy.setTotalPerk(BigDecimal.ZERO); + mallProductBuyMapper.updateById(mallProductBuy); + continue; + } BigDecimal nftTotal = mallProductBuy.getNftTotal(); BigDecimal profit = nftTotal.multiply(profitPercent.multiply(new BigDecimal(0.01))); + + if(totalPerk.compareTo(profit) <= 0){ + profit = totalPerk; + mallProductBuy.setTotalPerk(BigDecimal.ZERO); + mallProductBuyMapper.updateById(mallProductBuy); + }else{ + mallProductBuy.setTotalPerk(totalPerk.subtract(profit).setScale(2,BigDecimal.ROUND_DOWN)); + mallProductBuyMapper.updateById(mallProductBuy); + } // insertSell(mallProductBuy.getMemberId(),profit,profit,BigDecimal.ZERO,BigDecimal.ZERO); String orderNoSY = MallUtils.getOrderNum("SYNFT"); mallMoneyFlowService.addMoneyFlow( @@ -908,6 +924,7 @@ MallMemberAmount mallMemberAmountMine = mallMemberAmountMapper.selectByMemberId(mallProductBuy.getMemberId()); mallMemberAmountMine.setTrendsNft(mallMemberAmountMine.getTrendsNft().add(profit)); mallMemberAmountMapper.updateTrendsNftById(mallMemberAmountMine); + BigDecimal remainderDirect = bigDecimal.divide(new BigDecimal(String.valueOf(cycle)),0,BigDecimal.ROUND_DOWN);//取余 if(remainderDirect.compareTo(BigDecimal.ONE) == 0){ @@ -1446,6 +1463,23 @@ } } + @Override + public void memberLevelDown() { + List<MallProductBuy> mallProductBuys = mallProductBuyMapper.selectTotalPerk(); + if(CollUtil.isEmpty(mallProductBuys)){ + return; + } + for(MallProductBuy mallProductBuy : mallProductBuys){ + BigDecimal totalPerk = mallProductBuy.getTotalPerk(); + if(BigDecimal.ZERO.compareTo(totalPerk) >= 0 ){ + Long memberId = mallProductBuy.getMemberId(); + MallMember mallMember = memberMapper.selectById(memberId); + mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.getCode()); + memberMapper.updateById(mallMember); + } + } + } + public void insertSell(Long memberId,BigDecimal nftCnt,BigDecimal nftCntAva, BigDecimal nftFee,BigDecimal fcmFeeCnt){ String orderNo = MallUtils.getOrderNum("NFT"); diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java index 392321b..a042cff 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java @@ -66,6 +66,7 @@ private final MallProductSellRecordMapper mallProductSellRecordMapper; private final MallMemberAmountMapper mallMemberAmountMapper; private final IMallMoneyFlowService iMallMoneyFlowService; + private final MallProductNftMapper mallProductNftMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -1262,9 +1263,17 @@ BigDecimal nftCntTotalBuy = mallProductBuyRecords.stream().map(MallProductBuyRecord::getPickNftCnt).reduce(BigDecimal.ZERO, BigDecimal::add); MallProductBuy mallProductBuy = mallProductBuyMapper.selectById(buyId); if(nftCntTotalBuy.compareTo(mallProductBuy.getNftTotal()) >= 0){ + + Long productNftId = mallProductBuy.getProductNftId(); + MallProductNft mallProductNft = mallProductNftMapper.selectById(productNftId); + BigDecimal perkTime = mallProductNft.getPerkTime(); + BigDecimal totalPerk = perkTime.multiply(mallProductBuy.getNftTotal()).setScale(2, BigDecimal.ROUND_DOWN); + + mallProductBuy.setTotalPerk(totalPerk); mallProductBuy.setState(ProductEnum.PRODUCT_BUY_SUCCESS.getValue()); mallProductBuy.setPayTime(DateUtil.date()); mallProductBuyMapper.updateById(mallProductBuy); + } } } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallProductNftVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallProductNftVo.java index 0f780e5..be1ee21 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallProductNftVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallProductNftVo.java @@ -20,4 +20,5 @@ private int state;//产品状态 1:开启 0:关闭 private int memberCnt;//预约人数 private int memberReal;//已预约人数 + private BigDecimal perkTime;//收益倍数 } diff --git a/src/main/resources/mapper/modules/MallProductBuyMapper.xml b/src/main/resources/mapper/modules/MallProductBuyMapper.xml index f39012b..d74e5ca 100644 --- a/src/main/resources/mapper/modules/MallProductBuyMapper.xml +++ b/src/main/resources/mapper/modules/MallProductBuyMapper.xml @@ -62,4 +62,10 @@ order by a.CREATED_TIME desc </select> + <select id="selectTotalPerk" resultType="cc.mrbird.febs.mall.entity.MallProductBuy"> + select SUM(total_perk) from mall_product_buy + where state = 3 + GROUP BY member_id; + </select> + </mapper> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/news/productNFTList.html b/src/main/resources/templates/febs/views/modules/news/productNFTList.html index 7eb5680..5c56868 100644 --- a/src/main/resources/templates/febs/views/modules/news/productNFTList.html +++ b/src/main/resources/templates/febs/views/modules/news/productNFTList.html @@ -133,6 +133,7 @@ {field: 'priceToken', title: '宝石', minWidth: 120,align:'center'}, {field: 'profit', title: '收益(%)', minWidth: 120,align:'center'}, {field: 'cycle', title: '周期(天)', minWidth: 120,align:'center'}, + {field: 'perkTime', title: '收益倍数', minWidth: 120,align:'center'}, {field: 'memberCnt', title: '预约总数', minWidth: 120,align:'center'}, {field: 'memberReal', title: '已预约数', minWidth: 120,align:'center'}, {field: 'nftImg', title: '缩略图', diff --git a/src/main/resources/templates/febs/views/modules/news/productNFTUpdate.html b/src/main/resources/templates/febs/views/modules/news/productNFTUpdate.html index 58d84e9..d464a25 100644 --- a/src/main/resources/templates/febs/views/modules/news/productNFTUpdate.html +++ b/src/main/resources/templates/febs/views/modules/news/productNFTUpdate.html @@ -69,6 +69,15 @@ </div> <div class="layui-row layui-col-space10 layui-form-item"> <div class="layui-col-lg6"> + <label class="layui-form-label febs-form-item-require">收益倍数:</label> + <div class="layui-input-block"> + <input type="text" name="perkTime" lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> + <div class="layui-form-mid layui-word-aux"> 5 即百分之五</div> + </div> + </div> + </div> + <div class="layui-row layui-col-space10 layui-form-item"> + <div class="layui-col-lg6"> <label class="layui-form-label febs-form-item-require">预约总数:</label> <div class="layui-input-block"> <input type="text" name="memberCnt" lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> @@ -178,6 +187,7 @@ "state": mallProductNft.state, "memberCnt": mallProductNft.memberCnt, "memberReal": mallProductNft.memberReal, + "perkTime": mallProductNft.perkTime, }); } }); -- Gitblit v1.9.1