mirror of
https://github.com/LifeArchiveProject/WeChatDataAnalysis.git
synced 2026-06-18 15:54:08 +08:00
feat(biz): add biz type
This commit is contained in:
@@ -22,8 +22,14 @@
|
||||
v-for="item in filteredAccounts"
|
||||
:key="item.username"
|
||||
@click="selectAccount(item)"
|
||||
class="flex items-center gap-3 px-4 py-3 cursor-pointer hover:bg-gray-50 transition-colors border-b border-gray-50"
|
||||
:class="{ 'bg-[#F2F2F2]': selectedAccount?.username === item.username }"
|
||||
class="flex items-center gap-3 px-4 py-3 cursor-pointer transition-colors border-b border-gray-50"
|
||||
:class="[
|
||||
selectedAccount?.username === item.username
|
||||
? 'bg-[#E5E5E5]' // 选中状态最深
|
||||
: item.username === 'gh_3dfda90e39d6'
|
||||
? 'bg-[#F2F2F2] hover:bg-[#EAEAEA]' // 微信支付专门的底色,以示区分
|
||||
: 'hover:bg-gray-50' // 普通项的悬浮色
|
||||
]"
|
||||
>
|
||||
<img v-if="item.avatar" :src="api.getBizProxyImageUrl(item.avatar)" class="w-10 h-10 rounded-md object-cover bg-gray-200 flex-shrink-0" alt=""/>
|
||||
<div v-else class="w-10 h-10 rounded-md bg-[#03C160] text-white flex items-center justify-center text-lg font-medium flex-shrink-0 shadow-sm">
|
||||
@@ -37,8 +43,17 @@
|
||||
{{ item.formatted_last_time }}
|
||||
</span>
|
||||
</div>
|
||||
<div v-if="item.username === 'gh_3dfda90e39d6'" class="text-[10px] text-[#03C160] bg-[#03C160]/10 px-1.5 py-0.5 rounded w-max">
|
||||
官方
|
||||
|
||||
<div
|
||||
class="text-[10px] px-1.5 py-0.5 rounded w-max mt-0.5"
|
||||
:class="{
|
||||
'text-[#03C160] bg-[#03C160]/10': item.type === 1, // 服务号 - 绿色
|
||||
'text-blue-500 bg-blue-50': item.type === 0, // 公众号 - 蓝色
|
||||
'text-orange-500 bg-orange-50': item.type === 2, // 企业号 - 橙色
|
||||
'text-gray-400 bg-gray-100': item.type === 3 // 未知 - 灰色
|
||||
}"
|
||||
>
|
||||
{{ {1: '服务号', 0: '公众号', 2: '企业号', 3: '未知'}[item.type] || '未知' }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -132,7 +132,6 @@ def proxy_biz_image(url: str):
|
||||
if not url:
|
||||
return Response(status_code=400)
|
||||
try:
|
||||
# 伪装 UA,防止被拦截
|
||||
req = urllib.request.Request(url, headers={
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
|
||||
})
|
||||
@@ -183,7 +182,6 @@ def get_biz_account_list(account: Optional[str] = None):
|
||||
except Exception as e:
|
||||
logger.warning(f"读取 Name2Id 失败 {db_file}: {e}")
|
||||
|
||||
# 2. 查询 contact.db 完善昵称和头像信息
|
||||
contact_db_path = account_dir / "contact.db"
|
||||
contact_info = {}
|
||||
if contact_db_path.exists() and biz_ids:
|
||||
@@ -191,17 +189,37 @@ def get_biz_account_list(account: Optional[str] = None):
|
||||
conn = sqlite3.connect(str(contact_db_path))
|
||||
cursor = conn.cursor()
|
||||
placeholders = ",".join(["?"] * len(biz_ids))
|
||||
query = f"SELECT username, remark, nick_name, alias, big_head_url FROM contact WHERE username IN ({placeholders})"
|
||||
rows = cursor.execute(query, list(biz_ids)).fetchall()
|
||||
|
||||
for r in rows:
|
||||
# 先查 contact 表
|
||||
query_contact = f"SELECT username, remark, nick_name, alias, big_head_url FROM contact WHERE username IN ({placeholders})"
|
||||
rows_contact = cursor.execute(query_contact, list(biz_ids)).fetchall()
|
||||
|
||||
for r in rows_contact:
|
||||
uname = r[0]
|
||||
name = r[1] or r[2] or r[3] or uname
|
||||
contact_info[uname] = {
|
||||
"username": uname,
|
||||
"name": name,
|
||||
"avatar": r[4]
|
||||
"avatar": r[4],
|
||||
"type": 3 # 默认给个 3(未知)
|
||||
}
|
||||
|
||||
# 再查 biz_info 表获取类型
|
||||
try:
|
||||
query_biz = f"SELECT username, type FROM biz_info WHERE username IN ({placeholders})"
|
||||
rows_biz = cursor.execute(query_biz, list(biz_ids)).fetchall()
|
||||
for r in rows_biz:
|
||||
uname = r[0]
|
||||
biz_type = r[1]
|
||||
# 如果查到了且是 0, 1, 2,就更新进去,否则保留 3
|
||||
if uname in contact_info:
|
||||
if biz_type in (0, 1, 2):
|
||||
contact_info[uname]["type"] = biz_type
|
||||
else:
|
||||
contact_info[uname]["type"] = 3
|
||||
except Exception as e:
|
||||
logger.warning(f"读取 biz_info 失败: {e}")
|
||||
|
||||
conn.close()
|
||||
except Exception as e:
|
||||
logger.warning(f"读取 contact.db 失败: {e}")
|
||||
|
||||
Reference in New Issue
Block a user