禁言与历史消息

This commit is contained in:
2025-12-01 17:09:33 +08:00
parent 416890ccdd
commit 76b7580411
2 changed files with 32 additions and 42 deletions

View File

@@ -369,14 +369,14 @@ class GroupController extends ApiController
}
/**
* 群成员禁言(仅群主/管理员)
* 群禁言(仅群主/管理员)
*/
public function muteMember(Request $request): Response
{
$groupId = $request->post('group_id');
$targetUid = $request->post('target_uid');
$muteTime = $request->post('mute_time')?:3600; // 默认禁言1小
if (!$groupId || !$targetUid) {
$targetUid = $request->post('target_uid')?:0;
$muteTime = $request->post('mute_time')?:0; // 默认时
if (!$groupId || !isset($targetUid)) {
return json(['code' => 400, 'msg' => '缺少group_id或target_uid']);
}
// 验证操作人权限
@@ -389,51 +389,41 @@ class GroupController extends ApiController
if (!in_array($operatorRole, [1, 2])) {
return $this->error('仅群主和管理员可禁言');
}
// 验证被禁言用户是否在群内
$targetIsMember = Db::name('chat_group_member')->where([
'group_id' => $groupId,
'user_id' => $targetUid,
'quit_time' => null,
'is_kicked' => 0
])->find();
if (!$targetIsMember) {
return $this->error('被禁言用户不在群内');
}
// 不能禁言群主
$groupOwner = Db::name('chat_group')->where('id', $groupId)->value('owner_id');
if ($targetUid == $groupOwner) {
return $this->error('不能禁言群主');
}
// 不能禁言自己
if ($targetUid == $this->uid) {
return $this->error('不能禁言自己');
}
$now = time();
$expireTime = $muteTime > 0 ? $now + $muteTime : null;
$res = Db::name('chat_group_mute')->where(['group_id' => $groupId, 'user_id' => $targetUid])->find();
// // 验证被禁言用户是否在群内
// $targetIsMember = Db::name('chat_group_member')->where([
// 'group_id' => $groupId,
// 'user_id' => $targetUid,
// 'quit_time' => null,
// 'is_kicked' => 0
// ])->find();
// if (!$targetIsMember) {
// return $this->error('被禁言用户不在群内');
// }
// // 不能禁言群主
// $groupOwner = Db::name('chat_group')->where('id', $groupId)->value('owner_id');
// if ($targetUid == $groupOwner) {
// return $this->error('不能禁言群主');
// }
// // 不能禁言自己
// if ($targetUid == $this->uid) {
// return $this->error('不能禁言自己');
// }
// $now = time();
// $expireTime = $muteTime > 0 ? $now + $muteTime : null;
// 新增/更新禁言记录
if($res) {
Db::name('chat_group_mute')->where(['group_id' => $groupId, 'user_id' => $targetUid])->save([
'mute_time' => $muteTime,
'expire_time' => date('Y-m-d H:i:s', $expireTime),
'operator_id' => $this->uid,
'created_time' => d()
]);
return $this->success("已禁言无需操作");
}else {
Db::name('chat_group_mute')->insert([
'group_id' => $groupId,
'mute_time' => $muteTime,
'user_id' => $targetUid,
'expire_time' => date('Y-m-d H:i:s', $expireTime),
'operator_id' => $this->uid,
'created_time' => d()
]);
}
// 发送通知 某某已被禁言
return $this->success("禁言成功,时长{$muteTime}");
return $this->success("禁言成功");
}
/**
@@ -442,9 +432,9 @@ class GroupController extends ApiController
public function unmuteMember(Request $request): Response
{
$groupId = $request->post('group_id');
$targetUid = $request->post('target_uid');
$targetUid = $request->post('target_uid')?:0;
$muteTime = $request->post('mute_time')?:3600; // 默认禁言1小时
if (!$groupId || !$targetUid) {
if (!$groupId || !isset($targetUid)) {
return json(['code' => 400, 'msg' => '缺少group_id或target_uid']);
}
// 验证操作人权限

View File

@@ -56,7 +56,7 @@ class MessageController extends ApiController
->select()->toArray();
// 单聊自动标记已读
if ($chatType == 1) {
// if ($chatType == 1) {
Db::name('chat_message')->where([
'session_id' => $session_id,
'to_id' => $uid,
@@ -68,7 +68,7 @@ class MessageController extends ApiController
'user_id' => $uid,
'session_id' => $session_id
])->update(['count' => 0, 'updated_time' => d()]);
}
// }
foreach ($messages as $k => &$v) {
$v['send_time'] = formatWeChatTime($v['send_time']);
}