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
125 changes: 63 additions & 62 deletions .github/workflows/github-actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,65 +53,66 @@ jobs:
- name: Publish image to docker hub
run: docker push ${{ secrets.DOCKER_USERNAME }}/qpin_server:latest

deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Set Target IP
run: |
STATUS=$(curl -o /dev/null -w "%{http_code}" "http://${{ secrets.QPIN_SERVER_IP }}/env")
echo $STATUS
if [ $STATUS = 200 ]; then
CURRENT_UPSTREAM=$(curl -s "http://${{ secrets.QPIN_SERVER_IP }}/env")
else
CURRENT_UPSTREAM=green
fi
echo CURRENT_UPSTREAM=$CURRENT_UPSTREAM >> $GITHUB_ENV
if [ $CURRENT_UPSTREAM = blue ]; then
echo "CURRENT_PORT=8080" >> $GITHUB_ENV
echo "STOPPED_PORT=8081" >> $GITHUB_ENV
echo "TARGET_UPSTREAM=green" >> $GITHUB_ENV
else
echo "CURRENT_PORT=8081" >> $GITHUB_ENV
echo "STOPPED_PORT=8080" >> $GITHUB_ENV
echo "TARGET_UPSTREAM=blue" >> $GITHUB_ENV
fi

- name: Docker Compose
uses: appleboy/ssh-action@master
with:
username: ubuntu
host: ${{ secrets.QPIN_SERVER_IP }}
key: ${{ secrets.EC2_SSH_KEY }}
script_stop: true
script: |
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/qpin_server:latest
sudo docker-compose -f docker-compose-${{env.TARGET_UPSTREAM}}.yml up -d

- name: Check deploy server URL
uses: jtalk/url-health-check-action@v3
with:
url: http://${{ secrets.QPIN_SERVER_IP }}:${{ env.STOPPED_PORT }}/env
max-attempts: 5
retry-delay: 10s

- name: Change nginx upstream
uses: appleboy/ssh-action@master
with:
username: ubuntu
host: ${{ secrets.QPIN_SERVER_IP }}
key: ${{ secrets.EC2_SSH_KEY }}
script_stop: true
script: |
sudo docker exec -i nginxserver bash -c 'echo "set \$service_url ${{env.TARGET_UPSTREAM}};" > etc/nginx/conf.d/service-env.inc && nginx -s reload'

- name: Stop current server
uses: appleboy/ssh-action@master
with:
username: ubuntu
host: ${{ secrets.QPIN_SERVER_IP }}
key: ${{ secrets.EC2_SSH_KEY }}
script_stop: true
script: |
sudo docker stop ${{ env.CURRENT_UPSTREAM }}
sudo docker rm ${{ env.CURRENT_UPSTREAM }}
# CD ์ž„์‹œ ์‚ญ์ œ
# deploy:
# needs: build
# runs-on: ubuntu-latest
# steps:
# - name: Set Target IP
# run: |
# STATUS=$(curl -o /dev/null -w "%{http_code}" "http://${{ secrets.QPIN_SERVER_IP }}/env")
# echo $STATUS
# if [ $STATUS = 200 ]; then
# CURRENT_UPSTREAM=$(curl -s "http://${{ secrets.QPIN_SERVER_IP }}/env")
# else
# CURRENT_UPSTREAM=green
# fi
# echo CURRENT_UPSTREAM=$CURRENT_UPSTREAM >> $GITHUB_ENV
# if [ $CURRENT_UPSTREAM = blue ]; then
# echo "CURRENT_PORT=8080" >> $GITHUB_ENV
# echo "STOPPED_PORT=8081" >> $GITHUB_ENV
# echo "TARGET_UPSTREAM=green" >> $GITHUB_ENV
# else
# echo "CURRENT_PORT=8081" >> $GITHUB_ENV
# echo "STOPPED_PORT=8080" >> $GITHUB_ENV
# echo "TARGET_UPSTREAM=blue" >> $GITHUB_ENV
# fi
#
# - name: Docker Compose
# uses: appleboy/ssh-action@master
# with:
# username: ubuntu
# host: ${{ secrets.QPIN_SERVER_IP }}
# key: ${{ secrets.EC2_SSH_KEY }}
# script_stop: true
# script: |
# sudo docker pull ${{ secrets.DOCKER_USERNAME }}/qpin_server:latest
# sudo docker-compose -f docker-compose-${{env.TARGET_UPSTREAM}}.yml up -d
#
# - name: Check deploy server URL
# uses: jtalk/url-health-check-action@v3
# with:
# url: http://${{ secrets.QPIN_SERVER_IP }}:${{ env.STOPPED_PORT }}/env
# max-attempts: 5
# retry-delay: 10s
#
# - name: Change nginx upstream
# uses: appleboy/ssh-action@master
# with:
# username: ubuntu
# host: ${{ secrets.QPIN_SERVER_IP }}
# key: ${{ secrets.EC2_SSH_KEY }}
# script_stop: true
# script: |
# sudo docker exec -i nginxserver bash -c 'echo "set \$service_url ${{env.TARGET_UPSTREAM}};" > etc/nginx/conf.d/service-env.inc && nginx -s reload'
#
# - name: Stop current server
# uses: appleboy/ssh-action@master
# with:
# username: ubuntu
# host: ${{ secrets.QPIN_SERVER_IP }}
# key: ${{ secrets.EC2_SSH_KEY }}
# script_stop: true
# script: |
# sudo docker stop ${{ env.CURRENT_UPSTREAM }}
# sudo docker rm ${{ env.CURRENT_UPSTREAM }}
10 changes: 9 additions & 1 deletion src/main/java/org/example/qpin/domain/member/entity/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import org.example.qpin.domain.scrap.entity.Scrap;
import org.example.qpin.global.common.BaseEntity;

