Koa2-CJS/examples/dbs/mariadb/services/cart.service.js

97 lines
1.9 KiB
JavaScript

const { Op } = require('sequelize')
const Cart = require('../model/cart.model')
const Goods = require('../model/goods.model')
class CartService {
async createOrUpdate(user_id, goods_id) {
// 根据user_id和goods_id同时查找, 有没有记录
let res = await Cart.findOne({
where: {
[Op.and]: {
user_id,
goods_id,
},
},
})
if (res) {
// 已经存在一条记录, 将number + 1
await res.increment('number')
return await res.reload()
} else {
return await Cart.create({
user_id,
goods_id,
})
}
}
async findCarts(pageNum, pageSize) {
const offset = (pageNum - 1) * pageSize
const { count, rows } = await Cart.findAndCountAll({
attributes: ['id', 'number', 'selected'],
offset: offset,
limit: pageSize * 1,
include: {
model: Goods,
as: 'goods_info',
attributes: ['id', 'goods_name', 'goods_price', 'goods_img'],
},
})
return {
pageNum,
pageSize,
total: count,
list: rows,
}
}
async updateCarts(params) {
const { id, number, selected } = params
const res = await Cart.findByPk(id)
if (!res) return ''
number !== undefined ? (res.number = number) : ''
if (selected !== undefined) {
res.selected = selected
}
return await res.save()
}
async removeCarts(ids) {
return await Cart.destroy({
where: {
id: {
[Op.in]: ids,
},
},
})
}
async selectAllCarts(user_id) {
return await Cart.update(
{ selected: true },
{
where: {
user_id,
},
}
)
}
async unselectAllCarts(user_id) {
return await Cart.update(
{ selected: false },
{
where: {
user_id,
},
}
)
}
}
module.exports = new CartService()