Koa2-TS/examples/dbs/mariadb/controller/cart.controller.js

97 lines
2.1 KiB
JavaScript

const {
createOrUpdate,
findCarts,
updateCarts,
removeCarts,
selectAllCarts,
unselectAllCarts,
} = require('../service/cart.service')
const { cartFormatError } = require('../constant/err.type')
class CartController {
async add(ctx) {
// 将商品添加到购物车
// 1. 解析user_id, goods_id
const user_id = ctx.state.user.id
const goods_id = ctx.request.body.goods_id
// console.log(user_id, goods_id)
// 2. 操作数据库
const res = await createOrUpdate(user_id, goods_id)
// 3. 返回结果
ctx.body = {
code: 0,
message: '添加到购物车成功',
result: res,
}
}
async findAll(ctx) {
// 1. 解析请求参数
const { pageNum = 1, pageSize = 10 } = ctx.request.query
// 2. 操作数据库
const res = await findCarts(pageNum, pageSize)
// 3. 返回结果
ctx.body = {
code: 0,
message: '获取购物车列表成功',
result: res,
}
}
async update(ctx) {
// 1. 解析参数
const { id } = ctx.request.params
const { number, selected } = ctx.request.body
if (number === undefined && selected === undefined) {
cartFormatError.message = 'number和selected不能同时为空'
return ctx.app.emit('error', cartFormatError, ctx)
}
// 2. 操作数据库
const res = await updateCarts({ id, number, selected })
// 3. 返回数据
ctx.body = {
code: 0,
message: '更新购物车成功',
result: res,
}
}
async remove(ctx) {
const { ids } = ctx.request.body
const res = await removeCarts(ids)
ctx.body = {
code: 0,
message: '删除购物车成功',
result: res,
}
}
async selectAll(ctx) {
const user_id = ctx.state.user.id
const res = await selectAllCarts(user_id)
ctx.body = {
code: 0,
message: '全部选中',
result: res,
}
}
async unselectAll(ctx) {
const user_id = ctx.state.user.id
const res = await unselectAllCarts(user_id)
ctx.body = {
code: 0,
message: '全部不选中',
result: res,
}
}
}
module.exports = new CartController()