KKSU
2024-02-19 3882ab4f0e77d46cddb08a4c67bbda6ba44ce8d8
文件上传服务器地址
9 files modified
73 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/mapper/MallProductBuyMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IAgentService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/AdminMallProductNftVo.java 1 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallProductBuyMapper.xml 6 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/productNFTList.html 1 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/productNFTUpdate.html 10 ●●●●● patch | view | raw | blame | history
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();
}
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();
    }
    /**
     * 用户等级升级
src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
@@ -55,4 +55,6 @@
    void equalsMemberPerk();
    void memberLevelUp();
    void memberLevelDown();
}
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");
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);
            }
        }
    }
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;//收益倍数
}
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>
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: '缩略图',
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,
            });
        }
    });