Skip to content

Commit 59b836d

Browse files
committed
Merge branch 'iteration-2' into testGitHub-Action
2 parents ffeb9ad + e5c4c3c commit 59b836d

34 files changed

+4050
-184
lines changed

.github/workflows/main.yml

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
2+
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven
3+
4+
# This workflow uses actions that are not certified by GitHub.
5+
# They are provided by a third-party and are governed by
6+
# separate terms of service, privacy policy, and support
7+
# documentation.
8+
9+
# Action name
10+
name: Test, Build, and Deploy
11+
12+
# When will the action run
13+
on:
14+
push:
15+
branches: [ "main" ]
16+
pull_request:
17+
branches: [ "main" ]
18+
19+
jobs:
20+
# build the project
21+
build:
22+
23+
runs-on: ubuntu-latest
24+
defaults:
25+
run:
26+
working-directory: ./code/backend
27+
28+
steps:
29+
- uses: actions/checkout@v4
30+
- name: Set up JDK 17
31+
uses: actions/setup-java@v4
32+
with:
33+
java-version: '17'
34+
distribution: 'temurin'
35+
cache: maven
36+
37+
- name: Build with Maven
38+
run: mvn clean package --file pom.xml
39+
40+
- name: Upload artifact
41+
uses: actions/upload-artifact@v4
42+
with:
43+
name: bu-secondhand-1.0.0
44+
path: ./code/backend/target/
45+
46+
# build a docker image and push it to Docker Hub
47+
deploy:
48+
needs: [build]
49+
runs-on: ubuntu-latest
50+
51+
steps:
52+
- uses: actions/checkout@v4
53+
54+
- uses: actions/download-artifact@v4
55+
with:
56+
name: bu-secondhand-1.0.0
57+
path: ./code/backend/target/
58+
59+
- name: Login to Docker Hub
60+
uses: docker/login-action@v3
61+
with:
62+
username: ${{ vars.DOCKERHUB_USERNAME }}
63+
password: ${{ secrets.DOCKERHUB_TOKEN }}
64+
65+
- name: Set up Docker Buildx
66+
uses: docker/setup-buildx-action@v3
67+
68+
- name: Build and Push docker
69+
uses: docker/build-push-action@v6
70+
with:
71+
context: ./code/backend
72+
file: ./code/backend/Dockerfile
73+
push: true
74+
tags: ${{ vars.DOCKERHUB_USERNAME }}/campus_exchange:latest

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Second-Hand Market
22

33
## Demo
4-
http://47.253.210.186:8080/
4+
http://47.252.3.33:8080/
55

66
> Dummy Link: For application demonstration only.
77
## Project Description

code/backend/pom.xml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,53 @@
106106
<version>3.0.3</version>
107107
</dependency>
108108

109+
<!-- Selenium WebDriver -->
110+
<dependency>
111+
<groupId>org.seleniumhq.selenium</groupId>
112+
<artifactId>selenium-java</artifactId>
113+
<version>4.0.0</version>
114+
</dependency>
115+
<!-- WebDriver Manager to automatically download browser drivers -->
116+
<dependency>
117+
<groupId>io.github.bonigarcia</groupId>
118+
<artifactId>webdrivermanager</artifactId>
119+
<version>5.0.3</version>
120+
</dependency>
121+
<!-- Spring Boot Test -->
122+
<dependency>
123+
<groupId>org.springframework.boot</groupId>
124+
<artifactId>spring-boot-starter-test</artifactId>
125+
<scope>test</scope>
126+
</dependency>
127+
<dependency>
128+
<groupId>org.apache.httpcomponents.client5</groupId>
129+
<artifactId>httpclient5</artifactId>
130+
<version>5.2.1</version> <!-- Check for the latest version -->
131+
</dependency>
132+
<dependency>
133+
<groupId>org.apache.httpcomponents.core5</groupId>
134+
<artifactId>httpcore5</artifactId>
135+
<version>5.1.3</version>
136+
</dependency>
137+
<dependency>
138+
<groupId>org.seleniumhq.selenium</groupId>
139+
<artifactId>selenium-java</artifactId>
140+
<version>4.25.0</version>
141+
</dependency>
142+
<dependency>
143+
<groupId>io.github.bonigarcia</groupId>
144+
<artifactId>webdrivermanager</artifactId>
145+
<version>5.4.1</version>
146+
<scope>test</scope>
147+
</dependency>
148+
<dependency>
149+
<groupId>com.google.guava</groupId>
150+
<artifactId>guava</artifactId>
151+
<version>31.0.1-jre</version> <!-- Update to a compatible version -->
152+
</dependency>
153+
154+
155+
109156
<dependency>
110157
<groupId>org.springframework.boot</groupId>
111158
<artifactId>spring-boot-starter</artifactId>

