Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,16 @@ public static class RequestDetail {
@NotNull(message ="contentid는 비면안됩니다.")
@Schema(description = "필수값입니다.")
private Long contentId;
@Schema(description = "관리자단 대시보드의 최신데이터 알람에서 신고목록을 클릭해서 넘어올떄만 넣어주세요")
private Long reportId;
@Schema(description = "관리자단 대시보드의 최신데이터 알람에서 넘어올경우에만 넣어주세요")
private String alarmCheck;
@Builder
public RequestDetail(StaticDataType staticDataType, Long contentId) {
public RequestDetail(StaticDataType staticDataType, Long contentId,Long reportId,String alarmCheck) {
this.staticDataType = staticDataType;
this.contentId = contentId;
this.reportId=reportId;
this.alarmCheck=alarmCheck;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,13 @@ public final static class RequestImprovementDetail {
@NotNull(message = "contentid는 비면안됩니다.")
@Schema(description = "필수값 입니다.")
private Long contentId;

@Schema(description = "관리자단 대시보드의 최신데이터 알림에서 넘어올경우에만 넘겨주시면됩니다." +
"그외엔 null로 주시면됩니다.")
private String alarmCheck;
@Builder
public RequestImprovementDetail(Long contentId) {
public RequestImprovementDetail(Long contentId,String alarmCheck) {
this.contentId = contentId;
this.alarmCheck=alarmCheck;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,14 @@ public final static class RequestInquiryDetail {
@NotNull(message = "contentid 는 비면안됩니다.")
@Schema(description = "inquiry id값입니다. 필수입니다.")
private Long contentId;
@Schema(description = "관리자단 대시보드의 최신데이터 알림에서 넘어올경우에만 넘겨주시면됩니다." +
"그외엔 null로 주시면됩니다.")
private String alarmCheck;

@Builder
public RequestInquiryDetail(Long id) {
public RequestInquiryDetail(Long id,String alarmCheck) {
this.contentId = id;
this.alarmCheck=alarmCheck;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public static class ResponseStatic {
@Getter
public static class ResponseLatestData {

@Schema(description = "불러온 데이터 타입이 신고일때 어떤 콘텐츠에대한 신고인지를 나타냅니다.")
@Schema(description = "불러온 최신 데이터 타입이 신고일때 어떤 콘텐츠에대한 신고인지를 나타냅니다.")
private String reportType;
@Schema(description = "최신 데이터를 관리자단의 우측 하단에서 표시할때 가장 왼쪽에오는 상태값입니다.")
private String mainStatus;
Expand All @@ -43,20 +43,23 @@ public static class ResponseLatestData {
@Schema(description = "어떤 종류의 최신데이터인지 보여줍니다")
private StaticDataType staticDataType;
@Schema(description = "이값이 true이면 이미 읽은것,아니면은 읽지않은것입니다.")
private boolean checkRead;
private Boolean checkRead;
@Schema(description = "신고 관련 최신 리스트일떄 참조하는 값으로 다른 관련 최신 리스트라면 무시해주세요")
private Long reportId;

public ResponseLatestData(String reportType,
String mainStatus, String subStatus, Long contentId,
String name, String content, String createAt,
StaticDataType staticDateType) {
String name, String content, String createAt,Long reportId
,StaticDataType staticDataType) {
this.reportType = reportType;
this.mainStatus = mainStatus;
this.subStatus = subStatus;
this.contentId = contentId;
this.name = name;
this.content = content;
this.createAt = createAt;
this.staticDataType=staticDateType;
this.reportId=reportId;
this.staticDataType=staticDataType;
}

public void updateCreateAt(String createAt) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ public Map<String,List<ResponseLatestData>> getLatestData() {
.from(board)
.where(board.id.eq(report.reportedContentId))),
report.createDate.stringValue(),
report.id,
Expressions.constant(StaticDataType.Report)
))
.from(report)
Expand All @@ -177,8 +178,8 @@ public Map<String,List<ResponseLatestData>> getLatestData() {
.fetch();
reportLatest.stream()
.forEach(x -> {
boolean readCheck = redisService.AdminReadCheck("ADMIN_ALARM", admin.getPublicId().toString()
, StaticDataType.Report, x.getContentId());
boolean readCheck = redisService.AdminReadCheck(admin.getPublicId().toString()
,StaticDataType.Report, x.getContentId());
x.mappingCheckRead(readCheck);
x.updateCreateAt(
DateFormatUtil.formatByDot.format(
Expand Down Expand Up @@ -213,6 +214,7 @@ public Map<String,List<ResponseLatestData>> getLatestData() {
.otherwise(member.nickname),
inquiry.content.substring(0, 20),
inquiry.createdAt.stringValue(),
Expressions.constant(0L),
Expressions.constant(StaticDataType.Inquiry)
))
.from(inquiry)
Expand All @@ -229,8 +231,8 @@ public Map<String,List<ResponseLatestData>> getLatestData() {
DateFormatUtil.formatByDot.format(
LocalDateTime.parse(x.getCreateAt(), DateFormatUtil.FLEXIBLE_NANO_FORMATTER)));

boolean readCheck = redisService.AdminReadCheck("ADMIN_ALARM", admin.getPublicId().toString()
, StaticDataType.Inquiry, x.getContentId());
boolean readCheck = redisService.AdminReadCheck(admin.getPublicId().toString()
, x.getStaticDataType(), x.getContentId());
x.mappingCheckRead(readCheck);
});
List<ResponseLatestData> improveLatest=queryFactory.select(
Expand All @@ -248,6 +250,7 @@ public Map<String,List<ResponseLatestData>> getLatestData() {
member.nickname,
improvement.content,
improvement.createDate.stringValue(),
Expressions.constant(0L),
Expressions.constant(StaticDataType.Improvement)

))
Expand All @@ -263,7 +266,7 @@ public Map<String,List<ResponseLatestData>> getLatestData() {
x.updateCreateAt(
DateFormatUtil.formatByDot.format(
LocalDateTime.parse(x.getCreateAt(), DateFormatUtil.FLEXIBLE_NANO_FORMATTER)));
boolean readCheck = redisService.AdminReadCheck("ADMIN_ALARM", admin.getPublicId().toString()
boolean readCheck = redisService.AdminReadCheck(admin.getPublicId().toString()
, StaticDataType.Improvement, x.getContentId());
x.mappingCheckRead(readCheck);
});
Expand Down Expand Up @@ -314,7 +317,4 @@ private ResponseStatic makeInquiryImprovementStatic(DateType dateType,List<Local
.staticDataName("InquiryImprovement")
.build();
}



}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@

import lombok.RequiredArgsConstructor;
import org.myteam.server.admin.repository.AdminImprovementSearchRepo;
import org.myteam.server.admin.utill.StaticDataType;
import org.myteam.server.global.util.redis.service.RedisService;
import org.myteam.server.member.entity.Member;
import org.myteam.server.member.service.SecurityReadService;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;

Expand All @@ -15,6 +19,8 @@
public class AdminImprovementService {

private final AdminImprovementSearchRepo adminImprovementSearchRepo;
private final SecurityReadService securityReadService;
private final RedisService redisService;


public Page<ResponseImprovement> getImproveListCond(RequestImprovementList requestImprovementList) {
Expand All @@ -28,8 +34,14 @@ public Page<ResponseMemberImproveList> getImproveListMember(RequestMemberImprove
}

public ResponseImprovementDetail getImproveDetail(RequestImprovementDetail requestImprovementList) {

return adminImprovementSearchRepo.getImprovementDetail(requestImprovementList);
ResponseImprovementDetail responseImprovementDetail
=adminImprovementSearchRepo.getImprovementDetail(requestImprovementList);;
if(requestImprovementList.getAlarmCheck()!=null) {
Member admin = securityReadService.getMember();
redisService.adminReadCheckUpdate(admin.getPublicId().toString()
, StaticDataType.Improvement, requestImprovementList.getContentId());
}
return responseImprovementDetail;
}

public void addAdminMemo(AdminMemoImprovementRequest adminMemoRequest) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,12 @@
import lombok.RequiredArgsConstructor;
import org.myteam.server.admin.entity.AdminContentMemo;
import org.myteam.server.admin.repository.InquirySearchRepo;
import org.myteam.server.admin.utill.StaticDataType;
import org.myteam.server.common.certification.service.InquiryAnsSendService;
import org.myteam.server.global.util.redis.service.RedisService;
import org.myteam.server.member.entity.Member;
import org.myteam.server.member.service.MemberReadService;
import org.myteam.server.member.service.SecurityReadService;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import static org.myteam.server.admin.dto.request.AdminMemoRequestDto.AdminMemoInquiryRequest;
Expand All @@ -21,15 +25,23 @@ public class AdminInquiryService {
private final InquirySearchRepo inquirySearchRepo;
private final InquiryAnsSendService inquiryAnsSendStrategy;
private final MemberReadService memberReadService;
private final SecurityReadService securityReadService;
private final RedisService redisService;

public Page<ResponseInquiryListCond> getInquiryListCond(RequestInquiryListCond requestInquiryListCond) {

return inquirySearchRepo.getInquiryListByCond(requestInquiryListCond);
}

public ResponseInquiryDetail getInquiryDetail(RequestInquiryDetail requestInquiryDetail) {

return inquirySearchRepo.getInquiryDetail(requestInquiryDetail);
ResponseInquiryDetail responseInquiryDetail=
inquirySearchRepo.getInquiryDetail(requestInquiryDetail);
if(requestInquiryDetail.getAlarmCheck()!=null) {
Member admin = securityReadService.getMember();
redisService.adminReadCheckUpdate(admin.getPublicId().toString()
, StaticDataType.Inquiry, requestInquiryDetail.getContentId());
}
return responseInquiryDetail;
}

public Page<ResponseInquiryList> getInquiryListMember(RequestInquiryList requestInquiryDetail) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@

import lombok.RequiredArgsConstructor;
import org.myteam.server.admin.repository.ContentSearchRepository;
import org.myteam.server.admin.utill.StaticDataType;
import org.myteam.server.global.util.redis.service.RedisService;
import org.myteam.server.member.entity.Member;
import org.myteam.server.member.service.SecurityReadService;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
Expand All @@ -17,6 +21,8 @@
public class ContentSearchService {

private final ContentSearchRepository contentSearchRepository;
private final SecurityReadService securityReadService;
private final RedisService redisService;

public Page<ResponseReportList> getReportList(RequestReportList requestReportList){

Expand All @@ -27,8 +33,13 @@ public Page<ResponseContentSearch> getContentList(RequestContentData requestRepo
return contentSearchRepository.getDataList(requestReportList);
}
public ResponseDetail getContentDetail(RequestDetail requestDetail){

return contentSearchRepository.getDetail(requestDetail);
ResponseDetail responseDetail=contentSearchRepository.getDetail(requestDetail);
if(requestDetail.getAlarmCheck()!=null&&requestDetail.getReportId()!=null) {
Member admin = securityReadService.getMember();
redisService.adminReadCheckUpdate(admin.getPublicId().toString()
, StaticDataType.Report, requestDetail.getReportId());
}
return responseDetail;
}
public void addAdminMemo(AdminMemoContentRequest adminMemoContentRequest){
contentSearchRepository.addAdminMemo(adminMemoContentRequest);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import org.myteam.server.global.exception.ErrorCode;
import org.myteam.server.global.exception.PlayHiveException;
import org.myteam.server.global.util.date.DateFormatUtil;
import org.myteam.server.inquiry.domain.Inquiry;
import org.myteam.server.inquiry.repository.InquiryRepository;
import org.myteam.server.member.controller.response.MemberResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.MailException;
Expand All @@ -28,19 +30,23 @@ public class InquiryAnsSendService {

private final JavaMailSender javaMailSender;
private final SpringTemplateEngine templateEngine;
private final InquiryRepository inquiryRepository;
@Value("${SENDER_EMAIL}")
private String senderEmail;

private String getSubject() {
return "문의 답변 메일입니다.";
}
private String getBody(String content,String email) {
LocalDateTime now=LocalDateTime.now();
private String getBody(AdminContentMemo adminContentMemo,MemberResponse memberResponse) {
Long inquiryId=adminContentMemo.getContentId();
Inquiry inquiry=inquiryRepository.findById(inquiryId).get();
Context context = new Context();
context.setVariable("email",email);
context.setVariable("content",content);
context.setVariable("setTime", DateFormatUtil.formatByDot.format(now));
return templateEngine.process("mail/signup-complete-template", context);
context.setVariable("content",inquiry.getContent());
context.setVariable("answer",adminContentMemo.getContent());
context.setVariable("inquiryMeta.meta.ip",inquiry.getClientIp());
context.setVariable(" inquiryMeta.meta.created_at",
DateFormatUtil.formatByDot.format(inquiry.getCreatedAt()));
return templateEngine.process("mail/admin-to-user-reply", context);
}
@Async
public CompletableFuture<Void> send(AdminContentMemo adminMemo, MemberResponse memberResponse) {
Expand All @@ -49,7 +55,7 @@ public CompletableFuture<Void> send(AdminContentMemo adminMemo, MemberResponse m

try {
String subject = getSubject();
String body = getBody(adminMemo.getContent(),memberResponse.getEmail());
String body = getBody(adminMemo,memberResponse);
MimeMessage message = createMail(memberResponse.getEmail(), subject, body);

javaMailSender.send(message);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,28 +73,8 @@ public boolean isAdminLoginAllowed(String category,String identifier){
return true;

}
public boolean AdminReadCheck(String category, String adminIdentifier, StaticDataType staticDataType, Long contentId){

String redisKey=getRateLimitKey(category,adminIdentifier+staticDataType.name()+String.valueOf(contentId));
String requestCountStr=redisTemplate.opsForValue().get(redisKey);
int requestCount = requestCountStr == null ? 0 : Integer.parseInt(requestCountStr);
if(requestCount==0){
return false;
}
return true;
}

public void adminReadCheckUpdate(String category, String adminIdentifier, StaticDataType staticDataType, Long contentId){
String redisKey=getRateLimitKey(category,adminIdentifier+staticDataType.name()+String.valueOf(contentId));
String requestCountStr=redisTemplate.opsForValue().get(redisKey);
int requestCount = requestCountStr == null ? 0 : Integer.parseInt(requestCountStr);
if(requestCount==0) {
redisTemplate.opsForValue().increment(redisKey);
redisTemplate.expire(redisKey, Duration.ofMinutes(ADMIN_ALARM_READ_EXPIRE_TIME));
}
}
/*public boolean AdminReadCheck(String adminIdentifier, StaticDataType staticDataType, Long contentId){
String redisKey=ADMIN_ALARM_KEY+adminIdentifier+staticDataType.name()+String.valueOf(contentId);
public boolean AdminReadCheck(String adminIdentifier, StaticDataType staticDataType, Long contentId){
String redisKey=ADMIN_ALARM_KEY+adminIdentifier+staticDataType.name()+contentId;
String requestCountStr=redisTemplate.opsForValue().get(redisKey);
int requestCount = requestCountStr == null ? 0 : Integer.parseInt(requestCountStr);
if(requestCount==0){
Expand All @@ -103,14 +83,14 @@ public void adminReadCheckUpdate(String category, String adminIdentifier, Static
return true;
}
public void adminReadCheckUpdate(String adminIdentifier, StaticDataType staticDataType, Long contentId){
String redisKey=ADMIN_ALARM_KEY+adminIdentifier+staticDataType.name()+String.valueOf(contentId);
String redisKey=ADMIN_ALARM_KEY+adminIdentifier+staticDataType.name()+contentId;
String requestCountStr=redisTemplate.opsForValue().get(redisKey);
int requestCount = requestCountStr == null ? 0 : Integer.parseInt(requestCountStr);
if(requestCount==0) {
redisTemplate.opsForValue().increment(redisKey);
redisTemplate.expire(redisKey, Duration.ofDays(30L));
}
}*/
}
/**
* 요청 제한을 적용할 Redis Key 생성
*
Expand Down
Loading
Loading