<?php
namespace App\Http\Controllers\Service\v1;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Utils\Code;
use App\Jobs\UserCenterProcess;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
class UserCenterService extends BaseService
{
private static $instance;
private $json = ['tags', 'ip_address', 'local'];
public static function getInstance()
{
if (!self::$instance instanceof self) {
self::$instance = new static();
}
return self::$instance;
}
public function getUserInfo($form)
{
$this->return['lists'] = $this->userCenterModel->getOne(['uid' => $form->id]);
foreach ($this->json as $item) {
$this->return['lists']->$item = empty($this->return['lists']->$item) ? [] : json_decode($this->return['lists']->$item, true);
}
$this->return['lists']->email = $form->email;
return $this->return;
}
public function saveUserInfo($form)
{
foreach ($this->json as $item) {
$form[$item] = json_encode($form[$item] ?? [], JSON_UNESCAPED_UNICODE);
}
$result = $this->userCenterModel->saveOne($form);
if (!$result) {
$this->return['code'] = Code::ERROR;
$this->return['message'] = 'Error update user center';
return $this->return;
}
$this->return['lists'] = $form;
return $this->return;
}
public function updateUserInfo($form, $_user)
{
foreach ($this->json as $item) {
$form[$item] = json_encode($form[$item] ?? [], JSON_UNESCAPED_UNICODE);
}
if (!empty($form['email'])) unset($form['email']);
$result = $this->userCenterModel->updateOne(['id' => $form['id']], $form);
if (!$result) {
$this->return['code'] = Code::ERROR;
$this->return['message'] = 'Error update user center';
return $this->return;
}
dispatch(new UserCenterProcess(array('_personal' => $form, '_user' => $_user)))->onQueue('personal')->delay(5);
$this->return['lists'] = $form;
return $this->return;
}
}