ViSnezh
This commit is contained in:
1 parent
71358a25dd
commit
44c7887c8f
8 files changed
+85
-18
No files matched your search
@@ -139,7 +139,7 @@ public class ProjectController {
|
|||||||
return modelAndView;
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/{projectId}/{nameOfPosition}/applay")
|
@PostMapping("/{projectId}/{nameOfPosition}/apply")
|
||||||
public ModelAndView applyOnProject(@PathVariable("projectId") Long projectId,
|
public ModelAndView applyOnProject(@PathVariable("projectId") Long projectId,
|
||||||
@PathVariable("nameOfPosition") String nameOfPosition,
|
@PathVariable("nameOfPosition") String nameOfPosition,
|
||||||
Principal principal) {
|
Principal principal) {
|
||||||
|
|||||||
@@ -21,10 +21,6 @@ public class Participant {
|
|||||||
@JoinColumn(name = "project_id", updatable = false)
|
@JoinColumn(name = "project_id", updatable = false)
|
||||||
private Project project;
|
private Project project;
|
||||||
|
|
||||||
@Column(name = "technology")
|
|
||||||
@NotNull
|
|
||||||
private String technology;
|
|
||||||
|
|
||||||
@Column(name = "name_of_position")
|
@Column(name = "name_of_position")
|
||||||
private String nameOfPosition;
|
private String nameOfPosition;
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import javax.validation.constraints.NotNull;
|
|||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Entity
|
@Entity
|
||||||
@@ -35,9 +36,12 @@ public class Project {
|
|||||||
@Column(name = "commercial_status") // 1 - commercial, 0 - non-commercial
|
@Column(name = "commercial_status") // 1 - commercial, 0 - non-commercial
|
||||||
private int commercialStatus;
|
private int commercialStatus;
|
||||||
|
|
||||||
@Column(name = "technology")
|
@ManyToMany
|
||||||
@NotNull
|
@JoinTable(
|
||||||
private String technology;
|
joinColumns = @JoinColumn(name = "project_id"),
|
||||||
|
inverseJoinColumns = @JoinColumn(name = "tag_id")
|
||||||
|
)
|
||||||
|
private List<Tag> technology;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
@JoinColumn(name = "owner_id", updatable = false)
|
@JoinColumn(name = "owner_id", updatable = false)
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package site.easystartup.web.project.domain.model;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Entity
|
||||||
|
@Table(name = "tag")
|
||||||
|
public class Tag {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@Column(name = "tag_id")
|
||||||
|
private Long tagId;
|
||||||
|
|
||||||
|
@Column(name = "tage_name")
|
||||||
|
private String tagName;
|
||||||
|
|
||||||
|
@ManyToMany(mappedBy = "technology")
|
||||||
|
private Set<Project> projects;
|
||||||
|
}
|
||||||
+4
-2
@@ -1,11 +1,13 @@
|
|||||||
package site.easystartup.web.project.domain.payload.requst;
|
package site.easystartup.web.project.domain.payload.requst;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import site.easystartup.web.project.domain.model.Tag;
|
||||||
import site.easystartup.web.project.dto.ParticipantDto;
|
import site.easystartup.web.project.dto.ParticipantDto;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@@ -22,6 +24,6 @@ public class ProjectRequest {
|
|||||||
private String description;
|
private String description;
|
||||||
private int commercialStatus;
|
private int commercialStatus;
|
||||||
@NotNull
|
@NotNull
|
||||||
private String technology;
|
private List<Tag> technology;
|
||||||
private List<ParticipantDto> participants;
|
private List<ParticipantDto> participants;
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package site.easystartup.web.project.repo;
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
import site.easystartup.web.project.domain.model.Tag;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface TagRepo extends JpaRepository<Tag, Long> {
|
||||||
|
|
||||||
|
Optional<Tag> findTagByTagNameIgnoreCase(String tagName);
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@ import site.easystartup.web.domain.User;
|
|||||||
import site.easystartup.web.project.domain.exeption.ProjectNotFoundException;
|
import site.easystartup.web.project.domain.exeption.ProjectNotFoundException;
|
||||||
import site.easystartup.web.project.domain.model.Participant;
|
import site.easystartup.web.project.domain.model.Participant;
|
||||||
import site.easystartup.web.project.domain.model.Project;
|
import site.easystartup.web.project.domain.model.Project;
|
||||||
|
import site.easystartup.web.project.domain.model.Tag;
|
||||||
import site.easystartup.web.project.domain.payload.requst.ProjectRequest;
|
import site.easystartup.web.project.domain.payload.requst.ProjectRequest;
|
||||||
import site.easystartup.web.project.repo.ParticipantRepo;
|
import site.easystartup.web.project.repo.ParticipantRepo;
|
||||||
import site.easystartup.web.project.repo.ProjectRepo;
|
import site.easystartup.web.project.repo.ProjectRepo;
|
||||||
@@ -14,6 +15,7 @@ import site.easystartup.web.service.UserService;
|
|||||||
import site.easystartup.web.storage.service.StorageService;
|
import site.easystartup.web.storage.service.StorageService;
|
||||||
|
|
||||||
import java.security.Principal;
|
import java.security.Principal;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -27,6 +29,7 @@ public class ProjectService {
|
|||||||
private final ModelMapper modelMapper;
|
private final ModelMapper modelMapper;
|
||||||
private final StorageService storageService;
|
private final StorageService storageService;
|
||||||
private final ParticipantRepo participantRepo;
|
private final ParticipantRepo participantRepo;
|
||||||
|
private final TagService tagService;
|
||||||
|
|
||||||
|
|
||||||
public Project createProject(ProjectRequest projectRequest, Principal principal) {
|
public Project createProject(ProjectRequest projectRequest, Principal principal) {
|
||||||
@@ -108,13 +111,6 @@ public class ProjectService {
|
|||||||
return projectRepo.save(project);
|
return projectRepo.save(project);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private String formatTechnology(String technology) {
|
|
||||||
StringBuilder result = new StringBuilder();
|
|
||||||
Arrays.stream(technology.split(",")).forEach(tech -> result.append(tech.trim()).append(" "));
|
|
||||||
return result.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private Project projectRequestToProject(ProjectRequest projectRequest, Principal principal) {
|
private Project projectRequestToProject(ProjectRequest projectRequest, Principal principal) {
|
||||||
Project project = new Project();
|
Project project = new Project();
|
||||||
|
|
||||||
@@ -122,7 +118,7 @@ public class ProjectService {
|
|||||||
.stream().map(part -> modelMapper.map(part, Participant.class)).collect(Collectors.toList()));
|
.stream().map(part -> modelMapper.map(part, Participant.class)).collect(Collectors.toList()));
|
||||||
project.setTitle(projectRequest.getTitle());
|
project.setTitle(projectRequest.getTitle());
|
||||||
project.setDescription(projectRequest.getDescription());
|
project.setDescription(projectRequest.getDescription());
|
||||||
project.setTechnology(formatTechnology(projectRequest.getTechnology()));
|
project.setTechnology(tagService.convertTechnology(projectRequest.getTechnology()));
|
||||||
project.setCommercialStatus(project.getCommercialStatus());
|
project.setCommercialStatus(project.getCommercialStatus());
|
||||||
project.setCoverLink(projectRequest.getCover().getName());
|
project.setCoverLink(projectRequest.getCover().getName());
|
||||||
project.setOwner(userService.getUserByPrincipal(principal));
|
project.setOwner(userService.getUserByPrincipal(principal));
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package site.easystartup.web.project.service;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import site.easystartup.web.project.domain.model.Tag;
|
||||||
|
import site.easystartup.web.project.repo.TagRepo;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class TagService {
|
||||||
|
private final TagRepo tagRepo;
|
||||||
|
|
||||||
|
public List<Tag> getAllTags() {
|
||||||
|
return tagRepo.findAll();
|
||||||
|
}
|
||||||
|
public List<Tag> convertTechnology(List<Tag> technology) {
|
||||||
|
List<Tag> tags = new ArrayList<>();
|
||||||
|
technology.forEach(tag -> {
|
||||||
|
Optional<Tag> foundTag = tagRepo.findTagByTagNameIgnoreCase(tag.getTagName());
|
||||||
|
if (foundTag.isPresent()) {
|
||||||
|
tags.add(foundTag.get());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tagRepo.save(tag);
|
||||||
|
tags.add(tagRepo.findTagByTagNameIgnoreCase(tag.getTagName()).get());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return tags;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user