Procházet zdrojové kódy

fix 每天凌晨清除当天过期的GPT车票

zoujiajian před 3 roky
rodič
revize
cbba80500f

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/mapper/GroupsRelationMapper.java

@@ -40,4 +40,6 @@ public interface GroupsRelationMapper extends BaseMapper<GroupsRelation> {
 	List<GroupsRelation> selectExpiredRelationByCondition(@Param("now") DateTime now, @Param("list") List<Long> filterSkuIds);
 
 	GroupsRelation selectOutsideRelationByGroupsId(Long groupsId);
+
+	List<GroupsRelation> selectExpiredChatGPTRelation(@Param("nextBeginDay") DateTime nextBeginDay, @Param("list") List<Long> gptSkuIds);
 }

+ 11 - 0
netflix-dao/src/main/resources/mapper/GroupRelationMapper.xml

@@ -121,4 +121,15 @@
           and status = 'outside'
         order by rand() limit 1
     </select>
+
+    <select id="selectExpiredChatGPTRelation" resultType="com.cyksj.model.entity.GroupsRelation">
+        select gr.*
+        from groups_relation gr
+        inner join groups_trips gt on gt.id = gr.groups_id
+        where gt.sku_id in
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        and gr.expiry_time &lt;= #{nextBeginDay}
+    </select>
 </mapper>

+ 0 - 5
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationClearServiceImpl.java

@@ -54,11 +54,6 @@ public class GroupRelationClearServiceImpl implements GroupRelationClearService
 		GroupsRelationView groupsRelation = beanSearcher.searchFirst(GroupsRelationView.class,
 				MapUtils.builder().field(GroupsRelationView::getId, relationId).build());
 		if (groupsRelation != null) {
-			//23-06-06 ChatGPT PLUS独立会员账号 过期不清除
-			if (groupsRelation.getSkuId() != null && groupsRelation.getSkuId().equals(177l)) {
-				log.info("未清除过期账号用户userid:{}独立会员账号,relationId:{}", groupsRelation.getUserId(), relationId);
-				return;
-			}
 			Long userId = relation.getUserId();
 			Date startTime = relation.getStartTime();
 			Date expireTime = relation.getExpiryTime();

+ 17 - 1
netflix-service/src/main/java/com/cyksj/task/Scheduler.java

@@ -54,6 +54,8 @@ public class Scheduler {
 
         private final GoodsDonMapper donMapper;
 
+	    private final GoodsDonSkuMapper skuMapper;
+
         private final GroupsMapper groupsMapper;
 
         private final OrderDonService orderDonService;
@@ -103,7 +105,6 @@ public class Scheduler {
      * 每5分钟清理过期账号
      */
     @Scheduled(cron = "0 0/5 * * * ?")
-    @Transactional(rollbackFor = Throwable.class)
     public void clearExpiry() {
         DateTime now = new DateTime();
         //List<GroupsRelation> expiryList = groupsRelationMapper.selectList(Wrappers.lambdaQuery(GroupsRelation.class).le(GroupsRelation::getExpiryTime, now));
@@ -113,6 +114,21 @@ public class Scheduler {
         expiryList.forEach(relation -> groupRelationClearService.clearTicket(relation, UserTicketClearedRecord.Source.self));
     }
 
+	/**
+	 * 每天凌晨清除当天过期的ChatGPT PLUS车票
+	 */
+	@Scheduled(cron = "0 1 0 * * ?")
+	public void clearChatGPTPlusTicket() {
+		DateTime now = new DateTime();
+		DateTime nextBeginDay = DateUtil.offsetDay(DateUtil.beginOfDay(now), 1);
+		List<Long> gptSkuIds = skuMapper.selectList(Wrappers.lambdaQuery(GoodsDonSku.class)
+				.eq(GoodsDonSku::getGoodsId, 18)).stream().filter((sku) -> !filter_skuIds.contains(sku.getId())).map(GoodsDonSku::getId).collect(Collectors.toList());
+		List<GroupsRelation> expiryGPTListToday = groupsRelationMapper.selectExpiredChatGPTRelation(nextBeginDay, gptSkuIds);
+		log.info("每日凌晨清除当日过期GPT账号start ===> 数量:{}", expiryGPTListToday.size());
+		//过期账号清楚有效期
+		expiryGPTListToday.forEach(relation -> groupRelationClearService.clearTicket(relation, UserTicketClearedRecord.Source.self));
+	}
+
 	@Scheduled(cron = "0 0 9 * * ?")
 	public void expiryWxMsg() throws Exception {
 		if (envCommonService.isPrdEnv()) {