Skip to content

数据模型

相关依赖

app/src/main/java/com/joker/kit/core/model 汇总了项目中所有可序列化的数据结构:实体、网络响应、请求体以及常用的基础模型。它们作为“数据层的语言”在网络、数据库、DataStore、Repository 之间传递,确保上下游使用统一的字段与类型。

目录结构

目录说明
entity/领域实体:AuthUserGoods 等,与业务语义一致,可直接序列化。
request/请求体:例如 GoodsSearchRequest
network/通用网络响应封装:NetworkResponse<T>NetworkPageData<T>NetworkPageMeta
common/常用基础模型,如仅返回 ID 的接口可复用 IdIds

所有模型默认使用 @Serializable,可通过 kotlinx.serialization 在 Retrofit/Ktor、DataStore 等场景统一解析。

关键实体(可根据业务调整)

Auth

  • 描述认证 token 与刷新 token。
  • 包含 isExpired()isRefreshTokenExpired()shouldRefresh() 等辅助方法,方便仓库或拦截器判断是否需要刷新。

User

  • 描述用户信息(头像、昵称、手机号、状态等),配合 UserInfoRepositoryUserInfoStoreRepository 使用。
  • 字段仅供参考,实际项目可依业务调整;当 DataStore 读写用户信息时,直接序列化 User 实体即可。

Goods

  • 用于演示网络分页解析的示例实体,与 GoodsRepository 的演示接口对应;如果项目无商品模块可删除或替换成自己的实体。
  • 包含 picscontentPics 等可选字段,展示如何在数据类里处理可选/列表字段。

网络模型(建议按业务自定义)

  • NetworkResponse<T>:当前示例假设后端返回 code/message/data 结构,code == 1000 视为成功。若你的接口字段不同,请在此文件中对齐定义。
  • NetworkPageData<T> / NetworkPageMeta:示例分页结构(list + pagination.total/size/page),仅供参考。很多接口会把分页字段直接裸露在顶层或命名不同,请按自己的接口标准修改,以免解析出错。

请求模型

  • 例如 GoodsSearchRequest,记录 pagesize 等分页参数,方便仓库构建请求并保持类型安全。
  • 所有请求体均支持 @Serializable,可直接作为 Retrofit/Ktor 的请求对象。

扩展指南

  1. 新增实体:在 entity/ 下创建数据类,并加上 @Serializable;如包含计算方法,可直接在数据类内实现。
  2. 新增请求体:在 request/ 下编写,配合仓库使用,避免在 ViewModel 中手写 Map。
  3. 更新网络模型:如果后端响应结构发生变化,可在 network/ 内调整,再统一影响所有仓库。
  4. 与其他模块联动:新增实体后,别忘了更新对应的 Repository、DataSource、文档,保持字段含义一致。

以上模型都是示例,可随项目实际接口/数据库结构自由调整;关键是保证数据层、仓库、文档对字段的理解一致。借助统一的数据模型层,数据在网络、数据库、DataStore 与 UI 之间传递更加可靠,也能让项目二次开发时更快上手。