|
|
@@ -11,6 +11,11 @@ use App\Model\ChatTopicsReply;
|
|
|
|
|
|
use App\Model\ChatTopicClass;
|
|
|
use App\Model\User;
|
|
|
+use App\Model\GroupMemberImp;
|
|
|
+use App\Model\GroupImp;
|
|
|
+use App\Model\GroupTalkImp;
|
|
|
+
|
|
|
+
|
|
|
use App\Tools\PublicData;
|
|
|
use App\Tools\Result;
|
|
|
use Hyperf\DbConnection\Db;
|
|
|
@@ -774,6 +779,37 @@ class ChatService implements ChatServiceInterface
|
|
|
*/
|
|
|
public function joinGroup(array $data): array
|
|
|
{
|
|
|
+ //新版im
|
|
|
+ $group = GroupImp::where(['id' => $data['group_id']])->first();
|
|
|
+ if (empty($group)) {
|
|
|
+ return Result::error("群不存在", 0);
|
|
|
+ }
|
|
|
+ $groupMember = GroupMemberImp::where(['user_id' => $data['user_id'], 'group_id' => $data['group_id']])->first();
|
|
|
+ if ($groupMember) {
|
|
|
+ return Result::error("已加入群", 0);
|
|
|
+ }
|
|
|
+ $groupMember = [
|
|
|
+ 'user_id' => $data['user_id'],
|
|
|
+ 'group_id' => $data['group_id'],
|
|
|
+ 'leader' => 3,
|
|
|
+ 'join_time' => Date('Y-m-d H:i:s')
|
|
|
+ ];
|
|
|
+
|
|
|
+ $groupMemberResult = GroupMemberImp::insertGetId($groupMember);
|
|
|
+ $talk_session = [
|
|
|
+ 'user_id' => $data['user_id'],
|
|
|
+ 'to_from_id' => $data['group_id'],
|
|
|
+ 'talk_mode' => 2,
|
|
|
+ 'created_at' => Date('Y-m-d H:i:s'),
|
|
|
+ 'updated_at' => Date('Y-m-d H:i:s'),
|
|
|
+ ];
|
|
|
+ $talk_session_result = GroupTalkImp::insertGetId($talk_session);
|
|
|
+ if ($groupMemberResult) {
|
|
|
+ return Result::success($data);
|
|
|
+ } else {
|
|
|
+ return Result::error($data);
|
|
|
+ };
|
|
|
+ //ljim
|
|
|
$group = ChatGroups::where(['id' => $data['group_id']])->first();
|
|
|
if (empty($group)) {
|
|
|
return Result::error("群不存在", 0);
|
|
|
@@ -848,58 +884,90 @@ class ChatService implements ChatServiceInterface
|
|
|
public function addTopic(array $data): array
|
|
|
{
|
|
|
$chattopic = [];
|
|
|
- Db::beginTransaction();
|
|
|
- try {
|
|
|
- $data['created_at'] = date('Y-m-d H:i:s');
|
|
|
- $data['updated_at'] = date('Y-m-d H:i:s');
|
|
|
- if ($data['type_id'] != 10000) {
|
|
|
- $this->sendMessage([
|
|
|
- 'talk_type' => 300,
|
|
|
- 'title' => $data['title'],
|
|
|
- 'content' => '提交了审核',
|
|
|
- 'messageType' => 4,
|
|
|
- ]);
|
|
|
- $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);
|
|
|
- //更新result的 group_id
|
|
|
- $datas['group_id'] = $group_id;
|
|
|
- ChatTopic::where(['id' => $data['id']])->update($datas);
|
|
|
+ date_default_timezone_set('Asia/Shanghai');
|
|
|
+ $data['created_at'] = date('Y-m-d H:i:s');
|
|
|
+ $data['updated_at'] = date('Y-m-d H:i:s');
|
|
|
+ $group_id = '';
|
|
|
+ if ($data['type_id'] != 10000) {
|
|
|
+ $this->sendMessage([
|
|
|
+ 'talk_type' => 300,
|
|
|
+ 'title' => $data['title'],
|
|
|
+ 'content' => '提交了审核',
|
|
|
+ 'messageType' => 4,
|
|
|
+ ]);
|
|
|
+ $data['status'] = 1;
|
|
|
+ } else {
|
|
|
+ $data['status'] = 2;
|
|
|
+ if ($data['is_group'] == 1) {
|
|
|
+ $group_id = PublicData::uuid();
|
|
|
+ var_dump($group_id);
|
|
|
+ $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);
|
|
|
|
|
|
- //插入一条消息
|
|
|
- $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);
|
|
|
+ //插入imp group group_member
|
|
|
+ $group = [
|
|
|
+ 'type' => 1,
|
|
|
+ 'name' => $data['group_name'] ?? '',
|
|
|
+ 'profile' => '',
|
|
|
+ 'avatar' => '',
|
|
|
+ 'creator_id' => $data['user_id'],
|
|
|
+ ];
|
|
|
+ $groupResult = GroupImp::insertGetId($group);
|
|
|
+ var_dump($groupResult, '获取imp group_id');
|
|
|
+ $groupMember = [
|
|
|
+ 'user_id' => $data['user_id'],
|
|
|
+ 'group_id' => $groupResult,
|
|
|
+ 'leader' => 1,
|
|
|
+ 'join_time' => Date('Y-m-d H:i:s')
|
|
|
+ ];
|
|
|
+ $groupMemberResult = GroupMemberImp::insertGetId($groupMember);
|
|
|
+ $talk_session = [
|
|
|
+ 'user_id' => $data['user_id'],
|
|
|
+ 'to_from_id' => $groupResult,
|
|
|
+ 'talk_mode' => 2,
|
|
|
+ 'created_at' => Date('Y-m-d H:i:s'),
|
|
|
+ 'updated_at' => Date('Y-m-d H:i:s'),
|
|
|
+ ];
|
|
|
+ $talk_session_result = GroupTalkImp::insertGetId($talk_session);
|
|
|
+ $group_id = $groupResult;
|
|
|
}
|
|
|
- unset($data['type_id']);
|
|
|
- $result = ChatTopic::insertGetId($data);
|
|
|
- $chattopic = Chattopic::find($result);
|
|
|
- Db::commit();
|
|
|
+ }
|
|
|
+ unset($data['type_id']);
|
|
|
+ if ($group_id) {
|
|
|
+ $data['group_id'] = $group_id;
|
|
|
+ }
|
|
|
+ $result = ChatTopic::insertGetId($data);
|
|
|
+ $chattopic = Chattopic::find($result);
|
|
|
+ Db::commit();
|
|
|
+ Db::beginTransaction();
|
|
|
+ try {
|
|
|
} catch (\Exception $e) {
|
|
|
Db::rollBack();
|
|
|
return Result::error($data, $e->getMessage());
|
|
|
@@ -936,6 +1004,32 @@ class ChatService implements ChatServiceInterface
|
|
|
'leader' => 2,
|
|
|
];
|
|
|
$groupMemberResult = ChatGroupsMember::insertGetId($groupMemberData);
|
|
|
+
|
|
|
+ $group = [
|
|
|
+ 'type' => 1,
|
|
|
+ 'name' => $topdata['group_name'] ?? '',
|
|
|
+ 'profile' => '',
|
|
|
+ 'avatar' => '',
|
|
|
+ 'creator_id' => $topdata['user_id'],
|
|
|
+ ];
|
|
|
+ $groupResult = GroupImp::insertGetId($group);
|
|
|
+ var_dump($groupResult, '获取imp group_id');
|
|
|
+ $groupMember = [
|
|
|
+ 'user_id' => $topdata['user_id'],
|
|
|
+ 'group_id' => $groupResult,
|
|
|
+ 'leader' => 1,
|
|
|
+ 'join_time' => Date('Y-m-d H:i:s')
|
|
|
+ ];
|
|
|
+ $groupMemberResult = GroupMemberImp::insertGetId($groupMember);
|
|
|
+ $talk_session = [
|
|
|
+ 'user_id' => $topdata['user_id'],
|
|
|
+ 'to_from_id' => $groupResult,
|
|
|
+ 'talk_mode' => 2,
|
|
|
+ 'created_at' => Date('Y-m-d H:i:s'),
|
|
|
+ 'updated_at' => Date('Y-m-d H:i:s'),
|
|
|
+ ];
|
|
|
+ $talk_session_result = GroupTalkImp::insertGetId($talk_session);
|
|
|
+ $group_id = $groupResult;
|
|
|
} else {
|
|
|
$group_id = $topdata['group_id'];
|
|
|
}
|
|
|
@@ -943,7 +1037,6 @@ class ChatService implements ChatServiceInterface
|
|
|
//更新result的 group_id
|
|
|
$datas['group_id'] = $group_id;
|
|
|
ChatTopic::where(['id' => $data['id']])->update($datas);
|
|
|
-
|
|
|
//插入一条消息
|
|
|
$chatRecordsData = [
|
|
|
'user_id' => $topdata['user_id'],
|
|
|
@@ -956,11 +1049,20 @@ class ChatService implements ChatServiceInterface
|
|
|
'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();
|
|
|
+ //直接删除imp
|
|
|
+ GroupImp::where('id', $topdata['group_id'])->delete();
|
|
|
+ GroupMemberImp::where('group_id', $topdata['group_id'])->delete();
|
|
|
+ GroupTalkImp::where('to_from_id', $topdata['group_id'])->delete();
|
|
|
+ //删除group_id
|
|
|
+ ChatTopic::where('id', $topdata['id'])->update(['group_id' => 0]);
|
|
|
}
|
|
|
}
|
|
|
if ($data['status'] == 2) {
|
|
|
@@ -1261,29 +1363,29 @@ class ChatService implements ChatServiceInterface
|
|
|
*/
|
|
|
public function getBusinessDistrictList(array $data): array
|
|
|
{
|
|
|
- $query = ChatGroupsMember::Join('chat_topics', 'chat_topics.group_id', '=', 'chat_groups_members.group_id')
|
|
|
- ->leftJoin('chat_topic_class', 'chat_topic_class.id', '=', 'chat_topics.type')
|
|
|
- ->where(['chat_groups_members.user_id' => $data['user_id']])
|
|
|
+ $query = GroupMemberImp::Join('hyperf.chat_topics', 'hyperf.chat_topics.group_id', '=', 'imp.group_member.group_id')
|
|
|
+ ->leftJoin('hyperf.chat_topic_class', 'hyperf.chat_topic_class.id', '=', 'hyperf.chat_topics.type')
|
|
|
+ ->where(['imp.group_member.user_id' => $data['user_id']])
|
|
|
->when($data, function ($query) use ($data) {
|
|
|
if (!empty($data['type'])) {
|
|
|
- $query->where(['chat_topics.type' => $data['type']]);
|
|
|
+ $query->where(['hyperf.chat_topics.type' => $data['type']]);
|
|
|
}
|
|
|
if (!empty($data['title'])) {
|
|
|
- $query->where('chat_topics.title', 'like', '%' . $data['title'] . '%');
|
|
|
+ $query->where('hyperf.chat_topics.title', 'like', '%' . $data['title'] . '%');
|
|
|
}
|
|
|
if (!empty($data['created_at'])) {
|
|
|
- $query->whereDate('chat_topics.created_at', $data['created_at']);
|
|
|
+ $query->whereDate('hyperf.chat_topics.created_at', $data['created_at']);
|
|
|
}
|
|
|
})
|
|
|
->select(
|
|
|
- 'chat_topics.id',
|
|
|
- 'chat_topics.title',
|
|
|
- 'chat_topics.author',
|
|
|
- 'chat_topics.created_at',
|
|
|
- 'chat_topics.updated_at',
|
|
|
- 'chat_topic_class.topicname',
|
|
|
+ 'hyperf.chat_topics.id',
|
|
|
+ 'hyperf.chat_topics.title',
|
|
|
+ 'hyperf.chat_topics.author',
|
|
|
+ 'hyperf.chat_topics.created_at',
|
|
|
+ 'hyperf.chat_topics.updated_at',
|
|
|
+ 'hyperf.chat_topic_class.topicname',
|
|
|
)
|
|
|
- ->orderBy('chat_topics.created_at', 'desc');
|
|
|
+ ->orderBy('hyperf.chat_topics.created_at', 'desc');
|
|
|
$total = $query->count();
|
|
|
$list = $query->forPage($data['page'], $data['page_size'])->get();
|
|
|
$result = [
|