5天,我用若依搞了个SaaS平台,全程没写一行代码🍜

事情是这样的,公司业务扩展,要做个国际化的SaaS多租户平台。之前项目用的若依,这次也继续用。

版本是前后端分离的单体项目:
后端 → RuoYi-Vue
前端 → RuoYi-Vue3

完事直接clone下来就跑。

——

先聊两句SaaS和多租户是啥。

SaaS就是「软件即服务」——你不用买服务器、不用装软件,打开网页直接用,按月付费就行。你用的飞书、钉钉、Notion,都是SaaS。

多租户就是一个SaaS系统同时服务多个客户(租户),每个客户看到的是自己的数据,以为自己独占了一套系统。就像一栋写字楼,每家公司租一层,电梯门一关,各过各的日子。

那数据怎么隔离呢?三种方式:

策略 什么意思 优点 缺点
独立数据库 每家客户一个独立库 最安全,随便迁移 成本高,维护累
独立Schema ✅ 同一个库,每家一个独立表空间 隔离和成本最平衡 跨租户统计稍麻烦
共享表+tenant_id 所有客户共用一套表,用字段区分 成本最低,开发最快 隔离风险高,容易串数据

前期肯定怎么简单怎么来嘛,先跑个demo看看效果。我选的就是「共享表+tenant_id」——先跑起来再说。

——

选好方向就开干了。

我用的是腾讯的hy3,限免两周(22号截止)。没找到文档,但反正免费,不蹭白不蹭。

先配Mybaits-Plus。若依默认用的是Mybaits,写XML的那种。我和我老大都不喜欢写XML,所以上来先把这玩意儿换了。

然后CodeBuddy就开始干活了。配置完版本不对,他自己上网搜对应版本;环境搞不定,他自己修。hy3确实是强思考模型,回答前会一直想,想完了输出倒是很快——就是等它思考那会儿有点急人。

接着改造代码:加tenant_id字段、配租户管理表、写CRUD。全程CodeBuddy干的,我手动改的只有两件事:配置文件里的数据库连接,以及手动跑了一下SQL文件。

中间当然有bug,基本复制给他他就修了。

——

然后做多语言。

我以为若依自带多语言的,结果根本没有。全是CodeBuddy现场写的。不过他改得也不是很全面,需要人仔细检查一遍,哪里没处理好再跟他说。

有些问题他一下也搞不明白。

比如我碰到的:主键用了雪花算法。Java的long最大值是19位数字,但JS的Number安全整数只有16位——这就导致后端传给前端的时候,后几位数字会丢精度。

我把报错扔给他,他完全没往这个方向想,怀疑是我库里的数据有问题。

AI模型的幻觉一直都在,哪怕是这种强思考模型也避免不了。

后面又配置了SpringBoot的JSON序列化问题(long转string给前端返回),也有不少坑。用的SpringBoot 4,CodeBuddy给的方案都是其他版本的,总之最后也都解决了。

——

再后面,我看着若依这原始的Mybaits,咋看咋难受。

让CodeBuddy评估了一下全量迁移成Mybaits-Plus的工作量——确实挺大的。

后来发现了一个社区开源版本:RuoYi-Vue-Plus。

我心里一万个……在奔腾。

这玩意原来早就有社区版在维护的吗??那我这几天辛辛苦苦和CodeBuddy的羁绊算什么???

虽然不高兴,但已经写到这里了,也没必要迁移重写了。我把这个项目地址扔给CodeBuddy,让他看看人家咋写的,然后把我项目里的Mybaits照着改一下不就完了吗——嘿嘿我真是天才。

然后他大概花了5个小时,终于重构完了。

——

后面要做仓储管理功能。

我哪懂什么仓储管理啊,直接扔给CodeBuddy。3个小时,他更新修改了65个文件。

哇去,太狠了。

本来开始还看得懂,后面一直点确定,一直回复「可以」、「没问题」、「继续」,然后我发现代码我看不懂了——主要是一下子太多内容,没时间去深究里面的逻辑。

反正我跑了一下,目测功能上没啥大问题,还需要再细细调整一番。

——

总结一下这几天的感受:

SaaS平台没那么神秘,说白了就是「一套代码服务一堆客户」。难的是中间的平衡——隔离和安全怎么做、性能和成本怎么控。

AI写代码确实猛,尤其是强思考模型,一个人扛一个团队的工作量不是吹的。但别指望它全对,雪花算法精度丢失那个坑,它自己就是想不到,还得靠人来兜底。

所以啊,AI是油门,你是方向盘——踩油门很快,但方向还是得自己看。