zoujiajian 1 год назад
Родитель
Сommit
328e599873

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/AccountNetflixStateMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.AccountNetflixState;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: AccountNetflixStateMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/11/12 18:23
+ */
+public interface AccountNetflixStateMapper extends BaseMapper<AccountNetflixState> {
+}

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/NetflixUseAccountStatusRecordMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.NetflixUseAccountStatusRecord;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: NetflixUseAccountStatusRecordMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/11/12 18:18
+ */
+public interface NetflixUseAccountStatusRecordMapper extends BaseMapper<NetflixUseAccountStatusRecord> {
+}

+ 25 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/AccountNetflixState.java

@@ -0,0 +1,25 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: AccountNetflixState
+ * 创建者: JavaZou
+ * 创建时间:2024/11/12 18:23
+ */
+@Getter
+@Setter
+public class AccountNetflixState extends BaseEntity{
+	private String account;
+
+	private String password;
+
+	private String taskId;
+
+	/**
+	 * 0正在执行中 1是账号正常 2是登录失败 3是被封号
+	 */
+	private Integer state;
+}

+ 26 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/NetflixUseAccountStatusRecord.java

@@ -0,0 +1,26 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: NetflixUseAccountStatusRecord
+ * 创建者: JavaZou
+ * 创建时间:2024/11/12 18:17
+ */
+@Getter
+@Setter
+public class NetflixUseAccountStatusRecord extends BaseEntity{
+	private Long userId;
+
+	private Long relationId;
+
+	private String account;
+
+	private String password;
+
+	private Integer state;
+
+	private Boolean deleted;
+}

+ 7 - 0
netflix-service/src/main/java/com/cyksj/service/relation/GroupRelationFrontService.java

@@ -3,6 +3,7 @@ package com.cyksj.service.relation;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.cyksj.model.entity.GoodsDonSku;
 import com.cyksj.model.entity.GoodsDonSku;
 import com.cyksj.model.entity.GroupsRelation;
 import com.cyksj.model.entity.GroupsRelation;
+import com.cyksj.model.entity.NetflixUseAccountStatusRecord;
 import com.cyksj.model.manage.views.AccountView;
 import com.cyksj.model.manage.views.AccountView;
 import com.cyksj.model.request.SpecialGoodsTicketReq;
 import com.cyksj.model.request.SpecialGoodsTicketReq;
 import com.cyksj.model.request.TicketLoginReq;
 import com.cyksj.model.request.TicketLoginReq;
@@ -73,4 +74,10 @@ public interface GroupRelationFrontService {
 	void changeTicket(long userId, Long relationId);
 	void changeTicket(long userId, Long relationId);
 
 
 	AccountView getTempAccount(long userId, Long relationId);
 	AccountView getTempAccount(long userId, Long relationId);
+
+	void nfErrorAccountSubmit(long userId, Long relationId);
+
+	Integer getNetflixErrorAccountStatus(long userId, Long relationId);
+
+	List<NetflixUseAccountStatusRecord> getUserNetflixSubmitRecord(long userId);
 }
 }

+ 82 - 0
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -163,6 +163,10 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 
 
 	private final NetflixTempAccountUserMapper netflixTempAccountUserMapper;
 	private final NetflixTempAccountUserMapper netflixTempAccountUserMapper;
 
 
+	private final NetflixUseAccountStatusRecordMapper netflixUseAccountStatusRecordMapper;
+
+	private final AccountNetflixStateMapper accountNetflixStateMapper;
+
 	@Override
 	@Override
 	public SearchResult<RenewalView> getMyTicket(long userId, Boolean isLoginPopularize, String customId, String account, String orderNo) {
 	public SearchResult<RenewalView> getMyTicket(long userId, Boolean isLoginPopularize, String customId, String account, String orderNo) {
 		User u = userMapper.selectById(userId);
 		User u = userMapper.selectById(userId);
@@ -1039,6 +1043,14 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 		if (newRelation == null) {
 		if (newRelation == null) {
 			throw BusinessRuntimeException.getInstance("更换异常,请重新提交");
 			throw BusinessRuntimeException.getInstance("更换异常,请重新提交");
 		}
 		}
+
+		NetflixUseAccountStatusRecord netflixUseAccountStatusRecord = netflixUseAccountStatusRecordMapper.selectOne(Wrappers.lambdaQuery(NetflixUseAccountStatusRecord.class)
+				.eq(NetflixUseAccountStatusRecord::getRelationId, relationId)
+				.last("limit 1"));
+		if (netflixUseAccountStatusRecord != null) {
+			netflixUseAccountStatusRecord.setDeleted(false);
+			netflixUseAccountStatusRecordMapper.updateById(netflixUseAccountStatusRecord);
+		}
 	}
 	}
 
 
 	@Override
 	@Override
@@ -1087,6 +1099,76 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 		return accountView;
 		return accountView;
 	}
 	}
 
 
+	@Override
+	public void nfErrorAccountSubmit(long userId, Long relationId) {
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
+		RenewalView renewalView = beanSearcher.searchFirst(RenewalView.class, MapUtils.builder()
+				.field(RenewalView::getUserId, userIdList).op(Operator.InList)
+				.field(RenewalView::getRelationId, relationId)
+				.field(RenewalView::getExpiryTime, DateTime.now()).op(Operator.GreaterThan).build());
+		if (renewalView == null) {
+			throw BusinessRuntimeException.getInstance("车票不存在");
+		}
+		if (renewalView.getGoodsId() != 1) {
+			throw BusinessRuntimeException.getInstance("只支持奈飞车票");
+		}
+		String account = renewalView.getAccount();
+		String password = renewalView.getPassword();
+
+		Integer selectCount = netflixUseAccountStatusRecordMapper.selectCount(Wrappers.lambdaQuery(NetflixUseAccountStatusRecord.class)
+				.eq(NetflixUseAccountStatusRecord::getRelationId, relationId)
+				.eq(NetflixUseAccountStatusRecord::getUserId, userId)
+				.eq(NetflixUseAccountStatusRecord::getAccount, account));
+		if (selectCount > 0) {
+			throw BusinessRuntimeException.getInstance("该账号正在检测中");
+		}
+		AccountNetflixState accountNetflixState = accountNetflixStateMapper.selectOne(Wrappers.lambdaQuery(AccountNetflixState.class)
+				.eq(AccountNetflixState::getAccount, account)
+				.last("limit 1"));
+		Integer state = 0;
+		if (accountNetflixState != null && (accountNetflixState.getState() == 2 || accountNetflixState.getState() == 3)) {
+			state = accountNetflixState.getState();
+		}
+		NetflixUseAccountStatusRecord netflixUseAccountStatusRecord = new NetflixUseAccountStatusRecord();
+		netflixUseAccountStatusRecord.setAccount(account);
+		netflixUseAccountStatusRecord.setRelationId(relationId);
+		netflixUseAccountStatusRecord.setPassword(password);
+		netflixUseAccountStatusRecord.setUserId(renewalView.getUserId());
+		netflixUseAccountStatusRecord.setState(state);
+		netflixUseAccountStatusRecordMapper.insert(netflixUseAccountStatusRecord);
+	}
+
+	@Override
+	public Integer getNetflixErrorAccountStatus(long userId, Long relationId) {
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
+		NetflixUseAccountStatusRecord netflixUseAccountStatusRecord = netflixUseAccountStatusRecordMapper.selectOne(Wrappers.lambdaQuery(NetflixUseAccountStatusRecord.class)
+				.eq(NetflixUseAccountStatusRecord::getRelationId, relationId)
+				.eq(NetflixUseAccountStatusRecord::getDeleted, 1)
+				.in(NetflixUseAccountStatusRecord::getUserId, userIdList)
+				.last("limit 1"));
+		if (netflixUseAccountStatusRecord == null) {
+			throw BusinessRuntimeException.getInstance("未有提交记录");
+		}
+		Integer state = netflixUseAccountStatusRecord.getState();
+		//2是登录失败 3是被封号
+		if (state == 3 || state == 2) {
+			if (netflixUseAccountStatusRecord.getCreatedTime().compareTo(DateUtil.offsetMinute(DateTime.now(), -10)) > 0) {
+				state = 0;
+			}
+		}
+		return state;
+	}
+
+	@Override
+	public List<NetflixUseAccountStatusRecord> getUserNetflixSubmitRecord(long userId) {
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
+		List<NetflixUseAccountStatusRecord> netflixUseAccountStatusRecords = netflixUseAccountStatusRecordMapper.selectList(Wrappers.lambdaQuery(NetflixUseAccountStatusRecord.class)
+				.in(NetflixUseAccountStatusRecord::getUserId, userIdList)
+				.eq(NetflixUseAccountStatusRecord::getDeleted, 1)
+				.select(NetflixUseAccountStatusRecord::getRelationId, NetflixUseAccountStatusRecord::getState, NetflixUseAccountStatusRecord::getCreatedTime));
+		return netflixUseAccountStatusRecords;
+	}
+
 	private DistributePosterGoodsDetailView setGoodsPoster(RenewalView ticket, User user, List<Long> userIds) {
 	private DistributePosterGoodsDetailView setGoodsPoster(RenewalView ticket, User user, List<Long> userIds) {
 		DistributePosterGoodsDetailView distributePosterGoodsDetailView = beanSearcher.searchFirst(DistributePosterGoodsDetailView.class, MapUtils.flatBuilder(request.getParameterMap())
 		DistributePosterGoodsDetailView distributePosterGoodsDetailView = beanSearcher.searchFirst(DistributePosterGoodsDetailView.class, MapUtils.flatBuilder(request.getParameterMap())
 				.field(DistributePosterGoodsFrontView::getGoodsId, ticket.getGoodsId()).build());
 				.field(DistributePosterGoodsFrontView::getGoodsId, ticket.getGoodsId()).build());

+ 30 - 0
netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java

@@ -1113,4 +1113,34 @@ public class GroupRelationController {
         AccountView accountView = groupRelationFrontService.getTempAccount(userId, relationId);
         AccountView accountView = groupRelationFrontService.getTempAccount(userId, relationId);
         return GatewayResponse.SUCCESS.newBuilder().toResult(accountView);
         return GatewayResponse.SUCCESS.newBuilder().toResult(accountView);
     }
     }
+
+    /**
+     * 申请提交记录
+     */
+    @GetMapping("/get/netflix/get/error/submit/record")
+    public Result<List<NetflixUseAccountStatusRecord>> getUserNetflixSubmitRecord() {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        List<NetflixUseAccountStatusRecord> netflixUseAccountStatusRecords = groupRelationFrontService.getUserNetflixSubmitRecord(userId);
+        return GatewayResponse.SUCCESS.newBuilder().toResult(netflixUseAccountStatusRecords);
+    }
+
+    /**
+     * 奈飞账号异常检测提交
+     */
+    @PostMapping("/netflix/error/account/submit/{relationId}")
+    public Result<String> nfErrorAccountSubmit(@PathVariable Long relationId) {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        groupRelationFrontService.nfErrorAccountSubmit(userId, relationId);
+        return GatewayResponse.SUCCESS.newBuilder().toResult();
+    }
+
+    /**
+     * 奈飞账号检测结果
+     */
+    @GetMapping("/get/netflix/error/account/status/{relationId}")
+    public Result<Integer> getNetflixErrorAccountStatus(@PathVariable Long relationId) {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        Integer state = groupRelationFrontService.getNetflixErrorAccountStatus(userId, relationId);
+        return GatewayResponse.SUCCESS.newBuilder().toResult(state);
+    }
 }
 }