code/backend/src/main/java/edu/bu/cs673/secondhand/Main.java

Lines changed: 0 additions & 33 deletions
This file was deleted.
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package edu.bu.cs673.secondhand.controller;
2+
3+
import edu.bu.cs673.secondhand.domain.Address;
4+
import edu.bu.cs673.secondhand.enums.ErrorMsg;
5+
import edu.bu.cs673.secondhand.service.AddressService;
6+
import edu.bu.cs673.secondhand.vo.ResultVo;
7+
import jakarta.annotation.Resource;
8+
import org.springframework.web.bind.annotation.*;
9+
10+
import javax.validation.constraints.NotEmpty;
11+
import javax.validation.constraints.NotNull;
12+
13+
/***
14+
Email: ybinman@bu.edu
15+
DateTime: 10/26/24-15:49
16+
*****/
17+
@RestController
18+
@RequestMapping("/address")
19+
public class AddressController {
20+
21+
@Resource
22+
private AddressService addressService;
23+
24+
@GetMapping("/info")
25+
public ResultVo getAddress(@CookieValue("shUserId")
26+
@NotNull(message = "Login Fail, try again")
27+
@NotEmpty(message = "Login Fail, try again") String shUserId,
28+
@RequestParam(value = "id",required = false) Long id){
29+
30+
if(null==id){
31+
return ResultVo.success(addressService.getAddressByUser(Long.valueOf(shUserId)));
32+
}else {
33+
return ResultVo.success(addressService.getAddressById(id,Long.valueOf(shUserId)));
34+
}
35+
}
36+
37+
@PostMapping("/add")
38+
public ResultVo addAddress(@CookieValue("shUserId")
39+
@NotNull(message = "Login Fail, try again")
40+
@NotEmpty(message = "Login Fail, try again") String shUserId,
41+
@RequestBody Address addressModel){
42+
addressModel.setUserId(Long.valueOf(shUserId));
43+
if(addressService.addAddress(addressModel)){
44+
return ResultVo.success(addressModel);
45+
}
46+
return ResultVo.fail(ErrorMsg.SYSTEM_ERROR);
47+
}
48+
49+
@PostMapping("/update")
50+
public ResultVo updateAddress(@CookieValue("shUserId")
51+
@NotNull(message = "Login Fail, try again")
52+
@NotEmpty(message = "Login Fail, try again") String shUserId,
53+
@RequestBody Address addressModel){
54+
addressModel.setUserId(Long.valueOf(shUserId));
55+
if(addressService.updateAddress(addressModel)){
56+
return ResultVo.success();
57+
}
58+
return ResultVo.fail(ErrorMsg.SYSTEM_ERROR);
59+
}
60+
61+
@PostMapping("/delete")
62+
public ResultVo deleteAddress(@CookieValue("shUserId")
63+
@NotNull(message = "Login Fail, try again")
64+
@NotEmpty(message = "Login Fail, try again") String shUserId,
65+
@RequestBody Address addressModel){
66+
addressModel.setUserId(Long.valueOf(shUserId));
67+
if(addressService.deleteAddress(addressModel)){
68+
return ResultVo.success();
69+
}
70+
return ResultVo.fail(ErrorMsg.SYSTEM_ERROR);
71+
}
72+
73+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package edu.bu.cs673.secondhand.controller;
2+
3+
import edu.bu.cs673.secondhand.domain.Favorite;
4+
import edu.bu.cs673.secondhand.enums.ErrorMsg;
5+
import edu.bu.cs673.secondhand.service.FavoriteService;
6+
import edu.bu.cs673.secondhand.vo.ResultVo;
7+
import jakarta.annotation.Resource;
8+
import org.springframework.stereotype.Controller;
9+
import org.springframework.web.bind.annotation.*;
10+
11+
import javax.validation.constraints.NotEmpty;
12+
import javax.validation.constraints.NotNull;
13+
import java.util.Date;
14+
15+
/***
16+
Email: ybinman@bu.edu
17+
DateTime: 10/26/24-13:26
18+
*****/
19+
@RestController
20+
@RequestMapping("/favorite")
21+
public class FavoriteController {
22+
23+
@Resource
24+
FavoriteService favoriteService;
25+
26+
@PostMapping("/add")
27+
public ResultVo addFavorite(@CookieValue("shUserId")
28+
@NotNull(message = "Login Fail, try again")
29+
@NotEmpty(message = "Login Fail, try again") String shUserId,
30+
@RequestBody Favorite favoriteModel){
31+
favoriteModel.setUserId(Long.valueOf(shUserId));
32+
favoriteModel.setCreateTime(new Date());
33+
if(favoriteService.addFavorite(favoriteModel)){
34+
return ResultVo.success(favoriteModel.getId());
35+
}
36+
return ResultVo.fail(ErrorMsg.FAVORITE_EXIT);
37+
}
38+
39+
@GetMapping("/delete")
40+
public ResultVo deleteFavorite(@CookieValue("shUserId")
41+
@NotNull(message = "Login Fail, try again")
42+
@NotEmpty(message = "Login Fail, try again") String shUserId,
43+
@RequestParam Long id){
44+
if(favoriteService.deleteFavorite(id)){
45+
return ResultVo.success();
46+
}
47+
return ResultVo.fail(ErrorMsg.SYSTEM_ERROR);
48+
}
49+
50+
@GetMapping("/check")
51+
public ResultVo checkFavorite(@CookieValue("shUserId")
52+
@NotNull(message = "Login Fail, try again")
53+
@NotEmpty(message = "Login Fail, try again") String shUserId,
54+
@RequestParam Long idleId){
55+
return ResultVo.success(favoriteService.isFavorite(Long.valueOf(shUserId),idleId));
56+
}
57+
58+
@GetMapping("/my")
59+
public ResultVo getMyFavorite(@CookieValue("shUserId")
60+
@NotNull(message = "Login Fail, try again")
61+
@NotEmpty(message = "Login Fail, try again") String shUserId){
62+
return ResultVo.success(favoriteService.getAllFavorite(Long.valueOf(shUserId)));
63+
}
64+
65+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package edu.bu.cs673.secondhand.controller;
2+
3+
import edu.bu.cs673.secondhand.domain.OrderAddress;
4+
import edu.bu.cs673.secondhand.enums.ErrorMsg;
5+
import edu.bu.cs673.secondhand.service.OrderAddressService;
6+
import edu.bu.cs673.secondhand.vo.ResultVo;
7+
import jakarta.annotation.Resource;
8+
import org.springframework.web.bind.annotation.*;
9+
10+
import javax.validation.constraints.NotEmpty;
11+
import javax.validation.constraints.NotNull;
12+
13+
/***
14+
Email: ybinman@bu.edu
15+
DateTime: 10/26/24-16:29
16+
*****/
17+
@RestController
18+
@RequestMapping("/order-address")
19+
public class OrderAddressController {
20+
21+
@Resource
22+
OrderAddressService orderAddressService;
23+
24+
25+
@PostMapping("/add")
26+
public ResultVo addOrderAddress(@CookieValue("shUserId")
27+
@NotNull(message = "Login Fail, try again")
28+
@NotEmpty(message = "Login Fail, try again") String shUserId,
29+
@RequestBody OrderAddress orderAddressModel){
30+
return ResultVo.success(orderAddressService.addOrderAddress(orderAddressModel));
31+
}
32+
33+
@PostMapping("/update")
34+
public ResultVo updateOrderAddress(@CookieValue("shUserId")
35+
@NotNull(message = "Login Fail, try again")
36+
@NotEmpty(message = "Login Fail, try again") String shUserId,
37+
@RequestBody OrderAddress orderAddressModel){
38+
if(orderAddressService.updateOrderAddress(orderAddressModel)){
39+
return ResultVo.success(orderAddressModel);
40+
}
41+
return ResultVo.fail(ErrorMsg.SYSTEM_ERROR);
42+
}
43+
44+
@GetMapping("/info")
45+
public ResultVo getOrderAddress(@CookieValue("shUserId")
46+
@NotNull(message = "Login Fail, try again")
47+
@NotEmpty(message = "Login Fail, try again") String shUserId,
48+
@RequestParam Long orderId){
49+
return ResultVo.success(orderAddressService.getOrderAddress(orderId));
50+
}
51+
52+
}

code/backend/src/main/java/edu/bu/cs673/secondhand/controller/OrderController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@ public ResultVo updateOrder(@CookieValue("shUserId")
7373
}
7474

7575
@GetMapping("/my")
76-
public ResultVo getMyOrder(@RequestParam(value = "user_id", required = true) String shUserId){
76+
public ResultVo getMyOrder(@CookieValue("shUserId")
77+
@NotNull(message = "Login Fail, try again")
78+
@NotEmpty(message = "Login Fail, try again") String shUserId){
7779
return ResultVo.success(orderService.getMyOrder(Long.valueOf(shUserId)));
7880
}
7981

0 commit comments

Comments
 (0)