refactor(db): 重构数据库架构使用serverId作为主键

- 将数据库主键从自增id改为直接使用serverId,避免ID冲突
- 简化数据存储和查询逻辑,提高性能
- 添加重复数据检测和去重功能
- 更新相关组件以适配新的数据库接口
- 在应用启动时初始化数据库连接
This commit is contained in:
2025-08-30 15:00:26 +08:00
parent d4336ed447
commit 5bdd299dad
7 changed files with 152 additions and 95 deletions

View File

@@ -44,7 +44,7 @@ const Person: React.FC<PersonProps> = ({
const [isEditingRemark, setIsEditingRemark] = useState(false);
const [remarkValue, setRemarkValue] = useState(contract.conRemark || "");
const kfSelectedUser = useCkChatStore(state => state.kfSelectedUser());
const getKfSelectedUser = useCkChatStore(state => state.getKfSelectedUser());
// 当contract变化时更新备注值
useEffect(() => {
@@ -124,7 +124,7 @@ const Person: React.FC<PersonProps> = ({
</Tooltip>
<div className={styles.profileRemark}>
{JSON.stringify(kfSelectedUser)}
{JSON.stringify(getKfSelectedUser)}
{isEditingRemark ? (
<div
style={{

View File

@@ -68,7 +68,7 @@ const ChatWindow: React.FC<ChatWindowProps> = ({
>({});
const messagesEndRef = useRef<HTMLDivElement>(null);
const kfSelectedUser = useCkChatStore(state => state.kfSelectedUser());
const getKfSelectedUser = useCkChatStore(state => state.getKfSelectedUser());
useEffect(() => {
clearUnreadCount([contract.id]).then(() => {
setLoading(true);

View File

@@ -1,4 +1,4 @@
import React, { useState } from "react";
import React, { useState, useEffect } from "react";
import { Avatar, Badge, Tooltip } from "antd";
import styles from "./VerticalUserList.module.scss";
import { useCkChatStore, asyncKfSelected } from "@/store/module/ckchat/ckchat";
@@ -14,9 +14,24 @@ const VerticalUserList: React.FC = () => {
const handleUserSelect = (userId: number) => {
asyncKfSelected(userId);
};
const kfUserList = useCkChatStore(state => state.kfUserList);
const getkfUserList = useCkChatStore(state => state.getkfUserList);
const kfSelected = useCkChatStore(state => state.kfSelected);
const [kefuList, setKefuList] = useState([]);
// 获取客服列表数据
useEffect(() => {
const fetchKfUserList = async () => {
try {
const data = await getkfUserList();
setKefuList(data || []);
} catch (error) {
console.error("获取客服列表失败:", error);
setKefuList([]);
}
};
fetchKfUserList();
}, [getkfUserList]);
return (
<div className={styles.verticalUserList}>
<div
@@ -27,7 +42,7 @@ const VerticalUserList: React.FC = () => {
<div className={styles.allFriends}></div>
</div>
<div className={styles.userList}>
{kfUserList.map(user => (
{kefuList.map(user => (
<Tooltip key={user.id} title={user.name} placement="right">
<div
className={`${styles.userItem} ${kfSelected === user.id ? styles.active : ""}`}