refactor: BaseModel 主键列名统一 uid→id
- BaseModel 移除 gorm column:uid 和 json:uid 标签,统一为 id - 更新 8 个 repository 文件中 28 处 raw SQL 列引用 (uid→id) - 更新 3 个前端 JS 文件中 14 处 API 响应字段引用 (uid→id) - 添加数据库迁移 SQL 脚本 (docs/migrations/001_uid_to_id.sql)
This commit is contained in:
@ -931,7 +931,7 @@
|
||||
let u = users[i];
|
||||
var item = document.createElement('div');
|
||||
item.className = 'mention-item';
|
||||
item.innerHTML = '<span class="mention-username">' + escapeHtml(u.username) + '</span><span class="mention-uid">' + escapeHtml(u.uid) + '</span>';
|
||||
item.innerHTML = '<span class="mention-username">' + escapeHtml(u.username) + '</span><span class="mention-uid">' + escapeHtml(u.id) + '</span>';
|
||||
item.addEventListener('mousedown', function(e) {
|
||||
e.preventDefault();
|
||||
selectMention(u);
|
||||
|
||||
@ -113,8 +113,8 @@ function renderUsernameRow(item) {
|
||||
<td><strong>${escapeHtml(item.new_value)}</strong></td>
|
||||
<td>${formatTime(item.created_at)}</td>
|
||||
<td class="col-actions">
|
||||
<button class="btn btn-primary btn-sm" onclick="approveAudit(${item.uid})">通过</button>
|
||||
<button class="btn btn-outline btn-sm" onclick="openRejectModal(${item.uid})">拒绝</button>
|
||||
<button class="btn btn-primary btn-sm" onclick="approveAudit(${item.id})">通过</button>
|
||||
<button class="btn btn-outline btn-sm" onclick="openRejectModal(${item.id})">拒绝</button>
|
||||
</td>
|
||||
</tr>`;
|
||||
}
|
||||
@ -128,8 +128,8 @@ function renderBioRow(item) {
|
||||
<td title="${escapeHtml(text)}">${escapeHtml(display)}</td>
|
||||
<td>${formatTime(item.created_at)}</td>
|
||||
<td class="col-actions">
|
||||
<button class="btn btn-primary btn-sm" onclick="approveAudit(${item.uid})">通过</button>
|
||||
<button class="btn btn-outline btn-sm" onclick="openRejectModal(${item.uid})">拒绝</button>
|
||||
<button class="btn btn-primary btn-sm" onclick="approveAudit(${item.id})">通过</button>
|
||||
<button class="btn btn-outline btn-sm" onclick="openRejectModal(${item.id})">拒绝</button>
|
||||
</td>
|
||||
</tr>`;
|
||||
}
|
||||
@ -155,8 +155,8 @@ function renderAvatarCards(items) {
|
||||
<img src="${escapeHtml(item.new_value)}" alt="新头像" onerror="this.src='data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 80 80%22><rect fill=%22%23eee%22 width=%2280%22 height=%2280%22/><text x=%2240%22 y=%2245%22 text-anchor=%22middle%22 fill=%22%23999%22 font-size=%2212%22>加载失败</text></svg>'">
|
||||
</div>
|
||||
<div class="card-actions">
|
||||
<button class="btn btn-primary btn-sm" onclick="approveAudit(${item.uid})">通过</button>
|
||||
<button class="btn btn-outline btn-sm" onclick="openRejectModal(${item.uid})">拒绝</button>
|
||||
<button class="btn btn-primary btn-sm" onclick="approveAudit(${item.id})">通过</button>
|
||||
<button class="btn btn-outline btn-sm" onclick="openRejectModal(${item.id})">拒绝</button>
|
||||
</div>
|
||||
</div>
|
||||
`).join('');
|
||||
|
||||
@ -56,7 +56,7 @@ function renderTable(users) {
|
||||
}
|
||||
tbody.innerHTML = users.map(u => `
|
||||
<tr>
|
||||
<td class="col-uid">${u.uid}</td>
|
||||
<td class="col-uid">${u.id}</td>
|
||||
<td class="col-username">${escapeHtml(u.username)}</td>
|
||||
<td class="col-email">${escapeHtml(u.email)}</td>
|
||||
<td class="col-role">${roleLabel(u.role)}</td>
|
||||
@ -73,27 +73,27 @@ function renderTable(users) {
|
||||
|
||||
function renderActions(u) {
|
||||
// 不可操作自己
|
||||
if (u.uid === window.__currentUid) return '—';
|
||||
if (u.id === window.__currentUid) return '—';
|
||||
|
||||
let btns = '';
|
||||
const isOwner = window.__isOwner || false;
|
||||
// 封禁/解封按钮
|
||||
if (u.status === 'active') {
|
||||
btns += `<button class="btn btn-danger btn-sm" onclick="banUser(${u.uid}, '${escapeHtml(u.username)}')">封禁</button>`;
|
||||
btns += `<button class="btn btn-danger btn-sm" onclick="banUser(${u.id}, '${escapeHtml(u.username)}')">封禁</button>`;
|
||||
} else if (u.status === 'banned') {
|
||||
btns += `<button class="btn btn-outline btn-sm" onclick="unbanUser(${u.uid}, '${escapeHtml(u.username)}')">解封</button>`;
|
||||
btns += `<button class="btn btn-outline btn-sm" onclick="unbanUser(${u.id}, '${escapeHtml(u.username)}')">解封</button>`;
|
||||
}
|
||||
// 强制下线按钮
|
||||
if (u.status === 'active' || u.status === 'banned') {
|
||||
btns += `<button class="btn btn-outline btn-sm" onclick="resetToken(${u.uid}, '${escapeHtml(u.username)}')">踢下线</button>`;
|
||||
btns += `<button class="btn btn-outline btn-sm" onclick="resetToken(${u.id}, '${escapeHtml(u.username)}')">踢下线</button>`;
|
||||
}
|
||||
// 删除按钮(仅 owner 可见,且目标不是 locked/deleted)
|
||||
if (isOwner && u.status !== 'locked' && u.status !== 'deleted') {
|
||||
btns += `<button class="btn btn-danger btn-sm" onclick="deleteUser(${u.uid}, '${escapeHtml(u.username)}')">删除</button>`;
|
||||
btns += `<button class="btn btn-danger btn-sm" onclick="deleteUser(${u.id}, '${escapeHtml(u.username)}')">删除</button>`;
|
||||
}
|
||||
// 解锁按钮(仅 owner 可见,状态为 locked)
|
||||
if (isOwner && u.status === 'locked') {
|
||||
btns += `<button class="btn btn-outline btn-sm" onclick="unlockUser(${u.uid}, '${escapeHtml(u.username)}')">解锁</button>`;
|
||||
btns += `<button class="btn btn-outline btn-sm" onclick="unlockUser(${u.id}, '${escapeHtml(u.username)}')">解锁</button>`;
|
||||
}
|
||||
return btns || '—';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user