魏熙美 5 лет назад
Родитель
Сommit
76358c7185

+ 7
- 0
src/main/java/com/huiju/estateagents/common/CommConstant.java Просмотреть файл

295
 
295
 
296
 
296
 
297
     // ------   转化率 end ---------
297
     // ------   转化率 end ---------
298
+
299
+
300
+    // ------- 用户来源 查询条件 start ----------
301
+
302
+    public static final String REGISTERED_TYPE = "registered";
303
+
304
+    // ------- 用户来源 查询条件 end ----------
298
 }
305
 }

+ 12
- 27
src/main/java/com/huiju/estateagents/controller/StatisticalController.java Просмотреть файл

3
 import com.huiju.estateagents.base.ResponseBean;
3
 import com.huiju.estateagents.base.ResponseBean;
4
 import com.huiju.estateagents.service.IStatisticalService;
4
 import com.huiju.estateagents.service.IStatisticalService;
5
 import org.springframework.beans.factory.annotation.Autowired;
5
 import org.springframework.beans.factory.annotation.Autowired;
6
+import org.springframework.format.annotation.DateTimeFormat;
6
 import org.springframework.web.bind.annotation.*;
7
 import org.springframework.web.bind.annotation.*;
7
 
8
 
9
+import java.time.LocalDate;
8
 import java.util.Date;
10
 import java.util.Date;
9
 
11
 
10
 /**
12
 /**
59
      * @return
61
      * @return
60
      */
62
      */
61
     @GetMapping(value = "/admin/selectUserBehavior")
63
     @GetMapping(value = "/admin/selectUserBehavior")
62
-    public ResponseBean selectUserBehavior(@RequestParam(required = false) Date startDate,
63
-                                            @RequestParam(required = false) Date endDate) {
64
-        return iStatisticalService.selectUserBehavior(startDate, endDate);
65
-    }
66
-
67
-
68
-    /**
69
-     * 行为分析的 列表
70
-     * @return
71
-     */
72
-    @GetMapping(value = "/admin/selectUserBehaviorAll")
73
-    public ResponseBean selectUserBehaviorAll(@RequestParam(required = false) Integer pageNum,
74
-                                           @RequestParam(required = false) Integer pageCode) {
75
-        return iStatisticalService.selectUserBehaviorAll(pageNum, pageCode);
64
+    public ResponseBean selectUserBehavior(@RequestParam(required = false) Integer pageNum,
65
+                                           @RequestParam(required = false) Integer pageCode,
66
+                                           @RequestParam(required = false) Date startDate,
67
+                                           @RequestParam(required = false) Date endDate) {
68
+        return iStatisticalService.selectUserBehavior(pageNum, pageCode, startDate, endDate);
76
     }
69
     }
77
 
70
 
78
     /**
71
     /**
79
-     * 行为分析的 具体数据列表
72
+     * 行为分析的 具体事件数据列表
80
      * @return
73
      * @return
81
      */
74
      */
82
     @GetMapping(value = "/admin/selectEventAll")
75
     @GetMapping(value = "/admin/selectEventAll")
85
         return iStatisticalService.selectEventAll(event, personId);
78
         return iStatisticalService.selectEventAll(event, personId);
86
     }
79
     }
87
 
80
 
88
-    /**
89
-     * 行为分析的 具体数据列表
90
-     * @return
91
-     */
92
-    @GetMapping(value = "/admin/selectConversion/activity")
93
-    public ResponseBean selectConversionAll(@RequestParam(value = "conversion") String conversion) {
94
-        return iStatisticalService.selectConversion(conversion);
95
-    }
96
-
97
 
81
 
98
     /**
82
     /**
99
      * 用户来源 统计首页
83
      * 用户来源 统计首页
100
      * @return
84
      * @return
101
      */
85
      */
102
     @GetMapping(value = "/admin/selectUserResource")
86
     @GetMapping(value = "/admin/selectUserResource")
