Files
汉秋 d2fe5d71e4 Add TravelAlbum, ProfileSpace, and wired camera transfer modules.
Introduce travel album entry with Sony PTP tethering pipeline, profile space settings page, home routing updates, Launch Screen storyboard, and related tests/docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-30 09:41:05 +08:00

2.9 KiB
Raw Permalink Blame History

ProfileSpace 模块业务逻辑

模块职责

ProfileSpace 模块负责首页“空间设置”入口,对齐 Android space_settings -> ProfileInfoRoute 的个人空间配置能力。

该模块聚焦摄影师在当前景区下的公开展示和接单配置:

  • 拉取个人空间资料。
  • 修改头像、昵称和简介。
  • 管理个人标签、拍摄说明标签和相机设备。
  • 配置工作日与法定节假日营业时间。
  • 配置接单状态。
  • 展示未来 7 天日程,并支持添加、删除和拨打客户电话。

相册管理不属于本模块,仍由 Assets/相册模块承接。

核心对象

  • ProfileSpaceView:空间配置页 UI负责资料展示、表单输入、日程展示和保存入口。
  • ProfileSpaceViewModel:维护编辑草稿、原始快照、脏状态、校验和提交逻辑。
  • ProfileSpaceInfoResponse:空间配置详情响应。
  • UpdateProfileSpaceRequest:空间配置更新请求。
  • ProfileAPI:封装空间配置读取和更新接口,同时复用用户昵称、头像更新接口。
  • ScheduleAPI:复用已有排班新增和删除接口。
  • OSSUploadService:复用头像上传能力。

加载流程

  1. 首页点击 space_settings 后进入 ProfileSpaceView
  2. 页面从 AccountContext.currentScenic 读取当前景区 ID。
  3. ProfileSpaceViewModel.load 调用 ProfileAPI.profileSpaceInfo
  4. 接口成功后回填头像、姓名、昵称、简介、标签、设备、营业时间、接单状态和日程 map。
  5. ViewModel 保存一份 ProfileSpaceEditableSnapshot,用于判断保存按钮是否可用。

缺少当前景区时,页面展示缺少景区空态,不发起空间配置接口。

保存流程

  1. 用户修改表单后ViewModel 根据当前草稿和原始快照判断 hasChanges
  2. 点击保存时先校验:
    • 昵称不能为空。
    • 标签和拍摄说明均最多 8 个,单个最多 20 字,禁止空值和重复。
    • 四个营业时间必须填写。
    • 工作日、节假日开始时间必须早于结束时间。
  3. 如头像有变化,先调用 OSSUploadService.uploadUserAvatar 上传,再调用 ProfileAPI.updateUserAvatarURL 回写头像。
  4. 如昵称有变化,调用 ProfileAPI.updateUserInfo(nickname:)
  5. 调用 ProfileAPI.updateProfileSpaceInfo 保存空间配置。
  6. 保存成功后刷新原始快照,清除头像暂存,并同步 AccountContext 和账号快照中的昵称/头像展示信息。

保存失败时保留当前草稿和未保存状态,页面展示错误信息。

日程流程

空间配置页展示从空间详情接口返回的 schedule map并在页面内显示从今天起连续 7 天的日程。

添加日程复用现有 ScheduleAddView,提交逻辑仍由 Schedule 模块负责。页面返回后会重新加载空间配置。

删除日程调用 ScheduleAPI.deleteSchedule,成功后重新加载空间配置,保持日程来源一致。