安卓应用市场后端管理系统V1.0阶段性总结

项目整体总结

这是一套Golang + GORM + Gin 实现的安卓应用市场后端管理系统,配套单页 HTML 前端,采用经典分层架构:model数据模型repository仓储层service业务层handler控制器层,使用 JWT 鉴权,支持管理员、普通用户两套身份体系。

一、技术栈

  1. 后端 :Go、Gin、GORM、MySQL,bcrypt 密码加密、JWT 身份认证;APK 解析依赖androidbinary库,实现 APK 解析、图标提取。
  2. 前端:原生 HTML+JavaScript,wangEditor5 富文本编辑器;无框架,单页面 SPA,省市级联选择。
  3. 存储:本地文件存储 APK、图标、图片视频;自定义静态文件处理器支持 HTTP‑Range 断点续传,防路径穿越。

二、数据库模型(核心数据表)

表格

用途
admin 管理员账号,密码 bcrypt 哈希,token_version用于密码修改后作废旧 token
user 普通注册用户,支持上传权限限制,同样有token_version字段
app_info 应用主表,记录应用名称、包名、审核状态、上下架状态、上传者信息、省市、强制下架理由
app_version 应用版本表,一个应用多条版本,存储 APK 地址、版本号、文件大小,复合唯一索引防止同应用重复版本号
comment 评论评分表,支持顶级评论 + 跟评,跟评不计入评分统计
download_log 下载行为记录表,统计下载次数,每次下载写入记录
tag 分类标签表,支持标签审核,管理员直接通过,普通用户创建需要审核,标签重命名同步更新应用分类快照
upload_appeal 上传权限申诉表,被限制上传的用户提交申诉,管理员审批,通过解除限制
site_stat 站点统计表,仅一条记录记录网站 PV 访问量

关键业务常量

  1. 应用状态:上下架(0 下架 / 1 上架);审核状态draft草稿/pending待审核/approved已通过/rejected已拒绝必须审核通过才可上架
  2. 标签、申诉同样拥有 pending/approved/rejected 审核状态。
  3. JWT 中携带token_version,修改 / 重置密码版本号 + 1,旧令牌直接失效,无需等待过期。

三、四层后端架构

1.model 层

定义 gorm 结构体、字段约束、索引、表名、状态常量;不写业务逻辑。

2.repository 仓储层

只做数据库操作,CRUD、事务、复杂 SQL。

  • 事务场景:新建应用同时创建版本;删除应用事务级删除评论、下载记录、版本;
  • 批量查询避免 N+1:批量统计下载量、批量评分统计;
  • UNION 查询合并admin+user作为上传者列表;
  • 原子更新:token_version自增、PV 访问量自增。

3.service 业务层,实现核心业务规则

  1. 管理员业务:服务启动检测 admin 表为空,读取配置自动初始化超级管理员账号。
  2. 应用上传业务
    • 用户上传:普通用户上传新应用,包名校查重;管理员豁免包名校验;
    • APK 处理:保存文件、解析包名 / 版本、提取图标;失败自动清理磁盘孤儿文件,避免残留垃圾文件;
    • 新建应用默认draft草稿+下架;用户需要提交申请上架进入 pending 待审核队列;
    • 已审核通过的应用上传新版本,会自动置为待审核、强制下架,需要管理员重新审核;
  3. 审核业务
    • 管理员审核通过:自动上架;
    • 管理员拒绝:下架,记录拒绝意见;
    • 管理员可强制上架应用下架,填写强制下架理由;
  4. 权限体系
    • 用户上传可被管理员限制;被限制用户无法上传 APK,可提交申诉;管理员审批申诉通过解除限制;
    • 用户注销 / 管理员删除用户:级联删除用户全部应用、版本、静态文件、评论、下载记录、申诉记录;
  5. 标签业务:管理员创建标签直接通过,普通用户创建标签进入待审核;标签删除自动清空应用对该标签的引用;重命名同步更新应用分类快照。
  6. 密码逻辑 :修改密码、重置密码都会token_version+1,所有旧登录令牌失效。

4.handler 控制器层

接收 http 请求,参数校验,调用 service,统一返回util.Success/Fail包装的 JSON 响应; 中间件:

  • JWTAuth:仅允许管理员访问接口;
  • LoginAuth:管理员、登录普通用户都可以访问;
  • 跨域中间件 CORS;
  • 自定义静态资源服务,支持断点续传 apk 文件。

四、主要接口分组

  1. 公开接口(游客访问)
    • 用户注册、统一登录;
    • 获取上架应用列表、应用详情;提交评论;获取下载地址;站点统计;获取已审核标签列表。
  2. 登录用户接口(admin/user 均可)
    • 修改密码、查看个人资料;
    • 上传新应用、更新版本;
    • 我的应用:编辑信息、申请上架、手动下架;
    • 创建标签、提交上传权限申诉;富文本图片、视频上传。
  3. 管理员专属接口
    • 管理员登录;
    • 全部应用管理:分页查询、编辑、强制下架、删除(仅下架应用允许删除);
    • 审核队列:应用审核通过 / 拒绝;
    • 用户管理:查看全部上传者列表,重置密码,限制上传,删除用户;
    • 标签完整管理:审核、重命名、删除标签;
    • 申诉审批:处理用户上传权限申诉。

五、前端 SPA 页面(index.html + js 脚本)

纯前端页面,无框架,localStorage 存储 token、角色信息。 页面视图:市场首页、我的应用、用户管理、管理员全部应用、应用审核队列、标签管理、申诉审批、应用详情。 弹窗组件:登录注册、修改密码、上传 APK、编辑应用、重置密码、权限设置、申诉提交等弹窗;

  • wangEditor 富文本编辑器,禁用本地上传,仅粘贴网络图片视频链接;
  • 省市级联下拉选择省份城市;
  • 列表分页组件,支持页码跳转;
  • 下载逻辑:获取后端 apk 静态地址,浏览器原生下载。

六、重点安全 & 设计亮点

  1. 令牌版本控制:密码变更直接作废全部旧会话,不依赖 token 过期时间;
  2. 孤儿文件清理:APK 上传流程中,磁盘写入后业务逻辑失败,自动删除已写入的 apk/icon,不产生垃圾静态文件;
  3. 静态文件防护:自定义静态处理器,防御路径穿越攻击,支持断点续传;
  4. 事务保证数据一致性:删除应用时数据库层面事务删除关联数据;静态文件尽力删除,不阻断数据库操作;
  5. 权限校验分层:中间件鉴权 + service 层再次校验操作者身份(防止绕过前端);
  6. 批量聚合查询:列表查询下载、评分使用批量 SQL,避免循环 N+1 数据库查询;
  7. 业务状态强约束:必须审核通过才能上架;只有下架应用允许删除;版本更新触发重审核;
  8. 跨表用户名查重:注册普通用户时同时校验 admin 表,防止用户名冲突。

七、启动流程(main.go)

  1. 读取 yaml 配置;
  2. 初始化 MySQL,自动创建数据库;gorm 自动迁移建表;
  3. 依赖注入,组装 repository→service→handler;
  4. 如果 admin 表为空,读取配置初始化超级管理员;
  5. 存量应用回填上传者信息;
  6. 注册路由、中间件;启动 http 服务。

八、业务限制点

  1. 普通用户被限制上传后不能上传 APK,只能提交申诉;
  2. 应用删除:只有下架状态才允许删除;
  3. 用户不能直接上架应用,必须提交审核,管理员审核通过自动上架;用户仅可以执行下架操作;
  4. 更新已通过审核应用的版本,新版本会变为待审核并且下架,需要管理员重新审核。
  5. 标签:普通用户创建标签,需要管理员审核才能使用。
相关推荐
Buke..5 天前
【APP 逆向】哔哩哔哩 sign 参数逆向(上):Frida 反调试绕过与 unidbg 调用
java·开发语言·爬虫·python·安卓
爱和冰阔落5 天前
【Linux】Ctrl+C 到底做了什么?从键盘、kill 到 alarm,一次讲清信号的产生
linux·运维·c++·安卓
深念Y6 天前
RIO-UL00(EMUI 4.1 / Android 6.0.1 / arm64)开机自启动 sshd
android·linux·华为·安卓·chroot·sshd·emui
Anhty14 天前
2026 实测 4 款 AI 变声器|QQ 聊天伪装声线,告别僵硬假声
人工智能·功能测试·ios·智能手机·安卓
Anhty19 天前
手机端叮咚变声器2026实测:功能表现、优缺点完整解析
功能测试·ios·智能手机·安卓
iReachers19 天前
HTML打包APK实现拍照、录像、录音和文件选择教程
html·安卓·相机·apk打包·麦克风
朝阳58121 天前
RunBeat 跑步节拍器 · 技术实现拆解
安卓
LDyun_24 天前
云手机低延迟怎么实现的?为什么云手机能够 7×24 小时在线?
ios·智能手机·安卓·玩游戏
zzq779725 天前
APP 加固选型实战:从保护面构建到发布验收的全链路指南
安全·安卓·app加固·apk加固·御盾安全·御盾·免费加固