From ed621a16a9ad1ec27bf62884b08f0aa02344a598 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 26 Feb 2024 10:25:50 +0800 Subject: [PATCH] 抽奖 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 123 +++++++++++++++++++++++++++++++++++----- 1 files changed, 106 insertions(+), 17 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index a736675..3f83557 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -7,6 +7,8 @@ import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.*; +import cc.mrbird.febs.mall.conversion.MallGoodsConversion; +import cc.mrbird.febs.mall.conversion.MallMemberBankConversion; import cc.mrbird.febs.mall.conversion.MallMemberConversion; import cc.mrbird.febs.mall.conversion.MallShopApplyConversion; import cc.mrbird.febs.mall.dto.*; @@ -15,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; @@ -36,6 +41,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; /** @@ -54,10 +60,12 @@ 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; private final MallRegisterAppealMapper mallRegisterAppealMapper; + private final MallMemberBankMapper mallMemberBankMapper; @Value("${spring.profiles.active}") @@ -80,10 +88,12 @@ } String account = registerDto.getAccount(); - String code = registerDto.getCode(); - boolean flags = commonService.verifyCode(account, code); - if(!flags) { - throw new FebsException("验证码错误"); + if (!"admin".equals(registerDto.getRegistType())) { + String code = registerDto.getCode(); + boolean flags = commonService.verifyCode(account, code); + if (!flags) { + throw new FebsException("验证码错误"); + } } mallMember = new MallMember(); @@ -313,23 +323,12 @@ MallMember mallMember = this.baseMapper.selectById(memberId); List<TeamListVo> list = this.baseMapper.selectTeamListByInviteId(mallMember.getInviteId()); -// BigDecimal ownAmount = this.baseMapper.selectOwnOrderAmountByInviteId(mallMember.getInviteId()); -// TeamListVo own = new TeamListVo(); -// own.setCreatedTime(mallMember.getCreatedTime()); -// own.setAmount(ownAmount); -// own.setName(mallMember.getName()); -// own.setPhone(mallMember.getPhone()); -// own.setInviteId(mallMember.getInviteId()); -// own.setIsCurrent(1); -// own.setCnt(this.baseMapper.selectOwnCntByInviteId(mallMember.getInviteId())); -// own.setOrderCnt(this.baseMapper.selectOwnOrderCntByInviteId(mallMember.getInviteId())); -// own.setId(mallMember.getId()); MyTeamVo myTeamVo = new MyTeamVo(); myTeamVo.setTeam(list); myTeamVo.setMyAchieve(this.baseMapper.selectAchieveByMemberId(mallMember.getInviteId(), 1)); myTeamVo.setMyTeamAchieve(this.baseMapper.selectAchieveByMemberId(mallMember.getInviteId(), 2)); - myTeamVo.setMyTeamCnt(list.size()); + myTeamVo.setMyTeamCnt(this.baseMapper.selectAllChildAgentListByInviteId(mallMember.getInviteId()).size()); return new FebsResponse().success().data(myTeamVo); } @@ -433,7 +432,7 @@ MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); BigDecimal profit = mallMoneyFlowMapper.selectProfitByDateAndMemberId(memberId); - BigDecimal canMoney = wallet.getBalance(); + BigDecimal canMoney = wallet.getCommission(); if (profit != null) { if(canMoney.compareTo(BigDecimal.ZERO) > 0) { canMoney = canMoney.subtract(profit); @@ -551,4 +550,94 @@ } return MallShopApplyConversion.INSTANCE.entitiesToVOs(list); } + + @Override + @Transactional + public FebsResponse addMemberBank(AddMemberBankDto addMemberBankDto) { + MallMember member = LoginUserUtil.getLoginUser(); + MallMemberBank mallMemberBank = MallMemberBankConversion.INSTANCE.dtoToentity(addMemberBankDto); + mallMemberBank.setMemberId(member.getId()); + mallMemberBankMapper.insert(mallMemberBank); + return new FebsResponse().success(); + } + + @Override + public FebsResponse findMemberBankList(MemberBankListDto memberBankListDto) { + MallMember member = LoginUserUtil.getLoginUser(); + Page<MemberBankListVo> page = new Page<>(memberBankListDto.getPageNum(), memberBankListDto.getPageSize()); + memberBankListDto.setMemberId(member.getId()); + IPage<MemberBankListVo> pageResult = mallMemberBankMapper.findMemberBankListInPage(memberBankListDto, page); + return new FebsResponse().success().data(pageResult); + } + + @Override + public FebsResponse findBankDetailsById(Long id) { + MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(id); + MemberBankListVo memberBankListVo = MallMemberBankConversion.INSTANCE.entityToVo(mallMemberBank); + return new FebsResponse().success().data(memberBankListVo); + } + + @Override + @Transactional + public FebsResponse updateMemberBank(UpdateMemberBankDto updateMemberBankDto) { + Long id = updateMemberBankDto.getId(); + MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(id); + mallMemberBank.setName(updateMemberBankDto.getName()); + mallMemberBank.setIdType(updateMemberBankDto.getIdType()); + mallMemberBank.setIdCardNum(updateMemberBankDto.getIdCardNum()); + mallMemberBank.setBankNo(updateMemberBankDto.getBankNo()); + mallMemberBank.setPhone(updateMemberBankDto.getPhone()); + mallMemberBankMapper.updateById(mallMemberBank); + return new FebsResponse().success(); + } + + @Override + @Transactional + public FebsResponse delMemberBank(Long id) { + 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); + } } -- Gitblit v1.9.1