分析 FastAdmin 用戶余額功能(后臺篇)
[TOC]
## 起因
雖然 FastAdmin 主要針對后臺的框架,但也在不斷完善前臺的功能,有一天小伙伴在社區里提了一個建議,他說既然 FastAdmin 有簡單的前臺會員中心,那不如把前臺的用戶中心再完善一點,加上余額功能,因為余額很常用。
經過 FastAdmin 團隊的內部討論,覺得這位小伙伴的建議很好,于是就給前臺用戶中心加了余額功能,同時也出了免費的余額插件[^1]。
## 用戶余額功能說明

* 用戶余額
* 數據表
* 用戶表余額字段
* 余額日志
* 后臺
* 修改余額增加日志
* 前臺
* 余額充值插件[^1]
* 充值日志
## 安裝插件
安裝 FastAdmin [^2]后再安裝會員充值余額插件,可以看到前臺用戶中心多了充值中心,充值中心下還有充值余額和余額日志。

## 分析
由于時間關系,這里先分析一下后臺的余額操作功能,前臺的分析留著下一次。
在 Git 倉庫可以看到,后臺余額日志是 2018-11-27 [^3] 增加的,使用了 `beforeUpdate` 寫的日志。
先獲得原始數據,再獲得更新的數據,對比后如果金額改變,就調用 `MoneyLog::create` 創建余額日志。

這里還有一個小插曲,由于漏了 `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