95 lines
3.6 KiB
Java
95 lines
3.6 KiB
Java
|
|
package com.veve_plus.root.service;
|
||
|
|
|
||
|
|
import com.veve_plus.root.dto.task.KstTaskHistoryDto;
|
||
|
|
import com.veve_plus.root.dto.task.TaskDto;
|
||
|
|
import com.veve_plus.root.mapper.TaskMapper;
|
||
|
|
import lombok.RequiredArgsConstructor;
|
||
|
|
import org.json.JSONObject;
|
||
|
|
import org.springframework.http.*;
|
||
|
|
import org.springframework.stereotype.Service;
|
||
|
|
import org.springframework.transaction.annotation.Transactional;
|
||
|
|
import org.springframework.web.client.RestTemplate;
|
||
|
|
|
||
|
|
import java.util.List;
|
||
|
|
|
||
|
|
@Service
|
||
|
|
@RequiredArgsConstructor
|
||
|
|
public class TaskService {
|
||
|
|
|
||
|
|
private final TaskMapper taskMapper;
|
||
|
|
private final UserService userService;
|
||
|
|
|
||
|
|
public List<TaskDto> listDesignerTask(){
|
||
|
|
|
||
|
|
//get list task
|
||
|
|
List<TaskDto> tasks = taskMapper.listDesignerTask(userService.getCurrentAuditor());
|
||
|
|
//get login token
|
||
|
|
String token = getSynologyToken();
|
||
|
|
|
||
|
|
for(TaskDto dto : tasks){
|
||
|
|
String folderName = "/RAW/" + dto.getGeId() + "_" + dto.getLanguage() + "/" + dto.getChapter();
|
||
|
|
|
||
|
|
String downloadUrl = "https://disk.dnkinno.vn:5001/webapi/entry.cgi?api=SYNO.FileStation.Sharing&method=create&version=3&path=" + folderName + "&sid=" + token;
|
||
|
|
HttpHeaders header = new HttpHeaders();
|
||
|
|
//set token to cookie
|
||
|
|
header.add("Cookie", "id=" + token);
|
||
|
|
HttpEntity<String> entity = new HttpEntity<>(header);
|
||
|
|
|
||
|
|
RestTemplate downloadTemplate = new RestTemplate();
|
||
|
|
//send get request to NAS
|
||
|
|
ResponseEntity<String> downloadResponse = downloadTemplate.exchange(downloadUrl, HttpMethod.GET, entity, String.class);
|
||
|
|
String responseStr = downloadResponse.getBody();
|
||
|
|
|
||
|
|
JSONObject dlRes = new JSONObject(responseStr);
|
||
|
|
if(!dlRes.getBoolean("success")){
|
||
|
|
dto.setDownloadUrl("There is an error when getting download url");
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
|
||
|
|
//extract url from response
|
||
|
|
dto.setDownloadUrl(new JSONObject(dlRes.getJSONObject("data").getJSONArray("links").get(0).toString()).getString("url"));
|
||
|
|
}
|
||
|
|
|
||
|
|
return tasks;
|
||
|
|
}
|
||
|
|
|
||
|
|
public String getSynologyToken(){
|
||
|
|
String loginUrl = "https://disk.dnkinno.vn:5001/webapi/entry.cgi?api=SYNO.API.Auth&version=6&method=login&account=DKI-veve&passwd=Dki@2025&session=FileStation&format=cookie";
|
||
|
|
|
||
|
|
HttpHeaders header = new HttpHeaders();
|
||
|
|
header.setContentType(MediaType.APPLICATION_JSON);
|
||
|
|
HttpEntity<String> entity = new HttpEntity<>("{}", header);
|
||
|
|
|
||
|
|
RestTemplate loginTemplate = new RestTemplate();
|
||
|
|
ResponseEntity<String> loginResponse = loginTemplate.exchange(loginUrl, HttpMethod.GET, entity, String.class);
|
||
|
|
String responseStr = loginResponse.getBody();
|
||
|
|
|
||
|
|
//extract auth token
|
||
|
|
JSONObject jsonResponse = new JSONObject(responseStr);
|
||
|
|
|
||
|
|
return jsonResponse.getJSONObject("data").getString("sid");
|
||
|
|
}
|
||
|
|
|
||
|
|
@Transactional
|
||
|
|
public boolean updateEditStatus(TaskDto dto){
|
||
|
|
return taskMapper.updateEditStatus(dto);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Transactional
|
||
|
|
public boolean confirmTask(String language){
|
||
|
|
//get latest version
|
||
|
|
List<KstTaskHistoryDto> latestTaskHistory = taskMapper.getLatestVersion(language);
|
||
|
|
//insert content, title, task. Update them if already exist
|
||
|
|
//old veve use procedure: sp_01_create_content, sp_02_create_content_title, sp_03_create_task
|
||
|
|
for (KstTaskHistoryDto dto : latestTaskHistory) {
|
||
|
|
taskMapper.createVeveInfo(dto.getTitle(), language, dto.getChapter(), "", 2);
|
||
|
|
}
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
public void autoAssignDesigner(String language){
|
||
|
|
taskMapper.autoAssignDesigner(language);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|