124 lines
3.7 KiB
PHP
124 lines
3.7 KiB
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
namespace App\Jobs;
|
|||
|
|
|
|||
|
|
use Illuminate\Bus\Queueable;
|
|||
|
|
use Illuminate\Queue\SerializesModels;
|
|||
|
|
use Illuminate\Queue\InteractsWithQueue;
|
|||
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|||
|
|
use Illuminate\Foundation\Bus\Dispatchable;
|
|||
|
|
use App\Models\User;
|
|||
|
|
use App\Utils\Http;
|
|||
|
|
use App\Utils\Messenger;
|
|||
|
|
use Illuminate\Container\Container;
|
|||
|
|
use App\Repositories\Eloquent\SmsRepository as Sms;
|
|||
|
|
class SyncScore implements ShouldQueue
|
|||
|
|
{
|
|||
|
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 任务最大尝试次数。
|
|||
|
|
*
|
|||
|
|
* @var int
|
|||
|
|
*/
|
|||
|
|
public $tries = 5;
|
|||
|
|
protected $user_id;
|
|||
|
|
protected $score;
|
|||
|
|
protected $type;
|
|||
|
|
protected $message;
|
|||
|
|
protected $other_user_id;
|
|||
|
|
protected $status;
|
|||
|
|
protected $mobile = '15872844805';
|
|||
|
|
/**
|
|||
|
|
*
|
|||
|
|
* Create a new job instance.
|
|||
|
|
*
|
|||
|
|
* @return void
|
|||
|
|
*/
|
|||
|
|
public function __construct($array)
|
|||
|
|
{
|
|||
|
|
$this->user_id = $array['user_id'];
|
|||
|
|
$this->other_user_id = $array['other_user_id'];
|
|||
|
|
$this->score = $array['score'];
|
|||
|
|
$this->type = $array['type'];
|
|||
|
|
$this->message = $array['message'];
|
|||
|
|
$this->status = isset($array['status']) ? $array['status'] : 0;
|
|||
|
|
|
|||
|
|
$container = new Container();
|
|||
|
|
$this->sms = new Sms($container);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Execute the job.
|
|||
|
|
*
|
|||
|
|
* @return void
|
|||
|
|
*/
|
|||
|
|
public function handle()
|
|||
|
|
{
|
|||
|
|
try {
|
|||
|
|
$uid = $this->getAccountUserID($this->user_id);
|
|||
|
|
$other_uid = $this->getAccountUserID($this->other_user_id);
|
|||
|
|
if (empty($uid)) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
$data = [
|
|||
|
|
'mp'=>'LOVE',
|
|||
|
|
'score'=>$this->score,
|
|||
|
|
'type'=>$this->type,
|
|||
|
|
'message'=>$this->message,
|
|||
|
|
'other_uid'=>$other_uid,
|
|||
|
|
'status'=>$this->status,
|
|||
|
|
];
|
|||
|
|
$url = config('app.account_url').'/api/change/user/'.$uid.'/score';
|
|||
|
|
$result = json_decode(Http::http($url, $data, 'POST'),true);
|
|||
|
|
//\Log::info('syncScore success');
|
|||
|
|
} catch (\Exception $e) {
|
|||
|
|
//\Log::info('syncScore failure');
|
|||
|
|
$message = '用户id: '.$this->user_id.'同步积分失败';
|
|||
|
|
$this->sms->sentMessage($this->mobile, $message);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public function getAccountUserID($user_id)
|
|||
|
|
{
|
|||
|
|
$user = User::with('wechat')->where('id', $user_id)->first();
|
|||
|
|
if (empty($user)) {
|
|||
|
|
return $uid = 0;
|
|||
|
|
}
|
|||
|
|
if ($user->uid) {
|
|||
|
|
$uid = $user->uid;
|
|||
|
|
}else{
|
|||
|
|
if (empty($user->wechat)) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
$url = config('app.account_url').'/api/user';
|
|||
|
|
$data = [
|
|||
|
|
'mobile' => $user->mobile,
|
|||
|
|
'name' => $user->name,
|
|||
|
|
'nickname' => $user->wechat->nickname,
|
|||
|
|
'gender' => $user->wechat->gender,
|
|||
|
|
'city' => $user->wechat->city,
|
|||
|
|
'province' => $user->wechat->province,
|
|||
|
|
'country' => $user->wechat->country,
|
|||
|
|
'unionid' => $user->wechat->unionid,
|
|||
|
|
'avatar' => $user->wechat->avatar2?$user->wechat->avatar2:$user->wechat->avatar,
|
|||
|
|
];
|
|||
|
|
try {
|
|||
|
|
$account_user = json_decode(Http::http($url, $data, 'POST'), true);
|
|||
|
|
|
|||
|
|
} catch (Exception $e) {
|
|||
|
|
$message = $e->getMessage();
|
|||
|
|
Messenger::sendSMS('15872844805', $message);
|
|||
|
|
}
|
|||
|
|
if (isset($account_user['id'])) {
|
|||
|
|
$uid = $account_user['id'];
|
|||
|
|
$user->uid = $uid;
|
|||
|
|
$user->save();
|
|||
|
|
}else{
|
|||
|
|
$uid = 0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return $uid;
|
|||
|
|
}
|
|||
|
|
}
|