admin-overview-flow.md 25 KB

用户使用流程图 — 管理后台

端口说明: 📱 小程序 | 🖥 管理后台 | 📋 规划师端 | ⚙️ 系统自动

分层说明: 🏠 页面 → 🔗 API → ⚙️ Service → 📦 数据实体

flowchart TD
    %% ============ 颜色定义 ============
    classDef page fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
    classDef api fill:#fff3e0,stroke:#f57c00,stroke-width:1px
    classDef service fill:#e8f5e9,stroke:#388e3c,stroke-width:1px
    classDef data fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1px
    classDef actor fill:#e1f5fe,stroke:#0288d1,stroke-width:2px,stroke-dasharray:5 3

    %% ============ 角色 ============
    RP(("🔧 管理员")):::actor

    %% ================================================================
    %% 阶段一:管理员认证
    %% ================================================================
    subgraph 阶段一[阶段一:管理员认证]
        direction TB
        P1["🏠 管理后台:登录页"]:::page
        P1 -->|"发送验证码"| A1["🔗 POST /api/admin-auth/send-code"]:::api
        A1 -->|"手机号"| S1["⚙️ VerificationCodeService.generateCode()"]:::service
        S1 -->|"验证码, 过期时间"| D1["📦 sms_codes 表(写入)"]:::data

        P1 -->|"验证码登录"| A2["🔗 POST /api/admin-auth/login"]:::api
        A2 -->|"手机号, 验证码"| S2["⚙️ AdminAuthController.login()"]:::service
        S2 -->|"用户信息"| D_USER["📦 users 表(查询)"]:::data

        P1 -->|"密码登录"| A2a["🔗 POST /api/admin-auth/login-by-password"]:::api
        A2a -->|"手机号, 密码"| S2a["⚙️ 密码校验 + JWT生成"]:::service
        S2a -->|"用户信息"| D_USER

        D_USER -->|"用户ID, 角色"| S_JWT["⚙️ JwtConfig.generateToken()"]:::service
        S_JWT -->|"JWT token"| D_JWT["📦 JWT Token(返回前端)"]:::data

        D_JWT -->|"token"| P2["🏠 管理后台:首页"]:::page
        P2 -->|"获取管理员信息"| A3["🔗 POST /api/admin-auth/info"]:::api
        A3 -->|"用户ID(token提取)"| S3["⚙️ 用户信息查询"]:::service
        S3 -->|"管理员信息"| D_USER

        P2 -->|"修改密码"| A4["🔗 POST /api/admin-auth/change-password"]:::api
        A4 -->|"旧密码, 新密码"| S4["⚙️ UserService.setPassword()"]:::service
        S4 -->|"更新密码字段"| D_USER
    end

    %% ================================================================
    %% 阶段二:用户与家庭管理
    %% ================================================================
    subgraph 阶段二[阶段二:用户与家庭管理]
        P2 -->|"用户列表"| B1["🏠 管理后台:用户管理页"]:::page
        B1 -->|"分页参数, 角色筛选"| A5["🔗 POST /api/admin/users"]:::api
        A5 -->|"userId, role, page"| S5["⚙️ UserMapper.selectPage()"]:::service
        S5 -->|"分页用户列表"| D_USER

        B1 -->|"创建用户"| A6["🔗 POST /api/admin/users/create"]:::api
        A6 -->|"手机号, 昵称, 角色"| S6["⚙️ 创建用户记录"]:::service
        S6 -->|"新用户记录"| D_USER

        B1 -->|"用户详情"| A7["🔗 POST /api/admin/users/{id}"]:::api
        A7 -->|"用户ID"| S7["⚙️ UserMapper.selectById()"]:::service

        B1 -->|"更新用户"| A8["🔗 POST /api/admin/users/{id}/update"]:::api
        A8 -->|"用户ID, 更新字段"| S8["⚙️ UserMapper.updateById()"]:::service

        B1 -->|"重置密码"| A9["🔗 POST /api/admin/users/{id}/reset-password"]:::api
        A9 -->|"用户ID, 新密码"| S9["⚙️ UserService.resetPassword()"]:::service

        B1 -->|"搜索用户"| A10["🔗 POST /api/admin/user/search"]:::api
        A10 -->|"关键词"| S10["⚙️ 模糊搜索(nickname/phone/realName)"]:::service

        B1 -->|"删除用户"| A11["🔗 POST /api/admin/users/{id}/delete"]:::api
        A11 -->|"用户ID"| S11["⚙️ UserService.deleteUser()"]:::service

        P2 -->|"孩子管理"| C1["🏠 管理后台:孩子管理页"]:::page
        C1 -->|"分页"| A12["🔗 POST /api/admin/children"]:::api
        C1 -->|"详情"| A13["🔗 POST /api/admin/children/{id}"]:::api
        C1 -->|"更新"| A14["🔗 POST /api/admin/children/{id}/update"]:::api
        C1 -->|"调整积分"| A15["🔗 POST /api/admin/children/{id}/adjust-points"]:::api
        A15 -->|"孩子ID, 积分数额, 原因"| S15["⚙️ 积分调整 + PointsLog写入"]:::service
        S15 -->|"更新余额, 写入流水"| D_POINTS["📦 family_members + points_logs"]:::data

        P2 -->|"家庭管理"| D1["🏠 管理后台:家庭管理页"]:::page
        D1 -->|"列表"| A16["🔗 POST /api/admin/families"]:::api
        D1 -->|"详情"| A17["🔗 POST /api/admin/families/{id}"]:::api
        D1 -->|"成员"| A18["🔗 POST /api/admin/families/{id}/members"]:::api
        D1 -->|"更新"| A19["🔗 POST /api/admin/families/{id}/update"]:::api
        D1 -->|"删除"| A20["🔗 POST /api/admin/families/{id}/delete"]:::api
        A18 -->|"家庭ID"| S18["⚙️ 查询家长列表 + 孩子列表"]:::service
        S18 -->|"家长+孩子数据"| D_FAMILY["📦 families + users + family_members"]:::data
    end

    %% ================================================================
    %% 阶段三:任务与奖励审核
    %% ================================================================
    subgraph 阶段三[阶段三:任务与奖励审核]
        P2 -->|"任务列表"| E1["🏠 管理后台:任务管理页"]:::page
        E1 -->|"分页, 状态筛选"| A21["🔗 POST /api/admin/tasks"]:::api
        A21 -->|"page, status, familyId"| S21["⚙️ TaskMapper.selectPage()"]:::service
        S21 -->|"分页任务列表"| D_TASK["📦 tasks 表"]:::data
        E1 -->|"任务统计"| A22["🔗 POST /api/admin/tasks/stats"]:::api
        A22 -->|""| S22["⚙️ 任务总数 + 今日任务数"]:::service

        P2 -->|"奖励列表"| F1["🏠 管理后台:奖励管理页"]:::page
        F1 -->|"分页, 状态"| A23["🔗 POST /api/admin/rewards"]:::api
        F1 -->|"模板列表"| A24["🔗 POST /api/admin/rewards/templates"]:::api
        F1 -->|"创建模板"| A25["🔗 POST /api/admin/rewards/create"]:::api
        F1 -->|"审批通过/拒绝"| A26["🔗 POST /api/admin/rewards/{id}/approve"]:::api
        A26 -->|"奖励ID, approved标志"| S26["⚙️ 状态更新 + 积分退还(拒绝时)"]:::service
        S26 -->|"更新奖励状态, 退积分"| D_TASK
    end

    %% ================================================================
    %% 阶段四:积分与模板管理
    %% ================================================================
    subgraph 阶段四[阶段四:积分与模板管理]
        P2 -->|"积分日志"| G1["🏠 管理后台:积分管理页"]:::page
        G1 -->|"分页, 孩子ID, 类型"| A27["🔗 POST /api/admin/points/logs"]:::api
        A27 -->|"childId, type, page"| S27["⚙️ PointsLogMapper.selectPage()"]:::service
        S27 -->|"分页积分流水"| D_POINTS
        G1 -->|"积分统计"| A28["🔗 POST /api/admin/points/stats"]:::api
        A28 -->|""| S28["⚙️ 孩子总数统计"]:::service

        P2 -->|"任务模板"| H1["🏠 管理后台:任务模板页"]:::page
        H1 -->|"列表"| A29["🔗 POST /api/admin/task-templates"]:::api
        H1 -->|"详情"| A30["🔗 POST /api/admin/task-templates/{id}"]:::api
        H1 -->|"创建"| A31["🔗 POST /api/admin/task-templates/create"]:::api
        H1 -->|"更新"| A32["🔗 POST /api/admin/task-templates/{id}/update"]:::api
        H1 -->|"删除"| A33["🔗 POST /api/admin/task-templates/{id}/delete"]:::api
        A31 -->|"模板内容"| S31["⚙️ TaskTemplateMapper.insert()"]:::service
        S31 -->|"新模板记录"| D_TTPL["📦 task_templates 表"]:::data
    end

    %% ================================================================
    %% 阶段五:规划师审核与套餐
    %% ================================================================
    subgraph 阶段五[阶段五:规划师审核与套餐]
        P2 -->|"规划师审核"| I1["🏠 管理后台:规划师审核页"]:::page
        I1 -->|"待审批列表"| A34["🔗 POST /api/admin/guide/applications"]:::api
        I1 -->|"待审批数量"| A34a["🔗 POST /api/admin/guide/pending-count"]:::api
        I1 -->|"通过"| A35["🔗 POST /api/admin/guide/approve/{userId}"]:::api
        I1 -->|"驳回"| A36["🔗 POST /api/admin/guide/reject/{userId}"]:::api
        A35 -->|"用户ID"| S35["⚙️ 更新user角色 + 创建admins记录"]:::service
        S35 -->|"更新users表, 插入admins表"| D_USER

        I1 -->|"规划师列表"| A37["🔗 POST /api/admin/guide/guides"]:::api
        I1 -->|"等级筛选"| A38["🔗 POST /api/admin/guide/guides/level/{level}"]:::api

        P2 -->|"套餐管理"| I2["🏠 管理后台:套餐管理页"]:::page
        I2 -->|"套餐列表"| A39["🔗 POST /api/admin/guide/packages"]:::api
        I2 -->|"创建套餐"| A40["🔗 POST /api/admin/guide/packages/create"]:::api
        I2 -->|"更新"| A41["🔗 POST /api/admin/guide/packages/{id}/update"]:::api
        I2 -->|"状态"| A42["🔗 POST /api/admin/guide/packages/{id}/status"]:::api
        A40 -->|"套餐内容"| S40["⚙️ GuidePackageService.save()"]:::service
        S40 -->|"新套餐记录"| D_GPKG["📦 guide_packages 表"]:::data

        P2 -->|"营养师审核"| I3["🏠 管理后台:营养师审核页"]:::page
        I3 -->|"列表"| A43["🔗 POST /api/admin/nutritionist/applications"]:::api
        I3 -->|"通过"| A44["🔗 POST /api/admin/nutritionist/approve/{userId}"]:::api
        I3 -->|"驳回"| A45["🔗 POST /api/admin/nutritionist/reject/{userId}"]:::api
    end

    %% ================================================================
    %% 阶段六:商品与订单
    %% ================================================================
    subgraph 阶段六[阶段六:商品与订单管理]
        P2 -->|"商品管理"| J1["🏠 管理后台:商品管理页"]:::page
        J1 -->|"列表"| A46["🔗 POST /api/admin/product/list"]:::api
        J1 -->|"审核"| A47["🔗 POST /api/admin/product/review"]:::api
        J1 -->|"上下架"| A48["🔗 POST /api/admin/product/shelve"]:::api
        J1 -->|"创建"| A49["🔗 POST /api/admin/product/create"]:::api
        J1 -->|"更新"| A50["🔗 POST /api/admin/product/update"]:::api
        J1 -->|"删除"| A51["🔗 POST /api/admin/product/delete"]:::api
        A47 -->|"productId, action"| S47["⚙️ ProductService.review()"]:::service
        S47 -->|"更新审核状态"| D_PROD["📦 products 表"]:::data

        P2 -->|"订单管理"| K1["🏠 管理后台:订单管理页"]:::page
        K1 -->|"列表"| A52["🔗 POST /api/admin/product/order/list"]:::api
        K1 -->|"详情"| A53["🔗 POST /api/admin/product/order/detail"]:::api
        K1 -->|"发货"| A54["🔗 POST /api/admin/product/order/ship"]:::api
        K1 -->|"退款审核"| A55["🔗 POST /api/admin/product/order/refund/approve"]:::api
        K1 -->|"关闭订单"| A56["🔗 POST /api/admin/product/order/close"]:::api
        A54 -->|"orderNo, trackingNumber, expressCompany"| S54["⚙️ ProductOrderService.ship()"]:::service
        S54 -->|"更新发货状态"| D_ORDER["📦 product_orders 表"]:::data
    end

    %% ================================================================
    %% 阶段七:系统配置
    %% ================================================================
    subgraph 阶段七[阶段七:系统配置]
        P2 -->|"食材管理"| L1["🏠 管理后台:食材管理页"]:::page
        L1 -->|"CRUD"| A57["🔗 POST /api/admin/foods/*"]:::api
        A57 -->|"食材数据"| S57["⚙️ FoodService CRUD"]:::service
        S57 -->|"食材记录"| D_FOOD["📦 foods 表"]:::data

        P2 -->|"能量配置"| L2["🏠 管理后台:五维能量配置页"]:::page
        L2 -->|"来源列表"| A58["🔗 POST /api/admin/energy-config/source-list"]:::api
        A58 -->|""| S58["⚙️ 查询能量来源配置"]:::service
        S58 -->|"能量来源配置列表"| D_ENERGY["📦 energy_source_config 表"]:::data

        P2 -->|"会员管理"| L3["🏠 管理后台:会员管理页"]:::page
        L3 -->|"等级列表"| A59["🔗 POST /api/admin/membership/levels"]:::api
        L3 -->|"概览"| A60["🔗 POST /api/admin/membership/overview"]:::api

        P2 -->|"测评订单"| L4["🏠 管理后台:测评管理页"]:::page
        L4 -->|"待分配列表"| A61["🔗 POST /api/admin/assessment/pending-list"]:::api
        L4 -->|"可用规划师"| A62["🔗 POST /api/admin/assessment/available-guides"]:::api
        L4 -->|"订单列表"| A63["🔗 POST /api/admin/assessment/orders"]:::api
        L4 -->|"分配规划师"| A64["🔗 POST /api/admin/assessment/assign-guide"]:::api
    end

    RP -.- P1
    RP -.- P2

端点明细

管理员认证

端点 说明 端口 请求数据 响应数据
POST /api/admin-auth/send-code 发送管理员登录验证码 🖥管理后台 {phone} {success}
POST /api/admin-auth/login 验证码登录 🖥管理后台 {phone, code} {token, adminId, username, role, roles}
POST /api/admin-auth/login-by-password 密码登录 🖥管理后台 {phone, password} {token, adminId, username, role, roles}
POST /api/admin-auth/info 获取当前管理员信息 🖥管理后台 Header: Authorization {id, nickname, phone, role, roles, user}
POST /api/admin-auth/change-password 修改密码 🖥管理后台 {oldPassword, newPassword} {success}
POST /api/admin-auth/update-info 更新个人信息 🖥管理后台 {nickname, phone} {nickname, phone}
POST /api/admin-auth/reset-password 验证码重置密码 🖥管理后台 {phone, code, newPassword} {success}

用户管理

端点 说明 端口 请求数据 响应数据
POST /api/admin/users 用户分页列表 🖥管理后台 {page, size, role, nickname, phone} Page<User>
POST /api/admin/users/create 创建用户 🖥管理后台 {phone, nickname, role, realName} User
POST /api/admin/users/{id} 用户详情 🖥管理后台 path: id User
POST /api/admin/users/{id}/update 更新用户 🖥管理后台 path: id, body: User字段 {success}
POST /api/admin/users/{id}/reset-password 重置用户密码 🖥管理后台 path: id, body: {password} {success}
POST /api/admin/user/search 搜索用户(下拉选择用) 🖥管理后台 {keyword} List<User>
POST /api/admin/users/{id}/delete 删除用户 🖥管理后台 path: id {success}

