75 lines
2.1 KiB
JavaScript
75 lines
2.1 KiB
JavaScript
const cloud = require('wx-server-sdk');
|
|
|
|
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });
|
|
|
|
function validatePayload(event) {
|
|
const id = String(event.id || '').trim();
|
|
const name = String(event.name || '').trim();
|
|
const icon = String(event.icon || '').trim();
|
|
const color = String(event.color || '').trim();
|
|
const sortOrder = Number(event.sortOrder || 0);
|
|
const parentId =
|
|
event.parentId === undefined || event.parentId === null
|
|
? null
|
|
: String(event.parentId).trim();
|
|
|
|
if (!id) throw new Error('分类 id 不能为空');
|
|
if (!name) throw new Error('分类名称不能为空');
|
|
if (!icon) throw new Error('分类图标不能为空');
|
|
if (!color) throw new Error('分类颜色不能为空');
|
|
if (!Number.isFinite(sortOrder)) throw new Error('分类排序不合法');
|
|
|
|
return {
|
|
id,
|
|
name,
|
|
icon,
|
|
color,
|
|
sortOrder,
|
|
parentId,
|
|
};
|
|
}
|
|
|
|
exports.main = async (event) => {
|
|
try {
|
|
const payload = validatePayload(event);
|
|
const db = cloud.database();
|
|
const collection = db.collection('categories');
|
|
|
|
try {
|
|
await collection.doc(payload.id).get();
|
|
} catch (error) {
|
|
return {
|
|
success: false,
|
|
message: '分类不存在,无法更新',
|
|
};
|
|
}
|
|
|
|
await collection.doc(payload.id).update({
|
|
data: {
|
|
name: payload.name,
|
|
icon: payload.icon,
|
|
color: payload.color,
|
|
sortOrder: payload.sortOrder,
|
|
parentId: payload.parentId,
|
|
},
|
|
});
|
|
|
|
return {
|
|
success: true,
|
|
data: {
|
|
_id: payload.id,
|
|
name: payload.name,
|
|
icon: payload.icon,
|
|
color: payload.color,
|
|
sortOrder: payload.sortOrder,
|
|
parentId: payload.parentId,
|
|
},
|
|
};
|
|
} catch (error) {
|
|
return {
|
|
success: false,
|
|
message: error instanceof Error ? error.message : '更新分类失败',
|
|
};
|
|
}
|
|
};
|