objTable->getRow($where); if (!$msg) { throw new Exception('message not found', CODE_NORMAL_ERROR); } $isAdmin = (new UserGroup())->isAdmin($group_id, $from); if (!$isAdmin) { if ($msg['from'] != $from) { throw new Exception('no permission', CODE_NO_PERMITION); } if ((time() - strtotime($msg['create_time']) > self::MAX_REPEAL_TIME)) { throw new Exception('repeal message time out', CODE_NORMAL_ERROR); } } $newData = ['state' => 0]; $msg['is_pin'] && $newData['is_pin'] = 0; $this->objTable->updateObject($newData, $where); // 如果撤销的是最后一条 if ($msg['msg_num'] == Session::getLastMsgNum($group_id)) { Session::setLastMsg($group_id, Session::MSG_TYPE_REPEAL, '', $from, ''); } ThirdApi::pushGroupEvent($group_id, [ 'type' => 'repeal', 'group_id' => $group_id, 'from' => $from, 'nick_name' => User::getUserNameById($from), 'hash' => $hash, ]); $msg['is_pin'] && ThirdApi::pushGroupEvent($group_id, [ 'type' => 'unpin_msg', 'group_id' => $group_id, 'from' => $from, 'hash' => $hash, ]); return true; } }