97 lines
1.9 KiB
JavaScript
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()
|