cshenfu
2024-05-21 09d8c671d5e6e6045677bfb5218a5fb78c26aa0f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
'use strict';
module.exports = {
    /**
     * 获取订单列表
     * @url admin/system/user/sys/getChartsList2 前端调用的url参数地址
     * data 请求参数
     * @param {String} params1  参数1
     */
    main: async (event) => {
        let {
            data = {}, userInfo, util, filterResponse, originalParam
        } = event;
        let {
            customUtil,
            uniID,
            config,
            pubFun,
            vk,
            db,
            _
        } = util;
        let {
            uid,
            type,
            times,
            time,
            sale_id
        } = data;
        let res = {
            code: 0,
            msg: "",
            data: {}
        };
        // 业务逻辑开始-----------------------------------------------------------
        let nowDate = new Date()
        console.log(nowDate)
        const timeObj = vk.pubfn.getCommonTime(new Date())
        let startTimestamp = 0
        let step = 0
        let steps = []
 
        switch (type) {
            case 'custom':
                startTimestamp = time[0]
                nowDate = new Date(time[1])
                step = 24 * 60 * 60 * 1000
                break
            case 'year':
                startTimestamp = timeObj.yearStart
                steps = timeObj.months
                break
            case 'month':
                startTimestamp = timeObj.monthStart
                step = 24 * 60 * 60 * 1000
                break
            case 'week':
                startTimestamp = timeObj.weekStart
                step = 24 * 60 * 60 * 1000
                break
        }
 
        const map = {
            status: 2,
            _add_time: _.gt(startTimestamp)
        }
 
        const obj = await db.collection('uni-id-base-order').where(map).field().get()
        const orderList = obj.data
 
 
        let arr1 = []
        let arr2 = []
 
        if (type != 'year') {
            for (let i = startTimestamp; i <= nowDate; i += step) {
                let payArr = orderList.filter(item => {
                    return item._add_time >= i && item._add_time < i + step
                }).map(item => {
                    return item.total_fee
                })
                let money = 0
                if (payArr.length > 0) {
                    money = +(payArr.reduce((a, b) => a + b))
                }
                arr1.push({
                    _id: vk.pubfn.timeFormat(i, "MM-dd"),
                    count: payArr.length || 0
                })
                arr2.push({
                    _id: vk.pubfn.timeFormat(i, "MM-dd"),
                    count: money
                })
            }
        }
        if (type == 'year') {
            console.log()
            let end = nowDate.getMonth() + 2
            for (let i = 1; i < end; i++) {
                let payArr = orderList.filter(item => {
                    return item._add_time >= steps[i].monthStart && item._add_time < steps[i].monthEnd
                }).map(item => {
                    return item.total_fee
                })
                
                let money = 0
                if (payArr.length > 0) {
                    money = +(payArr.reduce((a, b) => a + b))
                }
                
                arr1.push({
                    _id: vk.pubfn.timeFormat(steps[i].monthStart, "yyyy-MM"),
                    count: payArr.length || 0
                })
                arr2.push({
                    _id: vk.pubfn.timeFormat(steps[i].monthStart, "yyyy-MM"),
                    count: money
                })
            }
        }
 
 
        res.data.arr1 = arr1
        res.data.arr2 = arr2
        // 业务逻辑结束-----------------------------------------------------------
        return res;
    }
}