xiaoyong931011
2023-08-28 d03394c01ca1ae7f3431755c628e1bd2106dc287
后台修改
5 files modified
87 ■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/entity/MallAchieveRecord.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/MallAchieveRecordMapper.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java 63 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/MallAchieveRecordMapper.xml 9 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/MallAchieveRecord.java
@@ -20,6 +20,10 @@
    private BigDecimal amount;
    //订单成本
    private BigDecimal costAmount;
    //剩余积分
    private BigDecimal score;
    //总共积分
    private BigDecimal costScore;
    private Date achieveTime;
@@ -34,6 +38,8 @@
    public MallAchieveRecord(Long memberId,
                             BigDecimal score,
                             BigDecimal costScore,
                             BigDecimal amount,
                             BigDecimal costAmount,
                             Date achieveTime,
@@ -41,6 +47,8 @@
                             Integer isNormal,
                             Date payTime) {
        this.memberId = memberId;
        this.score = score;
        this.costScore = costScore;
        this.amount = amount;
        this.costAmount = costAmount;
        this.achieveTime = achieveTime;
src/main/java/cc/mrbird/febs/dapp/mapper/MallAchieveRecordMapper.java
@@ -26,6 +26,7 @@
    List<MallAchieveRecord> selectListByDate(@Param("date")Date profitDate);
    List<MallAchieveRecord> selectListByMemberId(@Param("memberId")Long memberId);
    List<MallAchieveRecord> selectListByMemberIdAndScore(@Param("memberId")Long memberId);
    List<MallAchieveRecord> selectListCostAmountByMemberId(@Param("memberId")Long memberId);
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -218,7 +218,8 @@
            for(DappMemberEntity memberEntity : records){
                Long memberId = memberEntity.getId();
                List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId);
//                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();
@@ -545,7 +546,8 @@
        dappMemberInfoVo.setPayCnt(payCnt);
        dappMemberInfoVo.setCancelCnt(cancelCnt);
        List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(member.getId());
//        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();
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -33,6 +33,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jline.utils.Log;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.web3j.utils.Convert;
@@ -2469,7 +2470,7 @@
         * 新增一条业绩
         */
        MallAchieveRecord mallAchieveRecord = new MallAchieveRecord(
                memberId,amount,amount,DateUtil.date(),orderId,1,mallOrderInfo.getPayTime()
                memberId,donateScore,donateScore,amount,amount,DateUtil.date(),orderId,1,mallOrderInfo.getPayTime()
        );
        mallAchieveRecordMapper.insert(mallAchieveRecord);
@@ -2629,7 +2630,8 @@
            }
            Long perkMemberId = dappMemberEntity.getId();
            //获取当前用户所有进行中的业绩释放
            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(perkMemberId);