103
-    public ResponseBean selectUserResource(@RequestParam(value = "startDate", required = false) Date startDate,
104
-                                           @RequestParam(value = "endDate", required = false) Date endDate) {
105
-        return iStatisticalService.selectUserResource(startDate, endDate);
87
+    public ResponseBean selectUserResource(@RequestParam(value = "startDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate startDate,
88
+                                           @RequestParam(value = "endDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)  LocalDate endDate,
89
+                                           @RequestParam(value = "registeredType", required = false) String registeredType) {
90
+        return iStatisticalService.selectUserResource(startDate, endDate, registeredType);
106
     }
91
     }
107
 
92
 
108
 
93
 

+ 3
- 2
src/main/java/com/huiju/estateagents/mapper/TaPersonMapper.java Просмотреть файл

10
 import org.apache.ibatis.annotations.Select;
10
 import org.apache.ibatis.annotations.Select;
11
 
11
 
12
 import java.io.Serializable;
12
 import java.io.Serializable;
13
+import java.time.LocalDate;
13
 import java.util.Date;
14
 import java.util.Date;
14
 import java.util.List;
15
 import java.util.List;
15
 import java.util.Map;
16
 import java.util.Map;
136
      * 用户来源 柱状
137
      * 用户来源 柱状
137
      * @return
138
      * @return
138
      */
139
      */
139
-    List<Map<String, Object>> selectUserSourceColumnar(@Param("personType") String personType, @Param("startDate")Date startDate, @Param("endDate")Date endDate);
140
+    List<Map<String, Object>> selectUserSourceColumnar(@Param("personType") String personType, @Param("startDate") LocalDate startDate, @Param("endDate")LocalDate endDate);
140
 
141
 
141
     /**
142
     /**
142
      * 用户来源 数据列表
143
      * 用户来源 数据列表
143
      */
144
      */
144
-    List<Map<String,Object>> selectUserSourceData(@Param("personType") String personType, @Param("startDate")Date startDate, @Param("endDate")Date endDate);
145
+    List<Map<String,Object>> selectUserSourceData(@Param("personType") String personType, @Param("startDate")LocalDate startDate, @Param("endDate")LocalDate endDate, @Param("registeredType") String registeredType);
145
 
146
 
146
     // ------------- 用户来源 end ------------
147
     // ------------- 用户来源 end ------------
147
 
148
 

+ 3
- 10
src/main/java/com/huiju/estateagents/service/IStatisticalService.java Просмотреть файл

2
 
2
 
3
 import com.huiju.estateagents.base.ResponseBean;
3
 import com.huiju.estateagents.base.ResponseBean;
4
 
4
 
5
+import java.time.LocalDate;
5
 import java.util.Date;
6
 import java.util.Date;
6
 
7
 
7
 /**
8
 /**
35
      * @param endDate
36
      * @param endDate
36
      * @return
37
      * @return
37
      */
38
      */
38
-    ResponseBean selectUserBehavior(Date startDate,Date endDate);
39
-
40
-    /**
41
-     * 行为分析的 列表
42
-     * @param pageNum
43
-     * @param pageCode
44
-     * @return
45
-     */
46
-    ResponseBean selectUserBehaviorAll(Integer pageNum, Integer pageCode);
39
+    ResponseBean selectUserBehavior(Integer pageNum, Integer pageSize, Date startDate,Date endDate);
47
 
40
 
48
     /**
41
     /**
49
      * 行为分析的 具体数据列表
42
      * 行为分析的 具体数据列表
64
      * 用户来源 首页
57
      * 用户来源 首页
65
      * @return
58
      * @return
66
      */
59
      */
67
-    ResponseBean selectUserResource(Date startDate, Date endDate);
60
+    ResponseBean selectUserResource(LocalDate startDate, LocalDate endDate, String registeredType);
68
 
61
 
69
 }
62
 }

+ 30
- 12
src/main/java/com/huiju/estateagents/service/impl/StatisticalServiceImpl.java Просмотреть файл

13
 import org.springframework.beans.factory.annotation.Autowired;
13
 import org.springframework.beans.factory.annotation.Autowired;
14
 import org.springframework.stereotype.Service;
14
 import org.springframework.stereotype.Service;
15
 
15
 
16
+import java.time.LocalDate;
16
 import java.time.LocalDateTime;
17
 import java.time.LocalDateTime;
17
 import java.util.Date;
18
 import java.util.Date;
18
 import java.util.HashMap;
19
 import java.util.HashMap;
77
         // 转化率, 当前 默认项目收藏
78
         // 转化率, 当前 默认项目收藏
78
         Map<String, Object> selectBuildingStatistical = taBuildingMapper.selectBuildingStatistical("save");
79
         Map<String, Object> selectBuildingStatistical = taBuildingMapper.selectBuildingStatistical("save");
79
 
80
 
