|
|
|
|
@ -9,6 +9,9 @@ import com.mfsys.aconnect.usermanagement.service.UserService;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.http.*;
|
|
|
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
@ -31,41 +34,87 @@ public class ThirdPartyUserService {
|
|
|
|
|
String porOrgacode = request.getPorOrgacode();
|
|
|
|
|
String url = securityURI + "/security/user";
|
|
|
|
|
|
|
|
|
|
Map<String, Object> payloadMap = buildPayload(request);
|
|
|
|
|
Map<String, Object> ciihiveRequest = buildCiihiveRequest(request, payloadMap);
|
|
|
|
|
|
|
|
|
|
HttpHeaders headers = new HttpHeaders();
|
|
|
|
|
headers.set("Authorization", token);
|
|
|
|
|
headers.set("POR_ORGACODE", porOrgacode);
|
|
|
|
|
headers.set("SUS_USERCODE", request.getUsercode());
|
|
|
|
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
|
|
|
|
|
|
|
ResponseEntity<Object> response = webClientConfig.post(url, request, headers);
|
|
|
|
|
ResponseEntity<Object> response = webClientConfig.post(url, ciihiveRequest, headers);
|
|
|
|
|
if (response.getStatusCode().is2xxSuccessful()) {
|
|
|
|
|
saveToAconnect(request);
|
|
|
|
|
}
|
|
|
|
|
return response.getBody();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void saveToAconnect(ThirdPartyUserDTO request) {
|
|
|
|
|
private Map<String, Object> buildPayload(ThirdPartyUserDTO request) {
|
|
|
|
|
Map<String, Object> payload = new HashMap<>();
|
|
|
|
|
payload.put("SUS_USERCODE", request.getSusUsercode());
|
|
|
|
|
payload.put("SUS_NAME", request.getSusName());
|
|
|
|
|
payload.put("SUS_EMPCODE", request.getSusEmpcode());
|
|
|
|
|
payload.put("SUS_PASSWORD", request.getSusPassword());
|
|
|
|
|
payload.put("SUS_ACTIVE", request.getSusActive() != null ? request.getSusActive() : true);
|
|
|
|
|
payload.put("SUS_USERCELLNO", request.getSusUsercellno());
|
|
|
|
|
payload.put("SUS_THIRDPARTY", request.getSusThirdparty() != null ? request.getSusThirdparty() : true);
|
|
|
|
|
payload.put("SUS_EMAIL", request.getSusEmail());
|
|
|
|
|
payload.put("POR_ORGACODE", request.getPorOrgacode());
|
|
|
|
|
|
|
|
|
|
payload.put("SUS_TRACKING", true);
|
|
|
|
|
payload.put("IS_2ND_LEVEL_ALLOWED", false);
|
|
|
|
|
payload.put("TELLER_PROFILE", false);
|
|
|
|
|
payload.put("SHOW_LICENSE_INFO", false);
|
|
|
|
|
payload.put("SUS_SIGNLOG", "A");
|
|
|
|
|
payload.put("@_CREATEUSER", request.getUsercode());
|
|
|
|
|
payload.put("SUL_LEVELCODE", Arrays.asList(
|
|
|
|
|
"01","02","03","04","05","06","07","08","09","10", "11","12","13","14","15","16","17","18","19","20", "21","22","23","24","25","26","27","28","29","30", "31","32","33"
|
|
|
|
|
));
|
|
|
|
|
payload.put("SUS_MULTILOGIN", Arrays.asList(
|
|
|
|
|
"0011","000403","0006","0005","0007","000602","001102", "000902","0001","0002","0004","000703","000402","0009", "000404","000202","0098","000903","000702","0010"
|
|
|
|
|
));
|
|
|
|
|
payload.put("SUS_HOMELOCATION", "0001");
|
|
|
|
|
|
|
|
|
|
return payload;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Map<String, Object> buildCiihiveRequest(ThirdPartyUserDTO request, Map<String, Object> payloadMap) {
|
|
|
|
|
try {
|
|
|
|
|
Map<String, Object> payloadMap = objectMapper.readValue(request.getPayload(), Map.class);
|
|
|
|
|
Map<String, Object> ciihiveRequest = new HashMap<>();
|
|
|
|
|
ciihiveRequest.put("formId", request.getFormId());
|
|
|
|
|
ciihiveRequest.put("postProcessFormId", request.getPostProcessFormId());
|
|
|
|
|
ciihiveRequest.put("workFlowId", request.getWorkFlowId());
|
|
|
|
|
ciihiveRequest.put("operation", request.getOperation());
|
|
|
|
|
ciihiveRequest.put("POR_ORGACODE", request.getPorOrgacode());
|
|
|
|
|
ciihiveRequest.put("uniqueConstraints", request.getUniqueConstraints());
|
|
|
|
|
ciihiveRequest.put("formCounters", request.getFormCounters());
|
|
|
|
|
ciihiveRequest.put("payload", objectMapper.writeValueAsString(payloadMap));
|
|
|
|
|
return ciihiveRequest;
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
throw new RuntimeException("Failed to build Ciihive request: " + e.getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void saveToAconnect(ThirdPartyUserDTO request) {
|
|
|
|
|
try {
|
|
|
|
|
UserDTOs.UserRequest userRequest = new UserDTOs.UserRequest();
|
|
|
|
|
userRequest.setUserId(getStr(payloadMap, "SUS_USERCODE"));
|
|
|
|
|
userRequest.setPorOrgacode(getStr(payloadMap, "POR_ORGACODE"));
|
|
|
|
|
userRequest.setUserFullname(getStr(payloadMap, "SUS_NAME"));
|
|
|
|
|
userRequest.setPassword(getStr(payloadMap, "SUS_PASSWORD"));
|
|
|
|
|
userRequest.setEmail(getStr(payloadMap, "SUS_EMAIL"));
|
|
|
|
|
userRequest.setUserId(request.getSusUsercode());
|
|
|
|
|
userRequest.setPorOrgacode(request.getPorOrgacode());
|
|
|
|
|
userRequest.setUserFullname(request.getSusName());
|
|
|
|
|
userRequest.setPassword(request.getSusPassword());
|
|
|
|
|
userRequest.setEmail(request.getSusEmail());
|
|
|
|
|
userRequest.setRole(Role.USER);
|
|
|
|
|
|
|
|
|
|
userService.createUser(userRequest);
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
System.err.println("Failed to save third party user to Aconnect: " + e.getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private String getStr(Map<String, Object> map, String key) {
|
|
|
|
|
Object val = map.get(key);
|
|
|
|
|
return val != null ? val.toString() : null;
|
|
|
|
|
}
|
|
|
|
|
// private String getStr(Map<String, Object> map, String key) {
|
|
|
|
|
// Object val = map.get(key);
|
|
|
|
|
// return val != null ? val.toString() : null;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|