| | |
| | | import cn.lili.modules.lmk.domain.vo.PrizeResultVO; |
| | | import cn.lili.modules.lmk.enums.general.*; |
| | | import cn.lili.modules.lmk.service.*; |
| | | import cn.lili.modules.member.entity.dos.Member; |
| | | import cn.lili.modules.member.service.MemberService; |
| | | import cn.lili.modules.order.order.entity.dos.Order; |
| | | import cn.lili.modules.order.order.service.OrderService; |
| | | import cn.lili.modules.promotion.entity.dos.Coupon; |
| | |
| | | private final ShareActionService shareActionService; |
| | | private final AddNumCheekService addNumCheekService; |
| | | private final OrderService orderService; |
| | | private final MemberService memberService; |
| | | private final VideoService videoService; |
| | | private final VideoAuditRecordService videoAuditRecordService; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | addPrizeNumForm.setUserId(currentUser.getId()); |
| | | |
| | | } |
| | | String extend = addPrizeNumForm.getExtend(); |
| | | JSONObject jsonObject = JSONObject.parseObject(extend); |
| | | String shareId =null; |
| | | if (jsonObject != null) { |
| | | shareId = jsonObject.getString("shareId"); |
| | | } |
| | | Date date = new Date(); |
| | | ShareAction shareAction =null; |
| | | //分享进来的需要添加分享的用户 |
| | | if (StringUtils.isNotBlank(shareId)) { |
| | | shareAction = shareActionService.getById(shareId); |
| | | String userId = shareAction.getUserId(); |
| | | addPrizeNumForm.setUserId(userId); |
| | | Date createTime = shareAction.getCreateTime(); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(createTime); // 将Date设置到Calendar中 |
| | | calendar.add(Calendar.DAY_OF_MONTH, 1); // 加一天 |
| | | Date nextDay = calendar.getTime(); |
| | | //判断是否是新用户 |
| | | if (nextDay.before(date)) { |
| | | //当前分享不是今天的分享 |
| | | log.info("当前分享不是今天的分享{}",shareId); |
| | | return Result.ok().data(0); |
| | | } |
| | | if (currentUser.getId().equals(userId)) { |
| | | //分享的用户自己点击了 |
| | | log.info("用户自己点击了自己的分享"); |
| | | return Result.ok().data(0); |
| | | } |
| | | } |
| | | |
| | | String userId = addPrizeNumForm.getUserId(); |
| | | RLock lock = redissonClient.getLock(PRIZE_ADD_NUM + userId); |
| | | try { |
| | |
| | | if (!PrizeActivityStatusEnum.ON.name().equals(activity.getEnableStatus())) { |
| | | throw new ServiceException("当前活动没开启"); |
| | | } |
| | | Date date = new Date(); |
| | | //活动结束不需要添加 |
| | | if (date.after(activity.getEndTime())) { |
| | | throw new ServiceException("当前活动已结束"); |
| | |
| | | break; |
| | | } |
| | | } |
| | | String extend = addPrizeNumForm.getExtend(); |
| | | JSONObject jsonObject = JSONObject.parseObject(extend); |
| | | LambdaQueryWrapper<AddNumCheek> query = Wrappers.lambdaQuery(); |
| | | AddNumCheek addNumCheek = null; |
| | | String orderSn = null; |
| | |
| | | String ruleValue = null; |
| | | switch (actionEnum) { |
| | | case SHARE_GOODS_VIDEO: |
| | | String shareId = jsonObject.getString("shareId"); |
| | | ShareAction shareAction = shareActionService.getById(shareId); |
| | | if (shareAction == null) { |
| | | log.info("当前用户没有分享{}",userId); |
| | | return Result.ok().data(0); |
| | | } |
| | | if (addFlag) { |
| | |
| | | } |
| | | break; |
| | | case SHARE_USER_REGISTRY: |
| | | String memberId = jsonObject.getString("memberId"); |
| | | if (shareAction == null) { |
| | | log.info("当前用户没有分享{}",userId); |
| | | return Result.ok().data(0); |
| | | } |
| | | Member member = memberService.getById(shareAction.getUserId()); |
| | | Date createTime = member.getCreateTime(); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(createTime); // 将Date设置到Calendar中 |
| | | calendar.add(Calendar.DAY_OF_MONTH, 1); // 加一天 |
| | | Date nextDay = calendar.getTime(); |
| | | //判断是否是新用户 |
| | | if (nextDay.before(date)) { |
| | | //当前用户不是新用户 |
| | | log.info("当前用户不是新用户{}",currentUser.getId()); |
| | | return Result.ok().data(0); |
| | | } |
| | | query.eq(AddNumCheek::getType, PrizeUserActionEnum.SHARE_USER_REGISTRY.name()) |
| | | .eq(AddNumCheek::getCheckNo, memberId); |
| | | .eq(AddNumCheek::getCheckNo, currentUser.getId()); |
| | | if (addNumCheekService.getOne(query) != null) { |
| | | log.info("当前用户已经被邀请过了----------------->{}", memberId); |
| | | log.info("当前用户已经被邀请过了----------------->{}", currentUser.getId()); |
| | | return Result.ok().data(0); |
| | | } |
| | | addNumCheek = new AddNumCheek(); |
| | | addNumCheek.setType(PrizeUserActionEnum.SHARE_USER_REGISTRY.name()); |
| | | addNumCheek.setUserId(userId); |
| | | addNumCheek.setCheckNo(memberId); |
| | | addNumCheek.setCheckNo(currentUser.getId()); |
| | | addNumCheekService.save(addNumCheek); |
| | | break; |
| | | case SHARE_USER_SHOPPING: |
| | |
| | | addNumCheekService.save(addNumCheek); |
| | | break; |
| | | case USER_STAY_TIME: |
| | | //todo 通过用户行为分析获取数据进行判断 |
| | | ruleValue = addPrizeRule.getRuleValue(); |
| | | |
| | | if (addFlag) { |
| | | log.info("当前用户当天已经添加过了停留时间添加次数了-------->{}", userId); |
| | | return Result.ok().data(0); |
| | | } |
| | | ruleValue = addPrizeRule.getRuleValue(); |
| | | LocalDate now = LocalDate.now(); |
| | | LocalDateTime begin = LocalDateTime.of(now, LocalTime.MIN); |
| | | LocalDateTime end = LocalDateTime.of(now, LocalTime.MAX); |
| | | BigDecimal toDayStayTime = actionRecordService.getToDayStayTime(currentUser.getId(), begin, end); |
| | | BigDecimal divide = toDayStayTime.divide(new BigDecimal(60), 2, RoundingMode.HALF_UP); |
| | | if (divide.compareTo(new BigDecimal(ruleValue)) < 0) { |
| | | log.info("当前用户停留时间不足无法增加次数"); |
| | | return Result.ok().data(0); |
| | | } |
| | | break; |
| | |
| | | case USER_SCAN_STORE: |
| | | break; |
| | | case USER_PUBLISH_EXAMINE: |
| | | |
| | | String videoId = jsonObject.getString("videoId"); |
| | | query.eq(AddNumCheek::getType, PrizeUserActionEnum.USER_PUBLISH_EXAMINE.name()) |
| | | .eq(AddNumCheek::getCheckNo, videoId); |
| | | if (addNumCheekService.getOne(query) != null) { |
| | | log.info("当前视频审核已经发放过了----------------->{}", videoId); |
| | | return Result.ok().data(0); |
| | | } |
| | | Video video = videoService.getById(videoId); |
| | | if (video == null) { |
| | | log.info("当前视频不存在{}",videoId); |
| | | return Result.ok().data(0); |
| | | } |
| | | String status = video.getStatus(); |
| | | if (!"1".equals(status)) { |
| | | log.info("当前视频没有审核通过{}",videoId); |
| | | return Result.ok().data(0); |
| | | } |
| | | LambdaQueryWrapper<VideoAuditRecord> eq = Wrappers.<VideoAuditRecord>lambdaQuery() |
| | | .eq(VideoAuditRecord::getVideoId, videoId) |
| | | .eq(VideoAuditRecord::getAuditSuccess, true); |
| | | List<VideoAuditRecord> list = videoAuditRecordService.list(eq); |
| | | if (list.isEmpty()) { |
| | | log.info("当前视频没有审核通过{}",videoId); |
| | | return Result.ok().data(0); |
| | | } |
| | | addNumCheek = new AddNumCheek(); |
| | | addNumCheek.setType(PrizeUserActionEnum.USER_PUBLISH_EXAMINE.name()); |
| | | addNumCheek.setUserId(userId); |
| | | addNumCheek.setCheckNo(videoId); |
| | | addNumCheekService.save(addNumCheek); |
| | | break; |
| | | default: |
| | | return Result.ok().data(0); |