165 lines
3.5 KiB
JavaScript
Raw Normal View History

2026-07-27 11:28:33 +08:00
const dayjs = require("dayjs");
const common = require("../../common");
let db = null;
exports.main = async (event, mongodb) => {
db = mongodb;
switch (event.type) {
case "getCorpInfo":
return await getCorpInfo(event);
case "getCustomCorpInfo":
return await getCustomCorpInfo(event);
case "addCorpDisease":
return await addCorpDisease(event);
case "updateCorp":
return await updateCorp(event);
case "addCorp":
return await addCorp(event);
case "getCorpList":
return await getCorpList(event);
}
await client.close();
};
async function getCorpList(event) {
const { corpId } = event;
try {
let query = {};
if (corpId) {
query.corpId = corpId;
}
let data = await db.collection("corp").find(query).toArray();
return {
success: true,
message: "获取成功",
data,
};
} catch {
return {
success: false,
message: "获取失败",
};
}
}
async function getCorpInfo(event) {
const { corpId } = event;
try {
let data = await db.collection("corp").find({ corpId }).toArray();
let [corp] = data;
if (corp && corp.package) {
const { packageEndTime } = corp.package;
const isAfterToday = dayjs(packageEndTime).isAfter(dayjs(), "day");
if (!isAfterToday) {
corp.packageStatus = "expire";
}
}
return {
success: true,
message: "获取成功",
data,
};
} catch {
return {
success: false,
message: "获取失败",
};
}
}
async function getCustomCorpInfo(event) {
const { corpId, fields } = event;
if (!corpId || !Array.isArray(fields) || fields.length === 0) {
return { success: false, message: "参数错误" };
}
const project = fields.reduce(
(acc, val) => {
if (typeof val === "string" && val.trim()) {
acc[val] = 1;
}
return acc;
},
{ _id: 0, corp_name: 1 }
);
try {
let corp = await db
.collection("corp")
.findOne({ corpId }, { projection: project });
return {
success: Boolean(corp),
message: "获取成功",
data: corp,
};
} catch {
return {
success: false,
message: "获取失败",
};
}
}
async function addCorpDisease(event) {
let { corpId, disease, oldDisease } = event;
try {
if (oldDisease) {
await db
.collection("corp")
.updateOne({ corpId }, { $pull: { diseases: oldDisease } });
}
await db
.collection("corp")
.updateOne(
{ corpId },
{ $push: { diseases: { $each: [disease], $position: 0 } } }
);
return {
success: true,
message: "更新成功",
};
} catch (error) {
console.log(error);
return {
success: false,
message: error.message,
};
}
}
async function updateCorp(event) {
let { corpId, params } = event;
try {
let res = await db
.collection("corp")
.updateOne({ corpId }, { $set: params });
return {
success: true,
message: "更新成功",
data: res,
};
} catch (error) {
return {
success: false,
message: error.message,
};
}
}
async function addCorp(event) {
let { params } = event;
try {
let res = await db.collection("corp").insertOne({
...params,
_id: common.generateRandomString(24),
});
return {
success: true,
message: "添加成功",
data: res,
};
} catch (error) {
return {
success: false,
message: error.message,
};
}
}