godine

command module
v0.0.0-...-fefde71 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 10, 2024 License: GPL-3.0 Imports: 1 Imported by: 0

README

GoDine

Go Coverage Quality Gate Status GitHub release GitHub License

GoDine is an online food ordering system designed using Golang and following the principles of Domain-Driven Design ( DDD). The system includes multiple business domains such as User Management, Restaurant Management, Order Management, Payment Management, and Notification Management. Each domain has clear boundaries and interacts with other domains to provide a seamless online dining experience.

Project Name Explanation

The name GoDine is derived from combining "Golang" and "Dine", representing an online food ordering system built using Golang. This name is concise and representative, conveying the core functionality of the project, which is to provide efficient online dining services using Golang technology.

Features

  • User Management: User registration, login, profile updates, account deletion.
  • Restaurant Management: Restaurant information management, menu management.
  • Order Management: Order creation, order status updates, order queries.
  • Payment Management: Handling order payments, payment record queries.
  • Notification Management: Sending notifications to users (e.g., order status updates).

Technical Details

  • Programming Language: Golang
  • Architecture Pattern: Domain-Driven Design (DDD)
  • Major Modules:
    • User Management: Responsible for user registration, login, profile management, etc.
    • Restaurant Management: Responsible for restaurant information and menu management.
    • Order Management: Handles order creation, management, and tracking.
    • Payment Management: Processes payments and manages payment records.
    • Notification Management: Sends notifications regarding order status changes to users.

System Architecture Diagram

graph TD
    UserManagement[用戶管理]
    RestaurantManagement[餐廳管理]
    OrderManagement[訂單管理]
    PaymentManagement[支付管理]
    NotificationManagement[通知管理]
    LogisticsManagement[物流管理]

    UserManagement -->|確認用戶身份| OrderManagement
    RestaurantManagement -->|確認餐廳和菜單可用性| OrderManagement
    OrderManagement -->|確認訂單和金額| PaymentManagement
    PaymentManagement -->|通知支付結果| OrderManagement
    OrderManagement -->|通知訂單狀態變更| NotificationManagement
    OrderManagement -->|安排配送| LogisticsManagement
    LogisticsManagement -->|更新配送狀態| OrderManagement
    LogisticsManagement -->|通知配送狀態變更| NotificationManagement

    subgraph UserManagement[用戶管理]
        UM[User Service]
        UM --> U[User]
    end

    subgraph RestaurantManagement[餐廳管理]
        RM[Restaurant Service]
        M[Menu Service]
        RM --> R[Restaurant]
        M --> MI[MenuItem]
    end

    subgraph OrderManagement[訂單管理]
        OM[Order Service]
        OM --> O[Order]
        O --> OI[OrderItem]
    end

    subgraph PaymentManagement[支付管理]
        PM[Payment Service]
        PM --> PR[PaymentRecord]
    end

    subgraph NotificationManagement[通知管理]
        NM[Notification Service]
        NM --> N[Notification]
    end

    subgraph LogisticsManagement[物流管理]


        LM[Logistics Service]
        LM --> D[Delivery]
        D --> DS[DeliveryStatus]
    end

Installation

  1. Clone the repository:
    git clone https://github.com/blackhorseya/godine.git
    
  2. Navigate to the project directory:
    cd godine
    
  3. Install dependencies:
    go mod tidy
    

Usage

  1. Run the service:
    make dev
    
  2. Access the service:
    • API documentation is available at http://localhost:1992/api/docs/index.html.

Contribution

We welcome contributions to this project. Please follow these steps:

  1. Fork the repository
  2. Create your feature branch:
    git checkout -b feature-branch
    
  3. Commit your changes:
    git commit -am 'Add some feature'
    
  4. Push to the branch:
    git push origin feature-branch
    
  5. Create a Pull Request

License

This project is licensed under the GPL-3.0 License. See the LICENSE file for details.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
adapter
app
entity
domain/logistics/repo
Package repo is a generated GoMock package.
Package repo is a generated GoMock package.
domain/notification/repo
Package repo is a generated GoMock package.
Package repo is a generated GoMock package.
domain/order/repo
Package repo is a generated GoMock package.
Package repo is a generated GoMock package.
domain/payment/repo
Package repo is a generated GoMock package.
Package repo is a generated GoMock package.
domain/restaurant/repo
Package repo is a generated GoMock package.
Package repo is a generated GoMock package.
domain/user/repo
Package repo is a generated GoMock package.
Package repo is a generated GoMock package.
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL