xiaoyong931011
2023-08-25 9b93e015970c3257f3e7ae866bc6832a14246040
后台修改
4 files modified
114 ■■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/mapper/MallAchieveRecordMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java 96 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/MallAchieveRecordMapper.xml 6 ●●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/JunitTest.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/MallAchieveRecordMapper.java
@@ -27,6 +27,8 @@
    List<MallAchieveRecord> selectListByMemberId(@Param("memberId")Long memberId);
    List<MallAchieveRecord> selectListCostAmountByMemberId(@Param("memberId")Long memberId);
    BigDecimal selectAchieveTotalByMemberIdAndCreateTime(@Param("memberId")Long id, @Param("date")Date createTime);
    BigDecimal selectAchieveTotalByCreateTime(@Param("date")Date createTime);
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -2952,6 +2952,102 @@
            BigDecimal amountMagic = amount;
            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId);
            if(CollUtil.isEmpty(mallAchieveRecords)){
                BigDecimal localTotalAchieve = amount;
                /**
                 * 用户减少赠送积分
                 */
                DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
                DappWalletMineEntity dappWalletMineEntity = dappWalletMineDao.selectByMemberId(memberId);
                BigDecimal totalScore = dappWalletMineEntity.getTotalAmount();
                BigDecimal availableScore = dappWalletMineEntity.getAvailableAmount();
                if(localTotalAchieve.compareTo(totalScore) >= 0){
                    localTotalAchieve = totalScore;
                    //当实际获取大于用户的赠送积分,将用户更新为未激活
                    dappMemberEntity.setActiveStatus(2);
                    dappMemberDao.updateById(dappMemberEntity);
                }
                DappAccountMoneyChangeEntity reduceScoreAMC = new DappAccountMoneyChangeEntity(
                        memberId,
                        totalScore,
                        amountMagic.negate(),
                        localTotalAchieve.negate(),
                        AccountFlowEnum.SCORE.getCode(),
                        null);
                dappAccountMoneyChangeDao.insert(reduceScoreAMC);
                //插入积分流水
                DappFundFlowEntity scoreFlow = new DappFundFlowEntity(
                        AccountFlowEnum.SCORE.getCode(),
                        memberId,
                        localTotalAchieve.negate(),
                        FundFlowEnum.REDUCE_SCORE_REAL.getCode(),
                        DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
                        BigDecimal.ZERO);
                dappFundFlowDao.insert(scoreFlow);
                BigDecimal totalScoreRelease = totalScore.subtract(localTotalAchieve);
                BigDecimal availableScoreRelease = availableScore.subtract(localTotalAchieve);
                //更新积分账户
                dappWalletMineEntity.setTotalAmount(totalScoreRelease);
                dappWalletMineEntity.setAvailableAmount(availableScoreRelease);
                dappWalletMineDao.updateById(dappWalletMineEntity);
                //用户增加余额
                DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
                BigDecimal totalAmount = dappWalletCoinEntity.getTotalAmount();
                BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
                DappAccountMoneyChangeEntity addAmountAMC = new DappAccountMoneyChangeEntity(
                        memberId,
                        totalAmount,
                        amountMagic,
                        localTotalAchieve,
                        AccountFlowEnum.AMOUNT.getCode(),
                        null);
                dappAccountMoneyChangeDao.insert(addAmountAMC);
                //插入余额流水
                DappFundFlowEntity amountFlow = new DappFundFlowEntity(
                        AccountFlowEnum.AMOUNT.getCode(),
                        memberId,
                        localTotalAchieve,
                        FundFlowEnum.ADD_AMOUNT_REAL.getCode(),
                        DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
                        BigDecimal.ZERO);
                dappFundFlowDao.insert(amountFlow);
                BigDecimal totalAmountRelease = totalAmount.add(localTotalAchieve);
                BigDecimal availableAmountRelease = availableAmount.add(localTotalAchieve);
                //更新余额账户
                dappWalletCoinEntity.setTotalAmount(totalAmountRelease);
                dappWalletCoinEntity.setAvailableAmount(availableAmountRelease);
                dappWalletCoinDao.updateById(dappWalletCoinEntity);
                StringBuffer content = new StringBuffer();
                if(amountMagic.compareTo(localTotalAchieve) > 0){
                    content.append("今日可加速"+amountMagic.setScale(2,BigDecimal.ROUND_DOWN)+",实际加速"+localTotalAchieve.setScale(2,BigDecimal.ROUND_DOWN)+"" +
                            "烧伤"+amountMagic.subtract(localTotalAchieve).setScale(2,BigDecimal.ROUND_DOWN)+",原因消费金额1%加速上" +
                            "限,增加消费金额可获得更多收益");
                }else{
                    content.append("今日可加速"+amountMagic.setScale(2,BigDecimal.ROUND_DOWN)+",实际加速"+localTotalAchieve.setScale(2,BigDecimal.ROUND_DOWN)+"" +
                            "烧伤"+amountMagic.subtract(localTotalAchieve).setScale(2,BigDecimal.ROUND_DOWN));
                }
                DappAccountMoneyChangeEntity record = new DappAccountMoneyChangeEntity(
                        memberId,
                        totalAmount,
                        amountMagic,
                        localTotalAchieve,
                        AccountFlowEnum.AMOUNT_RECORD.getCode(),
                        content.toString());
                dappAccountMoneyChangeDao.insert(record);
                //实时更新用户等级
                chainProducer.sendAutoLevelUpTeamMsg(memberId);
                set.add(dappMemberEntity);
                continue;
            }
            //实际获取总收益
src/main/resources/mapper/dapp/MallAchieveRecordMapper.xml
@@ -44,6 +44,12 @@
        order by CREATE_TIME asc
    </select>
    <select id="selectListCostAmountByMemberId" resultType="cc.mrbird.febs.dapp.entity.MallAchieveRecord">
        select * from mall_achieve_record
        where member_id = #{memberId}
        order by CREATE_TIME asc
    </select>
    <select id="selectAchieveTotalByMemberIdAndCreateTime" resultType="java.math.BigDecimal">
        select IFNULL(sum(IFNULL(amount,0)),0) from mall_achieve_record
        where
src/test/java/cc/mrbird/febs/JunitTest.java
@@ -7,6 +7,7 @@
import cc.mrbird.febs.dapp.service.DappMemberService;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
@@ -25,6 +26,7 @@
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
 * @author 
@@ -99,7 +101,13 @@
        /**
         * 实际更新账户业绩余额和积分
         */
        dappSystemService.updateAchieve();
        Set<DappMemberEntity> dappMemberEntities = dappSystemService.updateAchieve();
        if(CollUtil.isNotEmpty(dappMemberEntities)){
            /**
             * 奖励;团队产生的收益1%奖励积分,对标价格
             */
            dappSystemService.updatePackage(dappMemberEntities);
        }
    }
//
//    @Test