孩子管理

端点 说明 端口 请求数据 响应数据
POST /api/admin/children 孩子分页列表 🖥管理后台 {page, size} Page<FamilyMember>
POST /api/admin/children/{id} 孩子详情 🖥管理后台 path: id FamilyMember
POST /api/admin/children/{id}/update 更新孩子信息 🖥管理后台 path: id, body: FamilyMember字段 {success}
POST /api/admin/children/{id}/adjust-points 手动调整孩子积分 🖥管理后台 path: id, body: {amount, reason} {newBalance}

家庭管理

端点 说明 端口 请求数据 响应数据
POST /api/admin/families 家庭分页列表 🖥管理后台 {page, size, name} Page<Family>
POST /api/admin/families/{id} 家庭详情 🖥管理后台 path: id Family
POST /api/admin/families/{id}/members 家庭成员详情(含家长+孩子) 🖥管理后台 path: id {family, parents, children}
POST /api/admin/families/{id}/update 更新家庭信息 🖥管理后台 path: id, body: Family字段 {success}
POST /api/admin/families/{id}/delete 删除家庭 🖥管理后台 path: id {success}

任务管理与奖励

端点 说明 端口 请求数据 响应数据
POST /api/admin/tasks 任务分页列表 🖥管理后台 {page, size, status, familyId} Page<Task>
POST /api/admin/tasks/stats 任务统计 🖥管理后台 {total, today}
POST /api/admin/rewards 奖励分页列表 🖥管理后台 {page, size, status, familyId} Page<Reward>
POST /api/admin/rewards/templates 获取奖励模板列表 🖥管理后台 List<Reward>
POST /api/admin/rewards/create 创建奖励模板 🖥管理后台 Reward字段 {id}
POST /api/admin/rewards/{id}/approve 审批奖励兑换 🖥管理后台 path: id, body: {approved} {success}

