| 
					
				 | 
			
			
				@@ -540,7 +540,7 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     // 单声部计算用户总分排名用户信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     List<ActivityRankingVo> records = getBaseMapper().selectActivityHighestScoreRankingInfo(activityPlanId, Long.parseLong(item.getKey()), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            0D, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            1D, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (CollectionUtils.isNotEmpty(records)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -732,34 +732,53 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 方法调整为异常执行,预防HTTP接口调用返回超时响应 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ThreadPool.getExecutor().submit(() -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<ActivityPlan> list = baseMapper.activityState(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (ActivityPlan plan : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                DistributedLock.of(redissonClient) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .runIfLockToFunction(CacheNameEnum.LOCK_ACTIVITY_STOCK.getRedisKey(plan.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                , (id) -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    ActivityPlan activityPlan = getById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if (activityPlan.getActivityState() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        activityPlan.setActivityState(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        baseMapper.updateById(activityPlan); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        //开始活动 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        Consumer<Long> afterFunction = startActivity.get(activityPlan.getActivityType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        if (!Objects.isNull(afterFunction)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            afterFunction.accept(activityPlan.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        activityPlan.setActivityState(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        activityPlan.setRewardFlag(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        baseMapper.updateById(activityPlan); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        //完成活动 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        Consumer<Long> afterFunction = successActivity.get(activityPlan.getActivityType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        if (!Objects.isNull(afterFunction)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            afterFunction.accept(activityPlan.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RLock lock = redissonClient.getLock(CacheNameEnum.LOCK_EVALUATION_CRON.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (lock.isLocked()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    log.warn("activityState {}, lockName={}", DateTime.now().toString(MK.TIME_PATTERN), lock.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 增加达标活动计算同步标识,前一个请求未执行完时忽略后续执行请求 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                lock.lock(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<ActivityPlan> list = baseMapper.activityState(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (ActivityPlan plan : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    DistributedLock.of(redissonClient) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            .runIfLockToFunction(CacheNameEnum.LOCK_ACTIVITY_STOCK.getRedisKey(plan.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    , (id) -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        ActivityPlan activityPlan = getById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        if (activityPlan.getActivityState() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            activityPlan.setActivityState(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            baseMapper.updateById(activityPlan); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            //开始活动 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            Consumer<Long> afterFunction = startActivity.get(activityPlan.getActivityType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            if (!Objects.isNull(afterFunction)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                afterFunction.accept(activityPlan.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            activityPlan.setActivityState(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            activityPlan.setRewardFlag(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            baseMapper.updateById(activityPlan); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            //完成活动 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            Consumer<Long> afterFunction = successActivity.get(activityPlan.getActivityType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            if (!Objects.isNull(afterFunction)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                afterFunction.accept(activityPlan.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                }, plan.getId(), 10l); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    }, plan.getId(), 10l); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                log.error("activityState time={}", DateTime.now().toString(MK.TIME_PATTERN), e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 释放锁 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (lock.isLocked() && lock.isHeldByCurrentThread()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    lock.unlock(); // 删除同步标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 |