| | |
| | | import cc.mrbird.febs.common.utils.MallUtils; |
| | | import cc.mrbird.febs.common.utils.ShareCodeUtil; |
| | | import cc.mrbird.febs.mall.dto.*; |
| | | import cc.mrbird.febs.mall.dto.activity.ApiActivityOrderListDto; |
| | | import cc.mrbird.febs.mall.dto.activity.ApiCheckOrderDto; |
| | | import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionInPageDto; |
| | | import cc.mrbird.febs.mall.dto.activity.*; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.*; |
| | | import cc.mrbird.febs.mall.service.HappyActivityService; |
| | |
| | | import cc.mrbird.febs.mall.vo.activity.ApiVoteActivityHotVo; |
| | | import cc.mrbird.febs.pay.model.BrandWCPayRequestData; |
| | | import cc.mrbird.febs.pay.service.IXcxPayService; |
| | | import cc.mrbird.febs.rabbit.producter.AgentProducer; |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | |
| | | private final IXcxPayService iXcxPayService; |
| | | private final IApiMallMemberWalletService iApiMallMemberWalletService; |
| | | private final HappyActivityCategoryMapper happyActivityCategoryMapper; |
| | | private final AgentProducer agentProducer; |
| | | |
| | | @Override |
| | | public FebsResponse activityList(ApiActivityInfoDto dto) { |
| | |
| | | // 查询关注点赞转发记录,筛选出关注活动类型且未删除的关注记录,并按ID升序排序,限制结果数量为3 |
| | | List<HappyFollow> happyFollows = happyFollowMapper.selectList( |
| | | new LambdaQueryWrapper<HappyFollow>() |
| | | .select(HappyFollow::getMemberId) |
| | | .eq(HappyFollow::getSourceType, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode()) |
| | | .in(HappyFollow::getSourceId, ids) |
| | | .eq(HappyFollow::getDeleteFlag, StateUpDownEnum.DOWN.getCode()) |
| | |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse voteOptionRecordInPage(ApiVoteOptionRecordInPageDto dto) { |
| | | // 创建分页对象,传入当前页和每页大小 |
| | | Page<ApiActivityOptionListVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); |
| | | Page<ApiActivityOptionListVo> voteRecordInPage = this.baseMapper.getVoteOptionRecordInPage(page, dto); |
| | | return new FebsResponse().success().data(voteRecordInPage); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse voteOption(Long id) { |
| | | |
| | | ApiActivityOptionVo apiActivityOptionVo = new ApiActivityOptionVo(); |
| | |
| | | if(happyActivityOption != null){ |
| | | BeanUtil.copyProperties(happyActivityOption, apiActivityOptionVo); |
| | | } |
| | | |
| | | //投票人数 |
| | | List<HappyFollow> happyFollows = happyFollowMapper.selectList( |
| | | new LambdaQueryWrapper<HappyFollow>() |
| | | .select(HappyFollow::getId) |
| | | .eq(HappyFollow::getSourceOptionId, id) |
| | | .eq(HappyFollow::getType, StateUpDownEnum.VOTE.getCode()) |
| | | .eq(HappyFollow::getDeleteFlag, StateUpDownEnum.DOWN.getCode()) |
| | | .groupBy(HappyFollow::getMemberId) |
| | | ); |
| | | apiActivityOptionVo.setVoteCnt(CollUtil.isNotEmpty(happyFollows) ? happyFollows.size() : 0); |
| | | |
| | | List<HappyActivityOption> happyActivityOptions = happyActivityOptionMapper.selectList( |
| | | new LambdaQueryWrapper<HappyActivityOption>() |
| | | .select(HappyActivityOption::getId,HappyActivityOption::getLikesCnt) |
| | | .eq(HappyActivityOption::getActivityId, happyActivityOption.getActivityId()) |
| | | .eq(HappyActivityOption::getDeleteFlag, StateUpDownEnum.DOWN.getCode()) |
| | | .eq(HappyActivityOption::getState, StateUpDownEnum.VOTE_OPTION_STATE_AUDIT_SUCCESS.getCode()) |
| | | .orderByDesc(HappyActivityOption::getLikesCnt) |
| | | ); |
| | | //获取上一个名次的数据 |
| | | int firstCnt = 1; |
| | | int distanceCnt = 0; |
| | | for (HappyActivityOption option : happyActivityOptions){ |
| | | if(option.getId().equals(id)){ |
| | | apiActivityOptionVo.setFirstCnt(firstCnt); |
| | | if( firstCnt == 1 ){ |
| | | apiActivityOptionVo.setDistanceCnt(distanceCnt); |
| | | }else{ |
| | | apiActivityOptionVo.setDistanceCnt(distanceCnt- option.getLikesCnt()); |
| | | } |
| | | break; |
| | | }else{ |
| | | firstCnt = firstCnt + 1; |
| | | distanceCnt = option.getLikesCnt(); |
| | | } |
| | | } |
| | | |
| | | return new FebsResponse().success().data(apiActivityOptionVo); |
| | | } |
| | | |
| | |
| | | new LambdaQueryWrapper<HappyFollow>() |
| | | .eq(HappyFollow::getMemberId, memberId) |
| | | .eq(HappyFollow::getSourceId, sourceId) |
| | | .eq(HappyFollow::getSourceOptionId, sourceOptionId) |
| | | .eq(HappyFollow::getType, type) |
| | | .gt(HappyFollow::getCreatedTime, DateUtil.beginOfDay(new Date())) |
| | | ); |
| | |
| | | if(CollUtil.isNotEmpty(records)){ |
| | | //stream流操作records,获取全部的memberId(全部投票人) |
| | | Set<Long> memberIds = records.stream().map(ApiVoteRecordInPageVo::getMemberId).collect(Collectors.toSet()); |
| | | if(CollUtil.isEmpty(memberIds)){ |
| | | if(CollUtil.isNotEmpty(memberIds)){ |
| | | List<MallMember> mallMembers = mallMemberMapper.selectList( |
| | | new LambdaQueryWrapper<MallMember>() |
| | | .select(MallMember::getId, MallMember::getName, MallMember::getAvatar) |
| | |
| | | |
| | | |
| | | return new FebsResponse().success().data(voteRecordInPage); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse operateValidRegister(ApiOperateValidRegisterActivityDto dto) { |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | HappyActivity happyActivity = this.baseMapper.selectById(dto.getActivityId()); |
| | | |
| | | if (StateUpDownEnum.ACTIVITY_STATE_END.getCode() == happyActivity.getState()) { |
| | | throw new FebsException("活动已结束"); |
| | | } |
| | | if (StateUpDownEnum.DOWN.getCode() == happyActivity.getAddState()) { |
| | | throw new FebsException("活动尚未开启报名"); |
| | | } |
| | | //判断用户是否重复报名 |
| | | Integer registerCnt = happyActivityOptionMapper.selectCount( |
| | | new LambdaQueryWrapper<HappyActivityOption>() |
| | | .eq(HappyActivityOption::getMemberId, memberId) |
| | | .eq(HappyActivityOption::getActivityId, dto.getActivityId()) |
| | | .ne(HappyActivityOption::getState, StateUpDownEnum.VOTE_OPTION_STATE_AUDIT_REFUSE.getCode()) |
| | | .eq(HappyActivityOption::getDeleteFlag, StateUpDownEnum.DOWN.getCode()) |
| | | ); |
| | | if (registerCnt > 0) { |
| | | throw new FebsException("您已经报名过了"); |
| | | } |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | |
| | | HappyActivity happyActivity = this.baseMapper.selectById(activityId); |
| | | if (ObjectUtil.isEmpty(happyActivity)) { |
| | | throw new FebsException("活动不存在"); |
| | | } |
| | | if (StateUpDownEnum.ACTIVITY_STATE_NOT_START.getCode() == happyActivity.getState()) { |
| | | throw new FebsException("活动尚未开始"); |
| | | } |
| | | if (StateUpDownEnum.ACTIVITY_STATE_END.getCode() == happyActivity.getState()) { |
| | | throw new FebsException("活动已结束"); |
| | | } |
| | | |
| | | Integer joinCnt = happyActivity.getJoinCnt(); |
| | |
| | | happyActivityOrderItem.setTransferItemId(memberId); |
| | | happyActivityOrderItemMapper.updateById(happyActivityOrderItem); |
| | | |
| | | HappyActivity happyActivity = this.baseMapper.selectById(happyActivityOrderItem.getActivityId()); |
| | | agentProducer.sendCheckActivityItem(happyActivityOrderItem.getOrderId()); |
| | | |
| | | HappyActivity happyActivity = this.baseMapper.selectById(happyActivityOrderItem.getActivityId()); |
| | | ApiCheckOrderVo apiCheckOrderVo = new ApiCheckOrderVo(); |
| | | apiCheckOrderVo.setActivityName(happyActivity.getName()); |
| | | apiCheckOrderVo.setActivityStartTime(happyActivity.getStartTime()); |
| | |
| | | return new FebsResponse().fail().message("核销失败!"); |
| | | } |
| | | |
| | | /** |
| | | * 检查活动订单项的状态 |
| | | * 当指定订单的所有活动订单项都不处于"未使用"状态时,将订单状态更新为"已使用" |
| | | * |
| | | * @param orderId 订单ID,用于查询活动订单项和订单信息 |
| | | */ |
| | | @Override |
| | | public void checkActivityItem(Long orderId) { |
| | | // 查询指定订单ID的活动订单项数量,且状态为"未使用" |
| | | Integer integer = happyActivityOrderItemMapper.selectCount( |
| | | new LambdaQueryWrapper<HappyActivityOrderItem>() |
| | | .eq(HappyActivityOrderItem::getOrderId, orderId) |
| | | .eq(HappyActivityOrderItem::getState, StateUpDownEnum.DOWN.getCode()) |
| | | ); |
| | | // 如果没有找到任何未使用的活动订单项 |
| | | if(0 == integer){ |
| | | // 根据订单ID查询订单信息 |
| | | HappyActivityOrder happyActivityOrder = happyActivityOrderMapper.selectById(orderId); |
| | | if(happyActivityOrder == null){ |
| | | return; |
| | | } |
| | | // 更新订单状态为"已使用" |
| | | happyActivityOrder.setState(StateUpDownEnum.ORDER_STATE_USED.getCode()); |
| | | // 保存更新后的订单信息 |
| | | happyActivityOrderMapper.updateById(happyActivityOrder); |
| | | } |
| | | // 结束方法执行 |
| | | return; |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse voteActivityHot(Long id) { |
| | | |
| | | ApiVoteActivityHotVo apiVoteActivityHotVo = new ApiVoteActivityHotVo(); |
| | | HappyActivity happyActivity = this.baseMapper.selectById(id); |
| | | apiVoteActivityHotVo.setStartTime(happyActivity.getStartTime()); |
| | | apiVoteActivityHotVo.setEndTime(happyActivity.getEndTime()); |
| | | |
| | | Integer optionCnt = happyActivityOptionMapper.selectCount( |
| | | new LambdaQueryWrapper<HappyActivityOption>() |