56 lines
1.3 KiB
PHP
56 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace Database\Factories;
|
|
|
|
use App\Models\UserModel;
|
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
|
|
|
/**
|
|
* 小程序用户工厂(微信登录自动生成,供测试使用;无需 Faker)
|
|
*
|
|
* @extends Factory<UserModel>
|
|
*/
|
|
class UserModelFactory extends Factory
|
|
{
|
|
protected $model = UserModel::class;
|
|
|
|
private static int $sequence = 0;
|
|
|
|
public function definition(): array
|
|
{
|
|
$seq = ++self::$sequence;
|
|
|
|
return [
|
|
'username' => null,
|
|
'password' => null,
|
|
'nickname' => '微信用户' . $seq,
|
|
'email' => '',
|
|
'openid' => 'openid_' . str_pad((string) $seq, 16, '0', STR_PAD_LEFT),
|
|
'unionid' => '',
|
|
'phone' => '',
|
|
'avatar' => '',
|
|
'store_id' => 0,
|
|
'status' => UserModel::STATUS_NORMAL,
|
|
'last_login_at' => null,
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 已绑定门店的门店用户
|
|
*/
|
|
public function forStore(int $storeId): static
|
|
{
|
|
return $this->state(fn () => [
|
|
'store_id' => $storeId,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 停用账号
|
|
*/
|
|
public function disabled(): static
|
|
{
|
|
return $this->state(fn () => ['status' => UserModel::STATUS_DISABLED]);
|
|
}
|
|
}
|