liyaozhi
2025-10-28 1320688354fd168c51cf2e05f29a2253f4ed9c00
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
<?php
 
namespace app\branch\service\statistics;
 
use app\branch\model\user\Favorite as FavoriteModel;
use app\branch\model\user\Visit as VisitModel;
use app\branch\model\member\Member as MemberModel;
 
/**
 * 会员数据概况
 */
class MemberService
{
    // 分会id
    private $branch_id;
 
    public function __construct($branch_id)
    {
        $this->branch_id = $branch_id;
    }
    /**
     * 获取数据概况
     */
    public function getData()
    {
        $today = date('Y-m-d');
        $yesterday = date('Y-m-d', strtotime('-1 day'));
        $data = [
            // 分会收藏
            'fav_store' => [
                'today' => number_format($this->getFavData($today, null, '10')),
                'yesterday' => number_format($this->getFavData($yesterday, null, '10'))
            ],
            // 活动收藏
            'fav_activity' => [
                'today' => number_format($this->getFavData($today, null, '20')),
                'yesterday' => number_format($this->getFavData($yesterday, null, '20'))
            ],
            // 访客数
            'visit_user' => [
                'today' => number_format($this->getVisitUserData($today, null)),
                'yesterday' => number_format($this->getVisitUserData($yesterday, null))
            ],
            // 访问量
            'visit_total' => [
                'today' => number_format($this->getVisitData($today, null)),
                'yesterday' => number_format($this->getVisitData($yesterday, null))
            ],
        ];
        return $data;
    }
 
    /**
     * 通过时间段查询访问量
     */
    public function getVisitByDate($days)
    {
        $data = [];
        foreach ($days as $day) {
            $data[] = [
                'day' => $day,
                'fav_store' => $this->getFavData($day, null, '10'),
                'fav_product' => $this->getFavData($day, null, '20'),
                'visit_user' => $this->getVisitUserData($day, null),
                'visit_total' => $this->getVisitData($day, null)
            ];
        }
        return $data;
    }
 
    /**
     * 获取分会关注数据
     */
    private function getFavData($startDate = null, $endDate = null, $type)
    {
        return (new FavoriteModel())->getFavData($startDate, $endDate, $type, $this->branch_id);
    }
 
    /**
     * 访问量
     */
    private function getVisitData($startDate = null, $endDate = null){
        return (new VisitModel())->getVisitData($startDate, $endDate, $this->branch_id);
    }
 
    private function getVisitUserData($startDate = null, $endDate = null){
        return (new VisitModel())->getVisitUserData($startDate, $endDate, $this->branch_id);
    }
 
    /**
     * 新增会员,用于line-chart
     */
    public function getNewMemberByDate($date)
    {
        if ($date == 'year') {
            $m = date('m', time());
            $days[] = $m;
            do {
                $days[] = '0' . ($m - 1);
                $m--;
            } while ($m > 1);
            $days = array_reverse($days);
        } else {
            $days = getDatesBetweenTwoDays(getStartModelTime($date), date('Y-m-d'));
        }
        $list = (new MemberModel())->memberGroupNum($date, $this->branch_id)->toArray();
        $list = array_combine(array_column($list, 'day'), $list);
        $data = [];
        foreach ($days as $day) {
            $data[] = [
                'day' => $day,
                'total' => $list[$day]['total'] ?? 0,
            ];
        }
        return ['days' => $days, 'data' => $data];
        
    }
}