//            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(perkMemberId);
            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberIdAndScore(perkMemberId);
            if(CollUtil.isEmpty(mallAchieveRecords)){
                continue;
@@ -2943,6 +2945,9 @@
        }
        for(DappFundFlowEntity dappFundFlowEntity : dappFundFlowEntities){
            Long memberId = dappFundFlowEntity.getMemberId();
            if(memberId == 2852L){
                Log.info("1");
            }
            //当日预期总收益
            BigDecimal amount = dappFundFlowEntity.getAmount();
            if(BigDecimal.ZERO.compareTo(amount) >= 0){
@@ -2950,8 +2955,9 @@
            }
            //当日预期总收益
            BigDecimal amountMagic = amount;
            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId);
            if(CollUtil.isEmpty(mallAchieveRecords)){
//            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId);
            List<MallAchieveRecord> mallAchieveRecordsScore = mallAchieveRecordMapper.selectListByMemberIdAndScore(memberId);
            if(CollUtil.isEmpty(mallAchieveRecordsScore)){
                BigDecimal localTotalAchieve = amount;
                /**
@@ -2961,7 +2967,9 @@
                DappWalletMineEntity dappWalletMineEntity = dappWalletMineDao.selectByMemberId(memberId);
                BigDecimal totalScore = dappWalletMineEntity.getTotalAmount();
                BigDecimal availableScore = dappWalletMineEntity.getAvailableAmount();
                if(BigDecimal.ZERO.compareTo(totalScore) >= 0){
                    continue;
                }
                if(localTotalAchieve.compareTo(totalScore) >= 0){
                    localTotalAchieve = totalScore;
                    //当实际获取大于用户的赠送积分,将用户更新为未激活
@@ -3050,9 +3058,13 @@
                set.add(dappMemberEntity);
                continue;
            }
            //实际获取总收益
            BigDecimal localTotalAchieve = BigDecimal.ZERO;
            BigDecimal totalAchieve = mallAchieveRecords.stream().map(MallAchieveRecord::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
            BigDecimal totalAchieve = mallAchieveRecordsScore.stream().map(MallAchieveRecord::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
            BigDecimal totalAchieveCostAmount = mallAchieveRecordsScore.stream().map(MallAchieveRecord::getCostAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
            BigDecimal totalScoreAva = mallAchieveRecordsScore.stream().map(MallAchieveRecord::getScore).reduce(BigDecimal.ZERO, BigDecimal::add);
            //用户每日获取的最大值
            DataDictionaryCustom maxReleaseDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
@@ -3061,19 +3073,23 @@
            );
            BigDecimal maxRelease = new BigDecimal(ObjectUtil.isEmpty(maxReleaseDic) ? "1" : maxReleaseDic.getValue());
            //用户每日获取的最大值
            BigDecimal maxReleaseMember = totalAchieve.multiply(maxRelease).setScale(2, BigDecimal.ROUND_DOWN);
            BigDecimal maxReleaseMember = totalAchieveCostAmount.multiply(maxRelease).setScale(2, BigDecimal.ROUND_DOWN);
            if(amount.compareTo(maxReleaseMember) > 0){
                amount = maxReleaseMember;
            }
            //当日获取总收益大于总业绩
            if(amount.compareTo(totalAchieve) >= 0){
                for(MallAchieveRecord memberAchieve : mallAchieveRecords){
//            if(amount.compareTo(totalAchieve) >= 0){
            if(amount.compareTo(totalScoreAva) >= 0){
                for(MallAchieveRecord memberAchieve : mallAchieveRecordsScore){
                    memberAchieve.setIsNormal(2);
                    memberAchieve.setAmount(BigDecimal.ZERO);
                    memberAchieve.setScore(BigDecimal.ZERO);
                    mallAchieveRecordMapper.updateById(memberAchieve);
                }
                localTotalAchieve = totalAchieve;
                amount = amount.subtract(totalAchieve);
//                localTotalAchieve = totalAchieve;
//                amount = amount.subtract(totalAchieve);
                localTotalAchieve = totalScoreAva;
                amount = amount.subtract(totalScoreAva);
            }else{
                /**
                 *
@@ -3082,12 +3098,18 @@
                 * amount 0 0
                 *
                 */
                for(MallAchieveRecord memberAchieve : mallAchieveRecords){
                for(MallAchieveRecord memberAchieve : mallAchieveRecordsScore){
                    BigDecimal achieveAmount = memberAchieve.getAmount();
                    if(BigDecimal.ZERO.compareTo(amount) >= 0){
                    BigDecimal achieveScoreAva = memberAchieve.getScore();
                    if(BigDecimal.ZERO.compareTo(achieveScoreAva) >= 0){
                        break;
                    }else if(amount.compareTo(achieveAmount) < 0){
                        memberAchieve.setAmount(achieveAmount.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN));
                    }else if(amount.compareTo(achieveScoreAva) < 0){
                        if(BigDecimal.ZERO.compareTo(achieveAmount.subtract(amount)) >= 0){
                            memberAchieve.setAmount(BigDecimal.ZERO);
                        }else{
                            memberAchieve.setAmount(achieveAmount.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN));
                        }
                        memberAchieve.setScore(achieveScoreAva.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN));
                        mallAchieveRecordMapper.updateById(memberAchieve);
                        localTotalAchieve = localTotalAchieve.add(amount);
                        amount = BigDecimal.ZERO;
@@ -3095,9 +3117,10 @@
                    }else{
                        memberAchieve.setIsNormal(2);
                        memberAchieve.setAmount(BigDecimal.ZERO);
                        memberAchieve.setScore(BigDecimal.ZERO);
                        mallAchieveRecordMapper.updateById(memberAchieve);
                        localTotalAchieve = localTotalAchieve.add(achieveAmount);
                        amount = amount.subtract(achieveAmount);
                        localTotalAchieve = localTotalAchieve.add(achieveScoreAva);
                        amount = amount.subtract(achieveScoreAva);
                    }
                }
            }
@@ -3369,10 +3392,14 @@
            return;
        }
        for(DappMemberEntity dappMemberEntity : dappMemberEntities){
            if(dappMemberEntity.getId() == 2852){
                Log.info("1");
            }
            /**
             * 每个人的第一次入单之后的业绩不一样
             */
            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(dappMemberEntity.getId());
//            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(dappMemberEntity.getId());
            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberIdAndScore(dappMemberEntity.getId());
            if(CollUtil.isEmpty(mallAchieveRecords)){
                continue;
            }
src/main/resources/mapper/dapp/MallAchieveRecordMapper.xml
@@ -44,6 +44,13 @@
        order by CREATE_TIME asc
    </select>
    <select id="selectListByMemberIdAndScore" resultType="cc.mrbird.febs.dapp.entity.MallAchieveRecord">
        select * from mall_achieve_record
        where member_id = #{memberId}
        and score > 0
        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}
@@ -51,7 +58,7 @@
    </select>
    <select id="selectAchieveTotalByMemberIdAndCreateTime" resultType="java.math.BigDecimal">
        select IFNULL(sum(IFNULL(amount,0)),0) from mall_achieve_record
        select IFNULL(sum(IFNULL(cost_amount,0)),0) from mall_achieve_record
        where
            member_id = #{memberId}
            and pay_time >= #{date}