积分管理

端点 说明 端口 请求数据 响应数据
POST /api/admin/points/logs 积分日志分页 🖥管理后台 {page, size, childId, type} Page<PointsLog>
POST /api/admin/points/stats 积分统计概览 🖥管理后台 {totalChildren}

任务模板管理

端点 说明 端口 请求数据 响应数据
POST /api/admin/task-templates 模板分页列表 🖥管理后台 {page, size, category, difficulty, isActive} Page<TaskTemplate>
POST /api/admin/task-templates/{id} 模板详情 🖥管理后台 path: id TaskTemplate
POST /api/admin/task-templates/create 创建模板 🖥管理后台 TaskTemplate字段 {id}
POST /api/admin/task-templates/{id}/update 更新模板 🖥管理后台 path: id, body: TaskTemplate字段 {success}
POST /api/admin/task-templates/{id}/delete 删除模板 🖥管理后台 path: id {success}

规划师审核

端点 说明 端口 请求数据 响应数据
POST /api/admin/guide/applications 规划师申请列表 🖥管理后台 {page, size, status} Page<User>
POST /api/admin/guide/applications/pending 待审批申请列表 🖥管理后台 List<GuideApplication>
POST /api/admin/guide/approve/{userId} 通过规划师审核 🖥管理后台 path: userId {success}
POST /api/admin/guide/reject/{userId} 驳回规划师审核 🖥管理后台 path: userId, body: {reason} {success}
POST /api/admin/guide/pending-count 待审核数量 🖥管理后台 {count}
POST /api/admin/guide/applications/{id}/approve 通过申请(AdminGuideController) 🖥管理后台 path: id, param: adminId {success}
POST /api/admin/guide/applications/{id}/reject 驳回申请 🖥管理后台 path: id, param: adminId, reason {success}
POST /api/admin/guide/guides 规划师列表 🖥管理后台 List<Guide>
POST /api/admin/guide/guides/level/{level} 按等级筛选规划师 🖥管理后台 path: level List<Guide>

