Koa2-CJS/examples/dbs/mariadb/controller/goods.controller.js

112 lines
2.5 KiB
JavaScript

const path = require('path')
const {
fileUploadError,
unSupportedFileType,
publishGoodsError,
invalidGoodsID,
} = require('../constant/err.type')
const {
createGoods,
updateGoods,
removeGoods,
restoreGoods,
findGoods,
} = require('../service/goods.service')
class GoodsController {
async upload(ctx, next) {
// console.log(ctx.request.files)
const { file } = ctx.request.files
// console.log(file)
const fileTypes = ['image/jpeg', 'image/png']
if (file) {
if (!fileTypes.includes(file.type)) {
return ctx.app.emit('error', unSupportedFileType, ctx)
}
ctx.body = {
code: 0,
message: '商品图片上传成功',
result: {
goods_img: path.basename(file.path),
},
}
} else {
return ctx.app.emit('error', fileUploadError, ctx)
}
}
async create(ctx) {
// 直接调用service的createGoods方法
try {
const { createdAt, updatedAt, ...res } = await createGoods(
ctx.request.body
)
ctx.body = {
code: 0,
message: '发布商品成功',
result: res,
}
} catch (err) {
console.error(err)
return ctx.app.emit('error', publishGoodsError, ctx)
}
}
async update(ctx) {
try {
const res = await updateGoods(ctx.params.id, ctx.request.body)
if (res) {
ctx.body = {
code: 0,
message: '修改商品成功',
result: '',
}
} else {
return ctx.app.emit('error', invalidGoodsID, ctx)
}
} catch (err) {
console.error(err)
}
}
async remove(ctx) {
const res = await removeGoods(ctx.params.id)
if (res) {
ctx.body = {
code: 0,
message: '下架商品成功',
result: '',
}
} else {
return ctx.app.emit('error', invalidGoodsID, ctx)
}
}
async restore(ctx) {
const res = await restoreGoods(ctx.params.id)
if (res) {
ctx.body = {
code: 0,
message: '上架商品成功',
result: '',
}
} else {
return ctx.app.emit('error', invalidGoodsID, ctx)
}
}
async findAll(ctx) {
// 1. 解析pageNum和pageSize
const { pageNum = 1, pageSize = 10 } = ctx.request.query
// 2. 调用数据处理的相关方法
const res = await findGoods(pageNum, pageSize)
// 3. 返回结果
ctx.body = {
code: 0,
message: '获取商品列表成功',
result: res,
}
}
}
module.exports = new GoodsController()