Prechádzať zdrojové kódy

fix 获取车票最大重试次数

zoujiajian 3 rokov pred
rodič
commit
f8469308c3

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/exchange/ExchangeCodeService.java

@@ -42,5 +42,5 @@ public interface ExchangeCodeService extends IService<ExchangeCode> {
 	/**
 	 * 获取车票车位
 	 */
-	GroupsRelation getRelationNoOrder(GoodsDonSku sku, Long userId);
+	GroupsRelation getRelationNoOrder(GoodsDonSku sku, Long userId, Integer retryNum);
 }

+ 11 - 7
netflix-service/src/main/java/com/cyksj/service/exchange/impl/ExchangeCodeServiceImpl.java

@@ -227,8 +227,8 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
 		if (user == null) {
 			throw BusinessRuntimeException.getInstance("用户不存在");
 		}
-
-		GroupsRelation relation = getRelationNoOrder(sku, userId);
+		Integer retryNum = 1;
+		GroupsRelation relation = getRelationNoOrder(sku, userId, retryNum);
 
 		Long relationId = relation.getId();
 		OrderDon orderDon;
@@ -287,13 +287,13 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
 	}
 
 	@Override
-	public GroupsRelation getRelationNoOrder(GoodsDonSku sku, Long userId) {
+	public GroupsRelation getRelationNoOrder(GoodsDonSku sku, Long userId, Integer retryNum) {
 		GroupsRelation relation = null;
-		relation = getFinalRelation(sku, userId, relation);
+		relation = getFinalRelation(sku, userId, relation, retryNum);
 		return relation;
 	}
 
-	public GroupsRelation getFinalRelation(GoodsDonSku sku, Long userId, GroupsRelation relation) {
+	public GroupsRelation getFinalRelation(GoodsDonSku sku, Long userId, GroupsRelation relation, Integer retryNum) {
 		//寻找差不多过期时间规格的车位
 		relation = groupRelationFrontService.getSimilarExpiredGroupRelation(sku.getId(), sku.getMonths());
 		if (relation == null) {
@@ -329,9 +329,13 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
 			relation.setStartTime(relation.getStartTime() == null ? new Date() : null);
 			groupsRelationMapper.updateById(relation);
 		} catch (Exception e) {
-			//失败重新给他分配车位
-			getFinalRelation(sku, userId, relation);
 			redisService.del(RedisKey.GROUPS_RELATION_NUM_KEY + relation.getId());
+			if (retryNum == 10) {
+				log.error("用户:{}获取车票:{}异常", userId, relation.getId());
+				throw BusinessRuntimeException.getInstance("获取车票异常,请联系客服");
+			}
+			//失败重新给他分配车位
+			getFinalRelation(sku, userId, relation, retryNum);
 		}
 		return relation;
 	}