Skip to content

Commit 94072d9

Browse files
authored
Merge pull request #85 from eureca-final-capstone-project/develop
main 병합
2 parents f933bb2 + cbfcd28 commit 94072d9

5 files changed

Lines changed: 112 additions & 0 deletions

File tree

build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ dependencies {
5050
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
5151
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
5252

53+
// ElasticSearch
54+
implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
55+
5356
// Redis
5457
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
5558

src/main/java/eureca/capstone/project/admin/report/service/impl/RestrictionServiceImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
import eureca.capstone.project.admin.report.repository.RestrictionAuthorityRepository;
1818
import eureca.capstone.project.admin.report.repository.RestrictionTargetRepository;
1919
import eureca.capstone.project.admin.report.service.RestrictionService;
20+
import eureca.capstone.project.admin.transaction_feed.document.TransactionFeedDocument;
2021
import eureca.capstone.project.admin.transaction_feed.entity.TransactionFeed;
2122
import eureca.capstone.project.admin.transaction_feed.repository.TransactionFeedRepository;
23+
import eureca.capstone.project.admin.transaction_feed.repository.TransactionFeedSearchRepository;
2224
import eureca.capstone.project.admin.user.entity.User;
2325
import lombok.RequiredArgsConstructor;
2426
import lombok.extern.slf4j.Slf4j;
@@ -45,6 +47,7 @@ public class RestrictionServiceImpl implements RestrictionService {
4547
private final TransactionFeedRepository transactionFeedRepository;
4648
private final StatusManager statusManager;
4749
private final UserAuthorityRepository userAuthorityRepository;
50+
private final TransactionFeedSearchRepository transactionFeedSearchRepository;
4851
private final RedisService redisService;
4952

5053
@Override
@@ -138,6 +141,16 @@ public void acceptRestrictions(Long restrictionTargetId) {
138141
transactionFeedRepository.saveAll(transactionFeedsToBlur);
139142
log.info("[acceptRestrictions] 연관된 게시글 {}건의 상태를 'BLURRED'로 변경했습니다.", transactionFeedsToBlur.size());
140143

144+
try {
145+
List<TransactionFeedDocument> documentsToUpdate = transactionFeedsToBlur.stream()
146+
.map(TransactionFeedDocument::fromEntity) // TransactionFeed 엔티티를 Document로 변환
147+
.toList();
148+
transactionFeedSearchRepository.saveAll(documentsToUpdate);
149+
log.info("[acceptRestrictions] Elasticsearch의 게시글 문서 {}건을 동기화(BLURRED)했습니다.", documentsToUpdate.size());
150+
} catch (Exception e) {
151+
log.error("[acceptRestrictions] Elasticsearch 동기화 중 오류 발생: {}", e.getMessage());
152+
}
153+
141154
try {
142155
String key = "BlackListUser:" + user.getUserId();
143156
redisService.setValue(key, "restricted", 1, TimeUnit.HOURS);
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package eureca.capstone.project.admin.transaction_feed.document;
2+
3+
import eureca.capstone.project.admin.transaction_feed.entity.TransactionFeed;
4+
import jakarta.persistence.Id;
5+
import java.time.LocalDateTime;
6+
import lombok.AllArgsConstructor;
7+
import lombok.Builder;
8+
import lombok.Getter;
9+
import lombok.NoArgsConstructor;
10+
import org.springframework.data.elasticsearch.annotations.Document;
11+
import org.springframework.data.elasticsearch.annotations.Field;
12+
import org.springframework.data.elasticsearch.annotations.FieldType;
13+
import org.springframework.data.elasticsearch.annotations.Setting;
14+
15+
@Getter
16+
@Builder
17+
@NoArgsConstructor
18+
@AllArgsConstructor
19+
@Document(indexName = "transaction_feed")
20+
@Setting(settingPath = "elasticsearch/analyzer-settings.json")
21+
public class TransactionFeedDocument {
22+
23+
@Id
24+
private Long id;
25+
26+
@Field(type = FieldType.Text, analyzer = "nori")
27+
private String title;
28+
29+
@Field(type = FieldType.Text, analyzer = "nori")
30+
private String content;
31+
32+
@Field(type = FieldType.Long)
33+
private Long salesPrice;
34+
35+
@Field(type = FieldType.Long)
36+
private Long salesDataAmount;
37+
38+
@Field(type = FieldType.Keyword)
39+
private Long sellerId;
40+
41+
@Field(type = FieldType.Keyword)
42+
private String nickname;
43+
44+
@Field(type = FieldType.Keyword)
45+
private Long telecomCompanyId;
46+
47+
@Field(type = FieldType.Text, analyzer = "nori")
48+
private String telecomCompanyName; // 검색용
49+
50+
@Field(type = FieldType.Keyword)
51+
private Long salesTypeId;
52+
53+
@Field(type = FieldType.Keyword)
54+
private String status;
55+
56+
@Field(type = FieldType.Long)
57+
private Long defaultImageNumber;
58+
59+
@Field(type = FieldType.Date, format = {}, pattern = "uuuu-MM-dd'T'HH:mm:ss.SSS")
60+
private LocalDateTime createdAt;
61+
62+
@Field(type = FieldType.Date, format = {}, pattern = "uuuu-MM-dd'T'HH:mm:ss.SSS")
63+
private LocalDateTime expiresAt;
64+
65+
@Field(type = FieldType.Boolean)
66+
private boolean isDeleted;
67+
68+
public static TransactionFeedDocument fromEntity(TransactionFeed transactionFeed) {
69+
return TransactionFeedDocument.builder()
70+
.id(transactionFeed.getTransactionFeedId())
71+
.title(transactionFeed.getTitle())
72+
.content(transactionFeed.getContent())
73+
.salesPrice(transactionFeed.getSalesPrice())
74+
.salesDataAmount(transactionFeed.getSalesDataAmount())
75+
.sellerId(transactionFeed.getUser().getUserId())
76+
.nickname(transactionFeed.getUser().getNickname())
77+
.telecomCompanyId(transactionFeed.getTelecomCompany().getTelecomCompanyId())
78+
.telecomCompanyName(transactionFeed.getTelecomCompany().getName())
79+
.salesTypeId(transactionFeed.getSalesType().getSalesTypeId())
80+
.status(transactionFeed.getStatus().getCode())
81+
.defaultImageNumber(transactionFeed.getDefaultImageNumber())
82+
.createdAt(transactionFeed.getCreatedAt())
83+
.expiresAt(transactionFeed.getExpiresAt())
84+
.isDeleted(transactionFeed.isDeleted())
85+
.build();
86+
}
87+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package eureca.capstone.project.admin.transaction_feed.repository;
2+
3+
import eureca.capstone.project.admin.transaction_feed.document.TransactionFeedDocument;
4+
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
5+
6+
public interface TransactionFeedSearchRepository extends ElasticsearchRepository<TransactionFeedDocument, Long> {
7+
}

src/main/resources/application.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ spring:
2323
host: 13.124.223.23
2424
port: 6379
2525
password: ureca!#%!#
26+
elasticsearch:
27+
uris: http://13.124.136.141:9200
2628

2729
springdoc:
2830
packages-to-scan: eureca.capstone.project.admin

0 commit comments

Comments
 (0)