| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- const {searchHandle} = require('../tools/searchSql');
- const {handle} = require('../tools/handle_cjs');
- const codeMap = require("../map/rcodeMap");
- const log = require("../logger").logger("c_solution","info");
- const d_news = require("../database/d_news");
- const d_product = require("../database/d_product");
- const {filePathToUrl} = require("../tools/filePathTool");
- const dbField = require("../map/dbField");
- const typeTool = require("../tools/typeTool_cjs");
- async function addReadNum(newId){
- let [err,res] = await handle(d_news.addReadNum(newId));
- if(err){
- return [err,null];
- }
- return [null,'ok'];
- }
- async function searchNewsByMini(type, key, p, l){
- p = p || 1;
- l = l || 10;
- let _params = {
- }
- if(type !== 'all'){
- _params.type = type;
- }
- if(key){
- _params.key = key
- }
- return await searchHandle(
- '搜索文章失败',
- d_news.searchAllNewsMini,
- _params,
- null,
- p,
- l,
- );
- }
- async function addArticle(article){
- let res;
- // 获取文章类型
- let [err, typeRes] = await handle(d_news.getTypeByKey(article.type));
- if(err){
- log.error(err);
- log.error(`[新增文章] 获取文章类型失败 ${err.message}`);
- return [{
- code: codeMap.ServerError,
- message: `文章类型校验失败`
- }, null];
- }
- if(typeRes.length === 0){
- log.error(`[新增文章] 文章类型不存在`);
- return [{
- code: codeMap.NotFound,
- message: `文章类型不存在`
- }, null];
- }
- let typeItem = typeRes[0];
- [err, res] = await handle(d_news.addArticle(article, typeItem.type_id));
- if(err){
- log.error(`[新增文章] 新增文章失败 ${err.message}`);
- return [{
- code: codeMap.ServerError,
- message: `服务器错误,新增文章失败`
- }, null];
- }
- return [null, res];
- }
- // 修改文章
- async function editArticle(article){
- let res;
- // 获取文章类型
- let [err, typeRes] = await handle(d_news.getTypeByKey(article.type));
- if(err){
- log.error(err);
- log.error(`[编辑文章] 获取文章类型失败 ${err.message}`);
- return [{
- code: codeMap.ServerError,
- message: `文章类型校验失败`
- }, null];
- }
- if(typeRes.length === 0){
- log.error(`[新增文章] 文章类型不存在`);
- return [{
- code: codeMap.NotFound,
- message: `文章类型不存在`
- }, null];
- }
- let typeItem = typeRes[0];
- [err, res] = await handle(d_news.editArticle(article, typeItem.type_id));
- if(err){
- log.error(`[编辑文章] 编辑文章失败 ${err.message}`);
- return [{
- code: codeMap.ServerError,
- message: `服务器错误,新增文章失败`
- }, null];
- }
- return [null, res];
- }
- async function delArticle(id){
- let [err, res] = await handle(d_news.getMiniNewsById(id));
- if(err){
- log.error(`[删除文章] 获取文章失败 ${err.message}`);
- return [{
- code: codeMap.ServerError,
- message: `服务器错误,获取文章失败`
- }, null];
- }
- if(res.length === 0){
- log.error(`[删除文章] 文章不存在`);
- return [{
- code: codeMap.NotFound,
- message: `文章不存在`
- }, null];
- }
- [err, res] = await handle(d_news.delArticle(res[0].id));
- if(err){
- log.error(`[删除文章] 删除文章失败 ${err.message}`);
- return [{
- code: codeMap.ServerError,
- message: `[服务器异常] 获取文章类型失败`
- }, null];
- }
- return [null, res];
- }
- async function getArticleTypes(){
- [err, res] = await handle(d_news.loadTypes());
- if(err){
- log.error(`[获取文章类型] 获取文章类型 ${err.message}`);
- return [{
- code: codeMap.ServerError,
- message: `[服务器异常] 获取文章类型失败`
- }, null];
- }
- return [err, res]
- }
- async function editType( id, articleType)
- {
- let [err,res] = await handle(d_news.getTypeByKey(articleType.type_key))
- if(err){
- return [err,null];
- }
- if(res.length){
- let nowType = res.find(item => typeTool.toNumber(item.type_id) === typeTool.toNumber(id))
- if(!nowType){
- return [
- {
- eCode:codeMap.DataRepeat,
- eMsg:`类型关键字重复`
- },null]
- }
- }
- [err,res] = await handle(d_news.editArticleType(id, articleType));
- if(err){
- return [err,null];
- }
- return [null,res];
- }
- async function addType( articleType)
- {
- // 数据校验
- let parentType = articleType.parent_type;
- parentType = typeTool.toNumber(parentType);
- if(parentType !== dbField.db_base.newsType.solution &&
- parentType !== dbField.db_base.newsType.news){
- return [
- {
- eCode: codeMap.NotPermission,
- eMsg: `不受支持的文章父类型, 目前支持 解决方案与文章`
- }, null];
- }
- // 判断类别关键字是否重复
- let [err,res] = await handle(d_news.getTypeByKey(articleType.type_key))
- if(err){
- return [err,null];
- }
- if(res.length){
- return [
- {
- eCode:codeMap.DataRepeat,
- eMsg:`类型关键字重复`
- },null]
- }
- [err,res] = await handle(d_news.addArticleType( articleType, parentType));
- if(err){
- return [err,null];
- }
- return [null,res];
- }
- // 删除产品类型
- async function deleteType(id) {
- let err, res;
- // 检索产品类型下是否有产品
- [err, res] = await handle(d_news.getArticleTotalByTypeId(id));
- if (err) {
- // 删除失败
- log.error('[移除文章分类] 寻找文章失败' + err.message);
- return [err, null];
- }
- if(!res[0]){
- log.warn(`未能搜索到数据`)
- }
- console.log(res)
- if (res[0].total > 0) {
- // 存在产品
- log.warn('[移除文章分类] 存在文章,无法删除');
- return [
- {
- eCode: codeMap.NotPermission,
- eMsg: `该类型下存在文章,无法删除, 请先移除对应文章`
- }, null];
- }
- [err, res] = await handle(d_news.deleteArticleType(id));
- if (err) {
- log.error('删除失败' + err.message);
- return [err, null];
- }
- return [null,res];
- }
- module.exports = {
- addReadNum,
- searchNewsByMini,
- addArticle,
- editArticle,
- delArticle,
- getArticleTypes,
- editType,
- addType,
- deleteType
- }
|