81
+        // -------  用户来源 start ------------
82
+
83
+        // 用户来源 柱状
84
+        List<Map<String, Object>> mapList = taPersonMapper.selectUserSourceColumnar(CommConstant.PERSON_REALTY_CONSULTANT, null, null);
85
+
86
+        // 用户来源 饼状
87
+        // 来源置业顾问, 来源全民经纪人,自由进入
88
+        Integer person_realty_consultant = taPersonMapper.selectUserSourcePie(CommConstant.PERSON_REALTY_CONSULTANT, CommConstant.PERSON_REALTY_CONSULTANT);
89
+        Integer person_estate_agent = taPersonMapper.selectUserSourcePie(CommConstant.PERSON_ESTATE_AGENT, CommConstant.PERSON_REALTY_CONSULTANT);
90
+        Integer person_null = taPersonMapper.selectUserSourcePie(null, CommConstant.PERSON_REALTY_CONSULTANT);
91
+        Map<String, Object> pieMap = new HashMap<>();
92
+        pieMap.put("person_realty_consultant", person_realty_consultant);
93
+        pieMap.put("person_estate_agent", person_estate_agent);
94
+        pieMap.put("person_null", person_null);
95
+
96
+        Map<String, Object> result = new HashMap<>();
97
+        result.put("columnar", mapList);
98
+        result.put("pie", pieMap);
99
+
100
+        // -------  用户来源 end ------------
101
+
80
         map.put("selectUserCount", selectUserCount);
102
         map.put("selectUserCount", selectUserCount);
81
         map.put("selectRegisteredCount", selectRegisteredCount);
103
         map.put("selectRegisteredCount", selectRegisteredCount);
82
         map.put("selectRecentlyCount", selectRecentlyCount);
104
         map.put("selectRecentlyCount", selectRecentlyCount);
86
         map.put("selectSexUser", selectSexUser);
108
         map.put("selectSexUser", selectSexUser);
87
         map.put("selectCityUser", selectCityUser);
109
         map.put("selectCityUser", selectCityUser);
88
         map.put("selectBuildingStatistical", selectBuildingStatistical);
110
         map.put("selectBuildingStatistical", selectBuildingStatistical);
111
+        map.put("selectUserSource", result);
89
 
112
 
90
         responseBean.addSuccess(map);
113
         responseBean.addSuccess(map);
91
 
114
 
129
     }
152
     }
130
 
153
 
131
     @Override
154
     @Override
132
-    public ResponseBean selectUserBehavior(Date startDate, Date endDate) {
155
+    public ResponseBean selectUserBehavior(Integer pageNum, Integer pageSize, Date startDate, Date endDate) {
133
         ResponseBean responseBean = new ResponseBean();
156
         ResponseBean responseBean = new ResponseBean();
134
 
157
 
135
         // 用户行为
158
         // 用户行为
136
         List<PersonPO> selectUserBehavior = taPersonMapper.selectUserBehavior(CommConstant.PERSON_REALTY_CONSULTANT, startDate, endDate);
159
         List<PersonPO> selectUserBehavior = taPersonMapper.selectUserBehavior(CommConstant.PERSON_REALTY_CONSULTANT, startDate, endDate);
137
 
160
 
161
+        IPage<TaPersonVisitRecord> page = new Page<>(pageNum, pageSize);
162
+        IPage<TaPersonVisitRecord> visitRecordIPage = taPersonVisitRecordMapper.selectAll(page);
163
+
138
         Map<String, Object> map = new HashMap<>();
164
         Map<String, Object> map = new HashMap<>();
139
         map.put("selectUserBehavior", selectUserBehavior);
165
         map.put("selectUserBehavior", selectUserBehavior);
166
+        map.put("data", visitRecordIPage);
140
         responseBean.addSuccess(map);
167
         responseBean.addSuccess(map);
141
         return responseBean;
168
         return responseBean;
142
     }
169
     }
143
 
170
 
144
-    @Override
145
-    public ResponseBean selectUserBehaviorAll(Integer pageNum, Integer pageSize) {
146
-        ResponseBean responseBean = new ResponseBean();
147
-        IPage<TaPersonVisitRecord> page = new Page<>(pageNum, pageSize);
148
-        IPage<TaPersonVisitRecord> visitRecordIPage = taPersonVisitRecordMapper.selectAll(page);
149
-        responseBean.addSuccess(visitRecordIPage);
150
-        return responseBean;
151
-    }
152
-
153
     @Override
171
     @Override