套餐与商品管理

端点 说明 端口 请求数据 响应数据
POST /api/admin/guide/packages 套餐列表 🖥管理后台 List<GuidePackage>
POST /api/admin/guide/packages/create 创建套餐 🖥管理后台 GuidePackage字段 {success}
POST /api/admin/guide/packages/{id}/update 更新套餐 🖥管理后台 path: id, body: GuidePackage字段 {success}
POST /api/admin/guide/packages/{id}/status 更新套餐状态 🖥管理后台 path: id, param: status {success}
POST /api/admin/guide/packages/pending 待审核套餐数量 🖥管理后台 {count}
POST /api/admin/product/list 商品分页列表 🖥管理后台 {page, size, status, productType, keyword} {records, total}
POST /api/admin/product/review 审核商品(通过/驳回) 🖥管理后台 {productId, action, reason} Result
POST /api/admin/product/shelve 商品上下架 🖥管理后台 {productId, shelve} Result
POST /api/admin/product/create 创建商品 🖥管理后台 ProductCreateRequest ProductDTO
POST /api/admin/product/update 更新商品 🖥管理后台 ProductCreateRequest ProductDTO
POST /api/admin/product/delete 删除商品 🖥管理后台 {productId} Result
POST /api/admin/product/detail 商品详情 🖥管理后台 {productId} ProductDTO

