/*
* @Description:table列表接口
* @Author: ZY
* @Date: 2020-12-28 09:46:46
* @LastEditors: ZY
* @LastEditTime: 2021-01-21 17:31:24
*/
import { post, prefix, get } from "../requestDecorator";
import faker from 'faker'
export interface ArticleModel {
id: number
status: string
title: string
abstractContent: string
fullContent: string
sourceURL: string
imageURL: string
timestamp: number
platforms: string[]
disableComment: boolean
importance: number
author: string
reviewer: string
type: string
pageviews: number
}
const articleList: ArticleModel[] = []
const articleCount = 100
const mockFullContent = '
I am testing data, I am testing data.

'
for (let i = 0; i < articleCount; i++) {
articleList.push({
id: i,
status: faker.random.arrayElement(['published', 'draft']),
title: faker.lorem.sentence(6, 10),
abstractContent: faker.lorem.sentences(2),
fullContent: mockFullContent,
sourceURL: faker.internet.url(),
imageURL: faker.image.imageUrl(),
timestamp: faker.date.past().getTime(),
platforms: [faker.random.arrayElement(['a-platform', 'b-platform', 'c-platform'])],
disableComment: faker.random.boolean(),
importance: faker.random.number({ min: 1, max: 3 }),
author: faker.name.findName(),
reviewer: faker.name.findName(),
type: faker.random.arrayElement(['CN', 'US', 'JP', 'EU']),
pageviews: faker.random.number({ min: 300, max: 500 })
})
}
@prefix('/article')
export default class Article {
@post('/articles')
async getArticles(ctx: any) {
const { importance, type, title, page = 1, limit = 20, sort } = ctx.request.body
let mockList = articleList.filter(item => {
if (importance && item.importance !== +importance) return false
if (type && item.type !== type) return false
if (title && item.title.indexOf(title as string) < 0) return false
return true
})
if (sort === '-id') {
mockList = mockList.reverse()
}
const pageList = mockList.filter((_, index) => index < (limit as number) * (page as number) && index >= (limit as number) * (page as number - 1))
return {
total: mockList.length,
items: pageList
}
}
@get('/articleInfo')
async getArticle(ctx: any) {
const { id } = ctx.query
for (const article of articleList) {
if (article.id.toString() === id) {
return article
}
}
return {
code: 70001,
message: 'Article not found'
}
}
@post('/createArticle')
createArticle(ctx: any) {
const { article } = ctx.request.body
return {
code: 20000,
data: {
article
}
}
}
@post('/updateArticle')
updateArticle(ctx: any) {
const article = ctx.request.body
for (const v of articleList) {
if (v.id.toString() == article.id) {
return article
}
}
return {
code: 70001,
message: 'Article not found'
}
}
@post('/deleteArticle')
deleteArticle(ctx: any) {
console.log(ctx)
return {
code: 20000
}
}
@get('/getPageviews')
getPageviews(ctx: any) {
console.log(ctx)
return {
code: 20000,
data: {
pageviews: [
{ key: 'PC', pageviews: 1024 },
{ key: 'Mobile', pageviews: 1024 },
{ key: 'iOS', pageviews: 1024 },
{ key: 'Android', pageviews: 1024 }
]
}
}
}
}