Skip to content
Open
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 @@ -2,10 +2,8 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class ApiGatewayApplication {

public static void main(String[] args) {
Expand Down
Binary file added build_output.txt
Binary file not shown.
10 changes: 5 additions & 5 deletions common-lib/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,11 @@
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.opencsv</groupId>-->
<!-- <artifactId>opencsv</artifactId>-->
<!-- <version>${opencsv.version}</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.9</version>
</dependency>

<!-- Test Dependency -->
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

import java.util.TimeZone;

@SpringBootApplication
@EnableEurekaServer
public class DiscoveryServerApplication {

public static void main(String[] args) {
Expand Down
13 changes: 6 additions & 7 deletions discovery-service/src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
# default port for eureka server
server.port=8761
# default port for consul server
server.port=8500
Comment thread
hoangtien2k3 marked this conversation as resolved.

spring.application.name=DISCOVERY-SERVICE

eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500

# Eureka server url
eureka.client.serviceUrl.defaultZone=${EUREKA_URI:http://localhost:8761/eureka}
spring.cloud.consul.discovery.register=true
spring.cloud.consul.discovery.health-check-interval=10s
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

import java.util.TimeZone;

@SpringBootApplication
@EnableEurekaClient
public class FavouriteServiceApplication {

public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,36 +1,69 @@
package com.hoangtien2k3qx1.favouriteservice.config;

import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.servers.Server;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

import java.util.List;

@Configuration
@EnableWebMvc
public class Swagger2Config {

@Value("${server.port:8080}")
private String serverPort;

@Value("${spring.application.name:favourite-service}")
private String applicationName;

@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2).select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.apiInfo(apiEndPointsInfo());
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(apiInfo())
.servers(getServers());
}

private ApiInfo apiEndPointsInfo() {
return new ApiInfoBuilder()
.title("FAVORITE-SERVICE API")
.description("API Documentation's FAVORITE-SERVICE")
.contact(new Contact("hoangtien2k3", "https://hoangtien2k3qx1.github.io/", "hoangtien2k3qx1@gmail.com"))
.license("Apache 2.0")
.licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
private Info apiInfo() {
return new Info()
.title("FAVORITE SERVICE API")
.description("""
## Favorite Service API Documentation

This service handles all favorite-related operations including:
- Managing user favorites
- Tracking favorite items
- Favorite lists and collections

### Features
- Add/remove items to favorites
- Organize favorites into lists
- Share favorite collections
- Integration with product and user services
""")
.version("1.0.0")
.build();
.contact(new Contact()
.name("hoangtien2k3")
.url("https://hoangtien2k3qx1.github.io/")
.email("hoangtien2k3qx1@gmail.com"))
.license(new License()
.name("Apache 2.0")
.url("http://www.apache.org/licenses/LICENSE-2.0.html"));
}

private List<Server> getServers() {
Server localServer = new Server()
.url("http://localhost:" + serverPort)
.description("Local development server");

Server productionServer = new Server()
.url("https://api.yourdomain.com/favourite-service")
.description("Production server");

return List.of(localServer, productionServer);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class InventoryServiceApplication {

public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.hoangtien2k3.inventoryservice.config;

import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.servers.Server;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.List;

@Configuration
public class OpenApiConfig {

@Value("${server.port:8080}")
private String serverPort;

@Value("${spring.application.name:inventory-service}")
private String applicationName;

@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(apiInfo())
.servers(getServers());
}

private Info apiInfo() {
return new Info()
.title("INVENTORY SERVICE API")
.description("""
## Inventory Service API Documentation

This service handles all inventory-related operations including:
- Product inventory management
- Stock level tracking
- Inventory updates and synchronization
- Product availability checks

### Features
- Real-time inventory tracking
- Multi-warehouse support
- Stock alerts and notifications
- Integration with order and product services
""")
.version("1.0.0")
.contact(new Contact()
.name("hoangtien2k3")
.url("https://hoangtien2k3qx1.github.io/")
.email("hoangtien2k3qx1@gmail.com"))
.license(new License()
.name("Apache 2.0")
.url("http://www.apache.org/licenses/LICENSE-2.0.html"));
}

private List<Server> getServers() {
Server localServer = new Server()
.url("http://localhost:" + serverPort)
.description("Local development server");

Server productionServer = new Server()
.url("https://api.yourdomain.com/inventory-service")
.description("Production server");

return List.of(localServer, productionServer);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.hoangtien2k3.media.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

@Configuration
public class Hoangtien2k3Config {

@Value("${app.public-url:http://localhost:8080}")
private String publicUrl;

public String publicUrl() {
return publicUrl;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,18 @@
import lombok.SneakyThrows;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import com.hoangtien2k3.media.config.Hoangtien2k3Config;
import org.springframework.web.util.UriComponentsBuilder;


@RequiredArgsConstructor
@Service
public class MediaServiceImpl implements MediaService {

private final MediaVmMapper mediaVmMapper;
private final MediaRepository mediaRepository;
private final FileSystemRepository fileSystemRepository;
private final Hoangtien2k3Config hoangtien2k3Config; // Added this

@Override
@SneakyThrows
Expand Down
14 changes: 14 additions & 0 deletions notification-service/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,15 @@
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>
Comment thread
hoangtien2k3 marked this conversation as resolved.
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
Expand Down Expand Up @@ -64,6 +73,11 @@
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.eclipse.angus</groupId>
<artifactId>angus-mail</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.hoangtien2k3.notificationservice.dto.EmailDetails;
import com.hoangtien2k3.notificationservice.service.EmailService;
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
Expand All @@ -14,8 +16,6 @@
import org.springframework.web.multipart.MultipartFile;
import reactor.core.publisher.Mono;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Arrays;
import java.util.Objects;
Expand Down Expand Up @@ -65,7 +65,7 @@ public Mono<String> sendMailWithAttachment(EmailDetails details) {
javaMailSender.send(mimeMessage);
return "Mail Sent Successfully";
})
.onErrorResume(MessagingException.class, ex -> {
.onErrorResume(ex -> {
log.error("Error while sending mail with attachment", ex);
return Mono.just("Error while Sending Mail with Attachment");
});
Expand Down Expand Up @@ -96,5 +96,4 @@ public Mono<String> sendMail(MultipartFile[] files, String to, String[] cc, Stri
return Mono.just("Error while Sending Email");
});
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class OrderServiceApplication {

public static void main(String[] args) {
Expand Down
Loading