# zzw7845/campus-errand architecture

> Architecture diagram of the GitHub repository zzw7845/campus-errand, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/zzw7845/campus-errand
- Repository: https://github.com/zzw7845/campus-errand

## Overview

福U跑腿 is a campus errand platform with a uni-app user/runner client, an Ant Design Pro operations console, and a Spring Boot backend. The main workflow is user or runner activity through the mini-program, backend order handling and payment, then operational oversight through the console. The README also describes account and permission management, campus/address configuration, messaging, disputes, withdrawals, storage, and system monitoring. The supplied excerpts and index establish several backend calls; most frontend-to-backend and unsampled subsystem links remain dashed because their wiring was not shown.

Main entry points: [`fuu-run-admin/src/app.tsx`](https://github.com/zzw7845/campus-errand/blob/master/fuu-run-admin/src/app.tsx) (Admin console), [`fuu-run/fuu-system/src/main/java/com/karrecy/system/service/LoginService.java`](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-system/src/main/java/com/karrecy/system/service/LoginService.java) (Authentication service), [`fuu-run/fuu-order/src/main/java/com/karrecy/order/service/IOrderMainService.java`](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-order/src/main/java/com/karrecy/order/service/IOrderMainService.java) (Order lifecycle), [`fuu-run-uni/request/apis/order.js`](https://github.com/zzw7845/campus-errand/blob/master/fuu-run-uni/request/apis/order.js) (Client API layer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Mini-program"]
  node_mini["User and runner app<br/>[order.vue]"]
  node_mini_order["Order journeys<br/>[list.vue]"]
  node_mini_account["Login and profile<br/>[login.vue]"]
  node_mini_chat["Order chat<br/>[chat.vue]"]
  node_mini_api["Client API layer<br/>[order.js]"]
end

subgraph group_console["Admin console"]
  node_admin_ui["Admin console<br/>[app.tsx]"]
  node_admin_orders["Order operations<br/>[index.tsx]"]
  node_admin_users["Users and permissions<br/>[index.tsx]"]
  node_admin_funds["Capital management<br/>[index.tsx]"]
  node_admin_ops["Campus and system ops<br/>[index.tsx]"]
  node_admin_other["Work orders, OSS, monitoring<br/>[index.tsx]"]
end

subgraph group_order["Orders and service"]
  node_order_api["Order API"]
  node_order_service["Order lifecycle"]
  node_address_api["Campus and address APIs"]
  node_chat_api["Chat and disputes"]
end

subgraph group_finance["Payments and funds"]
  node_finance_api["Payment endpoints"]
  node_finance_service["Payment and capital services"]
end

subgraph group_platform["Identity and operations"]
  node_auth_api["Login endpoints"]
  node_identity["Authentication service<br/>[LoginService.java]"]
  node_permissions["Roles and permissions"]
  node_oss["Object storage<br/>[OssClient.java]"]
  node_realtime["WebSocket runtime"]
  node_statistics["Daily statistics"]
  node_redis[("Redis queues and cache<br/>[QueueUtils.java]")]
  node_mysql[("Relational data<br/>[User.java]")]
end

node_student(("Student / runner"))
node_admin_actor(("Operations staff"))
node_wechat{{"WeChat services"}}
node_email{{"Email service"}}

node_student -.->|"uses"| node_mini
node_mini -.->|"opens"| node_mini_order
node_mini -.->|"opens"| node_mini_account
node_mini_order -.->|"requests"| node_mini_api
node_mini_account -.->|"requests"| node_mini_api
node_mini_chat -.->|"requests"| node_mini_api
node_mini_api -.->|"calls"| node_order_api
node_admin_actor -.->|"uses"| node_admin_ui
node_admin_ui -.->|"opens"| node_admin_orders
node_admin_ui -.->|"opens"| node_admin_users
node_admin_ui -.->|"opens"| node_admin_funds
node_admin_ui -.->|"opens"| node_admin_ops
node_admin_orders -.->|"requests"| node_order_api
node_admin_users -.->|"requests"| node_auth_api
node_admin_funds -.->|"requests"| node_finance_api
node_order_api -->|"delegates"| node_order_service
node_auth_api -.->|"delegates"| node_identity
node_identity -->|"exchanges code"| node_wechat
node_identity -->|"loads permissions"| node_permissions
node_identity -->|"reads and writes"| node_mysql
node_order_service -.->|"returns payment data"| node_finance_service
node_finance_api -.->|"delegates"| node_finance_service
node_order_service -.->|"persists orders"| node_mysql
node_chat_api -.->|"supports chat"| node_realtime
node_admin_other -.->|"manages storage"| node_oss
node_statistics -->|"calculates statistics"| node_order_service
node_statistics -->|"reads visits"| node_redis
node_statistics -->|"saves totals"| node_mysql
node_admin_other -.->|"notifies staff"| node_email

click node_mini "https://github.com/zzw7845/campus-errand/blob/master/fuu-run-uni/pages/tabBar/order/order.vue"
click node_mini_order "https://github.com/zzw7845/campus-errand/blob/master/fuu-run-uni/pages/API/order/list/list.vue"
click node_mini_account "https://github.com/zzw7845/campus-errand/blob/master/fuu-run-uni/pages/API/login/login.vue"
click node_mini_chat "https://github.com/zzw7845/campus-errand/blob/master/fuu-run-uni/pages/API/chat/chat.vue"
click node_mini_api "https://github.com/zzw7845/campus-errand/blob/master/fuu-run-uni/request/apis/order.js"
click node_admin_ui "https://github.com/zzw7845/campus-errand/blob/master/fuu-run-admin/src/app.tsx"
click node_admin_orders "https://github.com/zzw7845/campus-errand/blob/master/fuu-run-admin/src/pages/order/index.tsx"
click node_admin_users "https://github.com/zzw7845/campus-errand/blob/master/fuu-run-admin/src/pages/userManage/pc/index.tsx"
click node_admin_funds "https://github.com/zzw7845/campus-errand/blob/master/fuu-run-admin/src/pages/capital/flow/index.tsx"
click node_admin_ops "https://github.com/zzw7845/campus-errand/blob/master/fuu-run-admin/src/pages/school/campus/index.tsx"
click node_order_api "https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/order/OrderController.java"
click node_order_service "https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-order/src/main/java/com/karrecy/order/service/IOrderMainService.java"
click node_address_api "https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/address/AddressController.java"
click node_chat_api "https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/order/OrderChatController.java"
click node_auth_api "https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/system/LoginController.java"
click node_identity "https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-system/src/main/java/com/karrecy/system/service/LoginService.java"
click node_permissions "https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-system/src/main/java/com/karrecy/system/service/PermissionService.java"
click node_finance_api "https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/pay/MoneyController.java"
click node_finance_service "https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-payment/src/main/java/com/karrecy/payment/service/impl/PayServiceImpl.java"
click node_oss "https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-oss/src/main/java/com/karrecy/oss/core/OssClient.java"
click node_realtime "https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-framework/src/main/java/com/karrecy/framework/handler/NioWebSocketHandler.java"
click node_statistics "https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-admin/src/main/java/com/karrecy/admin/schedule/StatisticsService.java"
click node_redis "https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-common/src/main/java/com/karrecy/common/utils/redis/QueueUtils.java"
click node_mysql "https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-common/src/main/java/com/karrecy/common/core/domain/entity/User.java"
click node_admin_other "https://github.com/zzw7845/campus-errand/blob/master/fuu-run-admin/src/pages/workorder/runnerApply/index.tsx"

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_mini,node_mini_order,node_mini_account,node_mini_chat,node_mini_api toneBlue
class node_admin_ui,node_admin_orders,node_admin_users,node_admin_funds,node_admin_ops,node_admin_other toneAmber
class node_order_api,node_order_service,node_address_api,node_chat_api toneMint
class node_finance_api,node_finance_service toneRose
class node_auth_api,node_identity,node_permissions,node_oss,node_realtime,node_statistics,node_redis,node_mysql,node_student,node_admin_actor,node_wechat,node_email toneIndigo
```

## Components

### Mini-program

- [User and runner app](https://github.com/zzw7845/campus-errand/blob/master/fuu-run-uni/pages/tabBar/order/order.vue): `fuu-run-uni/pages/tabBar/order/order.vue`
- [Order journeys](https://github.com/zzw7845/campus-errand/blob/master/fuu-run-uni/pages/API/order/list/list.vue): `fuu-run-uni/pages/API/order/list/list.vue`
- [Login and profile](https://github.com/zzw7845/campus-errand/blob/master/fuu-run-uni/pages/API/login/login.vue): `fuu-run-uni/pages/API/login/login.vue`
- [Order chat](https://github.com/zzw7845/campus-errand/blob/master/fuu-run-uni/pages/API/chat/chat.vue): `fuu-run-uni/pages/API/chat/chat.vue`
- [Client API layer](https://github.com/zzw7845/campus-errand/blob/master/fuu-run-uni/request/apis/order.js): `fuu-run-uni/request/apis/order.js`

### Admin console

- [Admin console](https://github.com/zzw7845/campus-errand/blob/master/fuu-run-admin/src/app.tsx): `fuu-run-admin/src/app.tsx`
- [Order operations](https://github.com/zzw7845/campus-errand/blob/master/fuu-run-admin/src/pages/order/index.tsx): `fuu-run-admin/src/pages/order/index.tsx`
- [Users and permissions](https://github.com/zzw7845/campus-errand/blob/master/fuu-run-admin/src/pages/userManage/pc/index.tsx): `fuu-run-admin/src/pages/userManage/pc/index.tsx`
- [Capital management](https://github.com/zzw7845/campus-errand/blob/master/fuu-run-admin/src/pages/capital/flow/index.tsx): `fuu-run-admin/src/pages/capital/flow/index.tsx`
- [Campus and system ops](https://github.com/zzw7845/campus-errand/blob/master/fuu-run-admin/src/pages/school/campus/index.tsx): `fuu-run-admin/src/pages/school/campus/index.tsx`
- [Work orders, OSS, monitoring](https://github.com/zzw7845/campus-errand/blob/master/fuu-run-admin/src/pages/workorder/runnerApply/index.tsx): `fuu-run-admin/src/pages/workorder/runnerApply/index.tsx`

### Orders and service

- [Order API](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/order/OrderController.java): `fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/order/OrderController.java`
- [Order lifecycle](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-order/src/main/java/com/karrecy/order/service/IOrderMainService.java): `fuu-run/fuu-order/src/main/java/com/karrecy/order/service/IOrderMainService.java`
- [Campus and address APIs](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/address/AddressController.java): `fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/address/AddressController.java`
- [Chat and disputes](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/order/OrderChatController.java): `fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/order/OrderChatController.java`

### Payments and funds

- [Payment endpoints](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/pay/MoneyController.java): `fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/pay/MoneyController.java`
- [Payment and capital services](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-payment/src/main/java/com/karrecy/payment/service/impl/PayServiceImpl.java): `fuu-run/fuu-payment/src/main/java/com/karrecy/payment/service/impl/PayServiceImpl.java`

### Identity and operations

- [Login endpoints](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/system/LoginController.java): `fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/system/LoginController.java`
- [Authentication service](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-system/src/main/java/com/karrecy/system/service/LoginService.java): `fuu-run/fuu-system/src/main/java/com/karrecy/system/service/LoginService.java`
- [Roles and permissions](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-system/src/main/java/com/karrecy/system/service/PermissionService.java): `fuu-run/fuu-system/src/main/java/com/karrecy/system/service/PermissionService.java`
- [Object storage](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-oss/src/main/java/com/karrecy/oss/core/OssClient.java): `fuu-run/fuu-oss/src/main/java/com/karrecy/oss/core/OssClient.java`
- [WebSocket runtime](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-framework/src/main/java/com/karrecy/framework/handler/NioWebSocketHandler.java): `fuu-run/fuu-framework/src/main/java/com/karrecy/framework/handler/NioWebSocketHandler.java`
- [Daily statistics](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-admin/src/main/java/com/karrecy/admin/schedule/StatisticsService.java): `fuu-run/fuu-admin/src/main/java/com/karrecy/admin/schedule/StatisticsService.java`
- [Redis queues and cache](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-common/src/main/java/com/karrecy/common/utils/redis/QueueUtils.java): `fuu-run/fuu-common/src/main/java/com/karrecy/common/utils/redis/QueueUtils.java`
- [Relational data](https://github.com/zzw7845/campus-errand/blob/master/fuu-run/fuu-common/src/main/java/com/karrecy/common/core/domain/entity/User.java): `fuu-run/fuu-common/src/main/java/com/karrecy/common/core/domain/entity/User.java`

### Other components

- **Student / runner**
- **Operations staff**
- **WeChat services**
- **Email service**

## Connections

- Student / runner → User and runner app: uses
- User and runner app → Order journeys: opens
- User and runner app → Login and profile: opens
- Order journeys → Client API layer: requests
- Login and profile → Client API layer: requests
- Order chat → Client API layer: requests
- Client API layer → Order API: calls
- Operations staff → Admin console: uses
- Admin console → Order operations: opens
- Admin console → Users and permissions: opens
- Admin console → Capital management: opens
- Admin console → Campus and system ops: opens
- Order operations → Order API: requests
- Users and permissions → Login endpoints: requests
- Capital management → Payment endpoints: requests
- Order API → Order lifecycle: delegates (evidence: `fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/order/OrderController.java`)
- Login endpoints → Authentication service: delegates (evidence: `fuu-run/fuu-admin/src/main/java/com/karrecy/admin/controller/system/LoginController.java`)
- Authentication service → WeChat services: exchanges code (evidence: `fuu-run/fuu-system/src/main/java/com/karrecy/system/service/LoginService.java`)
- Authentication service → Roles and permissions: loads permissions (evidence: `fuu-run/fuu-system/src/main/java/com/karrecy/system/service/LoginService.java`)
- Authentication service → Relational data: reads and writes (evidence: `fuu-run/fuu-system/src/main/java/com/karrecy/system/service/LoginService.java`)
- Order lifecycle → Payment and capital services: returns payment data
- Payment endpoints → Payment and capital services: delegates
- Order lifecycle → Relational data: persists orders
- Chat and disputes → WebSocket runtime: supports chat
- Work orders, OSS, monitoring → Object storage: manages storage
- Daily statistics → Order lifecycle: calculates statistics (evidence: `fuu-run/fuu-admin/src/main/java/com/karrecy/admin/schedule/StatisticsService.java`)
- Daily statistics → Redis queues and cache: reads visits (evidence: `fuu-run/fuu-admin/src/main/java/com/karrecy/admin/schedule/StatisticsService.java`)
- Daily statistics → Relational data: saves totals (evidence: `fuu-run/fuu-admin/src/main/java/com/karrecy/admin/schedule/StatisticsService.java`)
- Work orders, OSS, monitoring → Email service: notifies staff
