初始化
parent
09b09bbc14
commit
495a3b8b5b
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace App\Helper;
|
||||
|
||||
|
||||
class JsonHelper
|
||||
{
|
||||
|
||||
}
|
|
@ -126,7 +126,6 @@ class GroupService extends BaseService
|
|||
|
||||
Db::beginTransaction();
|
||||
try {
|
||||
|
||||
UsersGroup::where('id', $group_id)->update(['status' => 1]);
|
||||
UsersGroupMember::where('group_id', $group_id)->update(['status' => 1]);
|
||||
Db::commit();
|
||||
|
@ -217,8 +216,6 @@ class GroupService extends BaseService
|
|||
Db::commit();
|
||||
} catch (\Exception $e) {
|
||||
Db::rollBack();
|
||||
|
||||
logger()->error($e);
|
||||
return [false, 0];
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,12 @@
|
|||
|
||||
namespace App\Service;
|
||||
|
||||
|
||||
/**
|
||||
* 聊天室房间服务
|
||||
*
|
||||
* Class SocketRoomService
|
||||
* @package App\Service
|
||||
*/
|
||||
class SocketRoomService
|
||||
{
|
||||
const ROOM = 'ws:room';
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace App\Service;
|
||||
|
||||
use App\Model\FileSplitUpload;
|
||||
|
@ -15,6 +14,9 @@ use Hyperf\HttpMessage\Upload\UploadedFile;
|
|||
*/
|
||||
class SplitUploadService
|
||||
{
|
||||
/**
|
||||
* 文件拆分的大小
|
||||
*/
|
||||
const SPLIT_SIZE = 2 * 1024 * 1024;
|
||||
|
||||
/**
|
||||
|
@ -23,6 +25,8 @@ class SplitUploadService
|
|||
* @param int $user_id 用户ID
|
||||
* @param string $fileName 上传的文件名
|
||||
* @param string $fileSize 上传文件大小
|
||||
*
|
||||
* @return array|bool
|
||||
*/
|
||||
public function create(int $user_id, string $fileName, string $fileSize)
|
||||
{
|
||||
|
@ -46,11 +50,15 @@ class SplitUploadService
|
|||
}
|
||||
|
||||
/**
|
||||
* @param int $user_id
|
||||
* 保存拆分上传的文件
|
||||
*
|
||||
* @param int $user_id 用户ID
|
||||
* @param UploadedFile $file 文件信息
|
||||
* @param string $hashName 上传临时问价hash名
|
||||
* @param int $split_index 当前拆分文件索引
|
||||
* @param int $fileSize 文件大小
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function upload(int $user_id, UploadedFile $file, string $hashName, int $split_index, int $fileSize)
|
||||
{
|
||||
|
@ -95,16 +103,29 @@ class SplitUploadService
|
|||
/**
|
||||
* 文件合并
|
||||
*
|
||||
* @param int $user_id 用户ID
|
||||
* @param string $hash_name 上传临时问价hash名
|
||||
*
|
||||
* @return array|bool
|
||||
*/
|
||||
public function merge(int $user_id, string $hash_name)
|
||||
{
|
||||
$fileInfo = FileSplitUpload::select(['id', 'original_name', 'split_num', 'file_ext', 'file_size'])->where('user_id', $user_id)->where('hash_name', $hash_name)->where('file_type', 1)->first();
|
||||
$fileInfo = FileSplitUpload::select(['id', 'original_name', 'split_num', 'file_ext', 'file_size'])
|
||||
->where('user_id', $user_id)
|
||||
->where('hash_name', $hash_name)
|
||||
->where('file_type', 1)
|
||||
->first();
|
||||
|
||||
if (!$fileInfo) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$files = FileSplitUpload::where('user_id', $user_id)->where('hash_name', $hash_name)->where('file_type', 2)->orderBy('split_index', 'asc')->get(['split_index', 'save_dir'])->toArray();
|
||||
$files = FileSplitUpload::where('user_id', $user_id)
|
||||
->where('hash_name', $hash_name)
|
||||
->where('file_type', 2)
|
||||
->orderBy('split_index', 'asc')
|
||||
->get(['split_index', 'save_dir'])->toArray();
|
||||
|
||||
if (!$files) {
|
||||
return false;
|
||||
}
|
||||
|
@ -113,16 +134,20 @@ class SplitUploadService
|
|||
return false;
|
||||
}
|
||||
|
||||
$dir = config('filesystems.disks.uploads.root');
|
||||
$fileMerge = "tmp/{$hash_name}/{$fileInfo->original_name}.tmp";
|
||||
$uploadService = make(UploadService::class);
|
||||
|
||||
$merge_save_parh = $uploadService->driver($fileMerge);
|
||||
// 文件合并
|
||||
$merge_save_path = $uploadService->driver($fileMerge);
|
||||
foreach ($files as $file) {
|
||||
file_put_contents($merge_save_parh, file_get_contents($uploadService->driver($file['save_dir'])), FILE_APPEND);
|
||||
file_put_contents($merge_save_path, file_get_contents($uploadService->driver($file['save_dir'])), FILE_APPEND);
|
||||
}
|
||||
|
||||
FileSplitUpload::select(['id', 'original_name', 'split_num', 'file_ext', 'file_size'])->where('user_id', $user_id)->where('hash_name', $hash_name)->where('file_type', 1)->update(['save_dir' => $fileMerge]);
|
||||
FileSplitUpload::select(['id', 'original_name', 'split_num', 'file_ext', 'file_size'])
|
||||
->where('user_id', $user_id)->where('hash_name', $hash_name)
|
||||
->where('file_type', 1)
|
||||
->update(['save_dir' => $fileMerge]);
|
||||
|
||||
return [
|
||||
'path' => $fileMerge,
|
||||
'tmp_file_name' => "{$fileInfo->original_name}.tmp",
|
||||
|
|
|
@ -509,7 +509,8 @@ class TalkService extends BaseService
|
|||
* @param int $source 消息来源 1:好友消息 2:群聊消息
|
||||
* @param array $records_ids 转发消息的记录ID
|
||||
* @param array $receive_ids 接受者数组 例如:[['source' => 1,'id' => 3045],['source' => 1,'id' => 3046],['source' => 1,'id' => 1658]] 二维数组
|
||||
* @return array
|
||||
*
|
||||
* @return array|bool
|
||||
*/
|
||||
public function mergeForwardRecords(int $user_id, int $receive_id, int $source, $records_ids, array $receive_ids)
|
||||
{
|
||||
|
@ -556,26 +557,28 @@ class TalkService extends BaseService
|
|||
|
||||
$jsonText = [];
|
||||
foreach ($rows as $row) {
|
||||
if ($row->msg_type == 1) {
|
||||
$jsonText[] = [
|
||||
'nickname' => $row->nickname,
|
||||
'text' => mb_substr(str_replace(PHP_EOL, "", $row->content), 0, 30)
|
||||
];
|
||||
} else if ($row->msg_type == 2) {
|
||||
$jsonText[] = [
|
||||
'nickname' => $row->nickname,
|
||||
'text' => '【文件消息】'
|
||||
];
|
||||
} else if ($row->msg_type == 5) {
|
||||
$jsonText[] = [
|
||||
'nickname' => $row->nickname,
|
||||
'text' => '【代码消息】'
|
||||
];
|
||||
switch ($row->msg_type) {
|
||||
case 1:
|
||||
$jsonText[] = [
|
||||
'nickname' => $row->nickname,
|
||||
'text' => mb_substr(str_replace(PHP_EOL, "", $row->content), 0, 30)
|
||||
];
|
||||
break;
|
||||
case 2:
|
||||
$jsonText[] = [
|
||||
'nickname' => $row->nickname,
|
||||
'text' => '【文件消息】'
|
||||
];
|
||||
break;
|
||||
case 3:
|
||||
$jsonText[] = [
|
||||
'nickname' => $row->nickname,
|
||||
'text' => '【代码消息】'
|
||||
];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$jsonText = json_encode($jsonText);
|
||||
|
||||
$insRecordIds = [];
|
||||
Db::beginTransaction();
|
||||
try {
|
||||
|
@ -602,7 +605,7 @@ class TalkService extends BaseService
|
|||
'record_id' => $res->id,
|
||||
'user_id' => $user_id,
|
||||
'records_id' => implode(',', $records_ids),
|
||||
'text' => $jsonText,
|
||||
'text' => json_encode($jsonText),
|
||||
'created_at' => date('Y-m-d H:i:s'),
|
||||
])) {
|
||||
throw new Exception('插入转发消息失败');
|
||||
|
|
|
@ -55,7 +55,7 @@ class UserService extends BaseService
|
|||
{
|
||||
Db::beginTransaction();
|
||||
try {
|
||||
$data['password'] = create_password($data['password']);
|
||||
$data['password'] = Hash::make($data['password']);
|
||||
$data['created_at'] = date('Y-m-d H:i:s');
|
||||
|
||||
$result = User::create($data);
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Common function method
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
use Hyperf\Contract\StdoutLoggerInterface;
|
||||
use Hyperf\HttpServer\Contract\ResponseInterface;
|
||||
use Hyperf\Logger\LoggerFactory;
|
||||
|
@ -13,6 +19,8 @@ use Hyperf\Redis\Redis;
|
|||
|
||||
/**
|
||||
* 容器实例
|
||||
*
|
||||
* @return \Psr\Container\ContainerInterface
|
||||
*/
|
||||
function container()
|
||||
{
|
||||
|
@ -21,6 +29,8 @@ function container()
|
|||
|
||||
/**
|
||||
* Redis 客户端实例
|
||||
*
|
||||
* @return Redis|mixed
|
||||
*/
|
||||
function redis()
|
||||
{
|
||||
|
@ -37,7 +47,6 @@ function server()
|
|||
return container()->get(ServerFactory::class)->getServer()->getServer();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* websocket frame 实例
|
||||
*/
|
||||
|
@ -82,7 +91,9 @@ function logger(string $name = 'APP')
|
|||
}
|
||||
|
||||
/**
|
||||
* http 请求实例
|
||||
* Http 请求实例
|
||||
*
|
||||
* @return mixed|ServerRequestInterface
|
||||
*/
|
||||
function request()
|
||||
{
|
||||
|
@ -91,23 +102,14 @@ function request()
|
|||
|
||||
/**
|
||||
* 请求响应
|
||||
*
|
||||
* @return ResponseInterface|mixed
|
||||
*/
|
||||
function response()
|
||||
{
|
||||
return container()->get(ResponseInterface::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取加密后的密码字符
|
||||
*
|
||||
* @param string $password
|
||||
* @return bool|false|null|string
|
||||
*/
|
||||
function create_password(string $password)
|
||||
{
|
||||
return password_hash($password, PASSWORD_DEFAULT);
|
||||
}
|
||||
|
||||
/**
|
||||
* 从HTML文本中提取所有图片
|
||||
* @param $content
|
||||
|
@ -147,7 +149,6 @@ function diff_date($day1, $day2)
|
|||
return ceil(($second1 - $second2) / 86400);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取媒体文件url
|
||||
*
|
||||
|
@ -188,9 +189,11 @@ function replace_url_link(string $str)
|
|||
|
||||
/**
|
||||
* 二维数组排序
|
||||
*
|
||||
* @param array $array 数组
|
||||
* @param string $field 排序字段
|
||||
* @param int $sort 排序方式
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function arraysSort(array $array, $field, $sort = SORT_DESC)
|
||||
|
@ -199,12 +202,12 @@ function arraysSort(array $array, $field, $sort = SORT_DESC)
|
|||
return $array;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 判断0或正整数
|
||||
*
|
||||
* @param string $int 验证字符串
|
||||
* @param bool $isZero 判断是否可为0
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
function check_int($int, $isZero = false)
|
||||
|
@ -213,6 +216,13 @@ function check_int($int, $isZero = false)
|
|||
return is_numeric($int) && preg_match($reg, $int);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析英文逗号',' 拼接的 ID 字符串
|
||||
*
|
||||
* @param string $ids 字符串(例如; "1,2,3,4,5,6")
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function parse_ids($ids)
|
||||
{
|
||||
return array_unique(explode(',', trim($ids)));
|
||||
|
|
51
test.php
51
test.php
|
@ -1,51 +0,0 @@
|
|||
<?php
|
||||
|
||||
require './vendor/autoload.php';
|
||||
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
use PHPMailer\PHPMailer\SMTP;
|
||||
use PHPMailer\PHPMailer\Exception;
|
||||
|
||||
|
||||
$config = [
|
||||
'host' => 'smtp.163.com',
|
||||
'port' => 465,
|
||||
'username' => '18798276809@163.com',
|
||||
'password' => 'RYD18798276809',
|
||||
'from' => [
|
||||
'address' => '18798276809@163.com',
|
||||
'name' => 'Lumen IM 在线聊天',
|
||||
],
|
||||
'encryption' => 'ssl',
|
||||
];
|
||||
|
||||
|
||||
$mail = new PHPMailer(true);
|
||||
try {
|
||||
//Server settings
|
||||
$mail->CharSet = 'UTF-8'; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
|
||||
$mail->IsSMTP(); // 设定使用SMTP服务
|
||||
$mail->SMTPDebug = 0; // 关闭SMTP调试功能
|
||||
$mail->SMTPAuth = true; // 启用 SMTP 验证功能
|
||||
$mail->SMTPAutoTLS = false;
|
||||
$mail->Host = $config['host']; // Set the SMTP server to send through
|
||||
$mail->Port = intval($config['port']); // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above
|
||||
$mail->Username = $config['username']; // SMTP username
|
||||
$mail->Password = $config['password']; // SMTP password
|
||||
$mail->SMTPSecure = $config['encryption']; // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
|
||||
|
||||
//Recipients
|
||||
$mail->setFrom($config['from']['address'], $config['from']['name']);
|
||||
|
||||
$mail->addAddress('837215079@qq.com'); // Name is optional
|
||||
|
||||
// Content
|
||||
$mail->isHTML(true); // Set email format to HTML
|
||||
$mail->Subject = 'Here is the subject';
|
||||
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
|
||||
|
||||
$mail->send();
|
||||
echo 'Message has been sent';
|
||||
} catch (Exception $e) {
|
||||
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
|
||||
}
|
Loading…
Reference in New Issue