sarvenyanik commited on
Commit
b6bfebe
·
2 Parent(s): 619f49ebdf41c0

Merged in release/dev (pull request #20)

Browse files
Files changed (33) hide show
  1. src/main/java/com/artandscience/webbff/webbff/api/model/response/GetHomepageResponse.java +4 -0
  2. src/main/java/com/artandscience/webbff/webbff/common/base/model/RequestHeader.java +3 -0
  3. src/main/java/com/artandscience/webbff/webbff/common/base/response/MessageBox.java +1 -0
  4. src/main/java/com/artandscience/webbff/webbff/common/base/response/enums/MessageBoxActionUiStyle.java +3 -1
  5. src/main/java/com/artandscience/webbff/webbff/common/base/response/enums/MessageType.java +1 -1
  6. src/main/java/com/artandscience/webbff/webbff/common/constants/HeaderConstant.java +3 -1
  7. src/main/java/com/artandscience/webbff/webbff/common/constants/MessageBoxActionUiConstants.java +2 -0
  8. src/main/java/com/artandscience/webbff/webbff/common/constants/MessageTypeConstants.java +1 -0
  9. src/main/java/com/artandscience/webbff/webbff/common/helper/DateUtil.java +31 -0
  10. src/main/java/com/artandscience/webbff/webbff/common/helper/RequestScopeHelper.java +33 -0
  11. src/main/java/com/artandscience/webbff/webbff/common/interceptor/TransactionFilter.java +6 -0
  12. src/main/java/com/artandscience/webbff/webbff/common/service/impl/MessageBoxServiceImpl.java +2 -0
  13. src/main/java/com/artandscience/webbff/webbff/dao/entity/ErrorMessageBox.java +4 -1
  14. src/main/java/com/artandscience/webbff/webbff/dao/entity/ErrorMessageBoxAction.java +2 -0
  15. src/main/java/com/artandscience/webbff/webbff/dao/entity/LoginCampaignRule.java +35 -0
  16. src/main/java/com/artandscience/webbff/webbff/dao/repository/LoginCampaignRuleRepository.java +18 -0
  17. src/main/java/com/artandscience/webbff/webbff/domain/assembler/CampaignMessageBoxesAssembler.java +69 -0
  18. src/main/java/com/artandscience/webbff/webbff/domain/assembler/LeftHeroAssembler.java +33 -7
  19. src/main/java/com/artandscience/webbff/webbff/domain/assembler/SpotlightAssembler.java +31 -10
  20. src/main/java/com/artandscience/webbff/webbff/domain/helper/SpotlightHelper.java +29 -0
  21. src/main/java/com/artandscience/webbff/webbff/domain/model/CampaignRuleDto.java +17 -0
  22. src/main/java/com/artandscience/webbff/webbff/domain/model/RuleDto.java +18 -0
  23. src/main/java/com/artandscience/webbff/webbff/domain/model/contentModel/SpotlightModel.java +2 -1
  24. src/main/java/com/artandscience/webbff/webbff/domain/model/heroModel/LeftHeroModel.java +2 -1
  25. src/main/java/com/artandscience/webbff/webbff/domain/model/heroModel/TitleModel.java +2 -1
  26. src/main/java/com/artandscience/webbff/webbff/domain/model/output/GetHomepageOutput.java +5 -0
  27. src/main/java/com/artandscience/webbff/webbff/domain/model/state/LeftHeroState.java +16 -0
  28. src/main/java/com/artandscience/webbff/webbff/domain/model/state/SpotlightState.java +18 -0
  29. src/main/java/com/artandscience/webbff/webbff/domain/service/LoginCampaignService.java +11 -0
  30. src/main/java/com/artandscience/webbff/webbff/domain/service/impl/HomepageServiceImpl.java +3 -0
  31. src/main/java/com/artandscience/webbff/webbff/domain/service/impl/LoginCampaignServiceImpl.java +43 -0
  32. src/main/java/com/artandscience/webbff/webbff/integration/interceptor/FeignClientInterceptor.java +0 -5
  33. src/main/resources/application.yml +1 -1
src/main/java/com/artandscience/webbff/webbff/api/model/response/GetHomepageResponse.java CHANGED
@@ -1,5 +1,6 @@
1
  package com.artandscience.webbff.webbff.api.model.response;
2
 
 
3
  import com.artandscience.webbff.webbff.domain.model.contentModel.ContentModel;
4
  import com.artandscience.webbff.webbff.domain.model.heroModel.HeroModel;
5
  import lombok.AllArgsConstructor;
@@ -7,6 +8,8 @@ import lombok.Builder;
7
  import lombok.Data;
8
  import lombok.NoArgsConstructor;
9
 
 
 
10
  @Data
11
  @Builder
12
  @AllArgsConstructor
@@ -14,4 +17,5 @@ import lombok.NoArgsConstructor;
14
  public class GetHomepageResponse {
15
  private HeroModel heroBanner;
16
  private ContentModel contentModel;
 
17
  }
 
1
  package com.artandscience.webbff.webbff.api.model.response;
2
 
3
+ import com.artandscience.webbff.webbff.common.base.response.MessageBox;
4
  import com.artandscience.webbff.webbff.domain.model.contentModel.ContentModel;
5
  import com.artandscience.webbff.webbff.domain.model.heroModel.HeroModel;
6
  import lombok.AllArgsConstructor;
 
8
  import lombok.Data;
9
  import lombok.NoArgsConstructor;
10
 
11
+ import java.util.List;
12
+
13
  @Data
14
  @Builder
15
  @AllArgsConstructor
 
17
  public class GetHomepageResponse {
18
  private HeroModel heroBanner;
19
  private ContentModel contentModel;
20
+ private List<MessageBox> campaignMessageBoxes;
21
  }
src/main/java/com/artandscience/webbff/webbff/common/base/model/RequestHeader.java CHANGED
@@ -20,5 +20,8 @@ public class RequestHeader {
20
  private String customerNumber;
21
  private String requestFlowId;
22
  private String deviceAppId;
 
 
 
23
 
24
  }
 
20
  private String customerNumber;
21
  private String requestFlowId;
22
  private String deviceAppId;
23
+ private String birthday;
24
+ private String isFirstLogin;
25
+ private String isOnline;
26
 
27
  }
src/main/java/com/artandscience/webbff/webbff/common/base/response/MessageBox.java CHANGED
@@ -21,6 +21,7 @@ public class MessageBox implements Serializable {
21
  private MessageType messageType;
22
  private String message;
23
  private String messageCode;
 
24
  private List<MessageBoxAction> messageBoxAction;
25
 
26
  }
 
