|
|
@@ -13,12 +13,15 @@ use App\Model\ChatTopicClass;
|
|
|
use App\Model\User;
|
|
|
use App\Tools\PublicData;
|
|
|
use App\Tools\Result;
|
|
|
+use Hyperf\Context\Context;
|
|
|
use Hyperf\DbConnection\Db;
|
|
|
use Hyperf\RpcServer\Annotation\RpcService;
|
|
|
use Hyperf\Context\ApplicationContext as ContextApplicationContext;
|
|
|
use Hyperf\Amqp\Producer;
|
|
|
|
|
|
use App\Amqp\Producer\MqProducer;
|
|
|
+use function Hyperf\Support\env;
|
|
|
+
|
|
|
#[RpcService(name: "ChatService", protocol: "jsonrpc-http", server: "jsonrpc-http")]
|
|
|
class ChatService implements ChatServiceInterface
|
|
|
{
|
|
|
@@ -860,39 +863,40 @@ class ChatService implements ChatServiceInterface
|
|
|
$data['status'] = 1;
|
|
|
}else{
|
|
|
$data['status'] = 2;
|
|
|
- if($data['is_group'] == 1){
|
|
|
- $group_id = PublicData::uuid();
|
|
|
- $groupData = [
|
|
|
- 'id' => $group_id,
|
|
|
- 'creator_id' => $data['user_id'],
|
|
|
- 'group_name' => $data['group_name'] ?? '',
|
|
|
- 'profile' => '',
|
|
|
- ];
|
|
|
- $groupResult = ChatGroups::insertGetId($groupData);
|
|
|
- $groupMemberData = [
|
|
|
- 'id' => PublicData::uuid(),
|
|
|
- 'user_id' => $data['user_id'],
|
|
|
- 'group_id' => $group_id,
|
|
|
- 'leader' => 2,
|
|
|
- ];
|
|
|
- $groupMemberResult = ChatGroupsMember::insertGetId($groupMemberData);
|
|
|
+
|
|
|
+// if($data['is_group'] == 1){
|
|
|
+// $group_id = PublicData::uuid();
|
|
|
+// $groupData = [
|
|
|
+// 'id' => $group_id,
|
|
|
+// 'creator_id' => $data['user_id'],
|
|
|
+// 'group_name' => $data['group_name'] ?? '',
|
|
|
+// 'profile' => '',
|
|
|
+// ];
|
|
|
+// $groupResult = ChatGroups::insertGetId($groupData);
|
|
|
+// $groupMemberData = [
|
|
|
+// 'id' => PublicData::uuid(),
|
|
|
+// 'user_id' => $data['user_id'],
|
|
|
+// 'group_id' => $group_id,
|
|
|
+// 'leader' => 2,
|
|
|
+// ];
|
|
|
+// $groupMemberResult = ChatGroupsMember::insertGetId($groupMemberData);
|
|
|
//更新result的 group_id
|
|
|
- $datas['group_id'] = $group_id;
|
|
|
- ChatTopic::where(['id' => $data['id']])->update($datas);
|
|
|
+// $datas['group_id'] = $group_id;
|
|
|
+// ChatTopic::where(['id' => $data['id']])->update($datas);
|
|
|
|
|
|
//插入一条消息
|
|
|
- $chatRecordsData = [
|
|
|
- 'user_id' => $data['user_id'],
|
|
|
- 'receiver_id' => $group_id,
|
|
|
- 'content' => '我创建了一个群' . Date('Y-m-d H:i:s'),
|
|
|
- 'msg_type' => 1,
|
|
|
- 'is_read' => 0,
|
|
|
- 'talk_type' => 2,
|
|
|
- 'action' => 'said',
|
|
|
- 'group_receiver_id' => $data['user_id'],
|
|
|
- ];
|
|
|
- ChatRecords::insert($chatRecordsData);
|
|
|
- }
|
|
|
+// $chatRecordsData = [
|
|
|
+// 'user_id' => $data['user_id'],
|
|
|
+// 'receiver_id' => $group_id,
|
|
|
+// 'content' => '我创建了一个群' . Date('Y-m-d H:i:s'),
|
|
|
+// 'msg_type' => 1,
|
|
|
+// 'is_read' => 0,
|
|
|
+// 'talk_type' => 2,
|
|
|
+// 'action' => 'said',
|
|
|
+// 'group_receiver_id' => $data['user_id'],
|
|
|
+// ];
|
|
|
+// ChatRecords::insert($chatRecordsData);
|
|
|
+// }
|
|
|
|
|
|
}
|
|
|
unset($data['type_id']);
|
|
|
@@ -913,58 +917,30 @@ class ChatService implements ChatServiceInterface
|
|
|
$query = ChatTopic::where(['id' => $data['id']]);
|
|
|
$topdata = $query->first();
|
|
|
|
|
|
- $result = ChatTopic::where(['id' => $data['id']])->update(['status' => $data['status']]);
|
|
|
- // var_dump($data, 'tedst111111111111111');
|
|
|
- // var_dump(date('Y-m-d H:i:s'), 'tedst111111111111111');
|
|
|
- $creatter = $topdata['user_id'];
|
|
|
- if ($data['status'] == 2 && $topdata['is_group'] == 1) {
|
|
|
- $group_id = '';
|
|
|
- if(empty($topdata['group_id'])){
|
|
|
- $group_id = PublicData::uuid();
|
|
|
- $groupData = [
|
|
|
- 'id' => $group_id,
|
|
|
- 'creator_id' => $topdata['user_id'],
|
|
|
- 'group_name' => $topdata['group_name'] ?? '',
|
|
|
- 'profile' => '',
|
|
|
+ $group_id = '';
|
|
|
+ /**************************************new*************************************************************/
|
|
|
+ if($data['status']==2){
|
|
|
+ //同意-需要创建群聊-开始创建
|
|
|
+ if($topdata['is_group']==1){
|
|
|
+ //是否已经创建过群聊-没有创建才进行创建
|
|
|
+ if(!$topdata['group_id']){
|
|
|
+ $url = env('IM_URL').'/api/v1/group/create';
|
|
|
+ $dataIM = [
|
|
|
+ 'avatar' => '',
|
|
|
+ 'name' => $topdata['group_name'],
|
|
|
+ 'profile'=>'',
|
|
|
+ 'ids' => '',
|
|
|
+ 'create_user_id'=>$topdata['user_id']
|
|
|
];
|
|
|
- $groupResult = ChatGroups::insertGetId($groupData);
|
|
|
- $groupMemberData = [
|
|
|
- 'id' => PublicData::uuid(),
|
|
|
- 'user_id' => $topdata['user_id'],
|
|
|
- 'group_id' => $group_id,
|
|
|
- 'leader' => 2,
|
|
|
+ $options = [
|
|
|
+ 'authorization'=>$data['token']
|
|
|
];
|
|
|
- $groupMemberResult = ChatGroupsMember::insertGetId($groupMemberData);
|
|
|
- }else{
|
|
|
- $group_id = $topdata['group_id'];
|
|
|
+ $res = PublicData::im_post($url,$dataIM,$options);
|
|
|
+ if($res['code']==200){
|
|
|
+ $group_id = $res['data']['group_id'];
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- //更新result的 group_id
|
|
|
- $datas['group_id'] = $group_id;
|
|
|
- ChatTopic::where(['id' => $data['id']])->update($datas);
|
|
|
-
|
|
|
- //插入一条消息
|
|
|
- $chatRecordsData = [
|
|
|
- 'user_id' => $topdata['user_id'],
|
|
|
- 'receiver_id' => $group_id,
|
|
|
- 'content' => '我创建了一个群' . Date('Y-m-d H:i:s'),
|
|
|
- 'msg_type' => 1,
|
|
|
- 'is_read' => 0,
|
|
|
- 'talk_type' => 2,
|
|
|
- 'action' => 'said',
|
|
|
- 'group_receiver_id' => $topdata['user_id'],
|
|
|
- ];
|
|
|
- ChatRecords::insert($chatRecordsData);
|
|
|
-
|
|
|
-
|
|
|
- } elseif ($data['status'] == 3) {
|
|
|
- if(isset($topdata['group_id']) && !empty($topdata['group_id'])){
|
|
|
- ChatRecords::where('receiver_id', $topdata['group_id'])->delete();
|
|
|
- ChatGroupsMember::where('group_id', $topdata['group_id'])
|
|
|
- ->where([["user_id", '!=', $creatter]])->delete();
|
|
|
- }
|
|
|
- }
|
|
|
- if($data['status'] == 2){
|
|
|
+ }
|
|
|
$this->sendMessage([
|
|
|
'talk_type'=>301,
|
|
|
'title'=>$topdata['title'],
|
|
|
@@ -972,7 +948,24 @@ class ChatService implements ChatServiceInterface
|
|
|
'messageType'=>4,
|
|
|
'user_id'=>$topdata['user_id'],
|
|
|
]);
|
|
|
- }else if($data['status'] == 3){
|
|
|
+ }else if($data['status']==3){
|
|
|
+ if($topdata['group_id']){
|
|
|
+ $url = env('IM_URL').'/api/v1/group/dismiss';
|
|
|
+ $dataIM = [
|
|
|
+ 'group_id' => intval($topdata['group_id']),
|
|
|
+ 'create_user_id'=>$topdata['user_id']
|
|
|
+ ];
|
|
|
+ $options = [
|
|
|
+ 'authorization'=>$data['token']
|
|
|
+ ];
|
|
|
+ $res = PublicData::im_post($url,$dataIM,$options);
|
|
|
+ if($res['code']!=200){
|
|
|
+ //$group_id = $res['data']['group_id'];
|
|
|
+ Db::rollBack();
|
|
|
+ return Result::error($data, '群聊解散失败');
|
|
|
+ }
|
|
|
+ $group_id = '';
|
|
|
+ }
|
|
|
$this->sendMessage([
|
|
|
'talk_type'=>301,
|
|
|
'title'=>$topdata['title'],
|
|
|
@@ -981,6 +974,58 @@ class ChatService implements ChatServiceInterface
|
|
|
'user_id'=>$topdata['user_id'],
|
|
|
]);
|
|
|
}
|
|
|
+//====================================================================================
|
|
|
+// $creatter = $topdata['user_id'];
|
|
|
+// if ($data['status'] == 2 && $topdata['is_group'] == 1) {
|
|
|
+// $group_id = '';
|
|
|
+// if(empty($topdata['group_id'])){
|
|
|
+// $group_id = PublicData::uuid();
|
|
|
+// $groupData = [
|
|
|
+// 'id' => $group_id,
|
|
|
+// 'creator_id' => $topdata['user_id'],
|
|
|
+// 'group_name' => $topdata['group_name'] ?? '',
|
|
|
+// 'profile' => '',
|
|
|
+// ];
|
|
|
+// $groupResult = ChatGroups::insertGetId($groupData);
|
|
|
+// $groupMemberData = [
|
|
|
+// 'id' => PublicData::uuid(),
|
|
|
+// 'user_id' => $topdata['user_id'],
|
|
|
+// 'group_id' => $group_id,
|
|
|
+// 'leader' => 2,
|
|
|
+// ];
|
|
|
+// $groupMemberResult = ChatGroupsMember::insertGetId($groupMemberData);
|
|
|
+// }else{
|
|
|
+// $group_id = $topdata['group_id'];
|
|
|
+// }
|
|
|
+
|
|
|
+ //更新result的 group_id
|
|
|
+// $datas['group_id'] = $group_id;
|
|
|
+
|
|
|
+// ChatTopic::where(['id' => $data['id']])->update($datas);
|
|
|
+
|
|
|
+ //插入一条消息
|
|
|
+// $chatRecordsData = [
|
|
|
+// 'user_id' => $topdata['user_id'],
|
|
|
+// 'receiver_id' => $group_id,
|
|
|
+// 'content' => '我创建了一个群' . Date('Y-m-d H:i:s'),
|
|
|
+// 'msg_type' => 1,
|
|
|
+// 'is_read' => 0,
|
|
|
+// 'talk_type' => 2,
|
|
|
+// 'action' => 'said',
|
|
|
+// 'group_receiver_id' => $topdata['user_id'],
|
|
|
+// ];
|
|
|
+// ChatRecords::insert($chatRecordsData);
|
|
|
+
|
|
|
+
|
|
|
+// } elseif ($data['status'] == 3) {
|
|
|
+// if(isset($topdata['group_id']) && !empty($topdata['group_id'])){
|
|
|
+// ChatRecords::where('receiver_id', $topdata['group_id'])->delete();
|
|
|
+// ChatGroupsMember::where('group_id', $topdata['group_id'])
|
|
|
+// ->where([["user_id", '!=', $creatter]])->delete();
|
|
|
+// }
|
|
|
+// }
|
|
|
+//====================================================================================
|
|
|
+ $result = ChatTopic::where(['id' => $data['id']])->update(['status' => $data['status'],'group_id'=>$group_id]);
|
|
|
Db::commit();
|
|
|
if ($result) {
|
|
|
return Result::success($data);
|
|
|
@@ -1009,7 +1054,8 @@ class ChatService implements ChatServiceInterface
|
|
|
]);
|
|
|
$data['status'] = 1;
|
|
|
}
|
|
|
-
|
|
|
+ var_dump($data);
|
|
|
+ unset($data['type_id']);
|
|
|
$result = ChatTopic::where(['id' => $data['id']])->update($data);
|
|
|
if ($result) {
|
|
|
return Result::success($data);
|
|
|
@@ -1097,7 +1143,7 @@ class ChatService implements ChatServiceInterface
|
|
|
$groupIdList = $data['group_member'];
|
|
|
array_push($groupIdList,$data['user_id']);
|
|
|
// var_dump("几个",$groupIdList);
|
|
|
- ChatRecords::whereNotIn('receiver_id',$groupIdList)->delete();
|
|
|
+ ChatRecords::whereNotIn('user_id',$groupIdList)->where('group_id',$data['group_id'])->delete();
|
|
|
|
|
|
// 获取群信息
|
|
|
$groupInfo = ChatGroups::where(['id' => $group_id])->first();
|