Pārlūkot izejas kodu

fix: 浪潮充值回调NPE修复

lixuesong 2 gadi atpakaļ
vecāks
revīzija
9ac8ed8f96

+ 15 - 12
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/GigThirdApiController.java

@@ -1,5 +1,6 @@
 package com.qunzhixinxi.hnqz.admin.controller;
 
+import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
@@ -87,20 +88,24 @@ public class GigThirdApiController {
 		log.info("浪潮结算回调请求方法参数:parameterMap={}", JSONUtil.toJsonStr(parameterMap));
 
 		// 签名
-		String verify = parameterMap.get("verify")[0];
+		String[] verifies = parameterMap.get("verify");
+		String verify = ArrayUtil.isEmpty(verifies) ? "" : verifies[0];
 		// 通知类型
-		String channel = parameterMap.get("channel")[0];
+		String[] channels = parameterMap.get("channel");
+		String channel = ArrayUtil.isEmpty(channels) ? "" : channels[0];
 		// 项目单号
-		String batchNo = parameterMap.get("batch_no")[0];
+		String[] batchNos = parameterMap.get("batch_no");
+		String batchNo = ArrayUtil.isEmpty(batchNos) ? "" : batchNos[0];
 		// 订单状态
-		String orderStatus = parameterMap.get("status")[0];
+		String[] statuses = parameterMap.get("status");
+		String orderStatus = ArrayUtil.isEmpty(statuses) ? "" : statuses[0];
 		// project_accounts
-		String projectAccounts = parameterMap.get("project_accounts")[0];
+		String[] projectAccountsArr = parameterMap.get("project_accounts");
 		// 账号单号
-		if (StrUtil.isBlank(projectAccounts)) {
-			log.warn("project_accounts为空");
-			return "fail";
-		}
+//		if (StrUtil.isBlank(projectAccounts)) {
+//			log.warn("project_accounts为空");
+//			return "fail";
+//		}
 
 		String redisKey = String.format("%s_%s_%s", CacheConstants.ZHEGN_QI_ZHI_XING_NOTIFY_KEY, channel, batchNo);
 		Boolean absent = redisTemplate.opsForValue().setIfAbsent(redisKey, batchNo, 30, TimeUnit.MINUTES);
@@ -118,9 +123,7 @@ public class GigThirdApiController {
 		record.setCreateTime(LocalDateTime.now());
 		lingcaiaiInputRecordService.save(record);
 
-		gigThirdApiService.lingcaiaiNotify(channel, batchNo, Integer.valueOf(orderStatus));
-
-		return "success";
+		return gigThirdApiService.lingcaiaiNotify(channel, batchNo, Integer.valueOf(orderStatus));
 	}
 
 	/**

+ 2 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/GigThirdApiService.java

@@ -20,8 +20,9 @@ public interface GigThirdApiService {
 	 * @param channel 通知类型(recharge 充值,batchQuery 批量结果,refund  退款)
 	 * @param batchNo 项目单号
 	 * @param orderStatus 项目订单状态(0未支付,1已支付,2已取消)
+	 * @return 是否成功状态
 	 */
-	void lingcaiaiNotify(String channel, String batchNo, Integer orderStatus);
+	String lingcaiaiNotify(String channel, String batchNo, Integer orderStatus);
 
 	/**
 	 * 正启之星回调业务处理

+ 5 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/impl/GigThirdApiServiceImpl.java

@@ -84,9 +84,10 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 	 * @param channel 通知类型(recharge 充值,batchQuery 批量结果,refund  退款)
 	 * @param batchNo 项目单号
 	 * @param orderStatus 项目订单状态(0未支付,1已支付,2已取消)
+	 * @return 是否成功状态
 	 */
 	@Override
-	public void lingcaiaiNotify(String channel, String batchNo, Integer orderStatus) {
+	public String lingcaiaiNotify(String channel, String batchNo, Integer orderStatus) {
 		switch (channel) {
 			case "recharge":
 				// 充值 暂不实现~
@@ -112,7 +113,7 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 						.eq(WmScorePackageSettleNote::getStreamId, batchNo));
 				if (CollUtil.isEmpty(settleNoteList)) {
 					log.warn("订单streamId={}对应结算单不存在", batchNo);
-					return;
+					return "fail";
 				}
 
 				// 修改结算状态
@@ -148,6 +149,8 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 				break;
 			default:
 		}
+
+		return "success";
 	}
 
 	/**