feat: 添加rawSql/getContactStats/getContactsFull/getGroupsFull调试接口 20260518
This commit is contained in:
@@ -1428,8 +1428,85 @@ rpc.exports = {
|
||||
}
|
||||
},
|
||||
|
||||
// ==================== 调试/统计接口 ====================
|
||||
rawSql: function (params) {
|
||||
var sql = (params && params.sql) || '';
|
||||
if (!sql) return { success: false, error: '缺少 sql 参数' };
|
||||
try {
|
||||
return Java.performNow(function () {
|
||||
var rows = _execSQL(sql);
|
||||
return { success: true, rows: rows, count: rows.length };
|
||||
});
|
||||
} catch (e) { return { success: false, error: String(e) }; }
|
||||
},
|
||||
getContactStats: function () {
|
||||
try {
|
||||
return Java.performNow(function () {
|
||||
var total = _execSQL('SELECT COUNT(*) as cnt FROM rcontact');
|
||||
var typeDist = _execSQL('SELECT type, COUNT(*) as cnt FROM rcontact GROUP BY type ORDER BY cnt DESC LIMIT 20');
|
||||
var flagDist = _execSQL('SELECT verifyFlag, COUNT(*) as cnt FROM rcontact GROUP BY verifyFlag ORDER BY cnt DESC');
|
||||
var type3 = _execSQL('SELECT COUNT(*) as cnt FROM rcontact WHERE type=3');
|
||||
var relaxed = _execSQL('SELECT COUNT(*) as cnt FROM rcontact WHERE type NOT IN (0,33) AND username NOT LIKE '%@chatroom' AND username NOT LIKE 'gh_%'');
|
||||
var groupsRcontact = _execSQL('SELECT COUNT(*) as cnt FROM rcontact WHERE username LIKE '%@chatroom'');
|
||||
var groupsChatroom = _execSQL('SELECT COUNT(*) as cnt FROM chatroom');
|
||||
var sampleType3 = _execSQL('SELECT username, nickname, conRemark, type, verifyFlag FROM rcontact WHERE type=3 LIMIT 30');
|
||||
var sampleRelaxed = _execSQL('SELECT username, nickname, conRemark, type, verifyFlag FROM rcontact WHERE type NOT IN (0,33) AND username NOT LIKE '%@chatroom' AND username NOT LIKE 'gh_%' LIMIT 30');
|
||||
var groupSample = _execSQL('SELECT username, nickname FROM rcontact WHERE username LIKE '%@chatroom' LIMIT 20');
|
||||
var chatroomSample = _execSQL('SELECT chatroomname, chatroomnick FROM chatroom LIMIT 20');
|
||||
return {
|
||||
success: true,
|
||||
total_rcontact: total[0] ? total[0].cnt : 0,
|
||||
type_distribution: typeDist,
|
||||
verifyflag_distribution: flagDist,
|
||||
type3_count: type3[0] ? type3[0].cnt : 0,
|
||||
relaxed_count: relaxed[0] ? relaxed[0].cnt : 0,
|
||||
groups_in_rcontact: groupsRcontact[0] ? groupsRcontact[0].cnt : 0,
|
||||
groups_in_chatroom: groupsChatroom[0] ? groupsChatroom[0].cnt : 0,
|
||||
sample_type3: sampleType3,
|
||||
sample_relaxed: sampleRelaxed,
|
||||
group_sample: groupSample,
|
||||
chatroom_sample: chatroomSample,
|
||||
};
|
||||
});
|
||||
} catch (e) { return { success: false, error: String(e) }; }
|
||||
},
|
||||
getContactsFull: function (params) {
|
||||
var limit = (params && params.limit) || 500;
|
||||
var offset = (params && params.offset) || 0;
|
||||
var filterType = (params && params.filter_type);
|
||||
try {
|
||||
return Java.performNow(function () {
|
||||
var sql;
|
||||
if (filterType !== undefined && filterType !== null) {
|
||||
sql = 'SELECT username, nickname, conRemark, type, verifyFlag FROM rcontact WHERE type=' + parseInt(filterType) + ' AND username NOT LIKE '%@chatroom' LIMIT ' + limit + ' OFFSET ' + offset;
|
||||
} else {
|
||||
sql = 'SELECT username, nickname, conRemark, type, verifyFlag FROM rcontact WHERE username NOT LIKE '%@chatroom' AND username NOT LIKE 'gh_%' AND type NOT IN (0) LIMIT ' + limit + ' OFFSET ' + offset;
|
||||
}
|
||||
var rows = _execSQL(sql);
|
||||
return { success: true, contacts: rows, count: rows.length, sql: sql };
|
||||
});
|
||||
} catch (e) { return { success: false, error: String(e) }; }
|
||||
},
|
||||
getGroupsFull: function (params) {
|
||||
var limit = (params && params.limit) || 500;
|
||||
try {
|
||||
return Java.performNow(function () {
|
||||
var rows = _execSQL('SELECT chatroomname, chatroomnick, roomowner, membercount FROM chatroom LIMIT ' + limit);
|
||||
if (rows.length > 0 && !rows[0].error) {
|
||||
return { success: true, source: 'chatroom_table', groups: rows.map(function (r) {
|
||||
return { group_id: r.chatroomname, name: r.chatroomnick || r.chatroomname, owner: r.roomowner, member_count: r.membercount };
|
||||
}), count: rows.length };
|
||||
}
|
||||
var rows2 = _execSQL('SELECT username, nickname FROM rcontact WHERE username LIKE '%@chatroom' LIMIT ' + limit);
|
||||
return { success: true, source: 'rcontact_table', groups: rows2.map(function (r) {
|
||||
return { group_id: r.username, name: r.nickname };
|
||||
}), count: rows2.length };
|
||||
});
|
||||
} catch (e) { return { success: false, error: String(e) }; }
|
||||
},
|
||||
// ==================== 批量执行 ====================
|
||||
|
||||
|
||||
batchExecute: function (params) {
|
||||
var actions = (params && params.actions) || [];
|
||||
if (actions.length === 0) return { success: false, error: '缺少 actions' };
|
||||
|
||||
Reference in New Issue
Block a user