아마란스 결재 수정
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package com.pms.controller;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -10,6 +12,8 @@ import javax.servlet.http.HttpSession;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.apache.ibatis.session.SqlSession;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@@ -393,7 +397,8 @@ public class ApprovalController {
|
||||
@ResponseBody
|
||||
@RequestMapping(value="/approval/amaranthApprovalCallback.do", produces="application/json; charset=UTF-8")
|
||||
public String amaranthApprovalCallback(HttpServletRequest request, @RequestParam Map<String, Object> paramMap)throws Exception{
|
||||
return approvalService.handleAmaranthApprovalCallback(paramMap);
|
||||
Map<String, Object> mergedParam = mergeRequestParams(request, paramMap);
|
||||
return approvalService.handleAmaranthApprovalCallback(mergedParam);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -403,7 +408,53 @@ public class ApprovalController {
|
||||
@ResponseBody
|
||||
@RequestMapping(value="/approval/amaranthApprovalContents.do", produces="application/json; charset=UTF-8")
|
||||
public String amaranthApprovalContents(HttpServletRequest request, @RequestParam Map<String, Object> paramMap)throws Exception{
|
||||
return approvalService.getAmaranthApprovalContents(paramMap);
|
||||
Map<String, Object> mergedParam = mergeRequestParams(request, paramMap);
|
||||
return approvalService.getAmaranthApprovalContents(mergedParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* Amaranth에서 form-data 또는 JSON body로 파라미터를 전달할 수 있으므로
|
||||
* @RequestParam(form/query)과 JSON body를 모두 처리
|
||||
*/
|
||||
private Map<String, Object> mergeRequestParams(HttpServletRequest request, Map<String, Object> paramMap){
|
||||
Map<String, Object> merged = new HashMap<>(paramMap);
|
||||
|
||||
// @RequestParam에 approkey가 이미 있으면 추가 파싱 불필요
|
||||
if(merged.containsKey("approkey") || merged.containsKey("approKey")){
|
||||
System.out.println("[Amaranth API] @RequestParam에서 파라미터 수신: " + merged.keySet());
|
||||
return merged;
|
||||
}
|
||||
|
||||
// JSON body 파싱 시도
|
||||
try {
|
||||
String contentType = request.getContentType();
|
||||
System.out.println("[Amaranth API] ContentType: " + contentType + ", @RequestParam 키: " + merged.keySet());
|
||||
|
||||
BufferedReader reader = request.getReader();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String line;
|
||||
while((line = reader.readLine()) != null){
|
||||
sb.append(line);
|
||||
}
|
||||
String body = sb.toString().trim();
|
||||
|
||||
if(!body.isEmpty()){
|
||||
System.out.println("[Amaranth API] Request Body: " + body);
|
||||
JSONParser parser = new JSONParser();
|
||||
Object parsed = parser.parse(body);
|
||||
if(parsed instanceof JSONObject){
|
||||
JSONObject json = (JSONObject) parsed;
|
||||
for(Object key : json.keySet()){
|
||||
merged.put(String.valueOf(key), json.get(key));
|
||||
}
|
||||
System.out.println("[Amaranth API] JSON body에서 파라미터 추출: " + merged.keySet());
|
||||
}
|
||||
}
|
||||
} catch(Exception e){
|
||||
System.err.println("[Amaranth API] JSON body 파싱 실패 (무시): " + e.getMessage());
|
||||
}
|
||||
|
||||
return merged;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user