| | |
| | | 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.ApiVoteOptionRecordInPageDto; |
| | | 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; |
| | |
| | | // 查询关注点赞转发记录,筛选出关注活动类型且未删除的关注记录,并按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()) |
| | |
| | | ); |
| | | if(happyActivity != null){ |
| | | BeanUtil.copyProperties(happyActivity,apiActivityVo); |
| | | List<HappyFollow> happyFollows = happyFollowMapper.selectList( |
| | | new LambdaQueryWrapper<HappyFollow>() |
| | | .select(HappyFollow::getId, HappyFollow::getType) |
| | | .eq(HappyFollow::getSourceType, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode()) |
| | | .eq(HappyFollow::getSourceId, happyActivity.getId()) |
| | | .in(HappyFollow::getType, Arrays.asList(StateUpDownEnum.LIKE.getCode(), StateUpDownEnum.SHARE.getCode())) |
| | | .eq(HappyFollow::getDeleteFlag, StateUpDownEnum.DOWN.getCode()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(happyFollows)){ |
| | | // 使用Stream流操作happyFollows,按照type分类,返回每一个不同type的总数量,并返回一个Map |
| | | Map<Integer, Long> typeCountMap = happyFollows.stream() |
| | | .collect(Collectors.groupingBy(HappyFollow::getType, Collectors.counting())); |
| | | |
| | | apiActivityVo.setZanCnt(Math.toIntExact(typeCountMap.get(StateUpDownEnum.LIKE.getCode()))); |
| | | apiActivityVo.setSendCnt(Math.toIntExact(typeCountMap.get(StateUpDownEnum.SHARE.getCode()))); |
| | | } |
| | | |
| | | |
| | | } |
| | | return new FebsResponse().success().data(apiActivityVo); |
| | | } |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | throw new FebsException("活动不存在"); |
| | | } |
| | | |
| | | if (StateUpDownEnum.ACTIVITY_TYPE_VOTE.getCode() == happyActivity.getType()) { |
| | | Long sourceOptionId = dto.getSourceOptionId(); |
| | | if (sourceOptionId == null) { |
| | | throw new FebsException("选项ID不能为空"); |
| | | } |
| | | this.operateDoVote(memberId, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode(), sourceId, sourceOptionId, type); |
| | | this.addLikeCnt(sourceOptionId); |
| | | } else { |
| | | this.operateDo(memberId, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode(), sourceId, type); |
| | | } |
| | | this.operateDo(memberId, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode(), sourceId, type); |
| | | |
| | | // if (StateUpDownEnum.ACTIVITY_TYPE_VOTE.getCode() == happyActivity.getType()) { |
| | | // Long sourceOptionId = dto.getSourceOptionId(); |
| | | // if (sourceOptionId == null) { |
| | | // throw new FebsException("选项ID不能为空"); |
| | | // } |
| | | // this.operateDoVote(memberId, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode(), sourceId, sourceOptionId, type); |
| | | // this.addLikeCnt(sourceOptionId); |
| | | // } else { |
| | | // this.operateDo(memberId, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode(), sourceId, type); |
| | | // } |
| | | } else if (StateUpDownEnum.SOURCE_TYPE_SOCIAL_CIRCLE.getCode() == sourceType) { |
| | | // 朋友圈点赞或关注 |
| | | this.operateDo(memberId, StateUpDownEnum.SOURCE_TYPE_SOCIAL_CIRCLE.getCode(), sourceId, type); |
| | |
| | | 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) |
| | |
| | | } |
| | | |
| | | @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 |
| | | public FebsResponse operateRegister(ApiOperateRegisterActivityDto dto) { |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | |