# zhcc-b/big-even-backend architecture

> Architecture diagram of the GitHub repository zhcc-b/big-even-backend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/zhcc-b/big-even-backend
- Repository: https://github.com/zhcc-b/big-even-backend

## Overview

Big Event API is a Spring Boot backend for account management, article categories, articles, and file uploads. The main workflow is HTTP request → controller → service implementation → mapper or local file write → API result. User login checks credentials and issues a JWT; authenticated user context is used by profile and content operations. The README documents PostgreSQL and JWT, but several runtime files (including interceptor and mapper implementations) were not sampled, so uncertain wiring is omitted.

Main entry points: [`src/main/java/com/zhcc/controller/UserController.java`](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/controller/UserController.java) (User endpoints), [`src/main/java/com/zhcc/service/impl/UserServiceImpl.java`](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/service/impl/UserServiceImpl.java) (User service), [`src/main/java/com/zhcc/utils/ThreadLocalUtil.java`](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/utils/ThreadLocalUtil.java) (User context), [`src/main/java/com/zhcc/service/impl/CategoryServiceImpl.java`](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/service/impl/CategoryServiceImpl.java) (Category service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_user_controller["User endpoints"]
  node_category_controller["Category endpoints"]
  node_article_controller["Article endpoints"]
  node_upload_controller["File upload"]
end

subgraph group_domain["Domain Services"]
  node_user_service["User service"]
  node_category_service["Category service"]
  node_article_service["Article service"]
end

subgraph group_persistence["Persistence"]
  node_user_mapper["User mapper<br/>[UserMapper.java]"]
  node_category_mapper["Category mapper"]
  node_article_mapper["Article mapper<br/>[ArticleMapper.java]"]
  node_postgres[("PostgreSQL")]
end

subgraph group_security["Authentication"]
  node_login_interceptor["Login interceptor"]
  node_jwt["JWT utility<br/>[JwtUtil.java]"]
  node_thread_context["User context"]
  node_md5["Password hashing<br/>[Md5Util.java]"]
end

node_client(("API client"))
node_local_files[("Local upload files")]

node_client -->|"sends requests"| node_user_controller
node_client -->|"sends requests"| node_category_controller
node_client -->|"sends requests"| node_article_controller
node_client -->|"sends request"| node_upload_controller
node_user_controller -->|"calls"| node_user_service
node_category_controller -->|"calls"| node_category_service
node_article_controller -->|"calls"| node_article_service
node_user_controller -->|"hashes passwords"| node_md5
node_user_controller -->|"issues tokens"| node_jwt
node_user_controller -->|"reads user context"| node_thread_context
node_user_service -->|"calls"| node_user_mapper
node_user_service -->|"hashes passwords"| node_md5
node_user_service -->|"reads user context"| node_thread_context
node_category_service -->|"calls"| node_category_mapper
node_category_service -->|"reads user context"| node_thread_context
node_article_service -->|"calls"| node_article_mapper
node_article_service -->|"reads user context"| node_thread_context
node_user_mapper -->|"persists user data"| node_postgres
node_category_mapper -->|"persists categories"| node_postgres
node_article_mapper -->|"persists articles"| node_postgres
node_upload_controller -->|"writes upload"| node_local_files
node_login_interceptor -.->|"validates tokens"| node_jwt

click node_user_controller "https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/controller/UserController.java"
click node_category_controller "https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/controller/CategoryController.java"
click node_article_controller "https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/controller/ArticleController.java"
click node_upload_controller "https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/controller/FileUploadController.java"
click node_user_service "https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/service/impl/UserServiceImpl.java"
click node_category_service "https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/service/impl/CategoryServiceImpl.java"
click node_article_service "https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/service/impl/ArticleServiceImpl.java"
click node_user_mapper "https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/mapper/UserMapper.java"
click node_category_mapper "https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/mapper/CategoryMapper.java"
click node_article_mapper "https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/mapper/ArticleMapper.java"
click node_login_interceptor "https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/interceptors/LoginInterceptor.java"
click node_jwt "https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/utils/JwtUtil.java"
click node_thread_context "https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/utils/ThreadLocalUtil.java"
click node_md5 "https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/utils/Md5Util.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_user_controller,node_category_controller,node_article_controller,node_upload_controller,node_client toneBlue
class node_user_service,node_category_service,node_article_service,node_local_files toneAmber
class node_user_mapper,node_category_mapper,node_article_mapper,node_postgres toneMint
class node_login_interceptor,node_jwt,node_thread_context,node_md5 toneRose
```

## Components

### HTTP API

- [User endpoints](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/controller/UserController.java): `src/main/java/com/zhcc/controller/UserController.java`
- [Category endpoints](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/controller/CategoryController.java): `src/main/java/com/zhcc/controller/CategoryController.java`
- [Article endpoints](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/controller/ArticleController.java): `src/main/java/com/zhcc/controller/ArticleController.java`
- [File upload](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/controller/FileUploadController.java): `src/main/java/com/zhcc/controller/FileUploadController.java`

### Domain Services

- [User service](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/service/impl/UserServiceImpl.java): `src/main/java/com/zhcc/service/impl/UserServiceImpl.java`
- [Category service](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/service/impl/CategoryServiceImpl.java): `src/main/java/com/zhcc/service/impl/CategoryServiceImpl.java`
- [Article service](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/service/impl/ArticleServiceImpl.java): `src/main/java/com/zhcc/service/impl/ArticleServiceImpl.java`

### Persistence

- [User mapper](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/mapper/UserMapper.java): `src/main/java/com/zhcc/mapper/UserMapper.java`
- [Category mapper](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/mapper/CategoryMapper.java): `src/main/java/com/zhcc/mapper/CategoryMapper.java`
- [Article mapper](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/mapper/ArticleMapper.java): `src/main/java/com/zhcc/mapper/ArticleMapper.java`
- **PostgreSQL**

### Authentication

- [Login interceptor](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/interceptors/LoginInterceptor.java): `src/main/java/com/zhcc/interceptors/LoginInterceptor.java`
- [JWT utility](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/utils/JwtUtil.java): `src/main/java/com/zhcc/utils/JwtUtil.java`
- [User context](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/utils/ThreadLocalUtil.java): `src/main/java/com/zhcc/utils/ThreadLocalUtil.java`
- [Password hashing](https://github.com/zhcc-b/big-even-backend/blob/main/src/main/java/com/zhcc/utils/Md5Util.java): `src/main/java/com/zhcc/utils/Md5Util.java`

### Other components

- **API client**
- **Local upload files**

## Connections

- API client → User endpoints: sends requests
- API client → Category endpoints: sends requests
- API client → Article endpoints: sends requests
- API client → File upload: sends request
- User endpoints → User service: calls
- Category endpoints → Category service: calls
- Article endpoints → Article service: calls
- User endpoints → Password hashing: hashes passwords
- User endpoints → JWT utility: issues tokens
- User endpoints → User context: reads user context
- User service → User mapper: calls
- User service → Password hashing: hashes passwords
- User service → User context: reads user context
- Category service → Category mapper: calls
- Category service → User context: reads user context
- Article service → Article mapper: calls
- Article service → User context: reads user context
- User mapper → PostgreSQL: persists user data
- Category mapper → PostgreSQL: persists categories
- Article mapper → PostgreSQL: persists articles
- File upload → Local upload files: writes upload
- Login interceptor → JWT utility: validates tokens