21
  private MessageType messageType;
22
  private String message;
23
  private String messageCode;
24
+ private String imageUrl;
25
  private List<MessageBoxAction> messageBoxAction;
26
 
27
  }
src/main/java/com/artandscience/webbff/webbff/common/base/response/enums/MessageBoxActionUiStyle.java CHANGED
@@ -5,6 +5,8 @@ import java.io.Serializable;
5
  public enum MessageBoxActionUiStyle implements Serializable {
6
 
7
  BUTTON,
8
- TEXT
 
 
9
 
10
  }
 
5
  public enum MessageBoxActionUiStyle implements Serializable {
6
 
7
  BUTTON,
8
+ TEXT,
9
+ PRIMARY,
10
+ SECONDARY
11
 
12
  }
src/main/java/com/artandscience/webbff/webbff/common/base/response/enums/MessageType.java CHANGED
@@ -3,5 +3,5 @@ package com.artandscience.webbff.webbff.common.base.response.enums;
3
  import java.io.Serializable;
4
 
5
  public enum MessageType implements Serializable {
6
- INFORMATION,WARNING,ERROR,NONE
7
  }
 
3
  import java.io.Serializable;
4
 
5
  public enum MessageType implements Serializable {
6
+ INFORMATION,WARNING,ERROR,POPUP,NONE
7
  }
src/main/java/com/artandscience/webbff/webbff/common/constants/HeaderConstant.java CHANGED
@@ -12,6 +12,8 @@ public class HeaderConstant {
12
  public static String HEADER_CUSTOMER_NUMBER = "x-customer-number";
13
  public static String HEADER_DEVICE_APP_ID = "x-device-app-id";
14
  public static String HEADER_REQUEST_FLOW_ID = "x-request-flow-id";
15
-
 
 
16
 
17
  }
 
12
  public static String HEADER_CUSTOMER_NUMBER = "x-customer-number";
13
  public static String HEADER_DEVICE_APP_ID = "x-device-app-id";
14
  public static String HEADER_REQUEST_FLOW_ID = "x-request-flow-id";
15
+ public static String HEADER_BIRTHDATE = "x-customer-birthdate";
16
+ public static String HEADER_FIRST_LOGIN = "x-customer-first-login";
17
+ public static String HEADER_IS_ONLINE = "x-customer-is-online";
18
 
19
  }
src/main/java/com/artandscience/webbff/webbff/common/constants/MessageBoxActionUiConstants.java CHANGED
@@ -7,6 +7,8 @@ public class MessageBoxActionUiConstants {
7
 
8
  public static final String BUTTON = "B";
9
  public static final String TEXT = "T";
 
 
10
 
11
  private MessageBoxActionUiConstants() {
12
  log.error("MessageBoxActionUiConstants case create instance");
 
7
 
8
  public static final String BUTTON = "B";
9
  public static final String TEXT = "T";
10
+ public static final String PRIMARY = "P";
11
+ public static final String SECONDARY = "S";
12
 
13
  private MessageBoxActionUiConstants() {
14
  log.error("MessageBoxActionUiConstants case create instance");
src/main/java/com/artandscience/webbff/webbff/common/constants/MessageTypeConstants.java CHANGED
@@ -5,5 +5,6 @@ public abstract class MessageTypeConstants {
5
  public static final String INFORMATION = "I";
6
  public static final String WARNING = "W";
7
  public static final String ERROR = "E";
 
8
 
9
  }
 
5
  public static final String INFORMATION = "I";
6
  public static final String WARNING = "W";
7
  public static final String ERROR = "E";
8
+ public static final String POPUP = "P";
9
 
10
  }
src/main/java/com/artandscience/webbff/webbff/common/helper/DateUtil.java ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.artandscience.webbff.webbff.common.helper;
2
+
3
+ import java.time.LocalDate;
4
+ import java.time.MonthDay;
5
+ import java.time.format.DateTimeFormatter;
6
+
7
+ public abstract class DateUtil {
8
+
9
+ private static final DateTimeFormatter FORMATTER = DateTimeFormatter
10
+ .ofPattern("dd.MM.yyyy");
11
+
12
+
13
+ public static LocalDate stringToLocalDate(String date) {
14
+ if (date == null || date.isBlank()) {
15
+ return null;
16
+ }
17
+
18
+ return LocalDate.parse(date, FORMATTER);
19
+ }
20
+
21
+ public static boolean isTodayByDayAndMonth(String dateText) {
22
+ if (dateText == null || dateText.isBlank()) {
23
+ return false;
24
+ }
25
+
26
+ LocalDate date = LocalDate.parse(dateText, FORMATTER);
27
+
28
+ return MonthDay.from(date).equals(MonthDay.from(LocalDate.now()));
29
+ }
30
+
31
+ }
src/main/java/com/artandscience/webbff/webbff/common/helper/RequestScopeHelper.java ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.artandscience.webbff.webbff.common.helper;
2
+
3
+ import com.artandscience.webbff.webbff.common.base.model.RequestHeader;
4
+ import com.artandscience.webbff.webbff.common.scope.RequestHeaderScope;
5
+ import lombok.AllArgsConstructor;
6
+ import org.springframework.stereotype.Component;
7
+
8
+ import java.util.Optional;
9
+
10
+ @Component
11
+ @AllArgsConstructor
12
+ public class RequestScopeHelper {
13
+
14
+ public static String getCustomerNumber(RequestHeaderScope requestHeaderScope) {
15
+ RequestHeader requestHeader = requestHeaderScope.getRequestHeader();
16
+ return Optional.ofNullable(requestHeader.getCustomerNumber()).orElse("");
17
+ }
18
+
19
+ public static String getIsFirstLogin(RequestHeaderScope requestHeaderScope) {
20
+ RequestHeader requestHeader = requestHeaderScope.getRequestHeader();
21
+ return Optional.ofNullable(requestHeader.getIsFirstLogin()).orElse("0");
22
+ }
23
+
24
+ public static String getBirthday(RequestHeaderScope requestHeaderScope) {
25
+ RequestHeader requestHeader = requestHeaderScope.getRequestHeader();
26
+ return Optional.ofNullable(requestHeader.getBirthday()).orElse("");
27
+ }
28
+
29
+ public static String getIsOnline(RequestHeaderScope requestHeaderScope) {
30
+ RequestHeader requestHeader = requestHeaderScope.getRequestHeader();
31
+ return Optional.ofNullable(requestHeader.getIsOnline()).orElse("0");
32
+ }
33
+ }
src/main/java/com/artandscience/webbff/webbff/common/interceptor/TransactionFilter.java CHANGED
@@ -25,6 +25,9 @@ import static com.artandscience.webbff.webbff.common.constants.HeaderConstant.HE
25
  import static com.artandscience.webbff.webbff.common.constants.HeaderConstant.HEADER_CUSTOMER_NUMBER;
26
  import static com.artandscience.webbff.webbff.common.constants.HeaderConstant.HEADER_REQUEST_FLOW_ID;
27
  import static com.artandscience.webbff.webbff.common.constants.HeaderConstant.HEADER_DEVICE_APP_ID;
 
 
 
28
 
29
 
30
 
@@ -66,6 +69,9 @@ public class TransactionFilter extends OncePerRequestFilter {
66
  .customerNumber(request.getHeader(HEADER_CUSTOMER_NUMBER))
67
  .requestFlowId(request.getHeader(HEADER_REQUEST_FLOW_ID))
68
  .deviceAppId(request.getHeader(HEADER_DEVICE_APP_ID))
 
 
 
69
  .build();
70
  }
71
 
 
25
  import static com.artandscience.webbff.webbff.common.constants.HeaderConstant.HEADER_CUSTOMER_NUMBER;
26
  import static com.artandscience.webbff.webbff.common.constants.HeaderConstant.HEADER_REQUEST_FLOW_ID;
27
  import static com.artandscience.webbff.webbff.common.constants.HeaderConstant.HEADER_DEVICE_APP_ID;
28
+ import static com.artandscience.webbff.webbff.common.constants.HeaderConstant.HEADER_BIRTHDATE;
29
+ import static com.artandscience.webbff.webbff.common.constants.HeaderConstant.HEADER_FIRST_LOGIN;
30
+ import static com.artandscience.webbff.webbff.common.constants.HeaderConstant.HEADER_IS_ONLINE;
31
 
32
 
33
 
 
69
  .customerNumber(request.getHeader(HEADER_CUSTOMER_NUMBER))
70
  .requestFlowId(request.getHeader(HEADER_REQUEST_FLOW_ID))
71
  .deviceAppId(request.getHeader(HEADER_DEVICE_APP_ID))
72
+ .birthday(request.getHeader(HEADER_BIRTHDATE))
73
+ .isFirstLogin(request.getHeader(HEADER_FIRST_LOGIN))
74
+ .isOnline(request.getHeader(HEADER_IS_ONLINE))
75
  .build();
76
  }
77
 
src/main/java/com/artandscience/webbff/webbff/common/service/impl/MessageBoxServiceImpl.java CHANGED
@@ -41,6 +41,7 @@ public class MessageBoxServiceImpl implements MessageBoxService {
41
  .messageType(getMessageType(errorMessageBox.getMessageType()))
42
  .message(errorMessageBox.getMessage())
43
  .title(errorMessageBox.getTitle())
 
44
  .messageBoxAction(errorMessageBox.getErrorMessageBoxActions().stream()
45
  .map(ErrorMessageBoxAction::toMessageBoxAction)
46
  .sorted(Comparator.comparing(MessageBoxAction::getOrderNo)).toList())
@@ -85,6 +86,7 @@ public class MessageBoxServiceImpl implements MessageBoxService {
85
  case (MessageTypeConstants.WARNING) -> MessageType.WARNING;
86
  case (MessageTypeConstants.ERROR) -> MessageType.ERROR;
87
  case (MessageTypeConstants.INFORMATION) -> MessageType.INFORMATION;
 
88
  default -> MessageType.NONE;
89
  };
90
  }
 
41
  .messageType(getMessageType(errorMessageBox.getMessageType()))
42
  .message(errorMessageBox.getMessage())
43
  .title(errorMessageBox.getTitle())
44
+ .imageUrl(errorMessageBox.getImageUrl())
45
  .messageBoxAction(errorMessageBox.getErrorMessageBoxActions().stream()
46
  .map(ErrorMessageBoxAction::toMessageBoxAction)
47
  .sorted(Comparator.comparing(MessageBoxAction::getOrderNo)).toList())
 
86
  case (MessageTypeConstants.WARNING) -> MessageType.WARNING;
87
  case (MessageTypeConstants.ERROR) -> MessageType.ERROR;
88
  case (MessageTypeConstants.INFORMATION) -> MessageType.INFORMATION;
89
+ case (MessageTypeConstants.POPUP) -> MessageType.POPUP;
90
  default -> MessageType.NONE;
91
  };
92
  }
