65 lines
1.7 KiB
PHP
65 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Repositories;
|
|
|
|
use App\Helpers\PhoneNumber;
|
|
use App\Models\User as Model;
|
|
use Dcat\Admin\Form;
|
|
use Dcat\Admin\Repositories\EloquentRepository;
|
|
use Illuminate\Support\Arr;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class User extends EloquentRepository
|
|
{
|
|
/**
|
|
* Model.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $eloquentClass = Model::class;
|
|
|
|
/**
|
|
* 新增记录.
|
|
*
|
|
* @param Form $form
|
|
* @return mixed
|
|
*/
|
|
public function store(Form $form)
|
|
{
|
|
$result = null;
|
|
|
|
DB::transaction(function () use ($form, &$result) {
|
|
$model = $this->model();
|
|
|
|
$updates = $form->updates();
|
|
|
|
[$relations, $relationKeyMap] = $this->getRelationInputs($model, $updates);
|
|
|
|
if ($relations) {
|
|
$updates = Arr::except($updates, array_keys($relationKeyMap));
|
|
}
|
|
|
|
// foreach ($updates as $column => $value) {
|
|
// $model->setAttribute($column, $value);
|
|
// }
|
|
//添加邀请码处理
|
|
$code = $updates['code'];
|
|
unset($updates['code']);//移除邀请码
|
|
$inviter = null;
|
|
if ($code) {
|
|
$inviter = Model::when(PhoneNumber::validate($code), function ($query) use ($code) {
|
|
$query->where('phone', $code);
|
|
}, function ($query) use ($code) {
|
|
$query->whereRelation('userInfo', 'code', $code);
|
|
})->first();
|
|
}
|
|
|
|
$this->model = $model::create($updates, $inviter);
|
|
|
|
$this->updateRelation($form, $model, $relations, $relationKeyMap);
|
|
});
|
|
|
|
return $this->model()->getKey();
|
|
}
|
|
}
|