|  |  |  | 
|---|
|  |  |  | 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.*; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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) { | 
|---|
|  |  |  | 
|---|
|  |  |  | 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("操作成功"); | 
|---|
|  |  |  | } | 
|---|