| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- <?php
- namespace App\Module\UrausSys\Services;
- use App\Module\UrausSys\Enums\RECEIVE_ADDRESS_STATUS;
- use App\Module\UrausSys\Models\ReceiveAddress;
- /**
- * 收款地址管理服务
- */
- class ReceiveAddressService
- {
- /**
- * 获取可用收款地址(优先最新OK状态,无则随机取ING状态)
- *
- * @return \App\Module\UrausSys\Models\ReceiveAddress|null
- */
- public function getAvailableAddress()
- {
- // 优先获取最新可用状态地址(OK=1)
- $address = ReceiveAddress::where('status', RECEIVE_ADDRESS_STATUS::OK->value)
- ->latest('id')
- ->first();
- // 无可用地址时随机获取使用中状态地址(ING=20)
- if (!$address) {
- $address = ReceiveAddress::where('status', RECEIVE_ADDRESS_STATUS::ING->value)
- ->inRandomOrder() // 使用数据库原生随机排序
- ->first();
- }
- if ($address) {
- if ($address->status === RECEIVE_ADDRESS_STATUS::OK) {
- $address->status = RECEIVE_ADDRESS_STATUS::ING;
- $address->save();
- }
- }
- return $address;
- }
- }
|