订单管理

端点 说明 端口 请求数据 响应数据
POST /api/admin/product/order/list 订单分页列表 🖥管理后台 {page, size, status, keyword, startDate, endDate} {records, total}
POST /api/admin/product/order/detail 订单详情 🖥管理后台 {orderNo} ProductOrderDTO
POST /api/admin/product/order/ship 订单发货 🖥管理后台 {orderNo, trackingNumber, expressCompany} Result
POST /api/admin/product/order/close 关闭订单 🖥管理后台 {orderNo} Result
POST /api/admin/product/order/refund/approve 退款审核通过 🖥管理后台 {orderNo} Result
POST /api/admin/product/order/refund/reject 退款审核拒绝 🖥管理后台 {orderNo} Result

系统配置

端点 说明 端口 请求数据 响应数据
POST /api/admin/foods/list 食材列表 🖥管理后台 {category} List<Map>
POST /api/admin/foods/create 新增食材 🖥管理后台 Food字段 Food
POST /api/admin/foods/update 更新食材 🖥管理后台 Food字段 {success}
POST /api/admin/foods/delete 删除食材 🖥管理后台 {id} {success}
POST /api/admin/foods/detail 食材详情(含应季月份) 🖥管理后台 {id} Map
POST /api/admin/foods/saveMonths 保存应季月份 🖥管理后台 {id, months} {success}
POST /api/admin/energy-config/source-list 能量来源配置列表 🖥管理后台 List<Map>
POST /api/admin/membership/levels 会员等级列表 🖥管理后台 List<MembershipLevel>
POST /api/admin/membership/overview 会员概览统计 🖥管理后台 {freeCount, familyCount, providerCount, ...}
POST /api/admin/membership/upgrade-records 会员升级记录 🖥管理后台 {page, size} Page<MemberUpgradeRecord>
POST /api/admin/assessment/pending-list 待分配规划师的测评列表 🖥管理后台 {page, size} {records, total}
POST /api/admin/assessment/available-guides 可选规划师列表 🖥管理后台 List<Map>
POST /api/admin/assessment/orders 测评订单列表 🖥管理后台 {page, size, status, keyword} {records, total}
POST /api/admin/assessment/assign-guide 分配规划师 🖥管理后台 {appointmentId, guideId} null
POST /api/admin/assessment/change-guide 更换规划师 🖥管理后台 {orderId, guideId} null
POST /api/admin/nutritionist/applications 营养师申请列表 🖥管理后台 {page, size, status} Page<User>
POST /api/admin/nutritionist/approve/{userId} 通过营养师审核 🖥管理后台 path: userId {success}
POST /api/admin/nutritionist/reject/{userId} 驳回营养师审核 🖥管理后台 path: userId, body: {reason} {success}

完整性分析

# 维度 评估 说明
1 流程完整性 ✅ 完整 覆盖管理员认证、用户/孩子/家庭管理、任务/奖励审核、积分/模板管理、规划师/营养师审核、商品/订单管理、系统配置共7个阶段
2 异常路径 ⚠️ 部分覆盖 Token过期引导重新登录已覆盖;验证码错误、密码错误、重复手机号等在Service层处理,前端已有提示
3 端点覆盖 ✅ 完整 52+个端点全部映射到流程图中,涵盖AdminAuthController、AdminController、AdminGuideController、AdminProductController、AdminProductOrderController、AdminFoodController、AdminEnergyConfigController
4 角色覆盖 ✅ 完整 管理员(admin)全量管理功能覆盖;规划师(teacher)审核等跨角色操作已标注
5 数据实体 ✅ 完整 users、family_members、families、tasks、rewards、points_logs、task_templates、guide_packages、products、product_orders、foods、admins等表均在图中映射
6 一致性 ✅ 与代码一致 所有端点路径与实际Controller中的@PostMapping匹配,无重复路由