|
@@ -30,6 +30,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.util.Enumeration;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -75,39 +76,34 @@ public class GigThirdApiController {
|
|
|
/**
|
|
|
* 浪潮(灵才接好活)结算回调
|
|
|
*
|
|
|
- * @param body
|
|
|
+ * @param request
|
|
|
* @return
|
|
|
*/
|
|
|
@Inner(value = false)
|
|
|
@SysLog("浪潮异步通知回调")
|
|
|
@PostMapping("/lingcaiai")
|
|
|
- public String lingcaiaiNotify(@RequestBody String body) {
|
|
|
- log.info("浪潮结算回调请求方法参数:body={}", body);
|
|
|
-
|
|
|
- // 请求body json
|
|
|
- JSONObject bodyJson = JSONUtil.parseObj(body);
|
|
|
+ public String lingcaiaiNotify(HttpServletRequest request) {
|
|
|
+ Map<String, String[]> parameterMap = request.getParameterMap();
|
|
|
+ log.info("浪潮结算回调请求方法参数:parameterMap={}", JSONUtil.toJsonStr(parameterMap));
|
|
|
|
|
|
// 签名
|
|
|
- String verify = bodyJson.getStr("verify");
|
|
|
+ String verify = parameterMap.get("verify")[0];
|
|
|
// 通知类型
|
|
|
- String channel = bodyJson.getStr("channel");
|
|
|
+ String channel = parameterMap.get("channel")[0];
|
|
|
// 项目单号
|
|
|
- String batchNo = bodyJson.getStr("batch_no");
|
|
|
+ String batchNo = parameterMap.get("batch_no")[0];
|
|
|
// 订单状态
|
|
|
- Integer orderStatus = bodyJson.getInt("status");
|
|
|
+ String orderStatus = parameterMap.get("status")[0];
|
|
|
// project_accounts
|
|
|
- JSONArray projectAccounts = bodyJson.getJSONArray("project_accounts");
|
|
|
+ String projectAccounts = parameterMap.get("project_accounts")[0];
|
|
|
// 账号单号
|
|
|
- if (projectAccounts == null) {
|
|
|
+ if (StrUtil.isBlank(projectAccounts)) {
|
|
|
log.warn("project_accounts为空");
|
|
|
return "fail";
|
|
|
}
|
|
|
- JSONObject projectAccountObj = (JSONObject) projectAccounts.get(0);
|
|
|
- String accountNo = projectAccountObj.getStr("account_no");
|
|
|
- String status = projectAccountObj.getStr("status");// TODO 项目status和详情的status ???
|
|
|
|
|
|
- String redisKey = String.format("%s_%s_%s", CacheConstants.ZHEGN_QI_ZHI_XING_NOTIFY_KEY, channel, accountNo);
|
|
|
- Boolean absent = redisTemplate.opsForValue().setIfAbsent(redisKey, accountNo, 30, TimeUnit.MINUTES);
|
|
|
+ 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);
|
|
|
if (!absent) {
|
|
|
return "success";
|
|
|
}
|
|
@@ -116,14 +112,13 @@ public class GigThirdApiController {
|
|
|
LingcaiaiInputRecord record = new LingcaiaiInputRecord();
|
|
|
record.setVerify(verify);
|
|
|
record.setChannel(channel);
|
|
|
- record.setReqBody(body);
|
|
|
+ record.setReqBody(JSONUtil.toJsonStr(parameterMap));
|
|
|
record.setBatchNo(batchNo);
|
|
|
- record.setAccountNo(accountNo);
|
|
|
- record.setOrderStatus(orderStatus);
|
|
|
+ record.setOrderStatus(Integer.valueOf(orderStatus));
|
|
|
record.setCreateTime(LocalDateTime.now());
|
|
|
lingcaiaiInputRecordService.save(record);
|
|
|
|
|
|
- gigThirdApiService.lingcaiaiNotify(channel, accountNo, orderStatus);
|
|
|
+ gigThirdApiService.lingcaiaiNotify(channel, batchNo, Integer.valueOf(orderStatus));
|
|
|
|
|
|
return "success";
|
|
|
}
|