// 1. 首先,在导入部分添加新函数 import { getDictItemsWithTypes, getDictTypes, addDictType, addDictItem, getDictTypeById, getDictItemById, getDictItemsByTypeCode, updateDictType, updateDictItem, deleteDictType, deleteDictItem, checkParentCodeExists, // 添加这一行 hasChildReferences, // 添加这一行 } from "../db/dict.js"; /** * 服务层:查询字典项及其类型 * @returns {Promise} 字典项列表 */ export async function fetchDictItemsWithTypes() { try { return await getDictItemsWithTypes(); } catch (error) { console.error("服务层: 查询字典项及其类型失败", error); throw error; } } /** * 服务层:查询字典类型列表 * @returns {Promise} 字典类型列表 */ export async function fetchDictTypes() { try { return await getDictTypes(); } catch (error) { console.error("服务层: 查询字典类型列表失败", error); throw error; } } /** * 服务层:添加字典类型 * @param {Object} typeData 字典类型数据 * @returns {Promise} 添加的字典类型 */ export async function createDictType(typeData) { try { return await addDictType(typeData); } catch (error) { console.error("服务层: 添加字典类型失败", error); throw error; } } /** * 服务层:添加字典项 * @param {Object} itemData 字典项数据 * @returns {Promise} 添加的字典项 */ export async function createDictItem(itemData) { try { return await addDictItem(itemData); } catch (error) { console.error("服务层: 添加字典项失败", error); throw error; } } /** * 服务层:根据ID查询字典类型 * @param {number} id 字典类型ID * @returns {Promise} 字典类型数据 */ export async function fetchDictTypeById(id) { try { return await getDictTypeById(id); } catch (error) { console.error("服务层: 根据ID查询字典类型失败", error); throw error; } } /** * 服务层:根据ID查询字典项 * @param {number} id 字典项ID * @returns {Promise} 字典项数据 */ export async function fetchDictItemById(id) { try { return await getDictItemById(id); } catch (error) { console.error("服务层: 根据ID查询字典项失败", error); throw error; } } /** * 服务层:根据类型编码查询字典项 * @param {string} typeCode 类型编码 * @param {number} isActive 是否激活(1=激活, 0=未激活, 不传=全部) * @returns {Promise} 字典项列表 */ export async function fetchDictItemsByTypeCode(typeCode, isActive = undefined) { try { return await getDictItemsByTypeCode(typeCode, isActive); } catch (error) { console.error("服务层: 根据类型编码查询字典项失败", error); throw error; } } /** * 服务层:更新字典类型 * @param {number} id 字典类型ID * @param {Object} typeData 更新的数据 * @returns {Promise} 是否更新成功 */ export async function modifyDictType(id, typeData) { try { return await updateDictType(id, typeData); } catch (error) { console.error("服务层: 更新字典类型失败", error); throw error; } } /** * 服务层:更新字典项 * @param {number} id 字典项ID * @param {Object} itemData 更新的数据 * @returns {Promise} 是否更新成功 */ export async function modifyDictItem(id, itemData) { try { return await updateDictItem(id, itemData); } catch (error) { console.error("服务层: 更新字典项失败", error); throw error; } } /** * 服务层:删除字典类型 * @param {number} id 字典类型ID * @returns {Promise} 是否删除成功 */ export async function removeDictType(id) { try { return await deleteDictType(id); } catch (error) { console.error("服务层: 删除字典类型失败", error); throw error; } } /** * 服务层:删除字典项 * @param {number} id 字典项ID * @returns {Promise} 是否删除成功 */ export async function removeDictItem(id) { try { return await deleteDictItem(id); } catch (error) { console.error("服务层: 删除字典项失败", error); throw error; } } // 2. 在文件末尾添加新函数的服务层封装 /** * 服务层:检查父级编码是否存在 * @param {string} parentCode 父级编码 * @returns {Promise} 是否存在 */ export async function checkDictParentCode(parentCode) { try { return await checkParentCodeExists(parentCode); } catch (error) { console.error("服务层: 检查父级编码失败", error); throw error; } } /** * 服务层:检查是否有子引用 * @param {string} itemCode 字典项编码 * @returns {Promise} 是否有子引用 */ export async function checkDictChildReferences(itemCode) { try { return await hasChildReferences(itemCode); } catch (error) { console.error("服务层: 检查子引用失败", error); throw error; } } export async function initDictIpc(ipcMain) { // 字典管理相关IPC - 使用正确的函数名称 ipcMain.handle("dict-fetch-types", async () => { try { return await fetchDictTypes(); } catch (error) { console.error("Failed to fetch dict types:", error); throw error; } }); ipcMain.handle( "dict-fetch-items-by-type", async (event, typeCode, isActive = undefined) => { try { return await fetchDictItemsByTypeCode(typeCode, isActive); } catch (error) { console.error(`Failed to fetch dict items by type ${typeCode}:`, error); throw error; } } ); ipcMain.handle("dict-create-type", async (event, dictType) => { try { return await createDictType(dictType); } catch (error) { console.error("Failed to create dict type:", error); throw error; } }); // 将 updateDictType 改为 modifyDictType ipcMain.handle("dict-update-type", async (event, dictType) => { try { return await modifyDictType(dictType.id, dictType); } catch (error) { console.error("Failed to update dict type:", error); throw error; } }); // 将 deleteDictType 改为 removeDictType ipcMain.handle("dict-delete-type", async (event, typeCode) => { try { return await removeDictType(typeCode); } catch (error) { console.error(`Failed to delete dict type ${typeCode}:`, error); throw error; } }); ipcMain.handle("dict-create-item", async (event, dictItem) => { try { return await createDictItem(dictItem); } catch (error) { console.error("Failed to create dict item:", error); throw error; } }); // 将 updateDictItem 改为 modifyDictItem ipcMain.handle("dict-update-item", async (event, dictItem) => { try { return await modifyDictItem(dictItem.id, dictItem); } catch (error) { console.error("Failed to update dict item:", error); throw error; } }); // 将 deleteDictItem 改为 removeDictItem ipcMain.handle("dict-delete-item", async (event, id) => { try { return await removeDictItem(id); } catch (error) { console.error(`Failed to delete dict item ${id}:`, error); throw error; } }); // 将 fetchAllDictItemsWithTypes 改为 fetchDictItemsWithTypes ipcMain.handle("dict-fetch-all-items-with-types", async () => { try { return await fetchDictItemsWithTypes(); } catch (error) { console.error("Failed to fetch all dict items with types:", error); throw error; } }); // 添加在setupIpcMain函数中 // 检查parent_code是否存在 ipcMain.handle("dict-check-parent-code", async (event, parentCode) => { try { return await checkDictParentCode(parentCode); // 修改这一行 } catch (error) { console.error("检查parent_code失败:", error); throw error; } }); // 检查是否有子引用 ipcMain.handle("dict-check-child-references", async (event, itemCode) => { try { return await checkDictChildReferences(itemCode); // 修改这一行 } catch (error) { console.error("检查子引用失败:", error); throw error; } }); }