Skip to content

Commit 7abe5de

Browse files
committed
FullStack Ecommerce Project
1 parent d6c44d1 commit 7abe5de

File tree

23 files changed

+1124
-11
lines changed

23 files changed

+1124
-11
lines changed

Part-9.SpringBoot-React-Projects/Project-2.SpringBoot-React-ShoppingMall/fullstack/backend/pom.xml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,34 @@
148148
<artifactId>javax.inject</artifactId>
149149
<version>1</version>
150150
</dependency>
151+
152+
<dependency>
153+
<groupId>com.zaxxer</groupId>
154+
<artifactId>HikariCP</artifactId>
155+
</dependency>
156+
<dependency>
157+
<groupId>com.thetransactioncompany</groupId>
158+
<artifactId>cors-filter</artifactId>
159+
<version>2.5</version>
160+
</dependency>
161+
<dependency>
162+
<groupId> org.apache.cassandra</groupId>
163+
<artifactId>cassandra-all</artifactId>
164+
<version>0.8.1</version>
165+
166+
<exclusions>
167+
<exclusion>
168+
<groupId>org.slf4j</groupId>
169+
<artifactId>slf4j-log4j12</artifactId>
170+
</exclusion>
171+
<exclusion>
172+
<groupId>log4j</groupId>
173+
<artifactId>log4j</artifactId>
174+
</exclusion>
175+
</exclusions>
176+
177+
</dependency>
178+
151179
<!---->
152180

153181

@@ -156,6 +184,7 @@
156184

157185

158186

187+
159188
<dependency>
160189
<groupId>org.springframework.boot</groupId>
161190
<artifactId>spring-boot-starter-test</artifactId>

