This commit is contained in:
2025-11-22 15:31:01 +08:00
parent 9f25a85d07
commit b52a51c09b
37 changed files with 2587 additions and 240 deletions
+5
View File
@@ -120,6 +120,11 @@ class Auth implements MiddlewareInterface
'user' => session('admin'),
'config' => $config
]);
$IM = new \support\OpenImSdk\Client([
'host' => 'http://127.0.0.1:10002', // OpenIM API地址
'secret' => 'openIM123', // OpenIM密钥
]);
$request->IM = $IM;
$response = $next($request);
$headers = [
'Access-Control-Allow-Credentials' => 'true',
+73
View File
@@ -0,0 +1,73 @@
<?php
namespace app\command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface;
use support\think\Db;
class OpenIm extends Command
{
protected static $defaultName = 'openim';
protected static $defaultDescription = 'OpenIm';
/**
* @return void
*/
protected function configure()
{
$this->addOption('action','a', InputArgument::OPTIONAL, '操作类型');
}
/**
* @param InputInterface $input
* @param OutputInterface $output
* @return int
*/
protected function execute(InputInterface $input, OutputInterface $output): int
{
$action = $input->getOption('action');
if(!$action){
$output->writeln('空操作');
return self::FAILURE;
}
if(method_exists($this, $action)){
return $this->$action($input, $output);
}
return self::FAILURE;
}
private function sync_users(InputInterface $input, OutputInterface $output):int{
$im = new \support\OpenImSdk\Client([
'host' => 'http://127.0.0.1:10002', // OpenIM API地址
'secret' => 'openIM123', // OpenIM密钥
]);
$data = $im->user->getAllUsersUid(1,1000);
$exsit_user_ids = Db::name('user')->whereIn('id',$data['userIDs'])->column('id');
$not_exsit_user_ids =array_diff($data['userIDs'],$exsit_user_ids);
if(count($not_exsit_user_ids)> 0){
//同步用户
$res = $im->user->getUsersInfo($not_exsit_user_ids);
$save_data = [];
foreach($res['usersInfo'] as $k=>$_user){
array_push($save_data,[
'id' => $_user['userID'],
'nickname' => $_user['nickname'],
'password' => '123456',
'avatar' => $_user['faceURL']
]);
// "ex": "",
// "createTime": 1688454168302,
// "appMangerLevel": 18,
// "globalRecvMsgOpt": 0
}
if(!empty($save_data)){
Db::name('user')->insertAll($save_data);
}
}
return self::SUCCESS;
}
}
+1 -1
View File
@@ -20,7 +20,7 @@ class Otop extends Command
*/
protected function configure()
{
$this->addOption('user_id','uid', InputArgument::OPTIONAL, 'user_id');
$this->addOption('user_id','u', InputArgument::OPTIONAL, 'user_id');
}
/**
+1
View File
@@ -36,6 +36,7 @@ class ActionHook implements MiddlewareInterface
return $after_response;
}
}
return $response;
}
return $next($request);
+32
View File
@@ -75,6 +75,38 @@ use support\think\Db;
*/
class User extends Base
{
use \think\model\concern\SoftDelete;
public static function onAfterInsert($row){
$res = request()->IM->user->userRegister($row->id,$row->nickname,cdnurl($row->avatar));
}
public static function onAfterUpdate($row){
$changeData = $row->getChangedData();
$orgData = $row->getOrigin();
//cp($changeData);
if(isset($changeData['avatar']) || isset($changeData['nickname'])){
request()->IM->user->updateUserInfo($row->id,[
'nickname' => $row->nickname,
'faceURL' => cdnurl($row->avatar)
]);
}
if(isset($changeData['status']) || $changeData['status'] == '0'){
request()->IM->user->forceLogout($row->id);
}
}
public static function onAfterDelete($row)
{
Db::name('address')->where('user_id',$row->id)->delete();
Db::name('recharge')->where('user_id',$row->id)->delete();
Db::name('record')->where('user_id',$row->id)->delete();
Db::name('withdrawl')->where('user_id',$row->id)->delete();
Db::name('user_extend')->where('user_id',$row->id)->delete();
Db::name('user_team')->where('descendant_id|ancestor_id','=',$row->id)->delete();
Db::name('withdrawl')->where('user_id',$row->id)->delete();
foreach(Config('site.allow_currencys') as $currency){
(new \app\model\BalanceLog)->setSuffix('_'.$currency)->where('user_id',(int)$row->id)->delete();
}
request()->IM->user->forceLogout($row->id);
}
public function role()
{
return $this->belongsTo('\\app\\model\\UserRole', 'role_id', 'id');//->bind(['name']);