zoujiajian 1 anno fa
parent
commit
41115ad409

+ 24 - 0
netflix-dao/src/main/java/com/cyksj/model/response/NetflixErrorAccountStatus.java

@@ -0,0 +1,24 @@
+package com.cyksj.model.response;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: NetflixErrorAccountStatus
+ * 创建者: JavaZou
+ * 创建时间:2025/6/24 14:34
+ */
+@Getter
+@Setter
+public class NetflixErrorAccountStatus {
+	/**
+	 * 账号状态
+	 */
+	private Integer nfStatus;
+
+	/**
+	 * 申请恢复状态
+	 */
+	private Integer recoverStatus;
+}

+ 3 - 2
netflix-service/src/main/java/com/cyksj/service/relation/GroupRelationFrontService.java

@@ -8,6 +8,7 @@ import com.cyksj.model.manage.views.AccountView;
 import com.cyksj.model.request.ErrorNetflixChangeReq;
 import com.cyksj.model.request.SpecialGoodsTicketReq;
 import com.cyksj.model.request.TicketLoginReq;
+import com.cyksj.model.response.NetflixErrorAccountStatus;
 import com.cyksj.model.views.GoodsCategorySkuView;
 import com.cyksj.model.views.RenewalView;
 import com.cyksj.model.views.UserRecommendGoodsFrontView;
