From a331c3be6000d3c81f88e0a564e2db63da99018b Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Wed, 21 May 2025 10:33:42 +0800 Subject: [PATCH] feat(score): 初始化积分设置页面的默认值 --- src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java | 85 +++++++++++++++++++++++++++++++++++++----- 1 files changed, 75 insertions(+), 10 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java index c8ef391..b10d55f 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java @@ -12,6 +12,7 @@ import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.HappyActivityService; import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; +import cc.mrbird.febs.mall.service.IMallMoneyFlowService; import cc.mrbird.febs.mall.vo.*; import cc.mrbird.febs.mall.dto.ApiOperateDoDto; import cc.mrbird.febs.mall.vo.activity.*; @@ -26,6 +27,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -57,6 +59,9 @@ private final IApiMallMemberWalletService iApiMallMemberWalletService; private final HappyActivityCategoryMapper happyActivityCategoryMapper; private final AgentProducer agentProducer; + private final DataDictionaryCustomMapper dataDictionaryCustomMapper; + private final HappyMemberLevelMapper happyMemberLevelMapper; + private final IMallMoneyFlowService mallMoneyFlowService; @Override public FebsResponse activityList(ApiActivityInfoDto dto) { @@ -582,6 +587,7 @@ HashMap<String, Object> stringObjectHashMap = new HashMap<>(); stringObjectHashMap.put("orderId",happyActivityOrder.getId()); stringObjectHashMap.put("amount",amount); + stringObjectHashMap.put("payType",happyActivityOrder.getPayType()); stringObjectHashMap.put("failTime",failTime); return new FebsResponse().success().data(stringObjectHashMap); @@ -907,7 +913,7 @@ .last("limit 1") ); if(happyActivityOrderItem == null){ - throw new FebsException("票号异常!"); + throw new FebsException("票号不存在!"); } HappyActivity happyActivity = this.baseMapper.selectById(happyActivityOrderItem.getActivityId()); @@ -943,16 +949,75 @@ .eq(HappyActivityOrderItem::getCode, orderItemCode) .last("limit 1") ); - if(happyActivityOrderItem != null){ - if(StateUpDownEnum.UP.getCode() == happyActivityOrderItem.getState()){ - throw new FebsException("票号已核销!"); - } - - happyActivityOrderItem.setState(StateUpDownEnum.UP.getCode()); - happyActivityOrderItem.setTransferItemId(memberId); - happyActivityOrderItemMapper.updateById(happyActivityOrderItem); - agentProducer.sendCheckActivityItem(happyActivityOrderItem.getOrderId()); + if(happyActivityOrderItem == null){ + throw new FebsException("票号不存在!"); } + if(StateUpDownEnum.UP.getCode() == happyActivityOrderItem.getState()){ + throw new FebsException("票号已核销!"); + } + + happyActivityOrderItem.setState(StateUpDownEnum.UP.getCode()); + happyActivityOrderItem.setTransferItemId(memberId); + happyActivityOrderItem.setUpdatedTime(DateUtil.date()); + happyActivityOrderItemMapper.updateById(happyActivityOrderItem); + + BigDecimal scorePercent = BigDecimal.ONE; + DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.SCORE_SIGN_SETTING.getType(), + DataDictionaryEnum.SCORE_SIGN_SETTING.getCode()); + if (dic != null) { + ScoreSettingDto scoreSettingDto = JSONObject.parseObject(dic.getValue(), ScoreSettingDto.class); + BigDecimal bigDecimal = ObjectUtil.isEmpty(scoreSettingDto.getScorePercent()) ? BigDecimal.ONE : new BigDecimal(scoreSettingDto.getScorePercent()); + if (bigDecimal.compareTo(BigDecimal.ZERO) > 0) { + scorePercent = bigDecimal; + } + } + BigDecimal bigDecimal = scorePercent.multiply(happyActivityOrderItem.getPrice()).setScale(0, RoundingMode.HALF_DOWN); + if(bigDecimal.compareTo(BigDecimal.ZERO) > 0){ + MallMember member = mallMemberMapper.selectById(happyActivityOrderItem.getMemberId()); + Integer director = member.getDirector(); + // 查询与董事等级代码匹配的会员等级信息 + LambdaQueryWrapper<HappyMemberLevel> happyMemberLevelLambdaQueryWrapper = new LambdaQueryWrapper<HappyMemberLevel>(); + happyMemberLevelLambdaQueryWrapper.eq(HappyMemberLevel::getCode, director); + happyMemberLevelLambdaQueryWrapper.last("limit 1"); + HappyMemberLevel happyMemberLevel = happyMemberLevelMapper.selectOne(happyMemberLevelLambdaQueryWrapper); + log.info("会员等级信息:{}", JSONUtil.toJsonStr(happyMemberLevel)); + if(ObjectUtil.isNotEmpty(happyMemberLevel)){ + BigDecimal amount = happyActivityOrderItem.getPrice(); + // 计算自己获得的积分 + BigDecimal minePercent = happyMemberLevel.getMinePercent(); + BigDecimal mineScore = amount.multiply(minePercent).multiply(scorePercent).setScale(0, RoundingMode.HALF_DOWN); + log.info("下单获得积分:{}", mineScore); + if(mineScore.compareTo(BigDecimal.ZERO) > 0){ + mallMoneyFlowService.addMoneyFlow( + memberId, + mineScore, + ScoreFlowTypeEnum.ACTIVITY_INSURE_PRIZE_SCORE.getValue(), + MallUtils.getOrderNum(), + FlowTypeEnum.PRIZE_SCORE.getValue(), + StrUtil.format( ScoreFlowTypeEnum.ACTIVITY_INSURE_PRIZE_SCORE.getDesc(),mineScore), + 2); + iApiMallMemberWalletService.add(mineScore,memberId , "prizeScore"); + + // 记录会员购买获得的经验 + BigDecimal multiply = amount.multiply(minePercent).setScale(2, RoundingMode.HALF_DOWN); + mallMoneyFlowService.addMoneyFlow( + memberId, + multiply, + ScoreFlowTypeEnum.ACTIVITY_INSURE_SCORE.getValue(), + MallUtils.getOrderNum(), + FlowTypeEnum.SCORE.getValue(), + StrUtil.format(ScoreFlowTypeEnum.ACTIVITY_INSURE_SCORE.getDesc(),multiply), + 2 + ); + // 更新会员钱包中的分数 + iApiMallMemberWalletService.add(multiply, memberId, "score"); + // 发送会员等级升级消息 + agentProducer.sendVipLevelUp(memberId); + } + } + } + agentProducer.sendCheckActivityItem(happyActivityOrderItem.getOrderId()); return new FebsResponse().success().message("操作成功"); } -- Gitblit v1.9.1