diff --git a/app/adminapi/controller/contract/VehicleContractController.php b/app/adminapi/controller/contract/VehicleContractController.php index a8d16aa3b..a7441c1a0 100644 --- a/app/adminapi/controller/contract/VehicleContractController.php +++ b/app/adminapi/controller/contract/VehicleContractController.php @@ -158,6 +158,9 @@ class VehicleContractController extends BaseAdminController if($contract['type'] == 0){ $smsTitle = '《租赁合同》'; $notify_url = env('project.website_domain').'/api/index/townCarRent'; + }elseif($contract['type'] == 1){ + $smsTitle = '《自有车辆上传合同》'; + $notify_url = env('project.website_domain').'/api/index/selfCarRent'; }elseif($contract['type'] == 2){ $smsTitle = '《解约合同》'; $notify_url = env('project.website_domain').'/api/index/cancelRent'; diff --git a/app/adminapi/logic/informationg/UserInformationgLogic.php b/app/adminapi/logic/informationg/UserInformationgLogic.php index 41b86ddaa..90f854c9d 100644 --- a/app/adminapi/logic/informationg/UserInformationgLogic.php +++ b/app/adminapi/logic/informationg/UserInformationgLogic.php @@ -151,7 +151,10 @@ class UserInformationgLogic extends BaseLogic 'category_child' => $v['category_child'], 'create_time' => $v['create_time'], 'update_time' => $v['update_time'], - 'datas' => $a + 'datas' => $a, + 'data_field' => json_decode($v['data_field']), + 'ai_question' => $v['ai_question'], + 'ai_aianalyse' => $v['ai_aianalyse'], ]; if ($a) { array_push($datas, $arr); diff --git a/app/api/controller/IndexController.php b/app/api/controller/IndexController.php index 1654cf9f2..3d4cc903d 100755 --- a/app/api/controller/IndexController.php +++ b/app/api/controller/IndexController.php @@ -360,6 +360,7 @@ class IndexController extends BaseApiController 'car_license' => $vehicle['license'], 'status' => 2, 'rent_time' => time(), + 'rent_contract_id' => $contract['id'], 'rent_company_id' => $contract['company_b_id'], 'create_time' => time(), 'type' => 1 @@ -443,7 +444,7 @@ class IndexController extends BaseApiController //小组公司与镇街公司解约 if($vehicleBuyRecord['status'] == 1){ //获取租赁车辆信息 - $rentCarsInfo = VehicleRent::field('id,type,contract_id')->where('car_id',$cars_ids[0])->findOrEmpty(); + $rentCarsInfo = VehicleRent::where('car_id',$cars_ids[0])->findOrEmpty(); if($rentCarsInfo['type'] == 0){ //修改租赁车俩状态 VehicleRent::where('id',$rentCarsInfo['id'])->update(['status'=>0,'rent_company_id'=>0,'rent_contract_id'=>0,'rent_time'=>0]); @@ -482,7 +483,51 @@ class IndexController extends BaseApiController return json(['success' => true, 'msg' => '成功']); } //小组公司与镇街公司解约,然后镇街公司与平台公司解约 - if($vehicleBuyRecord['status'] == 2){} + if($vehicleBuyRecord['status'] == 2){ + //获取租赁车辆信息 + $rentCarsInfo = VehicleRent::where('car_id',$cars_ids[0])->findOrEmpty(); + //获取镇街公司信息 + $zjCompany = Company::where('id',$rentCarsInfo['company_id'])->findOrEmpty(); + //判断购买车辆中是否包含镇街公司租赁的车辆 + $car_ids = array_column(json_decode($vehicleBuyRecord['cars_info'],true),'id'); + $zjRentCars = VehicleRent::field('car_id as id,car_license as license')->where('company_id',$zjCompany['id'])->where('car_id','in',$car_ids)->where('status',0)->where('type',0)->select(); + if($rentCarsInfo['type'] == 0){ + //修改租赁车俩状态 + VehicleRent::where('id',$rentCarsInfo['id'])->update(['status'=>0,'rent_company_id'=>0,'rent_contract_id'=>0,'rent_time'=>0]); + } + if($rentCarsInfo['type'] == 1){ + //修改租赁车俩状态 + VehicleRent::where('id',$rentCarsInfo['id'])->delete(); + } + //删除原合同 + VehicleContract::where('id',$rentCarsInfo['rent_contract_id'])->delete(); + //修改物流系统车辆租赁信息 + curl_post(env('project.logistic_domain').'/api/Vehicle/delRentUseInfo', [], [ + 'car_id' => $cars_ids[0] + ]); + //发送镇公司与平台公司的解约合同 + $curl_result = curl_post(env('project.logistic_domain').'/api/signContract',[],[ + 'num' => count($zjRentCars), + 'company_id' => $zjCompany['id'], + 'company_name' => $zjCompany['company_name'], + 'company_code' => $zjCompany['organization_code'], + 'company_user' => $zjCompany['master_name'], + 'company_phone' => $zjCompany['master_phone'], + 'company_email' => $zjCompany['master_email'], + 'cars_info' => json_encode($zjRentCars), + 'type' => 2 + ]); + if(empty($curl_result)){ + return $this->fail('null return from logistic'); + } + if($curl_result['code'] == 0){ + return $this->fail($curl_result['msg'].' from logistic'); + } + //生成本地合同 + VehicleContract::create($curl_result['data']); + VehicleBuyRecord::where('id',$vehicleBuyRecord['id'])->update(['status'=>3]); + return json(['success' => true, 'msg' => '成功']); + } //镇街公司与平台公司解约 if($vehicleBuyRecord['status'] == 3){ //删除本地租赁信息 @@ -518,16 +563,13 @@ class IndexController extends BaseApiController //更改租赁列表车辆状态 $vehicle = json_decode($contract['cars_info'], true); //获取租赁车辆信息 - $vehicleRentInfo = VehicleRent::where('car_id', $vehicle['id'])->find(); + $vehicleRentInfo = VehicleRent::where('car_id', $vehicle[0]['id'])->find(); //更新原始合同类型 - VehicleContract::where('id', $vehicleRentInfo['contract_id'])->update(['status' => 6]); - VehicleRent::where('car_id', $vehicle['id'])->update([ - 'status' => 3, - ]); + VehicleContract::where('id', $vehicleRentInfo['rent_contract_id'])->delete(); + VehicleRent::where('car_id', $vehicle[0]['id'])->delete(); //通知物流系统跟新 - curl_post(env('project.logistic_domain').'/api/cancelRent', [], [ - 'car_id' => $vehicle['id'], - 'status' => 1 + curl_post(env('project.logistic_domain').'/api/Vehicle/delRentUseInfo', [], [ + 'car_id' => $vehicle[0]['id'] ]); return json(['success' => true, 'msg' => '成功']); } diff --git a/app/api/controller/InformationController.php b/app/api/controller/InformationController.php index ed6814353..8b8f544d0 100644 --- a/app/api/controller/InformationController.php +++ b/app/api/controller/InformationController.php @@ -113,7 +113,6 @@ class InformationController extends BaseApiController } UserInformationg::where('id', $param['id'])->update(['update_time' => time(), 'is_update' => 1]); - return $this->success('成功'); } diff --git a/app/api/controller/VehicleController.php b/app/api/controller/VehicleController.php index 712dbbf5b..a30a26e2f 100644 --- a/app/api/controller/VehicleController.php +++ b/app/api/controller/VehicleController.php @@ -30,7 +30,7 @@ class VehicleController extends BaseApiController //自有车辆数量 $selfCar = VehicleRent::field('id')->where('company_id',$this->userInfo['company_id'])->where('status','<>',3)->where('type',1)->count(); //可在租车辆 - $doubleRentCar = $villageCompany - $rentCar - $applyCar - $selfCar; + $doubleRentCar = max($villageCompany - $rentCar - $applyCar - $selfCar,0); if($params['num'] > $doubleRentCar ){ return $this->fail('数量超过可再租车辆数'); } @@ -243,7 +243,7 @@ class VehicleController extends BaseApiController return $this->fail('请勿重复申请'); } if($params['type'] == 1){ - $cars_info = json_encode(['license'=>$params['license'],'pic'=>$params['pic']]); + $cars_info = json_encode([['license'=>$params['license'],'pic'=>$params['pic']]]); $car_type = 1; }else{ $cars_info = null; @@ -395,7 +395,7 @@ class VehicleController extends BaseApiController //自有车辆数量 $selfCar = VehicleRent::field('id')->where('company_id',$company['id'])->where('status','<>',3)->where('type',1)->count(); //可在租车辆 - $doubleRentCar = $villageCompany - $rentCar - $applyCar - $selfCar; + $doubleRentCar = max($villageCompany - $rentCar - $applyCar - $selfCar,0); //设置数据 $data = [ 'apply' => $vehicleContract, @@ -419,9 +419,17 @@ class VehicleController extends BaseApiController if($company['company_type'] != 18 ){ return $this->fail('非小组公司不能访问'); } + //获取购买车辆记录 + $buyCarRent = VehicleBuyRecord::where('company_id',$company['id'])->where('status','<>',4)->findOrEmpty(); + if($buyCarRent->isEmpty()){ + $data = VehicleContract::where('company_b_id',$company['id'])->where('type','<>',2)->order('id desc')->findOrEmpty(); + }else{ + $data = $buyCarRent; + $data['status'] = 0; + $data['type'] = 0; + } //获取签约合同 - $vehicleContract = VehicleContract::where('company_b_id',$company['id'])->where('type','<>',2)->order('id desc')->findOrEmpty(); - return $this->success('请求成功',$vehicleContract->toArray()); + return $this->success('请求成功',$data->toArray()); } //车辆详情 @@ -632,6 +640,9 @@ class VehicleController extends BaseApiController $xzRentCars = array_column($xzRentCars,'car_id'); //5、获取平台未出租的车辆 $result = curl_post(env('project.logistic_domain').'/api/Vehicle/getFreeCars',[],['ids'=>implode(',',array_merge($zjRentCars,$xzRentCars))]); + foreach($result['data'] as $k => $v){ + $result['data'][$k]['checked'] = []; + } //6、返回 return $this->success('success',$result['data']); } @@ -768,6 +779,48 @@ class VehicleController extends BaseApiController 'create_time' => time() ]); } + //如果有租赁车俩和上传自有车辆,也有购买镇街公司租赁的车辆 则先向镇街公司发起解约合同,再由镇街公司向平台公司发起解约合同 + if(!$xzRentCars->isEmpty() && !$zjRentCars->isEmpty()){ + //获取镇街公司信息 + $zjCompanyInfo = Company::field('id,company_name,master_name,master_phone,master_email,organization_code')->where('id',$zjCompany['party_a'])->findOrEmpty(); + //生成本地解约合同 + $res = VehicleContract::create([ + 'contract_no' => time(), + 'contract_logistic_id' => 0, + 'company_a_id' => $zjCompanyInfo['id'], + 'company_a_name' => $zjCompanyInfo['company_name'], + 'company_a_code' => $zjCompanyInfo['organization_code'], + 'company_a_user' => $zjCompanyInfo['master_name'], + 'company_a_phone' => $zjCompanyInfo['master_phone'], + 'company_a_email' => $zjCompanyInfo['master_email'], + 'company_b_id' => $xzCompany['id'], + 'company_b_name' => $xzCompany['company_name'], + 'company_b_code' => $xzCompany['organization_code'], + 'company_b_user' => $xzCompany['master_name'], + 'company_b_phone' => $xzCompany['master_phone'], + 'company_b_email' => $xzCompany['master_email'], + 'num' =>1, + 'cars_info' => json_encode([['id'=>$xzRentCars['car_id'],'license'=>$xzRentCars['car_license']]]), + 'type' => 2, + 'status' => 0, + 'create_time' => time(), + 'update_time' => time(), + ]); + //生成关联记录 + VehicleBuyRecord::create([ + 'company_id' => $xzCompany['id'], + 'company_name' => $xzCompany['company_name'], + 'company_code' => $xzCompany['organization_code'], + 'company_user' => $xzCompany['master_name'], + 'company_phone' => $xzCompany['master_phone'], + 'company_email' => $xzCompany['master_email'], + 'cars_info' => json_encode($cars), + 'num' => count($cars), + 'status' => 2, + 'contract_id' => $res->id, + 'create_time' => time() + ]); + } //更新物流系统 curl_post(env('project.logistic_domain').'/api/Vehicle/updateVehicleStatusToBuy',[],['car_ids'=>implode(',',$car_ids)]); return $this->success('合同发起成功,等待审核 from task'); diff --git a/app/api/controller/XunFeiController.php b/app/api/controller/XunFeiController.php index 3e017dc79..1bbc82654 100644 --- a/app/api/controller/XunFeiController.php +++ b/app/api/controller/XunFeiController.php @@ -18,6 +18,7 @@ use IFlytek\Xfyun\Speech\ChatClient; use IFlytek\Xfyun\Speech\IatClient; use IFlytek\Xfyun\Speech\TtsClient; use IFlytek\Xfyun\Speech\OcrClient; +use think\facade\Db; use WebSocket\Client; use GuzzleHttp\Client as GzClient; use GuzzleHttp\Psr7\Request; @@ -30,99 +31,148 @@ use Guzzle\Http\Exception\RequestException; */ class XunFeiController extends BaseApiController { - public array $notNeedLogin = ['chat', 'iat', 'tts', 'ocr', 'iatWss']; + public array $notNeedLogin = ['chat', 'iat', 'tts', 'ocr', 'iatWss', 'analyse']; private $app_id='2eda6c2e'; - private $api_key='12ec1f9d113932575fc4b114a2f60ffd'; - private $api_secret='MDEyMzE5YTc5YmQ5NjMwOTU1MWY4N2Y2'; + //星火认知chat public function chat() { header('X-Accel-Buffering: no'); - $parmas=$this->request->param('content'); - if(empty($parmas)){ - return $this->success('success'); + $content = $this->request->param('content'); + if(empty($content)){ + return $this->data(['answer' => '']); } $chat=new ChatClient($this->app_id,$this->api_key,$this->api_secret); $client = new Client($chat->assembleAuthUrl('wss://spark-api.xf-yun.com/v2.1/chat')); // 连接到 WebSocket 服务器 if ($client) { - // 发送数据到 WebSocket 服务器 - $data = $this->getBody($this->app_id,$parmas); + $header = [ + "app_id" => $this->app_id, + "uid" => "1" + ]; + $parameter = [ + "chat" => [ + "domain" => "generalv2", + "temperature" => 0.5, + "max_tokens" => 1024 + ] + ]; + $payload = [ + "message" => [ + "text" => [ + ["role" => "user", "content" => $content] + ] + ] + ]; + $data = json_encode([ + "header" => $header, + "parameter" => $parameter, + "payload" => $payload + ]); $client->send($data); - // 从 WebSocket 服务器接收数据 $answer = ""; while(true){ $response = $client->receive(); - $resp = json_decode($response,true); - $code = $resp["header"]["code"]; - // echo "从服务器接收到的数据: " . $response; + $resp = json_decode($response, true); + $code = $resp["header"]["code"] ?? 0; if(0 == $code){ $status = $resp["header"]["status"]; if($status != 2){ $content = $resp['payload']['choices']['text'][0]['content']; $answer .= $content; - print($answer); - ob_flush(); // 刷新输出缓冲区 - flush(); // 刷新系统输出缓冲区 }else{ $content = $resp['payload']['choices']['text'][0]['content']; $answer .= $content; - $total_tokens = $resp['payload']['usage']['text']['total_tokens']; - print("\n本次消耗token用量:\n"); - print($total_tokens); - ob_flush(); // 刷新输出缓冲区 - flush(); // 刷新系统输出缓冲区 break; } }else{ - return $this->fail( "服务返回报错".$response); + return $this->fail( "服务返回报错 " . $response); break; } } - ob_flush(); // 刷新输出缓冲区 - flush(); // 刷新系统输出缓冲区 - return $this->success('success'); - + return $this->data(['answer' => $answer]); } else { return $this->fail('无法连接到 WebSocket 服务器'); } } - //构造参数体 - function getBody($appid,$question){ - $header = array( - "app_id" => $appid, - "uid" => "1" - ); - - $parameter = array( - "chat" => array( - "domain" => "generalv2", - "temperature" => 0.5, - "max_tokens" => 1024 - ) - ); - - $payload = array( - "message" => array( - "text" => array( - array("role" => "user", "content" => $question) - ) - ) - ); - - $json_string = json_encode(array( - "header" => $header, - "parameter" => $parameter, - "payload" => $payload - )); - - return $json_string; + //AI分析信息 + public function analyse() + { + $informationg_demand_id = $this->request->param('informationg_demand_id'); + if(empty($informationg_demand_id)){ + return $this->fail('信息参数错误'); + } + $informationg = Db::name('user_informationg_demand')->where('id', $informationg_demand_id)->where('status', 1)->find(); + $type_name = Db::name('category_business')->where('id', $informationg['category_child'])->value('name'); + $data_field = json_decode($informationg['data_field'], true); + $demand = ''; + foreach($data_field as $k=>$v) { + $demand .= $k . ':' . $v . ';'; + } + $question = "分析以下{$type_name}信息【{$demand}】请问有那些商机?"; + $chat=new ChatClient($this->app_id,$this->api_key,$this->api_secret); + $client = new Client($chat->assembleAuthUrl('wss://spark-api.xf-yun.com/v2.1/chat')); + // 连接到 WebSocket 服务器 + if ($client) { + $header = [ + "app_id" => $this->app_id, + "uid" => "1" + ]; + $parameter = [ + "chat" => [ + "domain" => "generalv2", + "temperature" => 0.5, + "max_tokens" => 1024 + ] + ]; + $payload = [ + "message" => [ + "text" => [ + ["role" => "user", "content" => $question] + ] + ] + ]; + $data = json_encode([ + "header" => $header, + "parameter" => $parameter, + "payload" => $payload + ]); + $client->send($data); + $answer = ''; + while(true){ + $response = $client->receive(); + $resp = json_decode($response, true); + $code = $resp["header"]["code"] ?? 0; + if($code == 0){ + $status = $resp["header"]["status"]; + $content = $resp['payload']['choices']['text'][0]['content'] ?? ''; + $answer .= $content; + if($status == 2){ + break; + } + }else{ + return $this->fail( "服务返回报错 " . $response); + break; + } + } + $data = [ + 'ai_aianalyse' => $answer, + 'update_time' => time(), + ]; + $res = Db::name('user_informationg_demand')->where('id', $informationg_demand_id)->update($data); + if (!$res) { + return $this->fail('AI分析信息失败'); + } + } else { + return $this->fail('无法连接到 WebSocket 服务器'); + } + return $this->data(['question'=>$question, 'answer' => $answer]); } //语音听写(流式版) @@ -147,7 +197,7 @@ class XunFeiController extends BaseApiController $last_file = substr($savename, -36); $copyFile = app()->getRootPath() . '/public/uploads/iat/' . $last_file; - // 临时方案 + // ********** 临时方案 ********** // copy($file, $copyFile); // $last_file = 'a1fcdd96c7967b48add17b52ab456368.mp3'; $curl_url = "https://dev.app.tword.cn/ffmpeg.php?file={$last_file}"; @@ -277,7 +327,7 @@ class XunFeiController extends BaseApiController return $this->data(['words' => $words]); } - //获取websocket + //获取语音听写(流式版)websocket地址 public function iatWss() { header('X-Accel-Buffering: no'); diff --git a/app/api/controller/ZhiboController.php b/app/api/controller/ZhiboController.php new file mode 100644 index 000000000..c363b9f0e --- /dev/null +++ b/app/api/controller/ZhiboController.php @@ -0,0 +1,41 @@ +data([]); + } + +} diff --git a/app/common/model/informationg/UserInformationg.php b/app/common/model/informationg/UserInformationg.php index ac45ce461..1d84b9ef9 100644 --- a/app/common/model/informationg/UserInformationg.php +++ b/app/common/model/informationg/UserInformationg.php @@ -8,6 +8,7 @@ use think\facade\Log; use app\common\logic\BaseLogic; use app\common\model\Company; use app\common\model\user\User; +use app\job\AiAianalyse; class UserInformationg extends BaseModel { @@ -87,24 +88,44 @@ class UserInformationg extends BaseModel public static function informationg_demand($param, $id, $admin_id) { + $data_field = []; if (isset($param['card_id']) && $param['card_id'] > 0) { - $category_id = Db::name('category_business')->where('id', $param['card_id'])->value('pid'); + $category_info = Db::name('category_business')->where('id', $param['card_id'])->field(['pid', 'data_field'])->find(); $category_child = $param['card_id']; + $field_array = json_decode($category_info['data_field'], true); + if (!empty($field_array) && is_array($field_array)) { + // 拼装词语 + foreach($param['datas'] as $k => $v) { + if (!empty($field_array[$k]['text'])) { + $key = $field_array[$k]['text']; + if (!empty($field_array[$k]['enum'])) { + $data_field[$key] = $field_array[$k]['enum'][$v] ?? ''; + } else { + $data_field[$key] = $v; + } + } + } + } } else { $category_id = 0; $category_child = 0; } $data = [ 'create_user_id' => $admin_id, - 'category_id' => $category_id, + 'category_id' => $category_info['pid'] ?? 0, 'category_child' => $category_child, 'data' => json_encode($param['datas']), + 'data_field' => json_encode($data_field), 'create_time' => time(), 'update_time' => time(), 'status' => 1, 'information_id' => $id, ]; - return UserInformationgDemand::create($data); + $res = UserInformationgDemand::create($data); + if ($res) { + queue(AiAianalyse::class, $data); + } + return $res; } public static function details($id) @@ -120,7 +141,10 @@ class UserInformationg extends BaseModel $arr = [ 'id' => $v['category_child'], 'update_time' => $v['update_time'], - 'datas' => $v['data'] + 'datas' => $v['data'], + 'data_field' => json_decode($v['data_field']), + 'ai_question' => $v['ai_question'], + 'ai_aianalyse' => $v['ai_aianalyse'], ]; if ($v['data']) { array_push($datas, $arr); @@ -131,6 +155,19 @@ class UserInformationg extends BaseModel return $item; } + public static function business_opportunity($informationg_id_array) + { + $demand_id_array = UserInformationgDemand::whereIn('information_id', $informationg_id_array)->where('status', 1)->field(['max(id) as demand_id'])->group('information_id')->select()->column('demand_id'); + $data = UserInformationgDemand::whereIn('id', $demand_id_array)->column('*', 'information_id'); + foreach($data as &$item) { + $item['data'] = json_decode($item['data'], true); + $item['data_field'] = json_decode($item['data_field'], true); + $item['relation_goods'] = []; + } + unset($item); + return $data; + } + public function company() { return $this->hasOne(Company::class, 'id', 'company_id')->field(['id', 'company_name', 'admin_id']); diff --git a/app/job/AiAianalyse.php b/app/job/AiAianalyse.php new file mode 100644 index 000000000..d32417d49 --- /dev/null +++ b/app/job/AiAianalyse.php @@ -0,0 +1,93 @@ +attempts() > 3) { + //通过这个方法可以检查这个任务已经重试了几次了 + $job->delete(); + } + $type_name = Db::name('category_business')->where('id', $data['category_child'])->value('name'); + $data_field = json_decode($data['data_field'], true); + $demand = ''; + foreach($data_field as $k=>$v) { + $demand .= $k . ':' . $v . ';'; + } + $question = "分析以下{$type_name}信息【{$demand}】请问有那些商机?需要购买哪些商品?"; + try { + $chat=new ChatClient($this->app_id,$this->api_key,$this->api_secret); + $client = new Client($chat->assembleAuthUrl('wss://spark-api.xf-yun.com/v2.1/chat')); + if ($client) { + $header = [ + "app_id" => $this->app_id, + "uid" => "1" + ]; + $parameter = [ + "chat" => [ + "domain" => "generalv2", + "temperature" => 0.5, + "max_tokens" => 1024 + ] + ]; + $payload = [ + "message" => [ + "text" => [ + ["role" => "user", "content" => $question] + ] + ] + ]; + $chat_data = json_encode([ + "header" => $header, + "parameter" => $parameter, + "payload" => $payload + ]); + + $client->send($chat_data); + $answer = ''; + while(true){ + $response = $client->receive(); + $resp = json_decode($response, true); + $code = $resp["header"]["code"] ?? 0; + if($code > 0){ + break; + } + $status = $resp["header"]["status"]; + $content = $resp['payload']['choices']['text'][0]['content'] ?? ''; + $answer .= $content; + if($status == 2){ + break; + } + } + $update_data = [ + 'ai_question' => $question, + 'ai_aianalyse' => $answer, + 'update_time' => time(), + ]; + unset($data['data'], $data['data_field']); + Db::name('user_informationg_demand')->where($data)->update($update_data); + } + } catch (\Exception $e) {} + $job->delete(); + } +} diff --git a/composer.json b/composer.json index 1629869c5..6f6006354 100755 --- a/composer.json +++ b/composer.json @@ -42,7 +42,8 @@ "workerman/gateway-worker": "^3.1", "workerman/gatewayclient": "^3.0", "jpush/jpush": "^3.6", - "topthink/think-filesystem": "^2.0" + "topthink/think-filesystem": "^2.0", + "alibabacloud/live": "^1.8" }, "require-dev": { "symfony/var-dumper": "^4.2", diff --git a/composer.lock b/composer.lock index 476d0f8ce..430db2866 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d25d7e585d92ff404a5aaad86a120d75", + "content-hash": "0ba9392aaf4e23b4c1f1d571084d8951", "packages": [ { "name": "adbario/php-dot-notation", @@ -155,6 +155,64 @@ }, "time": "2022-12-09T04:05:55+00:00" }, + { + "name": "alibabacloud/live", + "version": "1.8.958", + "source": { + "type": "git", + "url": "https://github.com/alibabacloud-sdk-php/live.git", + "reference": "2dc756e9e156cb33bc1287d28fc3fade87e4ae60" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alibabacloud-sdk-php/live/zipball/2dc756e9e156cb33bc1287d28fc3fade87e4ae60", + "reference": "2dc756e9e156cb33bc1287d28fc3fade87e4ae60", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "alibabacloud/client": "^1.5", + "php": ">=5.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "AlibabaCloud\\Live\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Alibaba Cloud SDK", + "email": "sdk-team@alibabacloud.com", + "homepage": "http://www.alibabacloud.com" + } + ], + "description": "Alibaba Cloud Live SDK for PHP", + "homepage": "https://www.alibabacloud.com/", + "keywords": [ + "alibaba", + "alibabacloud", + "aliyun", + "cloud", + "library", + "live", + "sdk" + ], + "support": { + "issues": "https://github.com/alibabacloud-sdk-php/live/issues", + "source": "https://github.com/alibabacloud-sdk-php/live" + }, + "time": "2021-04-29T09:14:45+00:00" + }, { "name": "aliyuncs/oss-sdk-php", "version": "v2.6.0", diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index bec0e6301..5ed199ec7 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -16,16 +16,16 @@ return array( '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', 'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php', + 'd767e4fc2dc52fe66584ab8c6684783e' => $vendorDir . '/adbario/php-dot-notation/src/helpers.php', + 'b067bc7112e384b61c701452d53a14a8' => $vendorDir . '/mtdowling/jmespath.php/src/JmesPath.php', 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php', '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', - 'd767e4fc2dc52fe66584ab8c6684783e' => $vendorDir . '/adbario/php-dot-notation/src/helpers.php', + '66453932bc1be9fb2f910a27947d11b6' => $vendorDir . '/alibabacloud/client/src/Functions.php', '2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', - 'b067bc7112e384b61c701452d53a14a8' => $vendorDir . '/mtdowling/jmespath.php/src/JmesPath.php', 'c5521cebe610a9bf42c44b3a5163adfd' => $vendorDir . '/overtrue/socialite/src/Contracts/FactoryInterface.php', 'ccd11c8e7dd9b33638b248681bdfba27' => $vendorDir . '/overtrue/socialite/src/Contracts/UserInterface.php', '5649552725dea6ec47381627600e3ac1' => $vendorDir . '/overtrue/socialite/src/Contracts/ProviderInterface.php', '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php', - '66453932bc1be9fb2f910a27947d11b6' => $vendorDir . '/alibabacloud/client/src/Functions.php', 'cd5441689b14144e5573bf989ee47b34' => $vendorDir . '/qcloud/cos-sdk-v5/src/Common.php', '841780ea2e1d6545ea3a253239d59c05' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/functions.php', '941748b3c8cae4466c827dfb5ca9602a' => $vendorDir . '/rmccue/requests/library/Deprecated.php', diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index ccca41103..1306e8a46 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -10,7 +10,7 @@ return array( 'think\\view\\driver\\' => array($vendorDir . '/topthink/think-view/src'), 'think\\trace\\' => array($vendorDir . '/topthink/think-trace/src'), 'think\\app\\' => array($vendorDir . '/topthink/think-multi-app/src'), - 'think\\' => array($vendorDir . '/topthink/framework/src/think', $vendorDir . '/topthink/think-helper/src', $vendorDir . '/topthink/think-orm/src', $vendorDir . '/topthink/think-queue/src', $vendorDir . '/topthink/think-template/src', $vendorDir . '/topthink/think-filesystem/src'), + 'think\\' => array($vendorDir . '/topthink/framework/src/think', $vendorDir . '/topthink/think-filesystem/src', $vendorDir . '/topthink/think-helper/src', $vendorDir . '/topthink/think-orm/src', $vendorDir . '/topthink/think-queue/src', $vendorDir . '/topthink/think-template/src'), 'clagiordano\\weblibs\\configmanager\\' => array($vendorDir . '/clagiordano/weblibs-configmanager/src'), 'app\\' => array($baseDir . '/app'), 'ZipStream\\' => array($vendorDir . '/maennchen/zipstream-php/src'), @@ -74,6 +74,7 @@ return array( 'Cron\\' => array($vendorDir . '/dragonmantank/cron-expression/src/Cron'), 'Complex\\' => array($vendorDir . '/markbaker/complex/classes/src'), 'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'), + 'AlibabaCloud\\Live\\' => array($vendorDir . '/alibabacloud/live'), 'AlibabaCloud\\Client\\' => array($vendorDir . '/alibabacloud/client/src'), 'Adbar\\' => array($vendorDir . '/adbario/php-dot-notation/src'), '' => array($vendorDir . '/phrity/util-errorhandler/src'), diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 5b1380ffd..bdef077a7 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -17,16 +17,16 @@ class ComposerStaticInit7f3b0f886ea5f6310a43341d4e2b8ffb '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', 'a1105708a18b76903365ca1c4aa61b02' => __DIR__ . '/..' . '/symfony/translation/Resources/functions.php', + 'd767e4fc2dc52fe66584ab8c6684783e' => __DIR__ . '/..' . '/adbario/php-dot-notation/src/helpers.php', + 'b067bc7112e384b61c701452d53a14a8' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/JmesPath.php', 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php', '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', - 'd767e4fc2dc52fe66584ab8c6684783e' => __DIR__ . '/..' . '/adbario/php-dot-notation/src/helpers.php', + '66453932bc1be9fb2f910a27947d11b6' => __DIR__ . '/..' . '/alibabacloud/client/src/Functions.php', '2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', - 'b067bc7112e384b61c701452d53a14a8' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/JmesPath.php', 'c5521cebe610a9bf42c44b3a5163adfd' => __DIR__ . '/..' . '/overtrue/socialite/src/Contracts/FactoryInterface.php', 'ccd11c8e7dd9b33638b248681bdfba27' => __DIR__ . '/..' . '/overtrue/socialite/src/Contracts/UserInterface.php', '5649552725dea6ec47381627600e3ac1' => __DIR__ . '/..' . '/overtrue/socialite/src/Contracts/ProviderInterface.php', '23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php', - '66453932bc1be9fb2f910a27947d11b6' => __DIR__ . '/..' . '/alibabacloud/client/src/Functions.php', 'cd5441689b14144e5573bf989ee47b34' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Common.php', '841780ea2e1d6545ea3a253239d59c05' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/functions.php', '941748b3c8cae4466c827dfb5ca9602a' => __DIR__ . '/..' . '/rmccue/requests/library/Deprecated.php', @@ -162,6 +162,7 @@ class ComposerStaticInit7f3b0f886ea5f6310a43341d4e2b8ffb ), 'A' => array ( + 'AlibabaCloud\\Live\\' => 18, 'AlibabaCloud\\Client\\' => 20, 'Adbar\\' => 6, ), @@ -187,11 +188,11 @@ class ComposerStaticInit7f3b0f886ea5f6310a43341d4e2b8ffb 'think\\' => array ( 0 => __DIR__ . '/..' . '/topthink/framework/src/think', - 1 => __DIR__ . '/..' . '/topthink/think-helper/src', - 2 => __DIR__ . '/..' . '/topthink/think-orm/src', - 3 => __DIR__ . '/..' . '/topthink/think-queue/src', - 4 => __DIR__ . '/..' . '/topthink/think-template/src', - 5 => __DIR__ . '/..' . '/topthink/think-filesystem/src', + 1 => __DIR__ . '/..' . '/topthink/think-filesystem/src', + 2 => __DIR__ . '/..' . '/topthink/think-helper/src', + 3 => __DIR__ . '/..' . '/topthink/think-orm/src', + 4 => __DIR__ . '/..' . '/topthink/think-queue/src', + 5 => __DIR__ . '/..' . '/topthink/think-template/src', ), 'clagiordano\\weblibs\\configmanager\\' => array ( @@ -446,6 +447,10 @@ class ComposerStaticInit7f3b0f886ea5f6310a43341d4e2b8ffb array ( 0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon', ), + 'AlibabaCloud\\Live\\' => + array ( + 0 => __DIR__ . '/..' . '/alibabacloud/live', + ), 'AlibabaCloud\\Client\\' => array ( 0 => __DIR__ . '/..' . '/alibabacloud/client/src', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index fc826a447..bc53f6004 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -155,6 +155,67 @@ }, "install-path": "../alibabacloud/client" }, + { + "name": "alibabacloud/live", + "version": "1.8.958", + "version_normalized": "1.8.958.0", + "source": { + "type": "git", + "url": "https://github.com/alibabacloud-sdk-php/live.git", + "reference": "2dc756e9e156cb33bc1287d28fc3fade87e4ae60" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alibabacloud-sdk-php/live/zipball/2dc756e9e156cb33bc1287d28fc3fade87e4ae60", + "reference": "2dc756e9e156cb33bc1287d28fc3fade87e4ae60", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "alibabacloud/client": "^1.5", + "php": ">=5.5" + }, + "time": "2021-04-29T09:14:45+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "AlibabaCloud\\Live\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Alibaba Cloud SDK", + "email": "sdk-team@alibabacloud.com", + "homepage": "http://www.alibabacloud.com" + } + ], + "description": "Alibaba Cloud Live SDK for PHP", + "homepage": "https://www.alibabacloud.com/", + "keywords": [ + "alibaba", + "alibabacloud", + "aliyun", + "cloud", + "library", + "live", + "sdk" + ], + "support": { + "issues": "https://github.com/alibabacloud-sdk-php/live/issues", + "source": "https://github.com/alibabacloud-sdk-php/live" + }, + "install-path": "../alibabacloud/live" + }, { "name": "aliyuncs/oss-sdk-php", "version": "v2.6.0", diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 6f5fb6fb5..a1cba6e1f 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'topthink/think', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '79fc9780490166b204ecd49aaeda85e93e94cf2d', + 'reference' => '93ef4ca7130cd285dd44ca7dec8be67c86d7be20', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -28,6 +28,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'alibabacloud/live' => array( + 'pretty_version' => '1.8.958', + 'version' => '1.8.958.0', + 'reference' => '2dc756e9e156cb33bc1287d28fc3fade87e4ae60', + 'type' => 'library', + 'install_path' => __DIR__ . '/../alibabacloud/live', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'aliyuncs/oss-sdk-php' => array( 'pretty_version' => 'v2.6.0', 'version' => '2.6.0.0', @@ -676,7 +685,7 @@ 'topthink/think' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '79fc9780490166b204ecd49aaeda85e93e94cf2d', + 'reference' => '93ef4ca7130cd285dd44ca7dec8be67c86d7be20', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/vendor/services.php b/vendor/services.php index 565e9e7bb..5443224a5 100644 --- a/vendor/services.php +++ b/vendor/services.php @@ -1,5 +1,5 @@ 'think\\app\\Service',