2024-08-27 10:10:05 +08:00

79 lines
1.9 KiB
JavaScript

const {
findIssueByPageDao,
findIssueByIdDao,
addIssueDao,
deleteIssueDao,
updateIssueDao,
searchIssueByPageDao
} = require("../dao/issueDao");
const {
findIssueCommentByIdDao,
deleteCommentDao,
} = require("../dao/commentDao");
const { validate } = require("validate.js");
const { issueRule } = require("./rules");
const { ValidationError } = require("../utils/errors");
/**
* 按分页查询问答
*/
module.exports.findIssueByPageService = async function (queryObj) {
return await findIssueByPageDao(queryObj);
};
/**
* 根据 id 获取其中一个问答信息
*/
module.exports.findIssueByIdService = async function (id) {
return await findIssueByIdDao(id);
};
/**
* 新增问答
*/
module.exports.addIssueService = async function (newIssueInfo) {
// 首先进行同步的数据验证
const validateResult = validate.validate(newIssueInfo, issueRule);
if (!validateResult) {
// 验证通过
// 添加其他信息
newIssueInfo.scanNumber = 0; // 浏览数,默认为 0
newIssueInfo.commentNumber = 0; // 评论数,默认为 0
// 上架日期
newIssueInfo.issueDate = new Date().getTime().toString();
// 添加状态,默认是未过审状态
newIssueInfo.issueStatus = false;
return await addIssueDao(newIssueInfo);
} else {
// 数据验证失败
return new ValidationError("数据验证失败");
}
};
/**
* 删除某一个问答
*/
module.exports.deleteIssueService = async function (id) {
// 首先需要删除该问答对应的评论
// 获取该 issueId 对应的所有评论
const commentResult = await findIssueCommentByIdDao(id);
for (let i = 0; i < commentResult.length; i++) {
await deleteCommentDao(commentResult[i]._id);
}
// 接下来再删除该问答
return await deleteIssueDao(id);
};
/**
* 修改某一个问答
*/
module.exports.updateIssueService = async function (id, newInfo) {
return await updateIssueDao(id, newInfo);
};