Part-9.SpringBoot-React-Projects/Project-2.SpringBoot-React-ShoppingMall/fullstack/backend/src/main/java/com/urunov/ShoppingApplication.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import com.fasterxml.jackson.databind.DeserializationContext;
55
import com.fasterxml.jackson.databind.JsonDeserializer;
66
import com.fasterxml.jackson.databind.ObjectMapper;
7-
import com.urunov.configure.JpaConfig;
7+
//import com.urunov.configure.JpaConfig;
88
import org.springframework.boot.SpringApplication;
99
import org.springframework.boot.autoconfigure.SpringBootApplication;
1010
import org.springframework.context.annotation.Bean;
@@ -27,10 +27,13 @@
2727
"com.urunov.service",
2828
"com.urunov.schedule"
2929
})
30+
3031
public class ShoppingApplication {
3132

3233
public static void main(String[] args) {
33-
SpringApplication.run(new Class<?>[]{ShoppingApplication.class, JpaConfig.class}, args);
34+
// SpringApplication.run(new Class<?>[]{ShoppingApplication.class, JpaConfig.class}, args);
35+
36+
SpringApplication.run(ShoppingApplication.class);
3437
}
3538
@Bean
3639
public JsonDeserializer jsonDeserializer()

Part-9.SpringBoot-React-Projects/Project-2.SpringBoot-React-ShoppingMall/fullstack/backend/src/main/java/com/urunov/configure/JpaConfig.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
1414
import org.springframework.transaction.PlatformTransactionManager;
1515
import org.springframework.transaction.annotation.EnableTransactionManagement;
16+
import org.springframework.transaction.annotation.TransactionManagementConfigurer;
1617

1718
import java.util.Properties;
1819

@@ -25,7 +26,9 @@
2526
@EnableAutoConfiguration
2627
@EnableTransactionManagement
2728
@EnableJpaRepositories(basePackageClasses = ShoppingApplication.class)
28-
public class JpaConfig {
29+
public class JpaConfig implements TransactionManagementConfigurer {
30+
31+
2932
@Value("${dataSource.driverClassName}")
3033
private String driver;
3134
@Value("${dataSource.url}")
@@ -61,7 +64,7 @@ public LocalContainerEntityManagerFactoryBean configureEntityManagerFactory()
6164
{
6265
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
6366
entityManagerFactoryBean.setDataSource(configureDataSource());
64-
entityManagerFactoryBean.setPackagesToScan("com.messager");
67+
entityManagerFactoryBean.setPackagesToScan("com.urunov");
6568
entityManagerFactoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
6669
Properties jpaProperties = new Properties();
6770
jpaProperties.put(org.hibernate.cfg.Environment.DIALECT, dialect);

Part-9.SpringBoot-React-Projects/Project-2.SpringBoot-React-ShoppingMall/fullstack/backend/src/main/java/com/urunov/controller/UserController.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,6 @@ public class UserController {
4343

4444
private static final Logger logger = LoggerFactory.getLogger(UserController.class);
4545

46-
// // create employee rest api
47-
// @PostMapping("/addUser")
48-
// public User createEmployee(@RequestBody User user){
49-
// return userRepository.save(user);
50-
// }
51-
52-
5346
@GetMapping("/user/me")
5447
@PreAuthorize("hasRole('USER')")
5548
public UserSummary getCurrentUser(@CurrentUser UserPrincipal currentUser)
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,100 @@
11
package com.urunov.schedule;
22

3+
import com.urunov.kafkaService.Producer;
4+
import com.urunov.model.Orders;
5+
import com.urunov.model.enumdto.OrderStatus;
6+
import com.urunov.payload.payment.PaymentStatusResponse;
7+
import com.urunov.repository.OrderRepository;
8+
import com.urunov.service.order.payment.PaymentService;
9+
import com.urunov.service.taxiMaster.TaxiOrderProcess;
10+
import org.springframework.beans.factory.annotation.Autowired;
11+
import org.springframework.scheduling.annotation.Scheduled;
12+
import org.springframework.stereotype.Component;
13+
14+
import java.util.List;
15+
import java.util.Map;
16+
317
/**
418
* User: hamdamboy
519
* Project: Shopping
620
* Github: @urunov
721
*/
22+
@Component
823
public class OrderStatusRequester {
24+
25+
@Autowired
26+
private PaymentService paymentService;
27+
28+
@Autowired
29+
private OrderRepository orderRepository;
30+
31+
@Autowired
32+
private Producer producer;
33+
34+
@Autowired
35+
private TaxiOrderProcess taxiOrderProcess;
36+
37+
@Scheduled(fixedDelayString = "${ckassa.requeststatus.pauseTimeSec}000")
38+
public void requestOrdersStatus() throws Exception{
39+
40+
List<Orders> ordersList = orderRepository.findAllByStatusAndPaymentNumberIsNotNull(OrderStatus.awaitingPayment);
41+
for(Orders orders: ordersList){
42+
PaymentStatusResponse paymentStatusResponse = paymentService.getPaymentStatus(orders.getPaymentNumber());
43+
if (paymentStatusResponse.getState().equals("payed") || paymentStatusResponse.getState().equals("processed") || paymentStatusResponse.getState().equals("holded"))
44+
{
45+
orders.setStatus(OrderStatus.paid);
46+
orderRepository.save(orders);
47+
producer.sendOrderRequest(orders);
48+
taxiOrderProcess.createTaxiOrder(orders, orders.getOrderDetailsList().get(0).getGood().getRetailer());
49+
}
50+
}
51+
}
52+
53+
@Scheduled(fixedDelayString = "${tm.requestTaxiOrderStatus.pauseTimeSec}000")
54+
public void requestTaxiOrderStatus() throws Exception{
55+
56+
List<Orders> ordersList = orderRepository.findAllByStatusAndPaymentNumberIsNotNull(OrderStatus.awaitingPayment);
57+
for(Orders orders: ordersList){
58+
59+
OrderStatus prevOrderStatus = orders.getStatus();
60+
Map<String, String> mapResult = taxiOrderProcess.getTaxiOrderStatus(orders.getTaxiOrderId(), orders.getOrderDetailsList().get(0).getGood().getRetailer());
61+
62+
if(mapResult !=null){
63+
switch (mapResult.get("get_order_state")) {
64+
case "new_order":
65+
ordersSave(orders, OrderStatus.courierSearch, mapResult);
66+
break;
67+
case "driver_assigned":
68+
ordersSave(orders, OrderStatus.courierFound, mapResult);
69+
break;
70+
case "car_at_place":
71+
ordersSave(orders, OrderStatus.courierFound, mapResult);
72+
break;
73+
case "client_inside":
74+
ordersSave(orders, OrderStatus.deliveryInProgress, mapResult);
75+
break;
76+
case "finished":
77+
ordersSave(orders, OrderStatus.awaitingConfirmation, mapResult);
78+
break;
79+
}
80+
}
81+
82+
if(!prevOrderStatus.equals(orders.getStatus())){
83+
producer.sendOrderRequest(orders);
84+
}
85+
}
86+
}
87+
88+
private void ordersSave(Orders orders, OrderStatus status, Map<String, String> mapResult)
89+
{
90+
orders.setCarColor(mapResult.get("car_color"));
91+
orders.setCarMark(mapResult.get("car_mark"));
92+
orders.setCarModel(mapResult.get("car_model"));
93+
orders.setCarNumber(mapResult.get("car_number"));
94+
orders.setStatus(status);
95+
orders.setNameDriver(mapResult.get("name"));
96+
orders.setPhoneDriver(mapResult.get("phones"));
97+
orderRepository.save(orders);
98+
99+
}
9100
}

Part-9.SpringBoot-React-Projects/Project-2.SpringBoot-React-ShoppingMall/fullstack/backend/src/main/java/com/urunov/service/OrderDetailsService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
* Project: IntelliJ IDEA
2727
* Github: @urunov
2828
*/
29+
2930
@Service
3031
public class OrderDetailsService {
3132

Part-9.SpringBoot-React-Projects/Project-2.SpringBoot-React-ShoppingMall/fullstack/backend/src/main/resources/application.properties

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,17 @@ spring.jpa.hibernate.ddl-auto=update
1313
logging.level.org.hibernate.sql = DEBUG
1414
logging.level.org.hibernate.type = TRACE
1515

16+
spring.datasource.maximumPoolSize=3
17+
## App Properties
18+
app.jwtSecret=jwtSecret
19+
app.jwtExpirationInMs=604800000
20+
## TaxiMaster Properties
21+
tm.protocol=https
22+
tm.apiVersion=1.0
23+
tm.requestTaxiOrderStatus.pauseTimeSec=20
24+
## CKassa Properties
25+
ckassa.shopToken=shopToken
26+
ckassa.secKey=secKEY
27+
ckassa.servCode=servCode
28+
ckassa.sslPath=path
29+
ckassa.sslPassword=pass
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
spring.kafka.bootstrap-servers=localhost:9092
2+
message.topic.requestsms=RequestSms
3+
message.topic.portal_orders=esdPortalOrders
4+
message.topic.requestGoods=RequestGoods
5+
message.topic.requestTaxiSettings=esdShopperDeliveryService
6+
message.topic.requestRetailers=RetailerSettings
7+
message.topic.requestOrders=esdShopperOrders
8+
group.id=deliverylinegroup
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Configuration status="WARN" monitorInterval="30">
3+
<Properties>
4+
<Property name="LOG_PATTERN">%d{yyyy-MM-dd_HH:mm:ss.SSSZ} %p %m%n</Property>
5+
<Property name="APP_LOG_ROOT">logs</Property>
6+
</Properties>
7+
<Appenders>
8+
<Console name="Console">
9+
<PatternLayout pattern="${LOG_PATTERN}"/>
10+
</Console>
11+
12+
<RollingFile name="appLog"
13+
fileName="${APP_LOG_ROOT}/analyticsService.log"
14+
filePattern="${APP_LOG_ROOT}/analyticsService.%d{yyyy-MM-dd}-%i.log" ignoreExceptions="false">
15+
<PatternLayout pattern="${LOG_PATTERN}"/>
16+
<Policies>
17+
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
18+
</Policies>
19+
<DefaultRolloverStrategy max="10"/>
20+
</RollingFile>
21+
22+
</Appenders>
23+
<Loggers>
24+
25+
<Logger name="com.edicult.Shopper.AnalyticsService" additivity="false">
26+
<AppenderRef ref="appLog"/>
27+
<AppenderRef ref="Console"/>
28+
</Logger>
29+
30+
<Root level="info">
31+
<AppenderRef ref="appLog"/>
32+
<AppenderRef ref="Console"/>
33+
</Root>
34+
</Loggers>
35+
</Configuration>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
HELP.md
2+
target/
3+
!.mvn/wrapper/maven-wrapper.jar
4+
!**/src/main/**/target/
5+
!**/src/test/**/target/
6+
7+
### STS ###
8+
.apt_generated
9+
.classpath
10+
.factorypath
11+
.project
12+
.settings
13+
.springBeans
14+
.sts4-cache
15+
16+
### IntelliJ IDEA ###
17+
.idea
18+
*.iws
19+
*.iml
20+
*.ipr
21+
22+
### NetBeans ###
23+
/nbproject/private/
24+
/nbbuild/
25+
/dist/
26+
/nbdist/
27+
/.nb-gradle/
28+
build/
29+
!**/src/main/**/build/
30+
!**/src/test/**/build/
31+
32+
### VS Code ###
33+
.vscode/

0 commit comments

Comments
 (0)