src/main/java/com/artandscience/webbff/webbff/dao/entity/ErrorMessageBox.java CHANGED
@@ -30,6 +30,9 @@ public class ErrorMessageBox {
30
  @Column(name = "message_code")
31
  private String messageCode;
32
 
 
 
 
33
  @OneToMany(
34
  cascade = CascadeType.ALL, // <-- çocukları da persist/merge et
35
  orphanRemoval = true, // <-- listeden çıkarılan çocuk için join kaydını siler
@@ -37,7 +40,7 @@ public class ErrorMessageBox {
37
  )
38
  @JoinTable(
39
  name = "error_message_box_error_message_box_actions",
40
- schema = "security",
41
  joinColumns = @JoinColumn(
42
  name = "error_message_box_key", // join tablodaki FK kolonu
43
  referencedColumnName = "\"key\"" // ebeveyn PK kolonu (quoted!)
 
30
  @Column(name = "message_code")
31
  private String messageCode;
32
 
33
+ @Column(name = "image_url")
34
+ private String imageUrl;
35
+
36
  @OneToMany(
37
  cascade = CascadeType.ALL, // <-- çocukları da persist/merge et
38
  orphanRemoval = true, // <-- listeden çıkarılan çocuk için join kaydını siler
 
40
  )
41
  @JoinTable(
42
  name = "error_message_box_error_message_box_actions",
43
+ schema = "artandscience",
44
  joinColumns = @JoinColumn(
45
  name = "error_message_box_key", // join tablodaki FK kolonu
46
  referencedColumnName = "\"key\"" // ebeveyn PK kolonu (quoted!)
src/main/java/com/artandscience/webbff/webbff/dao/entity/ErrorMessageBoxAction.java CHANGED
@@ -62,6 +62,8 @@ public class ErrorMessageBoxAction {
62
  return switch (messageBoxUiStyle) {
63
  case (MessageBoxActionUiConstants.BUTTON) -> MessageBoxActionUiStyle.BUTTON;
64
  case (MessageBoxActionUiConstants.TEXT) -> MessageBoxActionUiStyle.TEXT;
 
 
65
  default -> MessageBoxActionUiStyle.BUTTON;
66
  };
67
  }
 
62
  return switch (messageBoxUiStyle) {
63
  case (MessageBoxActionUiConstants.BUTTON) -> MessageBoxActionUiStyle.BUTTON;
64
  case (MessageBoxActionUiConstants.TEXT) -> MessageBoxActionUiStyle.TEXT;
65
+ case (MessageBoxActionUiConstants.PRIMARY) -> MessageBoxActionUiStyle.PRIMARY;
66
+ case (MessageBoxActionUiConstants.SECONDARY) -> MessageBoxActionUiStyle.SECONDARY;
67
  default -> MessageBoxActionUiStyle.BUTTON;
68
  };
69
  }
src/main/java/com/artandscience/webbff/webbff/dao/entity/LoginCampaignRule.java ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.artandscience.webbff.webbff.dao.entity;
2
+
3
+ import jakarta.persistence.*;
4
+ import lombok.AllArgsConstructor;
5
+ import lombok.Data;
6
+ import lombok.NoArgsConstructor;
7
+ import org.hibernate.annotations.GenericGenerator;
8
+
9
+ import java.time.LocalDate;
10
+
11
+ @AllArgsConstructor
12
+ @NoArgsConstructor
13
+ @Data
14
+ @Entity
15
+ @Table(name = "login_campaign_rule", schema = "artandscience")
16
+ public class LoginCampaignRule {
17
+
18
+ @Id
19
+ @GeneratedValue(generator = "UUID")
20
+ @GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
21
+ private String uid;
22
+
23
+ @Column(name = "campaign_key")
24
+ private String campaignKey;
25
+
26
+ @Column(name = "start_date")
27
+ private LocalDate startDate;
28
+
29
+ @Column(name = "end_date")
30
+ private LocalDate endDate;
31
+
32
+ @Column(name = "rule")
33
+ private String rule;
34
+
35
+ }
src/main/java/com/artandscience/webbff/webbff/dao/repository/LoginCampaignRuleRepository.java ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.artandscience.webbff.webbff.dao.repository;
2
+
3
+ import com.artandscience.webbff.webbff.dao.entity.LoginCampaignRule;
4
+ import org.springframework.data.jpa.repository.JpaRepository;
5
+ import org.springframework.data.jpa.repository.Query;
6
+ import org.springframework.data.repository.query.Param;
7
+ import org.springframework.stereotype.Repository;
8
+
9
+ import java.time.LocalDate;
10
+ import java.util.List;
11
+
12
+ @Repository
13
+ public interface LoginCampaignRuleRepository extends JpaRepository<LoginCampaignRule,String> {
14
+
15
+ @Query("select r from LoginCampaignRule r where :now between r.startDate and r.endDate")
16
+ List<LoginCampaignRule> getLoginCampaignRule(@Param("now") LocalDate now);
17
+
18
+ }
src/main/java/com/artandscience/webbff/webbff/domain/assembler/CampaignMessageBoxesAssembler.java ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.artandscience.webbff.webbff.domain.assembler;
2
+
3
+ import com.artandscience.webbff.webbff.common.base.model.MessageModel;
4
+ import com.artandscience.webbff.webbff.common.base.response.MessageBox;
5
+ import com.artandscience.webbff.webbff.common.helper.DateUtil;
6
+ import com.artandscience.webbff.webbff.common.helper.RequestScopeHelper;
7
+ import com.artandscience.webbff.webbff.common.scope.RequestHeaderScope;
8
+ import com.artandscience.webbff.webbff.common.service.ExternalAttributeService;
9
+ import com.artandscience.webbff.webbff.domain.service.LoginCampaignService;
10
+ import lombok.RequiredArgsConstructor;
11
+ import lombok.extern.slf4j.Slf4j;
12
+ import org.springframework.stereotype.Component;
13
+
14
+ import java.util.ArrayList;
15
+ import java.util.List;
16
+ import java.util.Objects;
17
+
18
+ @Component
19
+ @RequiredArgsConstructor
20
+ @Slf4j
21
+ public class CampaignMessageBoxesAssembler {
22
+
23
+ private final ExternalAttributeService externalAttributeService;
24
+ private final LoginCampaignService loginCampaignService;
25
+ private final RequestHeaderScope requestHeaderScope;
26
+
27
+ public List<MessageBox> assemble() {
28
+ List<MessageBox> campaignMessageBoxes = new ArrayList<>();
29
+ if (RequestScopeHelper.getIsOnline(requestHeaderScope).equals("1")) {
30
+ loginCampaignService.getCampaignRules().forEach(campaignRuleDto -> {
31
+ if (campaignRuleDto.getRuleDto().getIsBirthday()) {
32
+ var birthdayCampaign = getBirthdayCampaignMessage(campaignRuleDto.getCampaignKey());
33
+ if (!Objects.isNull(birthdayCampaign))
34
+ campaignMessageBoxes.add(birthdayCampaign);
35
+ } else if (campaignRuleDto.getRuleDto().getFirstLogin()) {
36
+ var firstLoginCampaign = getFirstLoginCampaignMessage(campaignRuleDto.getCampaignKey());
37
+ if (!Objects.isNull(firstLoginCampaign))
38
+ campaignMessageBoxes.add(firstLoginCampaign);
39
+ } else {
40
+ var otherCampaign = getCampaignMessageBox(campaignRuleDto.getCampaignKey());
41
+ if (!Objects.isNull(otherCampaign))
42
+ campaignMessageBoxes.add(otherCampaign);
43
+ }
44
+ });
45
+ }
46
+ return campaignMessageBoxes;
47
+ }
48
+
49
+ private MessageBox getBirthdayCampaignMessage(String campaignKey) {
50
+ if (DateUtil.isTodayByDayAndMonth(RequestScopeHelper.getBirthday(requestHeaderScope))) {
51
+ return getCampaignMessageBox(campaignKey);
52
+ }
53
+ return null;
54
+ }
55
+
56
+ private MessageBox getFirstLoginCampaignMessage(String campaignKey) {
57
+ if (RequestScopeHelper.getIsFirstLogin(requestHeaderScope).equals("1")) {
58
+ getCampaignMessageBox(campaignKey);
59
+ }
60
+ return null;
61
+ }
62
+
63
+ private MessageBox getCampaignMessageBox(String campaignKey) {
64
+ return externalAttributeService.getMessageBox(MessageModel.builder()
65
+ .code(campaignKey)
66
+ .build());
67
+ }
68
+
69
+ }
src/main/java/com/artandscience/webbff/webbff/domain/assembler/LeftHeroAssembler.java CHANGED
@@ -1,12 +1,17 @@
1
  package com.artandscience.webbff.webbff.domain.assembler;
2
 
 
3
  import com.artandscience.webbff.webbff.common.service.ExternalAttributeService;
 
4
  import com.artandscience.webbff.webbff.domain.model.heroModel.LeftHeroModel;
5
  import com.artandscience.webbff.webbff.domain.model.heroModel.TitleModel;
 
6
  import lombok.RequiredArgsConstructor;
7
  import lombok.extern.slf4j.Slf4j;
8
  import org.springframework.stereotype.Component;
9
 
 
 
10
  import static com.artandscience.webbff.webbff.domain.constants.HomepageConstants.LeftHeroButtonsKey;
11
  import static com.artandscience.webbff.webbff.domain.constants.HomepageConstants.LeftTitleKey;
12
  import static com.artandscience.webbff.webbff.domain.constants.HomepageConstants.RightTitleKey;
@@ -18,15 +23,36 @@ import static com.artandscience.webbff.webbff.domain.constants.HomepageConstants
18
  public class LeftHeroAssembler {
19
 
20
  private final ExternalAttributeService externalAttributeService;
 
 
 
21
 
22
  public LeftHeroModel assemble() {
23
- return LeftHeroModel.builder()
24
- .title(TitleModel.builder()
25
- .leftTitle(externalAttributeService.getResource(LeftTitleKey))
26
- .rightTitle(externalAttributeService.getResource(RightTitleKey)).build())
27
- .description(externalAttributeService.getResource(DescriptionKey))
28
- .buttons(externalAttributeService.getButtonModelList(LeftHeroButtonsKey)
29
- .getButtonModels()).build();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  }
31
 
32
  }
 
1
  package com.artandscience.webbff.webbff.domain.assembler;
2
 
3
+ import com.artandscience.webbff.webbff.common.scope.RequestHeaderScope;
4
  import com.artandscience.webbff.webbff.common.service.ExternalAttributeService;
5
+ import com.artandscience.webbff.webbff.common.service.StateManagementService;
6
  import com.artandscience.webbff.webbff.domain.model.heroModel.LeftHeroModel;
7
  import com.artandscience.webbff.webbff.domain.model.heroModel.TitleModel;
8
+ import com.artandscience.webbff.webbff.domain.model.state.LeftHeroState;
9
  import lombok.RequiredArgsConstructor;
10
  import lombok.extern.slf4j.Slf4j;
11
  import org.springframework.stereotype.Component;
12
 
13
+ import java.util.Objects;
14
+
15
  import static com.artandscience.webbff.webbff.domain.constants.HomepageConstants.LeftHeroButtonsKey;
16
  import static com.artandscience.webbff.webbff.domain.constants.HomepageConstants.LeftTitleKey;
17
  import static com.artandscience.webbff.webbff.domain.constants.HomepageConstants.RightTitleKey;
 
23
  public class LeftHeroAssembler {
24
 
25
  private final ExternalAttributeService externalAttributeService;
26
+ private final StateManagementService stateManagementService;
27
+ private final RequestHeaderScope requestHeaderScope;
28
+ private static final String LEFT_HERO_MODEL = "left-hero-model.";
29
 
30
  public LeftHeroModel assemble() {
31
+
32
+ var state = stateManagementService.getState(LEFT_HERO_MODEL +
33
+ requestHeaderScope.getRequestHeader().getLanguage(), LeftHeroState.class,true);
34
+
35
+ LeftHeroModel leftHeroModel = null;
36
+
37
+ if (Objects.isNull(state) || Objects.isNull(state.getLeftHeroModel())) {
38
+
39
+ leftHeroModel = LeftHeroModel.builder()
40
+ .title(TitleModel.builder()
41
+ .leftTitle(externalAttributeService.getResource(LeftTitleKey))
42
+ .rightTitle(externalAttributeService.getResource(RightTitleKey)).build())
43
+ .description(externalAttributeService.getResource(DescriptionKey))
44
+ .buttons(externalAttributeService.getButtonModelList(LeftHeroButtonsKey)
45
+ .getButtonModels()).build();
46
+
47
+ state = LeftHeroState.builder()
48
+ .leftHeroModel(leftHeroModel)
49
+ .build();
50
+ stateManagementService.setState(LEFT_HERO_MODEL +
51
+ requestHeaderScope.getRequestHeader().getLanguage(), null, state);
52
+ } else {
53
+ leftHeroModel = state.getLeftHeroModel();
54
+ }
55
+ return leftHeroModel;
56
  }
57
 
58
  }
src/main/java/com/artandscience/webbff/webbff/domain/assembler/SpotlightAssembler.java CHANGED
@@ -1,8 +1,12 @@
1
  package com.artandscience.webbff.webbff.domain.assembler;
2
 
 
3
  import com.artandscience.webbff.webbff.common.service.ExternalAttributeService;
 
 
4
  import com.artandscience.webbff.webbff.domain.model.SpotlightDto;
5
  import com.artandscience.webbff.webbff.domain.model.contentModel.SpotlightModel;
 
6
  import com.fasterxml.jackson.core.JsonProcessingException;
7
  import com.fasterxml.jackson.databind.ObjectMapper;
8
  import lombok.RequiredArgsConstructor;
@@ -11,7 +15,7 @@ import org.springframework.stereotype.Component;
11
 
12
  import java.util.ArrayList;
13
  import java.util.List;
14
- import java.util.UUID;
15
 
16
  import static com.artandscience.webbff.webbff.domain.constants.HomepageConstants.SpotlightsKey;
17
 
@@ -22,18 +26,35 @@ public class SpotlightAssembler {
22
 
23
  private final ExternalAttributeService externalAttributeService;
24
  private final ObjectMapper objectMapper;
 
 
 
25
 
26
  public List<SpotlightModel> assemble() {
27
  try {
28
- return objectMapper.readValue(externalAttributeService.getConfigModel(SpotlightsKey),
29
- SpotlightDto.class).getSpotlight().stream()
30
- .peek(spotlightModel -> {
31
- spotlightModel.setModelUid(UUID.randomUUID().toString());
32
- spotlightModel.setTitle(externalAttributeService.getResource(spotlightModel.getTitle()));
33
- spotlightModel.setDesc(externalAttributeService.getResource(spotlightModel.getDesc()));
34
- spotlightModel.setButtonModel(externalAttributeService
35
- .getButtonModelList(spotlightModel.getButtonModel().getText()).getButtonModels().get(0));
36
- }).toList();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
  } catch (JsonProcessingException e) {
39
  log.error("An error is occurrence: Error: {}",e.getMessage());
 
1
  package com.artandscience.webbff.webbff.domain.assembler;
2
 
3
+ import com.artandscience.webbff.webbff.common.scope.RequestHeaderScope;
4
  import com.artandscience.webbff.webbff.common.service.ExternalAttributeService;
5
+ import com.artandscience.webbff.webbff.common.service.StateManagementService;
6
+ import com.artandscience.webbff.webbff.domain.helper.SpotlightHelper;
7
  import com.artandscience.webbff.webbff.domain.model.SpotlightDto;
8
  import com.artandscience.webbff.webbff.domain.model.contentModel.SpotlightModel;
9
+ import com.artandscience.webbff.webbff.domain.model.state.SpotlightState;
10
  import com.fasterxml.jackson.core.JsonProcessingException;
11
  import com.fasterxml.jackson.databind.ObjectMapper;
12
  import lombok.RequiredArgsConstructor;
 
15
 
16
  import java.util.ArrayList;
17
  import java.util.List;
18
+ import java.util.Objects;
19
 
20
  import static com.artandscience.webbff.webbff.domain.constants.HomepageConstants.SpotlightsKey;
21
 
 
26
 
27
  private final ExternalAttributeService externalAttributeService;
28
  private final ObjectMapper objectMapper;
29
+ private final StateManagementService stateManagementService;
30
+ private final RequestHeaderScope requestHeaderScope;
31
+ private static final String SPOTLIGHT_STATE_KEY = "spotlight-model.";
32
 
33
  public List<SpotlightModel> assemble() {
34
  try {
35
+ SpotlightState spotlightState = stateManagementService.getState(SPOTLIGHT_STATE_KEY +
36
+ requestHeaderScope.getRequestHeader().getLanguage(), SpotlightState.class, true);
37
+ List<SpotlightModel> spotlightModels = null;
38
+
39
+ if (Objects.isNull(spotlightState) || Objects.isNull(spotlightState.getSpotlightModels())) {
40
+ spotlightModels = objectMapper.readValue(externalAttributeService.getConfigModel(SpotlightsKey),
41
+ SpotlightDto.class).getSpotlight().stream()
42
+ .map(spotlightModel ->
43
+ SpotlightHelper.resolveSpotlightModel(spotlightModel,externalAttributeService)
44
+ )
45
+ .toList();
46
+
47
+ spotlightState = SpotlightState.builder()
48
+ .spotlightModels(spotlightModels)
49
+ .build();
50
+
51
+ stateManagementService.setState(SPOTLIGHT_STATE_KEY +
52
+ requestHeaderScope.getRequestHeader().getLanguage(),
53
+ null,spotlightState);
54
+ } else {
55
+ spotlightModels = spotlightState.getSpotlightModels().stream().map(SpotlightHelper::copyWithNewUid).toList();
56
+ }
57
+ return spotlightModels;
58
 
59
  } catch (JsonProcessingException e) {
60
  log.error("An error is occurrence: Error: {}",e.getMessage());
src/main/java/com/artandscience/webbff/webbff/domain/helper/SpotlightHelper.java ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.artandscience.webbff.webbff.domain.helper;
2
+
3
+ import com.artandscience.webbff.webbff.common.service.ExternalAttributeService;
4
+ import com.artandscience.webbff.webbff.domain.model.contentModel.SpotlightModel;
5
+
6
+ import java.util.UUID;
7
+
8
+ public abstract class SpotlightHelper {
9
+
10
+ public static SpotlightModel resolveSpotlightModel(SpotlightModel spotlightModel, ExternalAttributeService externalAttributeService) {
11
+ return SpotlightModel.builder()
12
+ .modelUid(UUID.randomUUID().toString())
13
+ .title(externalAttributeService.getResource(spotlightModel.getTitle()))
14
+ .desc(externalAttributeService.getResource(spotlightModel.getDesc()))
15
+ .buttonModel(externalAttributeService
16
+ .getButtonModelList(spotlightModel.getButtonModel().getText()).getButtonModels().get(0))
17
+ .build();
18
+ }
19
+
20
+ public static SpotlightModel copyWithNewUid(SpotlightModel source) {
21
+ return SpotlightModel.builder()
22
+ .modelUid(UUID.randomUUID().toString())
23
+ .title(source.getTitle())
24
+ .desc(source.getDesc())
25
+ .buttonModel(source.getButtonModel())
26
+ .build();
27
+ }
28
+
29
+ }
src/main/java/com/artandscience/webbff/webbff/domain/model/CampaignRuleDto.java ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.artandscience.webbff.webbff.domain.model;
2
+
3
+ import lombok.AllArgsConstructor;
4
+ import lombok.Builder;
5
+ import lombok.Data;
6
+ import lombok.NoArgsConstructor;
7
+
8
+ @Data
9
+ @AllArgsConstructor
10
+ @NoArgsConstructor
11
+ @Builder
12
+ public class CampaignRuleDto {
13
+
14
+ private String campaignKey;
15
+ private RuleDto ruleDto;
16
+
17
+ }
src/main/java/com/artandscience/webbff/webbff/domain/model/RuleDto.java ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.artandscience.webbff.webbff.domain.model;
2
+
3
+ import lombok.AllArgsConstructor;
4
+ import lombok.Builder;
5
+ import lombok.Data;
6
+ import lombok.NoArgsConstructor;
7
+
8
+ @Data
9
+ @AllArgsConstructor
10
+ @NoArgsConstructor
11
+ @Builder
12
+ public class RuleDto {
13
+
14
+ private Boolean firstLogin;
15
+ private Boolean isBirthday;
16
+ private String userStatus;
17
+
18
+ }
src/main/java/com/artandscience/webbff/webbff/domain/model/contentModel/SpotlightModel.java CHANGED
@@ -1,5 +1,6 @@
1
  package com.artandscience.webbff.webbff.domain.model.contentModel;
2
 
 
3
  import com.artandscience.webbff.webbff.domain.model.buttonModel.ButtonModel;
4
  import lombok.AllArgsConstructor;
5
  import lombok.Builder;
@@ -10,7 +11,7 @@ import lombok.NoArgsConstructor;
10
  @AllArgsConstructor
11
  @NoArgsConstructor
12
  @Builder
13
- public class SpotlightModel {
14
  private String modelUid;
15
  private String title;
16
  private String desc;
 
1
  package com.artandscience.webbff.webbff.domain.model.contentModel;
2
 
3
+ import com.artandscience.webbff.webbff.common.base.model.BaseModel;
4
  import com.artandscience.webbff.webbff.domain.model.buttonModel.ButtonModel;
5
  import lombok.AllArgsConstructor;
6
  import lombok.Builder;
 
11
  @AllArgsConstructor
12
  @NoArgsConstructor
13
  @Builder
14
+ public class SpotlightModel extends BaseModel {
15
  private String modelUid;
16
  private String title;
17
  private String desc;
src/main/java/com/artandscience/webbff/webbff/domain/model/heroModel/LeftHeroModel.java CHANGED
@@ -1,5 +1,6 @@
1
  package com.artandscience.webbff.webbff.domain.model.heroModel;
2
 
 
3
  import com.artandscience.webbff.webbff.domain.model.buttonModel.ButtonModel;
4
  import lombok.AllArgsConstructor;
5
  import lombok.Builder;
@@ -12,7 +13,7 @@ import java.util.List;
12
  @Builder
13
  @AllArgsConstructor
14
  @NoArgsConstructor
15
- public class LeftHeroModel {
16
  private TitleModel title;
17
  private String description;
18
  private List<ButtonModel> buttons;
 
1
  package com.artandscience.webbff.webbff.domain.model.heroModel;
2
 
3
+ import com.artandscience.webbff.webbff.common.base.model.BaseModel;
4
  import com.artandscience.webbff.webbff.domain.model.buttonModel.ButtonModel;
5
  import lombok.AllArgsConstructor;
6
  import lombok.Builder;
 
13
  @Builder
14
  @AllArgsConstructor
15
  @NoArgsConstructor
16
+ public class LeftHeroModel extends BaseModel {
17
  private TitleModel title;
18
  private String description;
19
  private List<ButtonModel> buttons;
src/main/java/com/artandscience/webbff/webbff/domain/model/heroModel/TitleModel.java CHANGED
@@ -1,5 +1,6 @@
1
  package com.artandscience.webbff.webbff.domain.model.heroModel;
2
 
 
3
  import lombok.AllArgsConstructor;
4
  import lombok.Builder;
5
  import lombok.Data;
@@ -9,7 +10,7 @@ import lombok.NoArgsConstructor;
9
  @Builder
10
  @AllArgsConstructor
11
  @NoArgsConstructor
12
- public class TitleModel {
13
  private String leftTitle;
14
  private String rightTitle;
15
  }
 
1
  package com.artandscience.webbff.webbff.domain.model.heroModel;
2
 
3
+ import com.artandscience.webbff.webbff.common.base.model.BaseModel;
4
  import lombok.AllArgsConstructor;
5
  import lombok.Builder;
6
  import lombok.Data;
 
10
  @Builder
11
  @AllArgsConstructor
12
  @NoArgsConstructor
13
+ public class TitleModel extends BaseModel {
14
  private String leftTitle;
15
  private String rightTitle;
16
  }
src/main/java/com/artandscience/webbff/webbff/domain/model/output/GetHomepageOutput.java CHANGED
@@ -1,6 +1,7 @@
1
  package com.artandscience.webbff.webbff.domain.model.output;
2
 
3
  import com.artandscience.webbff.webbff.api.model.response.GetHomepageResponse;
 
4
  import com.artandscience.webbff.webbff.domain.model.contentModel.ContentModel;
5
  import com.artandscience.webbff.webbff.domain.model.heroModel.HeroModel;
6
  import lombok.AllArgsConstructor;
@@ -8,6 +9,8 @@ import lombok.Builder;
8
  import lombok.Data;
9
  import lombok.NoArgsConstructor;
10
 
 
 
11
  @Data
12
  @Builder
13
  @AllArgsConstructor
@@ -15,11 +18,13 @@ import lombok.NoArgsConstructor;
15
  public class GetHomepageOutput {
16
  private HeroModel heroBanner;
17
  private ContentModel contentModel;
 
18
 
19
  public GetHomepageResponse toResponse() {
20
  return GetHomepageResponse.builder()
21
  .heroBanner(heroBanner)
22
  .contentModel(contentModel)
 
23
  .build();
24
  }
25
 
 
1
  package com.artandscience.webbff.webbff.domain.model.output;
2
 
3
  import com.artandscience.webbff.webbff.api.model.response.GetHomepageResponse;
4
+ import com.artandscience.webbff.webbff.common.base.response.MessageBox;
5
  import com.artandscience.webbff.webbff.domain.model.contentModel.ContentModel;
6
  import com.artandscience.webbff.webbff.domain.model.heroModel.HeroModel;
7
  import lombok.AllArgsConstructor;
 
9
  import lombok.Data;
10
  import lombok.NoArgsConstructor;
11
 
12
+ import java.util.List;
13
+
14
  @Data
15
  @Builder
16
  @AllArgsConstructor
 
18
  public class GetHomepageOutput {
19
  private HeroModel heroBanner;
20
  private ContentModel contentModel;
21
+ private List<MessageBox> campaignMessageBoxes;
22
 
23
  public GetHomepageResponse toResponse() {
24
  return GetHomepageResponse.builder()
25
  .heroBanner(heroBanner)
26
  .contentModel(contentModel)
27
+ .campaignMessageBoxes(campaignMessageBoxes)
28
  .build();
29
  }
30
 
src/main/java/com/artandscience/webbff/webbff/domain/model/state/LeftHeroState.java ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.artandscience.webbff.webbff.domain.model.state;
2
+
3
+ import com.artandscience.webbff.webbff.common.base.model.BaseModel;
4
+ import com.artandscience.webbff.webbff.domain.model.heroModel.LeftHeroModel;
5
+ import lombok.AllArgsConstructor;
6
+ import lombok.Builder;
7
+ import lombok.Data;
8
+ import lombok.NoArgsConstructor;
9
+
10
+ @Data
11
+ @AllArgsConstructor
12
+ @NoArgsConstructor
13
+ @Builder
14
+ public class LeftHeroState extends BaseModel {
15
+ private LeftHeroModel leftHeroModel;
16
+ }
src/main/java/com/artandscience/webbff/webbff/domain/model/state/SpotlightState.java ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.artandscience.webbff.webbff.domain.model.state;
2
+
3
+ import com.artandscience.webbff.webbff.common.base.model.BaseModel;
4
+ import com.artandscience.webbff.webbff.domain.model.contentModel.SpotlightModel;
5
+ import lombok.AllArgsConstructor;
6
+ import lombok.Builder;
7
+ import lombok.Data;
8
+ import lombok.NoArgsConstructor;
9
+
10
+ import java.util.List;
11
+
12
+ @Data
13
+ @Builder
14
+ @AllArgsConstructor
15
+ @NoArgsConstructor
16
+ public class SpotlightState extends BaseModel {
17
+ private List<SpotlightModel> spotlightModels;
18
+ }
src/main/java/com/artandscience/webbff/webbff/domain/service/LoginCampaignService.java ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.artandscience.webbff.webbff.domain.service;
2
+
3
+ import com.artandscience.webbff.webbff.domain.model.CampaignRuleDto;
4
+
5
+ import java.util.List;
6
+
7
+ public interface LoginCampaignService {
8
+
9
+ List<CampaignRuleDto> getCampaignRules();
10
+
11
+ }
src/main/java/com/artandscience/webbff/webbff/domain/service/impl/HomepageServiceImpl.java CHANGED
@@ -1,5 +1,6 @@
1
  package com.artandscience.webbff.webbff.domain.service.impl;
2
 
 
3
  import com.artandscience.webbff.webbff.domain.assembler.ContentModelAssemble;
4
  import com.artandscience.webbff.webbff.domain.assembler.LeftHeroAssembler;
5
  import com.artandscience.webbff.webbff.domain.assembler.RightHeroAssembler;
@@ -18,6 +19,7 @@ public class HomepageServiceImpl implements HomepageService {
18
  private final LeftHeroAssembler leftHeroAssembler;
19
  private final RightHeroAssembler rightHeroAssembler;
20
  private final ContentModelAssemble contentModelAssemble;
 
21
 
22
  @Override
23
  public GetHomepageOutput getHomepage() {
@@ -28,6 +30,7 @@ public class HomepageServiceImpl implements HomepageService {
28
  .rightHero(rightHeroAssembler.assemble())
29
  .build())
30
  .contentModel(contentModelAssemble.assemble())
 
31
  .build();
32
  }
33
 
 
1
  package com.artandscience.webbff.webbff.domain.service.impl;
2
 
3
+ import com.artandscience.webbff.webbff.domain.assembler.CampaignMessageBoxesAssembler;
4
  import com.artandscience.webbff.webbff.domain.assembler.ContentModelAssemble;
5
  import com.artandscience.webbff.webbff.domain.assembler.LeftHeroAssembler;
6
  import com.artandscience.webbff.webbff.domain.assembler.RightHeroAssembler;
 
19
  private final LeftHeroAssembler leftHeroAssembler;
20
  private final RightHeroAssembler rightHeroAssembler;
21
  private final ContentModelAssemble contentModelAssemble;
22
+ private final CampaignMessageBoxesAssembler campaignMessagesAssembler;
23
 
24
  @Override
25
  public GetHomepageOutput getHomepage() {
 
30
  .rightHero(rightHeroAssembler.assemble())
31
  .build())
32
  .contentModel(contentModelAssemble.assemble())
33
+ .campaignMessageBoxes(campaignMessagesAssembler.assemble())
34
  .build();
35
  }
36
 
src/main/java/com/artandscience/webbff/webbff/domain/service/impl/LoginCampaignServiceImpl.java ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.artandscience.webbff.webbff.domain.service.impl;
2
+
3
+ import com.artandscience.webbff.webbff.common.helper.JsonMapper;
4
+ import com.artandscience.webbff.webbff.dao.entity.LoginCampaignRule;
5
+ import com.artandscience.webbff.webbff.dao.repository.LoginCampaignRuleRepository;
6
+ import com.artandscience.webbff.webbff.domain.model.CampaignRuleDto;
7
+ import com.artandscience.webbff.webbff.domain.model.RuleDto;
8
+ import com.artandscience.webbff.webbff.domain.service.LoginCampaignService;
9
+ import lombok.RequiredArgsConstructor;
10
+ import org.springframework.stereotype.Service;
11
+ import org.springframework.util.StringUtils;
12
+
13
+ import java.time.LocalDate;
14
+ import java.util.List;
15
+ import java.util.stream.Collectors;
16
+
17
+ @Service
18
+ @RequiredArgsConstructor
19
+ public class LoginCampaignServiceImpl implements LoginCampaignService {
20
+
21
+ private final LoginCampaignRuleRepository loginCampaignRuleRepository;
22
+
23
+ @Override
24
+ public List<CampaignRuleDto> getCampaignRules() {
25
+ var entityList = loginCampaignRuleRepository.getLoginCampaignRule(LocalDate.now());
26
+ return entityList.stream()
27
+ .map(this::getDto)
28
+ .collect(Collectors.toList());
29
+ }
30
+
31
+ private CampaignRuleDto getDto(LoginCampaignRule loginCampaignRule) {
32
+ String jsonBody = loginCampaignRule.getRule();
33
+ RuleDto dto = new RuleDto();
34
+ if (StringUtils.hasText(jsonBody)) {
35
+ dto = JsonMapper.convertToData(jsonBody, RuleDto.class);
36
+ }
37
+ return CampaignRuleDto.builder()
38
+ .campaignKey(loginCampaignRule.getCampaignKey())
39
+ .ruleDto(dto)
40
+ .build();
41
+ }
42
+
43
+ }
src/main/java/com/artandscience/webbff/webbff/integration/interceptor/FeignClientInterceptor.java CHANGED
@@ -25,11 +25,6 @@ public class FeignClientInterceptor extends Client.Default {
25
  public Response execute(Request request, Request.Options options) throws IOException {
26
  Response response = super.execute(request, options);
27
 
28
- log.error("Feign raw response status: {}", response.status());
29
- log.error("Feign raw response reason: {}", response.reason());
30
- log.error("Feign raw response headers: {}", response.headers());
31
- log.error("Feign raw response body null: {}", response.body() == null);
32
-
33
  if (response.body() == null) {
34
  log.warn("Feign response body is null. status: {}, reason: {}, url: {}, headers: {}",
35
  response.status(),
 
25
  public Response execute(Request request, Request.Options options) throws IOException {
26
  Response response = super.execute(request, options);
27
 
 
 
 
 
 
28
  if (response.body() == null) {
29
  log.warn("Feign response body is null. status: {}, reason: {}, url: {}, headers: {}",
30
  response.status(),
src/main/resources/application.yml CHANGED
@@ -18,7 +18,7 @@ spring:
18
  ddl-auto: update
19
  properties:
20
  hibernate:
21
- default_schema: security
22
  show-sql: true
23
  data:
24
  redis:
 
18
  ddl-auto: update
19
  properties:
20
  hibernate:
21
+ default_schema: artandscience
22
  show-sql: true
23
  data:
24
  redis: