🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
分析 FastAdmin 用户余额功能(后台篇) [TOC] ## 起因 虽然 FastAdmin 主要针对后台的框架,但也在不断完善前台的功能,有一天小伙伴在社区里提了一个建议,他说既然 FastAdmin 有简单的前台会员中心,那不如把前台的用户中心再完善一点,加上余额功能,因为余额很常用。 经过 FastAdmin 团队的内部讨论,觉得这位小伙伴的建议很好,于是就给前台用户中心加了余额功能,同时也出了免费的余额插件[^1]。 ## 用户余额功能说明 ![用户余额日志思维导图](https://box.kancloud.cn/3878ef134fbd23251a2628cf6031b542_555x288.png) * 用户余额 * 数据表 * 用户表余额字段 * 余额日志 * 后台 * 修改余额增加日志 * 前台 * 余额充值插件[^1] * 充值日志 ## 安装插件 安装 FastAdmin [^2]后再安装会员充值余额插件,可以看到前台用户中心多了充值中心,充值中心下还有充值余额和余额日志。 ![余额](https://box.kancloud.cn/65850d0728091dc8b117a734efaae59b_824x536.png) ## 分析 由于时间关系,这里先分析一下后台的余额操作功能,前台的分析留着下一次。 在 Git 仓库可以看到,后台余额日志是 2018-11-27 [^3] 增加的,使用了 `beforeUpdate` 写的日志。 先获得原始数据,再获得更新的数据,对比后如果金额改变,就调用 `MoneyLog::create` 创建余额日志。 ![1544843839537](https://box.kancloud.cn/17fbd90047f222384300b95aad3fa120_552x433.png) 这里还有一个小插曲,由于漏了 `getOriginData` 在后台修改余额时提示没有 `getOriginData` 方法。 ```php public function getOriginData() { return $this->origin; } ``` 然后我提一个 Pull Request,将 `$origin = $row->getOriginData();` 改成 `$origin = $row->getData();` 被 Karson 打回来,拒绝合并,后来查了一下,如果使用 `getData()` 是获取不到原始数据的。 ## 文档版本 | Version | Remark | Commits By | Date | | ------- | ------ | ------------------------------------ | ---------------- | | V1 | 初版 | [F4NNIU](mailto:sparkamax@gmail.com) | 2018-12-15 11:27 | ## 参考 [^1]: 会员充值余额插件 https://www.fastadmin.net/store/recharge.html [^2]: 前期估计推荐使用 phpStudy 2018 安装 FastAdmin 完整版 https://forum.fastadmin.net/thread/2524 [^3]: 新增前台会员Money字段和余额日志表 https://gitee.com/karson/fastadmin/commit/f6ccbb70dd78b435d3f28ed8ba3d0856b8a29dd6