165 lines
3.5 KiB
JavaScript
165 lines
3.5 KiB
JavaScript
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,
|
|
};
|
|
}
|
|
}
|