为什么又造一个「进销存」
做中小商家的进销存,几乎绕不开几个现实问题:商用软件按年收费,功能还按套餐层层解锁;SaaS 把数据放在别人服务器上,商家心里总不踏实;而一旦业务有点个性化,想改点流程,二次开发和接口授权又处处受限。
与其在别人的框架里将就,不如自己开源一套:能自己部署、数据自己掌控、代码自由二改。这就是 智领进销存(Zhiling ERP)。它覆盖商品、库存、进货、销售、资金、盘点、基础资料与权限的完整业务闭环,后端 Go,前端零框架,克隆下来几条命令就能跑起来,开源版没有任何功能或数量限制。
- 开源地址:github.com/facexsearch…
- 在线演示:erp.facexsearch.com (账号
admin/ 密码123456)
技术选型与架构
- 后端:Go + Gin + GORM + MySQL,接口清晰、部署简单,编译出来就是一个静态二进制。
- 前端:原生 HTML / CSS / JavaScript,无框架、无构建,改完刷新即生效,不用 Node 工具链。
- 认证与多租户:JWT 鉴权,请求按商户(tenant)隔离数据,天然支持 SaaS 与私有化两种形态。
- 工程细节:用雪花 ID 解决大整数在前后端的精度问题;密码用 bcrypt 存储;基于角色的功能权限做菜单与接口的双重校验;首次启动通过 GORM
AutoMigrate自动建表并初始化基础数据。
对开发者友好——不用记一堆构建命令;对商家也友好——一台装了 MySQL 的机器加上一个二进制文件就能上线,后续也好维护。
功能演示
数据看板
首页给出今日/本月销售额、毛利、库存价值,以及近 7 日销售趋势与热销商品 Top5。经营数据一目了然,老板每天打开看一眼就能掌握门店大概情况。
商品管理
商品支持多规格、多单位、价格等级、辅助属性(颜色/尺码/材质等)与库存预警。列表支持自定义显示列,SKU 多的时候也能按需展示;价格按「单位 × 规格」精细化维护。
客户与供应商
客户和供应商都支持分类、联系信息、结算信息与多个收货地址,字段覆盖完整;客户可挂价格等级与默认业务员,方便后续开单带出。
进货与进货退货
进货单支持审核 / 反审核,审核通过后自动联动库存与库存流水;同时支持打印与作废。进货退货单独立管理,退货同样会回冲库存,账实相符。
销售与销售退货
销售单关联客户、业务员与结算账户,金额按明细自动汇总,并计算应收、实收、待收与收款状态;退货单独立管理,方便处理售后。
库存查询与盘点
库存查询支持按门店、商品分类、供应商组合筛选,并可查看某商品的库存分布、成本明细与库存流水;盘点单逐商品录入实盘数量,系统自动计算账面、实盘与盈亏,盘点完成后调整库存。
资金管理
收款单、付款单与账户概览集中管理,支持多个结算账户(现金/银行/在线),单据可关联来源单据,方便对账与资金统计。
设置与权限
门店、员工、角色与商户信息集中管理。角色可勾选细粒度的功能权限,登录后菜单与接口都会按权限校验,适合多岗位协作的门店团队。
快速上手
git clone git@github.com:facexsearch-official/zhiling-erp.git
cd zhiling-erp
# 1. 配置(填 MySQL 连接与 JWT secret)
cp config.yaml.example config.yaml
# 2. 建库
mysql -uroot -p -e "CREATE DATABASE pisa DEFAULT CHARSET utf8mb4;"
# 3. 运行(首次自动建表并初始化数据)
go run ./cmd/server/
浏览器访问 http://localhost:8080 ,默认账号 admin / 123456。
想快速看效果,仓库自带造数脚本,一条命令就能灌入门店、角色、用户、客户、供应商、商品以及进货、销售、退货、盘点、收付款等各类演示单据:
python3 scripts/mock_data.py # 直连数据库造数
python3 scripts/mock_api.py --base https://erp.facexsearch.com # 走 POST 接口造数
部署与二开
生产环境建议编译为 Linux 二进制后配合 systemd 托管,静态页交给 Nginx 并配置 HTTPS:
bash scripts/build_release.sh # 产出 dist/zhiling-erp_linux_amd64.tar.gz
# 上传解压后: cp config.yaml.example config.yaml && ./pisa_server
前后端结构清晰:handler / repository / service 分层,权限在中间件统一处理;前端是无构建的原生页面,改一个 .html 或 .js 上传即可生效,非常适合做定制化交付。
功能清单
- 商品:商品/多规格/多单位、价格等级、辅助属性、库存预警、商品分类
- 库存:库存查询、库存分布、成本明细、库存流水、盘点盈亏
- 进货:进货单(审核/反审核/打印/作废)、进货退货
- 销售:销售单、销售退货、收款状态跟踪
- 资金:收款单、付款单、账户概览、多结算账户
- 基础资料:客户/客户分类、供应商/供应商分类、门店、员工、角色权限
- 看板:今日/本月销售额与毛利、库存价值、近 7 日趋势、热销 Top5
常见问题
支持多商户、多门店吗? 支持。数据按商户(tenant)隔离,一个账号可关联多个商户,门店作为经营单元贯穿商品库存与各类单据。
可以商用吗? 可以。项目基于 MIT 协议开源,允许商用与闭源二次开发;开源版也不做任何功能或数量限制。
运行需要什么环境? 一个 Go 环境加一个 MySQL(5.7+ / 8.0)即可。首次启动会自动建表、初始化管理员与演示数据,几分钟就能跑起来。
前端为什么不用框架? 因为这套系统的界面改动频繁、交付场景多样。原生 HTML/CSS/JS 零构建、加载轻、改完即生效,配合后端接口做私有化定制非常顺手。
数据量大了会不会慢? 列表接口均分页,核心查询带索引;看板只做聚合统计,几十万条单据量级下依然可用。真正的大数据量场景可以再加缓存或读写分离。
适合谁
- 中小商家 / 门店:想要一套免费、能用、数据自控的进销存系统。
- 开发者 / 外包团队:拿它做二次开发、私有化部署,起步成本极低。
- 学习者:一个 Go + 原生前端 + 多租户权限 + 完整业务流的实战项目,适合作为参考。
开源版没有任何套餐或功能限制,随取随用,欢迎自由商用与二开。
结语
项目仍在持续迭代,欢迎 star、提 issue、PR,也欢迎提出你所在行业的真实需求。有定制或合作意向,欢迎交流: