feat: 项目基础框架+配置+Kernel
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use App\Utils\RPC;
|
||||
|
||||
class UserChat extends Model
|
||||
{
|
||||
|
||||
/**
|
||||
* The database table used by the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'user_chat';
|
||||
public $timestamps = false;
|
||||
protected $appends = ['from_avatar','from_nickname'];
|
||||
|
||||
protected static $config = [];
|
||||
|
||||
protected static $_socket_client = null;
|
||||
|
||||
public static function getConfig()
|
||||
{
|
||||
isset(self::$config['worker_push_url']) || self::$config['worker_push_url'] = config('app.worker_push_url') ?? \Request::server('HTTP_HOST');
|
||||
isset(self::$config['text_worker_port']) || self::$config['text_worker_port'] = config('app.text_worker_port');
|
||||
}
|
||||
|
||||
public function getFromAvatarAttribute()
|
||||
{
|
||||
return $this->hasOne('App\Users','id','from_user_id')->value('head_portrait');
|
||||
}
|
||||
|
||||
public function getFromNicknameAttribute()
|
||||
{
|
||||
return $this->hasOne('App\Users','id','from_user_id')->value('account_number');
|
||||
}
|
||||
|
||||
public static function sendChat($data)
|
||||
{
|
||||
if (empty($data)) {
|
||||
return "fail";
|
||||
}
|
||||
$worker_push_url = config('app.worker_push_url') ?? \Request::server('HTTP_HOST');
|
||||
$http_worker_port = config('app.http_worker_port');
|
||||
$push_api_url = "http://" . $worker_push_url . ":" . $http_worker_port . '/';
|
||||
return RPC::http_post($push_api_url, $data);
|
||||
}
|
||||
|
||||
public static function sendText($data)
|
||||
{
|
||||
$client = self::getSocket();
|
||||
$data = (is_scalar($data) ? strval($data) : json_encode($data)) . "\n";
|
||||
try {
|
||||
//长连接不建议关闭连接
|
||||
//stream_socket_sendto($client, $data);
|
||||
fwrite($client, $data);
|
||||
} catch (\Throwable $th) {
|
||||
//尝试一次重新连接再发送
|
||||
try {
|
||||
//stream_socket_sendto($client, $data);
|
||||
//fclose($client);
|
||||
$client = self::getSocket(true);
|
||||
fwrite($client, $data);
|
||||
} catch (\Throwable $th) {
|
||||
dump($th->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function getSocket($force_connect = false)
|
||||
{
|
||||
self::getConfig();
|
||||
if (self::$_socket_client == null || $force_connect) {
|
||||
self::$_socket_client = stream_socket_client('tcp://' . self::$config['worker_push_url'] . ':' . self::$config['text_worker_port'], $errno, $errstr);
|
||||
}
|
||||
if (!self::$_socket_client) {
|
||||
throw new \Exception($errstr, $errno);
|
||||
}
|
||||
return self::$_socket_client;
|
||||
}
|
||||
|
||||
public static function getFace($value = "")
|
||||
{
|
||||
$data = array(
|
||||
"0"=>"微笑",
|
||||
"1"=>"嘻嘻",
|
||||
"2"=>"哈哈",
|
||||
"3"=>"可爱",
|
||||
"4"=>"可怜",
|
||||
"5"=>"抠鼻",
|
||||
"6"=>"吃惊",
|
||||
"7"=>"害羞",
|
||||
"8"=>"挤眼",
|
||||
"9"=>"闭嘴",
|
||||
"10"=>"鄙视",
|
||||
"11"=>"爱你",
|
||||
"12"=>"泪",
|
||||
"13"=>"偷笑",
|
||||
"14"=>"亲亲",
|
||||
"15"=>"生病",
|
||||
"16"=>"太开心",
|
||||
"17"=>"白眼",
|
||||
"18"=>"右哼哼",
|
||||
"19"=>"左哼哼",
|
||||
"20"=>"嘘",
|
||||
"21"=>"衰",
|
||||
"22"=>"委屈",
|
||||
"23"=>"吐",
|
||||
"24"=>"哈欠",
|
||||
"25"=>"抱抱",
|
||||
"26"=>"怒",
|
||||
"27"=>"疑问",
|
||||
"28"=>"馋嘴",
|
||||
"29"=>"拜拜",
|
||||
"30"=>"思考",
|
||||
"31"=>"汗",
|
||||
"32"=>"困",
|
||||
"33"=>"睡",
|
||||
"34"=>"钱"
|
||||
);
|
||||
if(empty($value))
|
||||
return $data;
|
||||
else{
|
||||
foreach ($data as $index=>$a){
|
||||
if($value == $a){
|
||||
return "<img src=http://m.zhonghexinshang.net.cn/vendor/layim/src/images/face/".$index.".gif>";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user