import java.security.Timestamp;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -69,4 +68,13 @@ public Member (String name, String password, String role){
this.role = role;
// this.phoneNumber = phoneNumber;
}

// ์ฃผ์ฐจ ์—ฌ๋ถ€
@Column(nullable = false)
private boolean isParking;

// ์ฃผ์ฐจ ์—ฌ๋ถ€๋ฅผ ์„ค์ •
public void setParking(boolean isParking) {
this.isParking = isParking;
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package org.example.qpin.domain.parking.controller;

import lombok.RequiredArgsConstructor;
import org.example.qpin.domain.parking.dto.ParkingInfoResDto;
import org.example.qpin.domain.parking.dto.ParkingSearchReqDto;
import org.example.qpin.domain.parking.dto.ParkingSearchResDto;
import org.example.qpin.domain.parking.service.ParkingService;
import org.example.qpin.global.common.response.CommonResponse;
import org.example.qpin.global.common.response.ResponseCode;
import org.json.simple.parser.ParseException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
Expand All @@ -19,38 +18,37 @@ public class ParkingController {

private final ParkingService parkingService;

/**
* ์ฃผ๋ณ€ ์ฃผ์ฐจ์žฅ ์ •๋ณด ํƒ์ƒ‰
*/
// [Get] ์ฃผ๋ณ€ ์ฃผ์ฐจ์žฅ ๊ฒ€์ƒ‰
@GetMapping("/parking/selectList")
public ResponseEntity<List<ParkingSearchResDto>> findParkingNearby(@RequestBody ParkingSearchReqDto parkingSearchReqDto) throws ParseException {
public CommonResponse<List<ParkingSearchResDto>> findParkingNearby(@RequestParam ParkingSearchReqDto parkingSearchReqDto) throws ParseException {

double latitude=parkingSearchReqDto.getLatitude();
double longitude=parkingSearchReqDto.getLongtitude();
double distance=parkingSearchReqDto.getDistance();
Double latitude=parkingSearchReqDto.getLatitude();
Double longitude=parkingSearchReqDto.getLongitude();
Double distance=parkingSearchReqDto.getDistance();
String regionCode=parkingSearchReqDto.getRegionCode();
return ResponseEntity.status(HttpStatus.OK).body(parkingService.findParkingNearby(latitude, longitude, distance,regionCode ));

List<ParkingSearchResDto> parkingList = parkingService.findParkingNearby(latitude, longitude, distance, regionCode);
return new CommonResponse<>(ResponseCode.SUCCESS, parkingList);
}

// [Post] ์ฃผ์ฐจํ•˜๊ธฐ ๋ฒ„ํŠผ
// [Post] ์ฃผ์ฐจ ๋“ฑ๋ก
@PostMapping("/parking/{parkingAreaId}/{memberId}")
@ResponseBody
public CommonResponse<?> parking(@PathVariable("memberId") Long memberId, @PathVariable("parkingAreaId") String parkingAreaId) {
parkingService.postParking(memberId, parkingAreaId);
return new CommonResponse<>(ResponseCode.SUCCESS);
public CommonResponse<String> parking(@PathVariable("memberId") Long memberId, @PathVariable("parkingAreaId") Long parkingAreaId, @RequestBody String type) {
parkingService.postParking(memberId, parkingAreaId, type);
return new CommonResponse<>(ResponseCode.SUCCESS, "์ฃผ์ฐจ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
}

// [Delete] ์ฃผ์ฐจํ•˜๊ธฐ ๋ฒ„ํŠผ ํ•ด์ œ
// [Delete] ์ฃผ์ฐจ ํ•ด์ œ
@DeleteMapping("/parking/{parkingAreaId}/{memberId}")
@ResponseBody
public CommonResponse<?> deleteParking(@PathVariable("memberId") Long memberId, @PathVariable("parkingAreaId") String parkingAreaId) {
public CommonResponse<String> deleteParking(@PathVariable("memberId") Long memberId, @PathVariable("parkingAreaId") Long parkingAreaId) {
parkingService.deleteParking(memberId, parkingAreaId);
return new CommonResponse<>(ResponseCode.SUCCESS);
return new CommonResponse<>(ResponseCode.SUCCESS, "์ฃผ์ฐจ ํ•ด์ œ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
}

// [Get] ๊ฐ„ํŽธ ์ฃผ์ฐจ ์ฃผ์ฐจ์žฅ ์ •๋ณด
@GetMapping("/parking/select/{parkingAreaId}/{memberId}")
public CommonResponse<?> parkingInfo(@PathVariable("memberId") Long memberId, @PathVariable("parkingAreaId") String parkingAreaId) {
return new CommonResponse<>(ResponseCode.SUCCESS, parkingService.getParkingInfo(memberId, parkingAreaId));
// [Get] ํ˜„์žฌ ์ฃผ์ฐจํ•œ ์ฃผ์ฐจ์žฅ ์ •๋ณด
@GetMapping("/parking/select/{memberId}")
public CommonResponse<ParkingInfoResDto> parkingInfo(@PathVariable("memberId") Long memberId) {
return new CommonResponse<>(ResponseCode.SUCCESS, parkingService.getParkingInfo(memberId));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,8 @@
@Builder
public class ParkingInfoResDto {

private boolean parkingStatus;
private boolean scrapStatus;
private LocalDateTime parkingDate;
private int parkingTime;

private LocalDateTime parkingDate; // ์ฃผ์ฐจ ์‹œ์ž‘ ์‹œ๊ฐ„
private int parkingTime; // ์ฃผ์ฐจํ•œ ์‹œ๊ฐ„(๋ถ„ ๋‹จ์œ„)
private Long parkingAreaId; // ์ฃผ์ฐจ์žฅ ID
private String parkingType; // ์ฃผ์ฐจ์žฅ ์œ ํ˜•
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,14 @@

import lombok.Builder;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Builder
// ์ฃผ์ฐจ์žฅ ๊ฒ€์ƒ‰ ์š”์ฒญ
public class ParkingSearchReqDto {
private double latitude;
private double longtitude;
private double distance;
private String regionCode; //์ง€์—ญ์ฝ”๋“œ 5์ž๋ฆฌ ๋ฌธ์ž์—ด
private Double latitude; // ์œ„๋„
private Double longitude; // ๊ฒฝ๋„
private Double distance; // ๊ฒ€์ƒ‰ ๊ธฐ์ค€ ๊ฑฐ๋ฆฌ
private String regionCode; // ์ง€์—ญ์ฝ”๋“œ 5์ž๋ฆฌ ๋ฌธ์ž์—ด

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,21 @@
@Builder
@NoArgsConstructor
@AllArgsConstructor
// ์ฃผ์ฐจ์žฅ ๊ฒ€์ƒ‰ ์‘๋‹ต
public class ParkingSearchResDto {
private Double longitude; // ๊ฒฝ๋„
private Double latitude; // ์œ„๋„
private String address; // ๋„๋กœ๋ช…์ฃผ์†Œ
private String name; // ์ฃผ์ฐจ์žฅ๋ช…
private String price; // ๊ฐ€๊ฒฉ
private Long parkId; //์ฃผ์ฐจ์žฅ ์•„์ด๋””
private Double parkingDistance; // ํ˜„์œ„์น˜์™€์˜ ๊ฑฐ๋ฆฌ

private double longtitude; //๊ฒฝ๋„
private double latitude; //์œ„๋„
private String address; //๋„๋กœ๋ช…์ฃผ์†Œ
private String name; //์ฃผ์ฐจ์žฅ๋ช…
private String price; //๋ฌด๋ฃŒ,์œ ๋ฃŒ
private Long parkId;
private double parkingDistance;

private String weekStartTime;
private String weekEndTime;
private String SaturdayStartTime;
private String SaturdayEndTime;
private String HolidayStartTime;
private String HolidayEndTime;
private String weekStartTime; // ํ‰์ผ ์˜คํ”ˆ
private String weekEndTime; // ํ‰์ผ ๋งˆ๊ฐ
private String SaturdayStartTime; // ํ† ์š”์ผ ์˜คํ”ˆ
private String SaturdayEndTime; // ํ† ์š”์ผ ๋งˆ๊ฐ
private String HolidayStartTime; // ๊ณตํœด์ผ/์ผ์š”์ผ ์˜คํ”ˆ
private String HolidayEndTime; // ๊ณตํœด์ผ/์ผ์š”์ผ ๋งˆ๊ฐ

}
18 changes: 7 additions & 11 deletions src/main/java/org/example/qpin/domain/parking/entity/Parking.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package org.example.qpin.domain.parking.entity;

import jakarta.persistence.*;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.*;
import org.example.qpin.domain.member.entity.Member;
import org.example.qpin.global.common.BaseEntity;

@Entity
Expand All @@ -14,13 +16,7 @@ public class Parking extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long parkingId;
private Long parkingAreaId;

@Column(length = 50, nullable = false)
private String parkingAreaId;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id")
private Member member;

}
private String type;
}
Loading
Loading