order.controller.js 2.34 KB
Newer Older
kusang96's avatar
card    
kusang96 committed
1
import mongoose from 'mongoose';
Jiwon Yoon's avatar
Jiwon Yoon committed
2
import Order from "../schemas/Order.js";
3
import User from "../schemas/User.js";
Jiwon Yoon's avatar
Jiwon Yoon committed
4
5
6
7

const addorder = async (req, res) => {
    const { userId, products, receiverInfo, total } = req.body
    try {
kusang96's avatar
kusang96 committed
8
        const newOrder = await new Order({ userId, products, receiverInfo, total }).save()
Jiwon Yoon's avatar
Jiwon Yoon committed
9
10
11
12
13
14
15
        res.status(200).send('Order DB에 저장 완료')
    } catch (error) {
        console.log(error)
        res.status(500).send('Order DB에 저장 실패')
    }
}

16
17
18
const Ordered = async (req, res) => {
    const { db } = req.body
    try {
kusang96's avatar
kusang96 committed
19
        const ordered = await req.body.findOne({}, { _id: 0 }).select(`${db}`)
20
21
22
23
24
25
        res.json(ordered);
    } catch (error) {
        res.status(500).send('카테고리를 불러오지 못했습니다.')
    }
}

Jiwon Yoon's avatar
Jiwon Yoon committed
26
27
const showorder = async (req, res) => {
    try {
kusang96's avatar
kusang96 committed
28
        const order = await Order.find({ userId: req.userId }).sort({ _id: -1 }).limit(1).populate({
Jiwon Yoon's avatar
Jiwon Yoon committed
29
30
31
            path: 'products.productId',
            model: 'Product'
        })
32
        res.status(200).json(order[0])
Jiwon Yoon's avatar
Jiwon Yoon committed
33
34
35
36
37
38
    } catch (error) {
        console.log(error)
        res.status(500).send('쇼핑카트를 불러오지 못했습니다.')
    }
}

39
40
41
42
43
44
45
46
47
48
49
50
51
const orderById = async (req, res, next, id) => {
    try {
        const user = await User.findById(id)
        if (!user) {
            res.status(404).send('사용자를 찾을 수 없습니다')
        }
        req.userId = user
        next()
    } catch (error) {
        console.log(error);
        res.status(500).send('사용자 아이디 검색 실패')
    }
}
Jiwon Yoon's avatar
Jiwon Yoon committed
52

kusang96's avatar
card    
kusang96 committed
53
54
55
const recommendPro = async (req, res) => {
    const { productId } = req.body
    console.log(productId)
이재연's avatar
aaaa    
이재연 committed
56
57
    try {
        const recommend = await Order.aggregate([
kusang96's avatar
card    
kusang96 committed
58
59
60
61
62
            {
                $match: {
                    'products.productId': { $ne : [ "$productId[0]", mongoose.Types.ObjectId(productId)] }
                }
            },
이재연's avatar
aaaa    
이재연 committed
63
64
            { "$unwind": "$products" },
            {
kusang96's avatar
card    
kusang96 committed
65
66
67
                $group: {
                    productId: "$products.productId",
                    total: { $sum: 1 }
이재연's avatar
aaaa    
이재연 committed
68
69
70
                }
            }
        ])
kusang96's avatar
card    
kusang96 committed
71
72
73
        const sorting = recommend.filter({})
        console.log('recommend=', recommend)
        res.send('dddkfdskfsa fsk')
이재연's avatar
aaaa    
이재연 committed
74
    } catch (error) {
kusang96's avatar
card    
kusang96 committed
75
        console.log('error in order ', error)
이재연's avatar
aaaa    
이재연 committed
76
77
78
    }
}

kusang96's avatar
card    
kusang96 committed
79
export default { addorder, showorder, orderById, Ordered, recommendPro }