154
     public ResponseBean selectEventAll(String event, Integer personId) {
172
     public ResponseBean selectEventAll(String event, Integer personId) {
155
         ResponseBean responseBean = new ResponseBean();
173
         ResponseBean responseBean = new ResponseBean();
215
 
233
 
216
 
234
 
217
     @Override
235
     @Override
218
-    public ResponseBean selectUserResource(Date startDate, Date endDate) {
236
+    public ResponseBean selectUserResource(LocalDate startDate, LocalDate endDate, String registeredType) {
219
         ResponseBean responseBean = new ResponseBean();
237
         ResponseBean responseBean = new ResponseBean();
220
         // 用户来源 柱状
238
         // 用户来源 柱状
221
         List<Map<String, Object>> mapList = taPersonMapper.selectUserSourceColumnar(CommConstant.PERSON_REALTY_CONSULTANT, startDate, endDate);
239
         List<Map<String, Object>> mapList = taPersonMapper.selectUserSourceColumnar(CommConstant.PERSON_REALTY_CONSULTANT, startDate, endDate);
231
         map.put("person_null", person_null);
249
         map.put("person_null", person_null);
232
 
250
 
233
         // 用户来源 数据列表
251
         // 用户来源 数据列表
234
-        List<Map<String, Object>> selectUserSourceData = taPersonMapper.selectUserSourceData(CommConstant.PERSON_ESTATE_AGENT, startDate, endDate);
252
+        List<Map<String, Object>> selectUserSourceData = taPersonMapper.selectUserSourceData(CommConstant.PERSON_ESTATE_AGENT, startDate, endDate, registeredType);
235
 
253
 
236
         Map<String, Object> result = new HashMap<>();
254
         Map<String, Object> result = new HashMap<>();
237
         result.put("columnar", mapList);
255
         result.put("columnar", mapList);

+ 41
- 25
src/main/resources/mapper/TaPersonMapper.xml Просмотреть файл

170
 
170
 
171
 
171
 
172
     <select id="selectUserBehavior" resultType="com.huiju.estateagents.po.PersonPO">
172
     <select id="selectUserBehavior" resultType="com.huiju.estateagents.po.PersonPO">
173
+
173
         SELECT
174
         SELECT
174
-        *
175
+            temp_date.date as date,
176
+            temp_date.type_name as activity,
177
+            temp.activityCount as activityCount
175
         FROM
178
         FROM
176
         (
179
         (
177
-            SELECT
178
-            DATE_FORMAT( DATE_SUB( now( ), INTERVAL a.rownum DAY ), '%Y-%m-%d' ) AS date
179
-            FROM
180
-            sequence a
181
-            WHERE
180
+        SELECT
181
+          DATE_FORMAT( DATE_SUB( now( ), INTERVAL a.rownum DAY ), '%Y-%m-%d' ) AS date, b.type_id, b.type_name
182
+          from sequence a, td_biz_event_type b
183
+          where
182
             <if test="startDate == null or endDate == null">
184
             <if test="startDate == null or endDate == null">
183
                 a.rownum <![CDATA[ <= ]]> 7
185
                 a.rownum <![CDATA[ <= ]]> 7
184
             </if>
186
             </if>
185
             <if test="startDate != null or endDate != null">
187
             <if test="startDate != null or endDate != null">
186
                 a.rownum <![CDATA[ <= ]]> datediff(#{endDate}, #{startDate})
188
                 a.rownum <![CDATA[ <= ]]> datediff(#{endDate}, #{startDate})
187
             </if>
189
             </if>
190
+
188
         ) AS temp_date
191
         ) AS temp_date
192
+
189
         LEFT JOIN (
193
         LEFT JOIN (
190
-            SELECT
191
-            COUNT(1) as activityCount,
192
-            tpvr.visit_time AS visitTime,
193
-            tbet.type_name as activity
194
-            FROM
195
-            ta_person tp
196
-            INNER JOIN ta_person_visit_record tpvr ON tp.person_id = tpvr.person_id
197
-            INNER JOIN td_biz_event_type tbet ON tpvr.event_type = tbet.type_id
198
-            where ifnull(tp.person_type, '') != #{personType}
199
-            GROUP BY tpvr.activity
200
-        ) AS temp ON temp_date.date = DATE_FORMAT( temp.visitTime , '%Y-%m-%d' )
194
+        SELECT
195
+        COUNT(1) as activityCount,
196
+        tpvr.event_type,
197
+        DATE_FORMAT( tpvr.visit_time , '%Y-%m-%d' ) as date
198
+        FROM
199
+        ta_person tp
200
+        INNER JOIN ta_person_visit_record tpvr ON tp.person_id = tpvr.person_id
201
+        where ifnull(tp.person_type, '') != #{personType}
202
+        GROUP BY tpvr.person_id, tpvr.event_type, DATE_FORMAT( tpvr.visit_time , '%Y-%m-%d' )
203
+        ) AS temp ON temp_date.date = temp.date and temp_date.type_id = temp.event_type
201
     </select>
204
     </select>
202
 
205
 
203
     <select id="selectActiveUserCount" resultType="map">
206
     <select id="selectActiveUserCount" resultType="map">
239
     <select id="selectNewsUserCount" resultType="map">
242
     <select id="selectNewsUserCount" resultType="map">
240
         SELECT
243
         SELECT
241
         authorization_count_table.date as date,
244
         authorization_count_table.date as date,
242
-        authorization_count_table.authorization_count as authorization_count,
245
+        ifnull(authorization_count_table.authorization_count, 0) as authorization_count,
243
         user_count_table.user_count as user_count
246
         user_count_table.user_count as user_count
244
         FROM
247
         FROM
245
         (
248
         (
353
 
356
 
354
     <select id="selectUserSourceData" resultType="map">
357
     <select id="selectUserSourceData" resultType="map">
355
         select
358
         select
356
-        *
359
+            temp_date.date AS date,
360
+            temp_date.from_name as from_name,
361
+            temp_date.from_code as from_code,
362
+            IFNULL(user_count.count, 0) as count,
363
+            user_count.create_date as create_date
357
         FROM
364
         FROM
358
         (
365
         (
359
             SELECT
366
             SELECT
360
-              DATE_FORMAT( DATE_SUB( now( ), INTERVAL a.rownum DAY ), '%Y-%m-%d' ) AS date
367
+                DATE_FORMAT( DATE_SUB( now( ), INTERVAL a.rownum DAY ), '%Y-%m-%d' ) AS date,
368
+                tempf.from_name as from_name,
369
+                tempf.from_code as from_code
361
             FROM
370
             FROM
362
-              sequence a
371
+                sequence a
372
+                ,
373
+                td_person_from tempf
363
             WHERE
374
             WHERE
364
             <if test="startDate == null or endDate == null">
375
             <if test="startDate == null or endDate == null">
365
                 a.rownum <![CDATA[ <= ]]> 7
376
                 a.rownum <![CDATA[ <= ]]> 7
367
             <if test="startDate != null or endDate != null">
378
             <if test="startDate != null or endDate != null">
368
                 a.rownum <![CDATA[ <= ]]> datediff(#{endDate}, #{startDate})
379
                 a.rownum <![CDATA[ <= ]]> datediff(#{endDate}, #{startDate})
369
             </if>
380
             </if>
381
+
370
         ) AS temp_date
382
         ) AS temp_date
383
+
371
         LEFT JOIN
384
         LEFT JOIN
372
         (
385
         (
373
             SELECT
386
             SELECT
374
-                COUNT(1) as count,
387
+                ifnull(COUNT(1), 0) as count,
375
                 tps.create_date as create_date,
388
                 tps.create_date as create_date,
376
                 tpfs.from_code as from_code,
389
                 tpfs.from_code as from_code,
377
                 tpfs.from_name as from_name
390
                 tpfs.from_name as from_name
378
             FROM ta_person tps
391
             FROM ta_person tps
379
             LEFT JOIN td_person_from tpfs
392
             LEFT JOIN td_person_from tpfs
380
-              ON tps.from_code = tpfs.from_code
393
+            ON tps.from_code = tpfs.from_code
381
             WHERE tpfs.from_code = tps.from_code
394
             WHERE tpfs.from_code = tps.from_code
382
-              and ifnull(tps.person_type, '') != #{personType}
395
+            and ifnull(tps.person_type, '') != #{personType}
396
+            <if test="registeredType == 'registered' and registeredType != ''">
397
+                and tps.phone is not null
398
+            </if>
383
             GROUP BY tpfs.from_code
399
             GROUP BY tpfs.from_code
384
         ) as user_count
400
         ) as user_count
385
-        ON DATE_FORMAT(user_count.create_date,'%Y-%m-%d') =  temp_date.date
401
+        ON DATE_FORMAT(user_count.create_date,'%Y-%m-%d') =  temp_date.date and temp_date.from_code = user_count.from_code
386
     </select>
402
     </select>
387
 
403
 
388
 </mapper>
404
 </mapper>