账号自动发放与回收系统产品系统Vibe Coding

我要开发同款
Geburah2026年10月05日
4阅读

技术信息

语言技术
Python、Vue、TypeScript、uniapp
系统类型
小程序轻应用、Web
行业分类
企业服务

作品详情

行业场景

企业与团队内部普遍沉淀着大量可复用的账号资源——测试账号、培训账号、软件授权账号,但分发长期靠微信群里发截图、用 Excel 登记:谁在用、用到几点、什么时候归还全靠人工记,一旦多人同时申请,很容易把同一个账号发给两个人;管理员只能反复核对、逐个催还,既算不清资源占用率,也沉淀不下可追溯的使用台账。现成的密码管理工具面向个人保险箱,缺少「一人一账号、按时长自动回收」的调度与并发约束能力;通用表格又无法阻止并发抢占。本项目面向团队共享账号资源的管理场景,把账号录入与批量导入、并发安全的自动分配、使用时长锁定、到期自动回收、使用台账整合进一套系统:管理端用浏览器维护账号池并查看记录,成员用微信小程序自助领取、看倒计时、主动归还。

功能介绍

系统按角色分为用户端与管理端两端,共用同一套 Django REST 后端与 PostgreSQL 数据库,覆盖账号资源从入库到回收的完整生命周期。

【用户端 · 微信小程序】身份进入与切换、实时展示当前可领取账号数量、一键领取并自动分配账号、账号与密码一键复制、使用中账号的秒级倒计时与开始/结束时间展示、主动结束使用、下拉刷新状态;同一用户同一时间只能持有一个账号,防止重复领取。

【管理端 · Web 后台】管理员登录(JWT)、账号卡片网格总览与总数/空闲/使用中/已禁用四项统计、账号新增编辑删除、按卡号或账号搜索(300ms 防抖)、按状态筛选、分页、批量导入(按行解析「卡号|账号|密码|有效分钟数|备注」,返回新建/跳过/错误计数)、账号一键重置为空闲、使用记录查询(按卡号/openid/昵称搜索,按释放类型筛选进行中/自动释放/管理员释放/用户释放)、修改密码。

【服务端】可用账号计数、原子领取、当前使用状态、用户主动释放四个用户侧接口;账号增删改查、批量导入、账号重置、记录查询、登录登出等管理侧接口,以及每 30 秒自动回收到期账号的后台任务。

项目实现

我独立完成全部开发,全程以 AI 辅助编码推进,并在项目内维护 AI 协作规范约束「按阶段交付、目录不互相污染」:需求梳理与数据建模、Django REST 后端、Vue3 管理后台、uni-app 微信小程序、PostgreSQL 建表与联调。代码约 4300 行,含 Python 46 文件 1438 行、Vue 组件 14 个 1819 行、TypeScript 18 文件 793 行。

技术栈:后端 Django + Django REST Framework + PostgreSQL,拆成账号/用户/记录/管理员四个模块;管理端 Vue3 + TypeScript + Element Plus;用户端 uni-app 编译微信小程序;鉴权自实现 Admin 模型 + JWT,不耦合 Django 内置 User。

亮点:① 零超发领取——事务内用 SELECT ... FOR UPDATE SKIP LOCKED 取号,跳过被其他事务锁定的行而非排队阻塞,叠加「同一用户已有进行中记录即拒绝」,杜绝一个账号同时发给两人。② 到期自动回收——APScheduler 每 30 秒回收 end_time 过期账号,写入释放类型(自动/管理员/用户),释放原因可追溯。③ 幂等批量导入——按行解析「卡号|账号|密码|时长|备注」,非法行带索引返回 errors,合法行 get_or_create upsert,返回新建/跳过/错误计数。④ 数据库层兜底——CHECK 约束锁定状态取值,updated_at 由触发器维护,按状态与到期时间建索引。

难点:select_for_update 必须在事务内迭代才生效,最初把循环写在 atomic 之外导致行锁空转,改为整体包进 transaction.atomic() 并加 skip_locked=True 后解决。

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论