mitao
2025-02-21 31573d6180d15ef65ed0df9c2732495f40b12663
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dg.core.db.gen.mapper.AutomessageSysUserRecordMapper">
    <resultMap type="com.dg.core.db.gen.entity.AutomessageSysUserRecord" id="AutomessageSysUserRecordResult">
        <id     property="id"      column="id"      />
        <id     property="userId"      column="user_id"      />
        <id     property="createTime"      column="create_time"      />
        <id     property="joinType"      column="join_type"      />
    </resultMap>
 
    <sql id="selectAgreement">
        select id,user_id,
               (select user_name from automessage_sys_user where user_id=a.user_id)userName,
               create_time,join_type FROM automessage_sys_user_record a
    </sql>
<!--    小程序用户访问量统计1.累计访问量2.本年访问量 3.本月访问量 4.今日访问量 5.昨日访问-->
    <select id="selectUserRecordCount"  resultType="com.dg.core.db.manual.pojo.AppletUserCount">
        select count(*)visits,1 type  from  automessage_sys_user_record UNION
        select count(*)visits,2 type  from  automessage_sys_user_record where year(create_time)=year(SYSDATE()) UNION
        select count(*)visits,3 type  from  automessage_sys_user_record where DATE_FORMAT(create_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) ,'%Y%m' ) UNION
        select count(*)visits,4 type  from  automessage_sys_user_record where to_days(create_time) = to_days(now()) UNION
        select count(*)visits,5 type  from  automessage_sys_user_record where TO_DAYS( SYSDATE() ) - TO_DAYS(create_time) = 1
    </select>
 
    <select id="selectByDay" resultType="com.dg.core.db.manual.pojo.AppletUserCount">
        select d.date, IFNULL(T.score,0) visits from
            (
                SELECT CURDATE() AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 2 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 3 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 4 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 5 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 6 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 7 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 8 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 9 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 10 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 11 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 12 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 13 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 14 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 15 DAY) AS date
            )  d
                left join(
                select DATE_FORMAT(create_time,'%Y-%m-%d')create_time, COUNT(*) as score
                from automessage_sys_user_record
                group by DATE_FORMAT(create_time,'%Y-%m-%d')
            ) T on T.create_time = d.date
        GROUP BY d.date
    </select>
 
    <select id="selectByMonth" resultType="com.dg.core.db.manual.pojo.AppletUserCount">
        select d.date, IFNULL(T.score,0) visits from
            (
                SELECT CURDATE() AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 2 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 3 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 4 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 5 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 6 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 7 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 8 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 9 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 10 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 11 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 12 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 13 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 14 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 15 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 16 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 17 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 18 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 19 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 20 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 21 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 22 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 23 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 24 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 25 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 26 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 27 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 28 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 29 DAY) AS date
                UNION ALL
                SELECT DATE_SUB(CURDATE(), INTERVAL 30 DAY) AS date
            )  d
                left join(
                select DATE_FORMAT(create_time,'%Y-%m-%d')create_time, COUNT(*) as score
                from automessage_sys_user_record
                group by DATE_FORMAT(create_time,'%Y-%m-%d')
            ) T on T.create_time = d.date
        GROUP BY d.date
    </select>
 
    <select id="selectByYear" resultType="com.dg.core.db.manual.pojo.AppletUserCount">
        select d.date, IFNULL(T.score,0) visits from
            (
                SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 11 month),"%Y-%m") date  UNION
                SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 10 month),"%Y-%m") date  UNION
                SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 9 month),"%Y-%m") date  UNION
                SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 8 month),"%Y-%m")  date UNION
                SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 7 month),"%Y-%m") date  UNION
                SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 6 month),"%Y-%m") date UNION
                SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 5 month),"%Y-%m") date  UNION
                SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 4 month),"%Y-%m") date  UNION
                SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 3 month),"%Y-%m")  date UNION
                SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 2 month),"%Y-%m") date  UNION
                SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 month),"%Y-%m") date UNION
                select DATE_FORMAT(NOW(),"%Y-%m") FROM DUAL
            )  d
                left join(
                select DATE_FORMAT(create_time,'%Y-%m')create_time, COUNT(*) as score
                from automessage_sys_user_record
                group by DATE_FORMAT(create_time,'%Y-%m')
            ) T on T.create_time = d.date
        GROUP BY d.date
    </select>
 
<!--    删除因为token问题产出的重复脏数据-->
    <delete id="deleteDistinct" parameterType="string">
        DELETE FROM automessage_sys_user_record where id in
                    (select id FROM(
                        Select id,user_id,DATE_FORMAT(create_time,'%Y-%m-%d')create_time
                        From automessage_sys_user_record Group By user_id,DATE_FORMAT(create_time,'%Y-%m-%d')  Having Count(*)>1)
                        k)
    </delete>
 
</mapper>