@@ -361,7 +361,6 @@ public class ApiController {
|
|||||||
public ResponseEntity<BaseResponse> findSimilarFiles(
|
public ResponseEntity<BaseResponse> findSimilarFiles(
|
||||||
@PathVariable("version") int version,
|
@PathVariable("version") int version,
|
||||||
@PathVariable String fileId,
|
@PathVariable String fileId,
|
||||||
@RequestParam(value = "auth_token", required = false) String authToken,
|
|
||||||
@RequestParam(required = false) List<String> similarityLevels,
|
@RequestParam(required = false) List<String> similarityLevels,
|
||||||
@PageableDefault(size = 20, sort = "hammingDistance") Pageable pageable) {
|
@PageableDefault(size = 20, sort = "hammingDistance") Pageable pageable) {
|
||||||
|
|
||||||
@@ -373,10 +372,12 @@ public class ApiController {
|
|||||||
MessageCode.INVALID_FIELD.getDescription(), null));
|
MessageCode.INVALID_FIELD.getDescription(), null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
||||||
|
|
||||||
BaseResponse response;
|
BaseResponse response;
|
||||||
if ("image".equals(fileEntity.getMimeType())) {
|
if ("image".equals(fileEntity.getMimeType())) {
|
||||||
Page<SimilarFileDTO> similarFilesPage = fileSimilarityService.findSimilarFiles(
|
Page<SimilarFileDTO> similarFilesPage = fileSimilarityService.findSimilarFiles(
|
||||||
fileId, similarityLevels, pageable, authToken);
|
fileId, similarityLevels, pageable, userId);
|
||||||
response = buildSuccessResponse(similarFilesPage, MessageCode.SIMILAR_FILES_FOUND);
|
response = buildSuccessResponse(similarFilesPage, MessageCode.SIMILAR_FILES_FOUND);
|
||||||
} else {
|
} else {
|
||||||
List<SimilarFileDTO> results = processNonImageFile(fileEntity, true);
|
List<SimilarFileDTO> results = processNonImageFile(fileEntity, true);
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import ru.soune.nocopy.dto.violation.ViolationRequest;
|
|||||||
import ru.soune.nocopy.entity.file.FileEntity;
|
import ru.soune.nocopy.entity.file.FileEntity;
|
||||||
import ru.soune.nocopy.entity.search.GlobalSearchTask;
|
import ru.soune.nocopy.entity.search.GlobalSearchTask;
|
||||||
import ru.soune.nocopy.entity.search.SearchStatus;
|
import ru.soune.nocopy.entity.search.SearchStatus;
|
||||||
import ru.soune.nocopy.exception.NotFoundAuthToken;
|
|
||||||
import ru.soune.nocopy.repository.GlobalSearchTaskRepository;
|
import ru.soune.nocopy.repository.GlobalSearchTaskRepository;
|
||||||
import ru.soune.nocopy.service.search.GlobalSearchService;
|
import ru.soune.nocopy.service.search.GlobalSearchService;
|
||||||
import ru.soune.nocopy.service.violation.ViolationService;
|
import ru.soune.nocopy.service.violation.ViolationService;
|
||||||
@@ -37,92 +36,47 @@ public class GlobalSearchController {
|
|||||||
|
|
||||||
@PostMapping("/start")
|
@PostMapping("/start")
|
||||||
public ResponseEntity<?> startSearch(
|
public ResponseEntity<?> startSearch(
|
||||||
@RequestBody GlobalSearchStartRequest request,
|
@RequestBody GlobalSearchStartRequest request) {
|
||||||
@RequestHeader(value = "Authorization", required = false) String tokenHeader) {
|
|
||||||
if (tokenHeader == null || tokenHeader.isBlank()) {
|
|
||||||
Map<String, Object> errorData = new HashMap<>();
|
|
||||||
errorData.put("token", tokenHeader);
|
|
||||||
|
|
||||||
return ResponseEntity.ok().body(Map.of("error", errorData));
|
|
||||||
}
|
|
||||||
|
|
||||||
GlobalSearchStartResponse response = new GlobalSearchStartResponse();
|
GlobalSearchStartResponse response = new GlobalSearchStartResponse();
|
||||||
|
|
||||||
try {
|
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
||||||
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
|
||||||
|
|
||||||
List<FileEntity> filesToProcess = globalSearchService.getFilesToProcess(request, userId);
|
List<FileEntity> filesToProcess = globalSearchService.getFilesToProcess(request, userId);
|
||||||
|
|
||||||
if (filesToProcess.isEmpty()) return ResponseEntity.ok().body("Files for search not found");
|
if (filesToProcess.isEmpty()) return ResponseEntity.ok().body("Files for search not found");
|
||||||
|
|
||||||
String taskId = globalSearchService.startSearch(request, userId, filesToProcess);
|
String taskId = globalSearchService.startSearch(request, userId, filesToProcess);
|
||||||
|
|
||||||
response.setTaskId(taskId);
|
response.setTaskId(taskId);
|
||||||
response.setStatus(SearchStatus.ACCEPTED.name());
|
response.setStatus(SearchStatus.ACCEPTED.name());
|
||||||
response.setTotalFiles(filesToProcess.size());
|
response.setTotalFiles(filesToProcess.size());
|
||||||
} catch (NotFoundAuthToken e) {
|
|
||||||
Map<String, Object> errorData = new HashMap<>();
|
|
||||||
errorData.put("token", tokenHeader);
|
|
||||||
|
|
||||||
return ResponseEntity.ok().body(Map.of("error", errorData));
|
|
||||||
}
|
|
||||||
|
|
||||||
return ResponseEntity.ok(response);
|
return ResponseEntity.ok(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/actual-task")
|
@GetMapping("/actual-task")
|
||||||
public ResponseEntity<?> getStatus(@RequestHeader(value = "Authorization", required = false) String tokenHeader) {
|
public ResponseEntity<?> getStatus() {
|
||||||
|
|
||||||
if (tokenHeader == null || tokenHeader.isBlank()) {
|
|
||||||
Map<String, Object> errorData = new HashMap<>();
|
|
||||||
errorData.put("token", tokenHeader);
|
|
||||||
|
|
||||||
return ResponseEntity.ok().body(Map.of("error", errorData));
|
|
||||||
}
|
|
||||||
|
|
||||||
Optional<GlobalSearchTask> taskOptional;
|
Optional<GlobalSearchTask> taskOptional;
|
||||||
|
|
||||||
try {
|
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
||||||
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
|
||||||
|
|
||||||
taskOptional = searchTaskRepository.findByUserIdAndStatus(userId,
|
taskOptional = searchTaskRepository.findByUserIdAndStatus(userId,
|
||||||
"PROCESSING");
|
"PROCESSING");
|
||||||
|
|
||||||
if (taskOptional.isEmpty()) return ResponseEntity.ok().body("Task not found");
|
if (taskOptional.isEmpty()) return ResponseEntity.ok().body("Task not found");
|
||||||
} catch (NotFoundAuthToken e) {
|
|
||||||
Map<String, Object> errorData = new HashMap<>();
|
|
||||||
errorData.put("token", tokenHeader);
|
|
||||||
|
|
||||||
return ResponseEntity.ok().body(Map.of("error", errorData));
|
|
||||||
}
|
|
||||||
|
|
||||||
return ResponseEntity.ok(taskOptional.get());
|
return ResponseEntity.ok(taskOptional.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/violation-summary")
|
@GetMapping("/violation-summary")
|
||||||
public ResponseEntity<?> getSummary(@RequestHeader(value = "Authorization", required = false) String tokenHeader) {
|
public ResponseEntity<?> getSummary() {
|
||||||
|
|
||||||
if (tokenHeader == null || tokenHeader.isBlank()) {
|
|
||||||
Map<String, Object> errorData = new HashMap<>();
|
|
||||||
errorData.put("token", tokenHeader);
|
|
||||||
|
|
||||||
return ResponseEntity.ok().body(Map.of("error", errorData));
|
|
||||||
}
|
|
||||||
|
|
||||||
List<FileViolationSummaryDTO> fileViolationsSummary;
|
List<FileViolationSummaryDTO> fileViolationsSummary;
|
||||||
|
|
||||||
try {
|
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
||||||
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
|
||||||
|
|
||||||
fileViolationsSummary = violationService.getFileViolationsSummary(userId);
|
fileViolationsSummary = violationService.getFileViolationsSummary(userId);
|
||||||
|
|
||||||
if (fileViolationsSummary.isEmpty()) return ResponseEntity.ok().body("Violations summary not found");
|
if (fileViolationsSummary.isEmpty()) return ResponseEntity.ok().body("Violations summary not found");
|
||||||
} catch (NotFoundAuthToken e) {
|
|
||||||
Map<String, Object> errorData = new HashMap<>();
|
|
||||||
errorData.put("token", tokenHeader);
|
|
||||||
|
|
||||||
return ResponseEntity.ok().body(Map.of("error", errorData));
|
|
||||||
}
|
|
||||||
|
|
||||||
return ResponseEntity.ok(fileViolationsSummary);
|
return ResponseEntity.ok(fileViolationsSummary);
|
||||||
}
|
}
|
||||||
@@ -139,38 +93,23 @@ public class GlobalSearchController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/status/{taskId}")
|
@GetMapping("/status/{taskId}")
|
||||||
public ResponseEntity<?> getStatus(@PathVariable String taskId,
|
public ResponseEntity<?> getStatus(@PathVariable String taskId) {
|
||||||
@RequestHeader(value = "Authorization", required = false) String tokenHeader) {
|
|
||||||
|
|
||||||
if (tokenHeader == null || tokenHeader.isBlank()) {
|
|
||||||
Map<String, Object> errorData = new HashMap<>();
|
|
||||||
errorData.put("token", tokenHeader);
|
|
||||||
|
|
||||||
return ResponseEntity.ok().body(Map.of("error", errorData));
|
|
||||||
}
|
|
||||||
GlobalSearchStatusResponse response;
|
GlobalSearchStatusResponse response;
|
||||||
|
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
||||||
|
|
||||||
try {
|
Optional<GlobalSearchTask> taskOptional = searchTaskRepository.findByTaskIdAndUserId(taskId, userId);
|
||||||
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
|
||||||
|
|
||||||
Optional<GlobalSearchTask> taskOptional = searchTaskRepository.findByTaskIdAndUserId(taskId, userId);
|
if (taskOptional.isEmpty()) return ResponseEntity.ok().body("Task not found");
|
||||||
|
|
||||||
if (taskOptional.isEmpty()) return ResponseEntity.ok().body("Task not found");
|
GlobalSearchTask task = taskOptional.orElseThrow();
|
||||||
|
|
||||||
GlobalSearchTask task = taskOptional.orElseThrow();
|
int progress = task.getTotalFiles() > 0 ? task.getProcessedFiles() * 100 / task.getTotalFiles() : 0;
|
||||||
|
|
||||||
int progress = task.getTotalFiles() > 0 ? task.getProcessedFiles() * 100 / task.getTotalFiles() : 0;
|
response = new GlobalSearchStatusResponse();
|
||||||
|
response.setTaskId(taskId);
|
||||||
|
response.setStatus(task.getStatus());
|
||||||
|
response.setProgress(progress);
|
||||||
|
|
||||||
response = new GlobalSearchStatusResponse();
|
|
||||||
response.setTaskId(taskId);
|
|
||||||
response.setStatus(task.getStatus());
|
|
||||||
response.setProgress(progress);
|
|
||||||
} catch (NotFoundAuthToken e) {
|
|
||||||
Map<String, Object> errorData = new HashMap<>();
|
|
||||||
errorData.put("token", tokenHeader);
|
|
||||||
|
|
||||||
return ResponseEntity.ok().body(Map.of("error", errorData));
|
|
||||||
}
|
|
||||||
|
|
||||||
return ResponseEntity.ok(response);
|
return ResponseEntity.ok(response);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package ru.soune.nocopy.controller;
|
package ru.soune.nocopy.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -12,20 +13,16 @@ import ru.soune.nocopy.entity.payout.BankTransferPayoutMethod;
|
|||||||
import ru.soune.nocopy.entity.payout.CardPayoutMethod;
|
import ru.soune.nocopy.entity.payout.CardPayoutMethod;
|
||||||
import ru.soune.nocopy.entity.payout.PayoutRequest;
|
import ru.soune.nocopy.entity.payout.PayoutRequest;
|
||||||
import ru.soune.nocopy.entity.payout.PayoutType;
|
import ru.soune.nocopy.entity.payout.PayoutType;
|
||||||
import ru.soune.nocopy.entity.user.AuthToken;
|
|
||||||
import ru.soune.nocopy.entity.user.User;
|
import ru.soune.nocopy.entity.user.User;
|
||||||
import ru.soune.nocopy.exception.InsufficientFundsException;
|
import ru.soune.nocopy.exception.InsufficientFundsException;
|
||||||
import ru.soune.nocopy.exception.InvalidPayoutMethodException;
|
import ru.soune.nocopy.exception.InvalidPayoutMethodException;
|
||||||
import ru.soune.nocopy.exception.NotFoundAuthToken;
|
|
||||||
import ru.soune.nocopy.exception.PendingPayoutExistsException;
|
import ru.soune.nocopy.exception.PendingPayoutExistsException;
|
||||||
import ru.soune.nocopy.repository.AuthTokenRepository;
|
|
||||||
import ru.soune.nocopy.service.payout.PayoutMethodService;
|
import ru.soune.nocopy.service.payout.PayoutMethodService;
|
||||||
import ru.soune.nocopy.service.payout.PayoutRequestService;
|
import ru.soune.nocopy.service.payout.PayoutRequestService;
|
||||||
|
import ru.soune.nocopy.service.user.UserService;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@@ -38,21 +35,21 @@ public class PayoutController {
|
|||||||
|
|
||||||
private final PayoutMethodService payoutMethodService;
|
private final PayoutMethodService payoutMethodService;
|
||||||
|
|
||||||
private final AuthTokenRepository authTokenRepository;
|
private final HttpServletRequest httpServletRequest;
|
||||||
|
|
||||||
|
private final UserService userService;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Create payout
|
Create payout
|
||||||
*/
|
*/
|
||||||
@PostMapping("/create-request")
|
@PostMapping("/create-request")
|
||||||
public ResponseEntity<?> createPayoutRequest(@RequestHeader("Authorization") String tokenHeader,
|
public ResponseEntity<?> createPayoutRequest(@Valid @RequestBody PayoutRequestDTO request) {
|
||||||
@Valid @RequestBody PayoutRequestDTO request) {
|
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
||||||
String token = tokenHeader.replace("Bearer ", "");
|
User user = userService.getUserById(userId).orElse(null);
|
||||||
|
|
||||||
Optional<AuthToken> tokenOptional = authTokenRepository.findByToken(token);
|
if (user == null) {
|
||||||
|
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("User not found with id: " + userId);
|
||||||
AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found"));
|
}
|
||||||
|
|
||||||
User user = authToken.getUser();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
PayoutRequest payoutRequest = payoutRequestService.createPayoutRequest(user.getId(), request);
|
PayoutRequest payoutRequest = payoutRequestService.createPayoutRequest(user.getId(), request);
|
||||||
@@ -76,15 +73,13 @@ public class PayoutController {
|
|||||||
Cancel payout
|
Cancel payout
|
||||||
*/
|
*/
|
||||||
@PostMapping("/requests/{requestId}/cancel")
|
@PostMapping("/requests/{requestId}/cancel")
|
||||||
public ResponseEntity<PayoutRequest> cancelPayoutRequest(@PathVariable Long requestId,
|
public ResponseEntity<PayoutRequest> cancelPayoutRequest(@PathVariable Long requestId) {
|
||||||
@RequestHeader("Authorization") String tokenHeader) {
|
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
||||||
String token = tokenHeader.replace("Bearer ", "");
|
User user = userService.getUserById(userId).orElse(null);
|
||||||
|
|
||||||
Optional<AuthToken> tokenOptional = authTokenRepository.findByToken(token);
|
if (user == null) {
|
||||||
|
return ResponseEntity.notFound().build();
|
||||||
AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found"));
|
}
|
||||||
|
|
||||||
User user = authToken.getUser();
|
|
||||||
|
|
||||||
PayoutRequest cancelled = payoutRequestService.cancelPayoutRequest(user.getId(), requestId);
|
PayoutRequest cancelled = payoutRequestService.cancelPayoutRequest(user.getId(), requestId);
|
||||||
|
|
||||||
@@ -95,14 +90,13 @@ public class PayoutController {
|
|||||||
Get user payouts
|
Get user payouts
|
||||||
*/
|
*/
|
||||||
@GetMapping("/requests")
|
@GetMapping("/requests")
|
||||||
public ResponseEntity<List<PayoutRequest>> getUserRequests(@RequestHeader("Authorization") String tokenHeader) {
|
public ResponseEntity<List<PayoutRequest>> getUserRequests() {
|
||||||
String token = tokenHeader.replace("Bearer ", "");
|
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
||||||
|
User user = userService.getUserById(userId).orElse(null);
|
||||||
|
|
||||||
Optional<AuthToken> tokenOptional = authTokenRepository.findByToken(token);
|
if (user == null) {
|
||||||
|
return ResponseEntity.notFound().build();
|
||||||
AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found"));
|
}
|
||||||
|
|
||||||
User user = authToken.getUser();
|
|
||||||
|
|
||||||
return ResponseEntity.ok(payoutRequestService.getUserPayoutRequests(user.getId()));
|
return ResponseEntity.ok(payoutRequestService.getUserPayoutRequests(user.getId()));
|
||||||
}
|
}
|
||||||
@@ -111,15 +105,13 @@ public class PayoutController {
|
|||||||
Get payout by id
|
Get payout by id
|
||||||
*/
|
*/
|
||||||
@GetMapping("/requests/{requestId}")
|
@GetMapping("/requests/{requestId}")
|
||||||
public ResponseEntity<PayoutRequest> getPayoutRequest(@PathVariable Long requestId,
|
public ResponseEntity<PayoutRequest> getPayoutRequest(@PathVariable Long requestId) {
|
||||||
@RequestHeader("Authorization") String tokenHeader) {
|
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
||||||
String token = tokenHeader.replace("Bearer ", "");
|
User user = userService.getUserById(userId).orElse(null);
|
||||||
|
|
||||||
Optional<AuthToken> tokenOptional = authTokenRepository.findByToken(token);
|
if (user == null) {
|
||||||
|
return ResponseEntity.notFound().build();
|
||||||
AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found"));
|
}
|
||||||
|
|
||||||
User user = authToken.getUser();
|
|
||||||
|
|
||||||
return ResponseEntity.ok(payoutRequestService.getPayoutRequest(user.getId(), requestId));
|
return ResponseEntity.ok(payoutRequestService.getPayoutRequest(user.getId(), requestId));
|
||||||
}
|
}
|
||||||
@@ -128,14 +120,13 @@ public class PayoutController {
|
|||||||
Get payout by id
|
Get payout by id
|
||||||
*/
|
*/
|
||||||
@GetMapping("user/payout-methods")
|
@GetMapping("user/payout-methods")
|
||||||
public ResponseEntity<List<PayoutMethodDTO>> getUserMethods(@RequestHeader("Authorization") String tokenHeader) {
|
public ResponseEntity<List<PayoutMethodDTO>> getUserMethods() {
|
||||||
String token = tokenHeader.replace("Bearer ", "");
|
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
||||||
|
User user = userService.getUserById(userId).orElse(null);
|
||||||
|
|
||||||
Optional<AuthToken> tokenOptional = authTokenRepository.findByToken(token);
|
if (user == null) {
|
||||||
|
return ResponseEntity.notFound().build();
|
||||||
AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found"));
|
}
|
||||||
|
|
||||||
User user = authToken.getUser();
|
|
||||||
|
|
||||||
return ResponseEntity.ok(payoutMethodService.getUserMethods(user.getId()));
|
return ResponseEntity.ok(payoutMethodService.getUserMethods(user.getId()));
|
||||||
}
|
}
|
||||||
@@ -158,15 +149,13 @@ public class PayoutController {
|
|||||||
add card method by userId
|
add card method by userId
|
||||||
*/
|
*/
|
||||||
@PostMapping("/payout-method/card")
|
@PostMapping("/payout-method/card")
|
||||||
public ResponseEntity<PayoutMethodDTO> addCardMethod(@Valid @RequestBody AddCardRequest request,
|
public ResponseEntity<PayoutMethodDTO> addCardMethod(@Valid @RequestBody AddCardRequest request) {
|
||||||
@RequestHeader("Authorization") String tokenHeader) {
|
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
||||||
String token = tokenHeader.replace("Bearer ", "");
|
User user = userService.getUserById(userId).orElse(null);
|
||||||
|
|
||||||
Optional<AuthToken> tokenOptional = authTokenRepository.findByToken(token);
|
if (user == null) {
|
||||||
|
return ResponseEntity.notFound().build();
|
||||||
AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found"));
|
}
|
||||||
|
|
||||||
User user = authToken.getUser();
|
|
||||||
|
|
||||||
CardPayoutMethod method = payoutMethodService.addCardMethod(user.getId(), request);
|
CardPayoutMethod method = payoutMethodService.addCardMethod(user.getId(), request);
|
||||||
|
|
||||||
@@ -178,15 +167,13 @@ public class PayoutController {
|
|||||||
add bank payout-method
|
add bank payout-method
|
||||||
*/
|
*/
|
||||||
@PostMapping("/payout-method/bank-transfer")
|
@PostMapping("/payout-method/bank-transfer")
|
||||||
public ResponseEntity<PayoutMethodDTO> addBankTransferMethod(@Valid @RequestBody AddBankTransferRequest request,
|
public ResponseEntity<PayoutMethodDTO> addBankTransferMethod(@Valid @RequestBody AddBankTransferRequest request) {
|
||||||
@RequestHeader("Authorization") String tokenHeader) {
|
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
||||||
String token = tokenHeader.replace("Bearer ", "");
|
User user = userService.getUserById(userId).orElse(null);
|
||||||
|
|
||||||
Optional<AuthToken> tokenOptional = authTokenRepository.findByToken(token);
|
if (user == null) {
|
||||||
|
return ResponseEntity.notFound().build();
|
||||||
AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found"));
|
}
|
||||||
|
|
||||||
User user = authToken.getUser();
|
|
||||||
|
|
||||||
BankTransferPayoutMethod method = payoutMethodService.addBankTransferMethod(user.getId(), request);
|
BankTransferPayoutMethod method = payoutMethodService.addBankTransferMethod(user.getId(), request);
|
||||||
|
|
||||||
@@ -199,15 +186,13 @@ public class PayoutController {
|
|||||||
set default bank payout-method
|
set default bank payout-method
|
||||||
*/
|
*/
|
||||||
@PutMapping("/payout-method/{methodId}/default")
|
@PutMapping("/payout-method/{methodId}/default")
|
||||||
public ResponseEntity<Void> setDefaultMethod(@PathVariable Long methodId,
|
public ResponseEntity<Void> setDefaultMethod(@PathVariable Long methodId) {
|
||||||
@RequestHeader("Authorization") String tokenHeader) {
|
Long userId = (Long) httpServletRequest.getAttribute("userId");
|
||||||
String token = tokenHeader.replace("Bearer ", "");
|
User user = userService.getUserById(userId).orElse(null);
|
||||||
|
|
||||||
Optional<AuthToken> tokenOptional = authTokenRepository.findByToken(token);
|
if (user == null) {
|
||||||
|
return ResponseEntity.notFound().build();
|
||||||
AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found"));
|
}
|
||||||
|
|
||||||
User user = authToken.getUser();
|
|
||||||
|
|
||||||
payoutMethodService.setDefaultMethod(user.getId(), methodId);
|
payoutMethodService.setDefaultMethod(user.getId(), methodId);
|
||||||
|
|
||||||
|
|||||||
@@ -9,5 +9,4 @@ public class AppealRequest {
|
|||||||
private String fileId;
|
private String fileId;
|
||||||
private String appealReason;
|
private String appealReason;
|
||||||
private String additionalInfo;
|
private String additionalInfo;
|
||||||
private String token;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,4 @@ public class GetViolationsRequest {
|
|||||||
|
|
||||||
@JsonProperty("mark_as_read")
|
@JsonProperty("mark_as_read")
|
||||||
private boolean markAsRead;
|
private boolean markAsRead;
|
||||||
|
|
||||||
@JsonProperty("auth_token")
|
|
||||||
private String authToken;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package ru.soune.nocopy.handler;
|
package ru.soune.nocopy.handler;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -46,6 +47,8 @@ public class RegRequestHandler implements RequestHandler {
|
|||||||
|
|
||||||
private final JwtUtil jwtUtil;
|
private final JwtUtil jwtUtil;
|
||||||
|
|
||||||
|
private final HttpServletRequest httpServletRequest;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseResponse handle(BaseRequest request) throws ValidationException {
|
public BaseResponse handle(BaseRequest request) throws ValidationException {
|
||||||
RegRequest regRequest = objectMapper.convertValue(request.getMessageBody(), RegRequest.class);
|
RegRequest regRequest = objectMapper.convertValue(request.getMessageBody(), RegRequest.class);
|
||||||
@@ -92,8 +95,9 @@ public class RegRequestHandler implements RequestHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
boolean verified = mailVerified.equals("true");
|
boolean verified = mailVerified.equals("true");
|
||||||
|
Long createrId = (Long) httpServletRequest.getAttribute("userId");
|
||||||
|
|
||||||
User user = userService.createUser(regRequest, verified);
|
User user = userService.createUser(regRequest, verified, createrId);
|
||||||
|
|
||||||
EmailVerificationToken emailToken = emailService.createEmailVerificationToken(user);
|
EmailVerificationToken emailToken = emailService.createEmailVerificationToken(user);
|
||||||
RegAnswer regAnswer = new RegAnswer();
|
RegAnswer regAnswer = new RegAnswer();
|
||||||
|
|||||||
@@ -9,12 +9,9 @@ import ru.soune.nocopy.dto.BaseRequest;
|
|||||||
import ru.soune.nocopy.dto.BaseResponse;
|
import ru.soune.nocopy.dto.BaseResponse;
|
||||||
import ru.soune.nocopy.dto.MessageCode;
|
import ru.soune.nocopy.dto.MessageCode;
|
||||||
import ru.soune.nocopy.dto.violation.*;
|
import ru.soune.nocopy.dto.violation.*;
|
||||||
import ru.soune.nocopy.entity.user.AuthToken;
|
|
||||||
import ru.soune.nocopy.repository.AuthTokenRepository;
|
|
||||||
import ru.soune.nocopy.service.violation.ViolationNotionService;
|
import ru.soune.nocopy.service.violation.ViolationNotionService;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ import ru.soune.nocopy.repository.*;
|
|||||||
import ru.soune.nocopy.service.file.cloud.CloudStorageService;
|
import ru.soune.nocopy.service.file.cloud.CloudStorageService;
|
||||||
import ru.soune.nocopy.util.FileUtil;
|
import ru.soune.nocopy.util.FileUtil;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
@@ -38,8 +37,6 @@ public class FileSimilarityService {
|
|||||||
|
|
||||||
private final FileUtil fileUtil;
|
private final FileUtil fileUtil;
|
||||||
|
|
||||||
private final AuthTokenRepository authTokenRepository;
|
|
||||||
|
|
||||||
private final FileEntityRepository fileEntityRepository;
|
private final FileEntityRepository fileEntityRepository;
|
||||||
|
|
||||||
private final CloudStorageService cloudStorageService;
|
private final CloudStorageService cloudStorageService;
|
||||||
@@ -149,7 +146,7 @@ public class FileSimilarityService {
|
|||||||
String fileId,
|
String fileId,
|
||||||
List<String> similarityLevels,
|
List<String> similarityLevels,
|
||||||
Pageable pageable,
|
Pageable pageable,
|
||||||
String authToken) {
|
Long userId) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var imageHashEntity = hashRepository.findById(fileId)
|
var imageHashEntity = hashRepository.findById(fileId)
|
||||||
@@ -159,7 +156,6 @@ public class FileSimilarityService {
|
|||||||
List<Long> userIds;
|
List<Long> userIds;
|
||||||
List<SimilarImageProjection> candidates = repository.findCandidates(fileId);
|
List<SimilarImageProjection> candidates = repository.findCandidates(fileId);
|
||||||
|
|
||||||
Long userId = authTokenRepository.findUserIdByToken(authToken);
|
|
||||||
User user = userRepository.findById(userId).orElseThrow(() -> new RuntimeException("User not found"));
|
User user = userRepository.findById(userId).orElseThrow(() -> new RuntimeException("User not found"));
|
||||||
Company company = user.getCompany();
|
Company company = user.getCompany();
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import ru.soune.nocopy.exception.CompanyAlreadyExist;
|
|||||||
import ru.soune.nocopy.exception.InvalidUserEmail;
|
import ru.soune.nocopy.exception.InvalidUserEmail;
|
||||||
import ru.soune.nocopy.exception.NotValidationPasswordException;
|
import ru.soune.nocopy.exception.NotValidationPasswordException;
|
||||||
import ru.soune.nocopy.exception.UserNotFoundException;
|
import ru.soune.nocopy.exception.UserNotFoundException;
|
||||||
import ru.soune.nocopy.repository.AuthTokenRepository;
|
|
||||||
import ru.soune.nocopy.repository.CompanyRepository;
|
import ru.soune.nocopy.repository.CompanyRepository;
|
||||||
import ru.soune.nocopy.repository.UserRepository;
|
import ru.soune.nocopy.repository.UserRepository;
|
||||||
import ru.soune.nocopy.service.file.FileStatsService;
|
import ru.soune.nocopy.service.file.FileStatsService;
|
||||||
@@ -44,7 +43,7 @@ public class UserService {
|
|||||||
|
|
||||||
private final TariffInfoService tariffInfoService;
|
private final TariffInfoService tariffInfoService;
|
||||||
|
|
||||||
private final AuthTokenRepository authTokenRepository;
|
private final UserService userService;
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public User changePassword(User user, ChangePasswordRequest request) {
|
public User changePassword(User user, ChangePasswordRequest request) {
|
||||||
@@ -99,7 +98,7 @@ public class UserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public User createUser(RegRequest registerRequest, boolean verified) {
|
public User createUser(RegRequest registerRequest, boolean verified, Long createrId) {
|
||||||
User user = new User();
|
User user = new User();
|
||||||
user.setFullName(registerRequest.getFullName());
|
user.setFullName(registerRequest.getFullName());
|
||||||
user.setEmail(registerRequest.getEmail());
|
user.setEmail(registerRequest.getEmail());
|
||||||
@@ -118,7 +117,7 @@ public class UserService {
|
|||||||
} else if (accountType == AccountType.B2C && registerRequest.getCompanyName() == null) {
|
} else if (accountType == AccountType.B2C && registerRequest.getCompanyName() == null) {
|
||||||
createIndividualAccount(user);
|
createIndividualAccount(user);
|
||||||
} else {
|
} else {
|
||||||
createIndividualCompanyAccount(registerRequest, user);
|
createIndividualCompanyAccount(user, createrId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (registerRequest.getPhone() != null) {
|
if (registerRequest.getPhone() != null) {
|
||||||
@@ -167,11 +166,9 @@ public class UserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void createIndividualCompanyAccount(RegRequest request, User user) {
|
private void createIndividualCompanyAccount(User user, Long companyUserId) {
|
||||||
String authToken = request.getAuthToken();
|
User companyUser = userService.getUserById(companyUserId).orElseThrow(() ->
|
||||||
Long userIdByToken = authTokenRepository.findUserIdByToken(authToken);
|
new EntityNotFoundException("Not found user id: " + companyUserId));
|
||||||
User companyUser = userRepository.findById(userIdByToken)
|
|
||||||
.orElseThrow(() -> new EntityNotFoundException("Not found token: " + authToken));
|
|
||||||
|
|
||||||
Company company = companyUser.getCompany();
|
Company company = companyUser.getCompany();
|
||||||
if (company == null) {
|
if (company == null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user