Categorygithub.com/HongJungWan/commerce-system
repositorypackage
0.0.0-20241003035455-00178eac1071
Repository: https://github.com/hongjungwan/commerce-system.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author

# README

commerce-system


실행 방법

  1. compose.yml 파일이 존재하는 경로로 이동합니다.

  2. docker-compose up --build -d 명령어를 실행합니다.

  3. Docker Desktop에서 아래 이미지와 같이 컨테이너가 잘 실행 중인지 확인합니다.




테스트 코드 실행 시키기 (Windows Powershell 기준)

📌 모든 테스트 코드 확인 명령어

go test ./internal/...



📌 성공한 테스트 코드 확인 명령어

go test ./internal/... -json | Select-String -Pattern '"Action":"pass"' | Measure-Object



📌 실패한 테스트 코드 확인 명령어

go test ./internal/... -json | Select-String -Pattern '"Action":"fail"' | Measure-Object




API Endpoint

HTTP MethodURIDescriptionAuthenticationAuthorizationETC
GET/api/health서비스 상태 확인❌ (No)❌ (No)
POST/api/login사용자 로그인❌ (No)❌ (No)
POST/api/members회원 가입❌ (No)❌ (No)
GET/api/members/me내 정보 조회✅ (Yes)❌ (No)
PUT/api/members/me내 정보 수정✅ (Yes)❌ (No)
DELETE/api/members/me회원 탈퇴✅ (Yes)❌ (No)
GET/api/members회원 목록 조회✅ (Yes)✅ (Yes)권한 변경 후, 재 로그인 필요
GET/api/members/stats회원 통계 조회✅ (Yes)✅ (Yes)권한 변경 후, 재 로그인 필요
GET/api/products상품 목록 조회✅ (Yes)❌ (No)
POST/api/products상품 생성✅ (Yes)✅ (Yes)권한 변경 후, 재 로그인 필요
PUT/api/products/:product_number/stock상품 재고 수정✅ (Yes)✅ (Yes)권한 변경 후, 재 로그인 필요
DELETE/api/products/:product_number상품 삭제✅ (Yes)✅ (Yes)권한 변경 후, 재 로그인 필요
POST/api/orders주문 생성✅ (Yes)❌ (No)
GET/api/orders/me내 주문 조회✅ (Yes)❌ (No)
PUT/api/orders/:order_number/cancel주문 취소✅ (Yes)❌ (No)
GET/api/orders/stats주문 통계 조회✅ (Yes)✅ (Yes)권한 변경 후, 재 로그인 필요




Swagger 테스트

swag init

go-server 컨테이너 실행 확인 후, `http://localhost:3031/docs/index.html` 접근



인증이 필요한 기능을 테스트하기 위해 Swagger 우측 상단 Authorize 버튼을 클릭해 로그인 후, 발급받은 토근을 Bearer Token 형식으로 입력합니다.







Application Server Architecture

Application Server Architecture

📌 참고 Link




폴더 구조

4개의 핵심 도메인 계층이 있습니다.

  • Models Layer
  • Infrastructure Layer
  • Usecase Layer
  • Controller Layer

├── database
├── deploy
├── docs
│   ├── docs.go
│   ├── swagger.json
│   └── swagger.yaml
│
├── internal
│   ├── domain
│   │   │── repository (interface)
│   │   │   │── member_repository.go
│   │   │
│   │   │── member.go
│   │   │── member_test.go
│   │   │── ...
│   │
│   ├── infrastructure
│   │   ├── configs
│   │   ├── repository (impl)
│   │   │   │── member_repository_impl.go
│   │   │
│   │   └── router
│   │
│   ├── interfaces
│   │   ├── controller
│   │   ├── dto
│   │   └── middleware
│   │
│   └── usecases
│
├── test
│   └── fixtures
│
├── compose.yml
├── Dockerfile
├── go.mod




ERD(Entity Relationship Diagram)




Git 커밋 메시지 규칙

TagDescription
feat새로운 기능을 추가한 경우 사용합니다.
fix버그를 수정한 경우 사용합니다.
refactor코드 리팩토링한 경우 사용합니다.
style코드 형식, 정렬, 주석 등의 변경(동작에 영향을 주는 코드 변경 없음)한 경우 사용합니다.
test테스트 추가, 테스트 리팩토링(제품 코드 수정 없음, 테스트 코드에 관련된 모든 변경에 해당)한 경우 사용합니다.
docs문서를 수정(제품 코드 수정 없음)한 경우 사용합니다.
chore빌드 업무 수정, 패키지 매니저 설정 등 위에 해당되지 않는 모든 변경(제품 코드 수정 없음)일 경우 사용합니다.