@@ -79,7 +80,7 @@ public interface GroupRelationFrontService {
 
 	void nfErrorAccountSubmit(long userId, Long relationId);
 
-	Integer getNetflixErrorAccountStatus(long userId, Long relationId);
+	NetflixErrorAccountStatus getNetflixErrorAccountStatus(long userId, Long relationId);
 
 	List<NetflixUserAccountStatusRecord> getUserNetflixSubmitRecord(long userId);
 
@@ -100,7 +101,7 @@ public interface GroupRelationFrontService {
 	Long getTicket(Long userId, Long skuId, Boolean isVip);
 
 	Boolean getVipMirrorTicketIfEmpty(long userId, Long skuId);
-	void netflixSubmitRecover(ErrorNetflixChangeReq req);
+	Integer netflixSubmitRecover(ErrorNetflixChangeReq req);
 
 	void errorNetflixSubmitChangeOtherTicket(ErrorNetflixChangeReq req) throws Exception;
 

+ 44 - 19
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -38,6 +38,7 @@ import com.cyksj.model.request.ErrorNetflixChangeReq;
 import com.cyksj.model.request.OrderRefundReq;
 import com.cyksj.model.request.SpecialGoodsTicketReq;
 import com.cyksj.model.request.TicketLoginReq;
+import com.cyksj.model.response.NetflixErrorAccountStatus;
 import com.cyksj.model.views.*;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.chatgpt.ChatGptAccountService;
@@ -1227,7 +1228,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 	}
 
 	@Override
-	public Integer getNetflixErrorAccountStatus(long userId, Long relationId) {
+	public NetflixErrorAccountStatus getNetflixErrorAccountStatus(long userId, Long relationId) {
 		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
 		NetflixUserAccountStatusRecord netflixUseAccountStatusRecord = netflixUserAccountStatusRecordMapper.selectOne(Wrappers.lambdaQuery(NetflixUserAccountStatusRecord.class)
 				.eq(NetflixUserAccountStatusRecord::getRelationId, relationId)
@@ -1239,16 +1240,27 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 		}
 		Integer state = netflixUseAccountStatusRecord.getState();
 		//2是登录失败 3是被封号
-		if (state == 3) {
-			if (netflixUseAccountStatusRecord.getCreatedTime().compareTo(DateUtil.offsetMinute(DateTime.now(), -10)) > 0) {
-				state = 0;
-			}
-		}
+//		if (state == 3) {
+//			if (netflixUseAccountStatusRecord.getCreatedTime().compareTo(DateUtil.offsetMinute(DateTime.now(), -10)) > 0) {
+//				state = 0;
+//			}
+//		}
 		//登录失败不算异常
 		if (state == 2) {
 			state = 1;
 		}
-		return state;
+		NetflixErrorAccountStatus status = new NetflixErrorAccountStatus();
+		//账号检测状态
+		status.setNfStatus(state);
+		NetflixUserAccountSubmitRecoverRecord recoverRecord = netflixUserAccountSubmitRecoverRecordMapper.selectOne(Wrappers.lambdaQuery(NetflixUserAccountSubmitRecoverRecord.class)
+				.eq(NetflixUserAccountSubmitRecoverRecord::getUserId, userIdList)
+				.eq(NetflixUserAccountSubmitRecoverRecord::getRelationId, relationId)
+				.last("limit 1"));
+		if (recoverRecord != null) {
+			//申请恢复状态
+			status.setRecoverStatus(recoverRecord.getStatus());
+		}
+		return status;
 	}
 
 	@Override
@@ -1425,24 +1437,37 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 	}
 
 	@Override
-	public void netflixSubmitRecover(ErrorNetflixChangeReq req) {
+	public Integer netflixSubmitRecover(ErrorNetflixChangeReq req) {
 		Long relationId = req.getRelationId();
 		Long userId = req.getUserId();
 		//校验奈飞账号状态
 		GroupsRelationView netflixRelationView = checkNetflixErrorStatus(relationId, userId);
 		Date expiryTime = netflixRelationView.getExpiryTime();
-		NetflixUserAccountSubmitRecoverRecord recoverRecord = new NetflixUserAccountSubmitRecoverRecord();
-		recoverRecord.setRelationId(relationId);
-		recoverRecord.setUserId(netflixRelationView.getUserId());
-		recoverRecord.setSkuId(netflixRelationView.getSkuId());
-		recoverRecord.setAccount(netflixRelationView.getAccount());
-		Long betweenDay = DateUtil.betweenDay(DateTime.now(), expiryTime, false) + 1;
-		recoverRecord.setRemainDays(betweenDay);
-		try {
-			netflixUserAccountSubmitRecoverRecordMapper.insert(recoverRecord);
-		} catch (DuplicateKeyException e) {
-			throw BusinessRuntimeException.getInstance("您已申请恢复");
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
+		NetflixUserAccountSubmitRecoverRecord recoverRecord = netflixUserAccountSubmitRecoverRecordMapper.selectOne(Wrappers.lambdaQuery(NetflixUserAccountSubmitRecoverRecord.class)
+				.eq(NetflixUserAccountSubmitRecoverRecord::getRelationId, relationId)
+				.in(NetflixUserAccountSubmitRecoverRecord::getUserId, userIdList)
+				.eq(NetflixUserAccountSubmitRecoverRecord::getStatus, 0)
+				.last("limit 1"));
+		if (recoverRecord == null) {
+			recoverRecord = new NetflixUserAccountSubmitRecoverRecord();
+			recoverRecord.setRelationId(relationId);
+			recoverRecord.setUserId(netflixRelationView.getUserId());
+			recoverRecord.setSkuId(netflixRelationView.getSkuId());
+			recoverRecord.setAccount(netflixRelationView.getAccount());
+			Long betweenDay = DateUtil.betweenDay(DateTime.now(), expiryTime, false) + 1;
+			recoverRecord.setRemainDays(betweenDay);
+			try {
+				netflixUserAccountSubmitRecoverRecordMapper.insert(recoverRecord);
+			} catch (DuplicateKeyException e) {
+				throw BusinessRuntimeException.getInstance("您已申请恢复");
+			}
 		}
+		//等待位数
+		Integer selectCount = netflixUserAccountSubmitRecoverRecordMapper.selectCount(Wrappers.lambdaQuery(NetflixUserAccountSubmitRecoverRecord.class)
+				.lt(NetflixUserAccountSubmitRecoverRecord::getCreatedTime, recoverRecord.getCreatedTime())
+				.eq(NetflixUserAccountSubmitRecoverRecord::getStatus, 0));
+		return selectCount + 1;
 	}
 
 	@Override

+ 6 - 5
netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java

@@ -32,6 +32,7 @@ import com.cyksj.model.manage.views.AccountView;
 import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.request.*;
 import com.cyksj.model.response.GptStandbyResp;
+import com.cyksj.model.response.NetflixErrorAccountStatus;
 import com.cyksj.model.views.*;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.chatgpt.ChatGptAuthService;
@@ -1206,10 +1207,10 @@ public class GroupRelationController {
      * 奈飞账号检测结果
      */
     @GetMapping("/get/netflix/error/account/status/{relationId}")
-    public Result<Integer> getNetflixErrorAccountStatus(@PathVariable Long relationId) {
+    public Result<NetflixErrorAccountStatus> getNetflixErrorAccountStatus(@PathVariable Long relationId) {
         long userId = StpUserUtil.getLoginIdAsLong();
-        Integer state = groupRelationFrontService.getNetflixErrorAccountStatus(userId, relationId);
-        return GatewayResponse.SUCCESS.newBuilder().toResult(state);
+        NetflixErrorAccountStatus status = groupRelationFrontService.getNetflixErrorAccountStatus(userId, relationId);
+        return GatewayResponse.SUCCESS.newBuilder().toResult(status);
     }
 
     /**
@@ -1229,8 +1230,8 @@ public class GroupRelationController {
     public Result<Integer> netflixSubmitRecover(@RequestBody ErrorNetflixChangeReq req) {
         long userId = StpUserUtil.getLoginIdAsLong();
         req.setUserId(userId);
-        groupRelationFrontService.netflixSubmitRecover(req);
-        return GatewayResponse.SUCCESS.newBuilder().toResult();
+        Integer index = groupRelationFrontService.netflixSubmitRecover(req);
+        return GatewayResponse.SUCCESS.newBuilder().toResult(index);
     }
 
     /**