明树Git Lab

Commit 436b3d6b authored by zhangqi's avatar zhangqi

add saveAllResourceInfo

parent 87c890bf
...@@ -170,6 +170,105 @@ async function listResourceInfo(req, res, next) { ...@@ -170,6 +170,105 @@ async function listResourceInfo(req, res, next) {
} }
}; };
async function saveAllResourceInfo(req, res, next) {
try {
const { resourceId, data = [] } = req.body;
if (!resourceId || !Array.isArray(data)) {
return res.sendError(errorMessage.resourceNotFound);
}
const resource = await DB.Resources.findOne({
where: { id: resourceId },
raw: true
});
if (!resource) {
return res.sendError(errorMessage.resourceNotFound);
}
if (resource.type === 1) {
const existingRecords = await DB.ResourcesInfo.findAll({
where: { del: 0, resourceId: resourceId }, // ← 关键修复!
raw: true
});
console.log("existingRecords", existingRecords);
const existMap = new Map();
existingRecords.forEach(r => existMap.set(r.id, r));
const toCreate = [];
const toUpdate = [];
const incomingIds = new Set();
for (const item of data) {
if (item.resourceId != resourceId) { // ← 正确写法
console.log(item.value, "不属于当前资源,跳过");
continue;
}
console.log("每条aaa记录", item);
const record = {
...item,
resourceId: Number(resourceId),
del: 0
};
if (item.id != null && existMap.has(item.id)) {
toUpdate.push(record);
incomingIds.add(item.id);
} else {
toCreate.push(record);
}
}
const toDeleteIds = existingRecords
.filter(r => !incomingIds.has(r.id))
.map(r => r.id);
console.log('本次新增:', toCreate.length);
console.log('本次更新:', toUpdate.length);
console.log('本次软删:', toDeleteIds);
if (toCreate.length > 0) {
await DB.ResourcesInfo.bulkCreate(toCreate);
}
if (toUpdate.length > 0) {
for (const item of toUpdate) {
await DB.ResourcesInfo.update(item, {
where: { id: item.id }
});
}
}
if (toDeleteIds.length > 0) {
await DB.ResourcesInfo.update(
{ del: 1 },
{ where: { id: toDeleteIds } }
);
}
const ret = await DB.ResourcesInfo.findAll({
where: { del: 0, resourceId: resourceId },
raw: true
});
return res.sendData(ret);
}
return res.sendData([]);
} catch (error) {
console.error('saveAllResourceInfo error:', error);
next(error);
}
}
module.exports = { module.exports = {
createResource, createResource,
updateResource, updateResource,
...@@ -179,5 +278,7 @@ module.exports = { ...@@ -179,5 +278,7 @@ module.exports = {
createResourceInfo, createResourceInfo,
updateResourceInfo, updateResourceInfo,
deleteResourceInfo, deleteResourceInfo,
listResourceInfo listResourceInfo,
saveAllResourceInfo
} }
\ No newline at end of file
...@@ -22,4 +22,7 @@ router.post('/deleteResourceInfo', resourceController.deleteResourceInfo); ...@@ -22,4 +22,7 @@ router.post('/deleteResourceInfo', resourceController.deleteResourceInfo);
router.post('/updateResourceInfo', resourceController.updateResourceInfo); router.post('/updateResourceInfo', resourceController.updateResourceInfo);
router.post('/listResourceInfo', resourceController.listResourceInfo); router.post('/listResourceInfo', resourceController.listResourceInfo);
router.post('/saveAllResourceInfo', resourceController.saveAllResourceInfo);
module.exports = router; module.exports = router;
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment