Skip to content

Commit

Permalink
Merge pull request #124 from WooRibound/fix/#115-individaul-user
Browse files Browse the repository at this point in the history
[fix] #115 -  individaul user
  • Loading branch information
cshharry authored Nov 22, 2024
2 parents eaf6aac + 3a5f0bf commit b2bf042
Show file tree
Hide file tree
Showing 9 changed files with 92 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.wooribound.api.individual.controller;

import com.wooribound.api.individual.dto.KnowhowReportReqDTO;
import com.wooribound.api.individual.facade.WBUserKnowhowFacade;
import com.wooribound.domain.knowhow.dto.WbUserKnowhowDTO;
import io.swagger.v3.oas.annotations.Operation;
Expand Down Expand Up @@ -57,4 +58,10 @@ public ResponseEntity getShareKnowhowDetail(@RequestParam("knowhowId") Long know
{
return ResponseEntity.ok().body(wbUserKnowhowFacade.getShareKnowhowDetail(knowhowId));
}

@Operation(summary = "지혜 나눔 신고하기", description = "지혜 나눔 신고하기")
@PostMapping("/report")
public ResponseEntity reportKnowhow(Authentication authentication, @RequestBody KnowhowReportReqDTO knowhowReportReqDTO) {
return ResponseEntity.ok().body(wbUserKnowhowFacade.reportKnowhow(authentication, knowhowReportReqDTO.getKnowhowId()));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.wooribound.api.individual.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@AllArgsConstructor
@Data
public class KnowhowReportReqDTO {
private Long knowhowId;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.wooribound.domain.knowhow.dto.WbUserKnowhowDTO;
import com.wooribound.domain.knowhow.service.WbUserKnowhowService;
import com.wooribound.domain.knowhowreported.service.KnowhowReportedService;
import com.wooribound.global.util.AuthenticateUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.Authentication;
Expand All @@ -16,6 +17,7 @@ public class WBUserKnowhowFacade {

private final AuthenticateUtil authenticateUtil;
private final WbUserKnowhowService wbUserKnowhowService;
private final KnowhowReportedService knowhowReportedService;

@Transactional(readOnly = true)
public List<WbUserKnowhowDTO> getAllShareKnowhows(Authentication authentication, String knowhowTitle, String knowhowJob) {
Expand Down Expand Up @@ -45,4 +47,10 @@ public WbUserKnowhowDTO getShareKnowhowDetail(Long knowhowId) {
return wbUserKnowhowService.getShareKnowhowDetail(knowhowId);
}

@Transactional
public String reportKnowhow (Authentication authentication, Long knowhowId) {
String userId = authenticateUtil.CheckWbUserAuthAndGetUserId(authentication);
return knowhowReportedService.reportKnowhow(userId, knowhowId);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ List<Knowhow> findByUserIdAndTermAndFilter(@Param("userId") String userId,
@Param("jobFilter") String jobFilter);

@Query("SELECT k FROM Knowhow k WHERE k.knowhowTitle LIKE CONCAT('%', :knowhowTitle, '%') AND (:knowhowJob = '전체 직무' OR k.knowhowJob = :knowhowJob)")
List<Knowhow> findByTermAndFilter(@Param("knowhowTitle") String knowhowTitle, @Param("knowhowJob") String knowhowJob);
List<Knowhow> findByKnowhowTitleAndKnowhowJob(@Param("knowhowTitle") String knowhowTitle, @Param("knowhowJob") String knowhowJob);

@Query("SELECT MAX(k.knowhowId) FROM Knowhow k")
Optional<Long> getMaxKnowhowId();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public Long createShareKnowhow(String userId, WbUserKnowhowDTO wbUserKnowhowDTO)
@Override
public List<WbUserKnowhowDTO> getAllExploreKnowhows(String knowhowTitle, String knowhowJob) {

List<Knowhow> knowhows = knowhowRepository.findByTermAndFilter(knowhowTitle, knowhowJob);
List<Knowhow> knowhows = knowhowRepository.findByKnowhowTitleAndKnowhowJob(knowhowTitle, knowhowJob);

return knowhows.stream()
.map(this::convertToDTO)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import jakarta.persistence.*;
import lombok.*;

import java.time.LocalDateTime;
import java.util.Date;

@NoArgsConstructor(access = AccessLevel.PROTECTED)
Expand All @@ -20,8 +21,8 @@ public class KnowhowReported {
@Column(name = "reported_id")
private Long reportedId;

@Column(name = "reported_date", nullable = false)
private Date reportedDate;
@Column(name = "created_at", nullable = false)
private LocalDateTime createdAt;

@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
Expand All @@ -30,4 +31,9 @@ public class KnowhowReported {
@ManyToOne
@JoinColumn(name = "knowhow_id", nullable = false)
private Knowhow knowhow;

@PrePersist
public void prePersist() {
createdAt = LocalDateTime.now();
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
package com.wooribound.domain.knowhowreported;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.Optional;

@Repository
public interface KnowhowReportedRepository extends JpaRepository<KnowhowReported, Long> {
@Query("SELECT MAX(kr.reportedId) FROM KnowhowReported kr")
Optional<Long> getMaxReportedId();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.wooribound.domain.knowhowreported.service;

public interface KnowhowReportedService {
String reportKnowhow(String userId, Long knowhowId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.wooribound.domain.knowhowreported.service;

import com.wooribound.domain.knowhow.Knowhow;
import com.wooribound.domain.knowhow.KnowhowRepository;
import com.wooribound.domain.knowhowreported.KnowhowReported;
import com.wooribound.domain.knowhowreported.KnowhowReportedRepository;
import com.wooribound.domain.wbuser.WbUserRepository;
import com.wooribound.global.exception.NotEntityException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@RequiredArgsConstructor
@Service
public class KnowhowReportedServiceImpl implements KnowhowReportedService{

private final WbUserRepository wbUserRepository;
private final KnowhowRepository knowhowRepository;
private final KnowhowReportedRepository knowhowReportedRepository;

@Override
public String reportKnowhow(String userId, Long knowhowId) {
wbUserRepository.findById(userId)
.orElseThrow(() -> new NotEntityException("[WbUser, ID :" + userId + "]"));

Knowhow knowhow = knowhowRepository.findById(knowhowId)
.orElseThrow(() -> new NotEntityException("[Knowhow, ID :" + knowhowId + "]"));

if (userId.equals(knowhow.getWbUser().getUserId())) {
return "본인이 작성한 글은 신고할 수 없습니다.";
}

Long reportedId = knowhowReportedRepository.getMaxReportedId().orElse(0L) + 1;

KnowhowReported knowhowReported = KnowhowReported.builder()
.reportedId(reportedId)
.wbUser(knowhow.getWbUser())
.knowhow(knowhow)
.build();

knowhowReportedRepository.save(knowhowReported);

return "신고하기가 완료되었습니다.";
}
}

0 comments on commit b2bf042

Please sign in to comment.