KKSU
2024-02-26 ed621a16a9ad1ec27bf62884b08f0aa02344a598
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -17,16 +17,19 @@
import cc.mrbird.febs.mall.service.IApiMallMemberService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.ICommonService;
import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
import cc.mrbird.febs.mall.vo.*;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -38,6 +41,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
/**
@@ -56,6 +60,7 @@
    private final MallShoppingCartMapper mallShoppingCartMapper;
    private final MallMoneyFlowMapper mallMoneyFlowMapper;
    private final IApiMallMemberWalletService walletService;
    private final IMallMoneyFlowService moneyFlowService;
    private final MallMemberPaymentMapper mallMemberPaymentMapper;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    private final MallShopApplyMapper mallShopApplyMapper;
@@ -592,4 +597,47 @@
        mallMemberBankMapper.deleteById(id);
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse redBag() {
        MallMember member = LoginUserUtil.getLoginUser();
        Object o = redisUtils.get(AppContants.SCORE_POOL_TODAY);
        if(ObjectUtil.isEmpty(o)){
            throw new FebsException("没有红包");
        }
        QueryWrapper<MallMember> formalMember = new QueryWrapper<>();
        formalMember.ne("level", AgentLevelEnum.ZERO_LEVEL.name());
        List<MallMember> mallMembers = this.baseMapper.selectList(formalMember);
        BigDecimal outCome = BigDecimal.ZERO;
        if(CollUtil.isNotEmpty(mallMembers)){
            BigDecimal scorePoolToDay = new BigDecimal(o.toString());
            BigDecimal income = new BigDecimal(scorePoolToDay.divide(new BigDecimal(mallMembers.size()), 2, RoundingMode.HALF_UP).intValue());
            if(income.compareTo(BigDecimal.ZERO) < 1){
                throw new FebsException("没有红包");
            }
            MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(member.getId());
            if(mallMemberWallet.getScore().compareTo(BigDecimal.ZERO) < 1){
                throw new FebsException("没有红包");
            }
            if(mallMemberWallet.getScore().compareTo(income) < 0){
                outCome = new BigDecimal(mallMemberWallet.getScore().intValue());
            }else{
                outCome = income;
            }
            outCome = new BigDecimal(RandomUtil.randomBigDecimal(BigDecimal.ZERO,outCome).intValue()).setScale(2,BigDecimal.ROUND_DOWN);
                /*
                平分成佣金,一比一减少赠送积分
                如果没有赠送积分,则平分0
                 */
            moneyFlowService.addMoneyFlow(member.getId(), outCome, MoneyFlowTypeEnum.SCORE_POOL.getValue(), null, FlowTypeEnum.COMMISSION.getValue());
            moneyFlowService.addMoneyFlow(member.getId(), outCome.negate(), MoneyFlowTypeEnum.SCORE_POOL.getValue(), null, FlowTypeEnum.SCORE.getValue());
            walletService.add(outCome, member.getId(), "commission");
            walletService.reduce(outCome.negate(), member.getId(), "score");
        }
        return new FebsResponse().success().data(outCome);
    }
}