瀏覽代碼

首页用户行为调整

傅行帆 5 年之前
父節點
當前提交
21aa5c0f6b

+ 7
- 0
src/main/java/com/huiju/estateagents/job/CustomerStatisticTimeJob.java 查看文件

@@ -5,6 +5,7 @@ import com.huiju.estateagents.service.ITaPersonFromRecordService;
5 5
 import com.huiju.estateagents.statistic.service.ITsCustomerGenderStatisticService;
6 6
 import com.huiju.estateagents.statistic.service.ITsCustomerStatisticDailyService;
7 7
 import com.huiju.estateagents.statistic.service.ITsCustomerStatisticMonthlyService;
8
+import com.huiju.estateagents.statistic.service.ITsUserBehaviorStatisticService;
8 9
 import org.slf4j.Logger;
9 10
 import org.slf4j.LoggerFactory;
10 11
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +41,9 @@ public class CustomerStatisticTimeJob extends BaseController {
40 41
     @Autowired
41 42
     public ITaPersonFromRecordService iTaPersonFromRecordService;
42 43
 
44
+    @Autowired
45
+    private ITsUserBehaviorStatisticService iTsUserBehaviorStatisticService;
46
+
43 47
     /**
44 48
      *
45 49
      * 盘客工具数据统计
@@ -80,6 +84,9 @@ public class CustomerStatisticTimeJob extends BaseController {
80 84
 
81 85
         //统计新增来源用户
82 86
         iTaPersonFromRecordService.personFromStatistic();
87
+
88
+        //统计用户行为数据
89
+        iTsUserBehaviorStatisticService.userBehaviorStatustic();
83 90
     }
84 91
 
85 92
 }

+ 160
- 0
src/main/java/com/huiju/estateagents/statistic/controller/TsUserBehaviorStatisticController.java 查看文件

@@ -0,0 +1,160 @@
1
+package com.huiju.estateagents.statistic.controller;
2
+
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
+import com.baomidou.mybatisplus.core.metadata.IPage;
5
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6
+import com.huiju.estateagents.base.BaseController;
7
+import com.huiju.estateagents.base.ResponseBean;
8
+import com.huiju.estateagents.statistic.entity.TsUserBehaviorStatistic;
9
+import com.huiju.estateagents.statistic.service.ITsUserBehaviorStatisticService;
10
+import org.slf4j.Logger;
11
+import org.slf4j.LoggerFactory;
12
+import org.springframework.beans.factory.annotation.Autowired;
13
+import org.springframework.format.annotation.DateTimeFormat;
14
+import org.springframework.web.bind.annotation.*;
15
+
16
+import javax.servlet.http.HttpServletRequest;
17
+import java.time.LocalDate;
18
+
19
+/**
20
+ * <p>
21
+    * 用户行为统计表  前端控制器
22
+    * </p>
23
+ *
24
+ * @author jobob
25
+ * @since 2020-01-13
26
+ */
27
+@RestController
28
+@RequestMapping("/api")
29
+public class TsUserBehaviorStatisticController extends BaseController {
30
+
31
+    private final Logger logger = LoggerFactory.getLogger(TsUserBehaviorStatisticController.class);
32
+
33
+    @Autowired
34
+    public ITsUserBehaviorStatisticService iTsUserBehaviorStatisticService;
35
+
36
+
37
+    /**
38
+     * 分页查询列表
39
+     * @param pageNum
40
+     * @param pageSize
41
+     * @return
42
+     */
43
+    @RequestMapping(value="/tsUserBehaviorStatistic",method= RequestMethod.GET)
44
+    public ResponseBean tsUserBehaviorStatisticList(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
45
+                                                    @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
46
+        ResponseBean responseBean = new ResponseBean();
47
+        try {
48
+            //使用分页插件
49
+		    IPage<TsUserBehaviorStatistic> pg = new Page<>(pageNum, pageSize);
50
+            QueryWrapper<TsUserBehaviorStatistic> queryWrapper = new QueryWrapper<>();
51
+            queryWrapper.orderByDesc("create_date");
52
+
53
+            IPage<TsUserBehaviorStatistic> result = iTsUserBehaviorStatisticService.page(pg, queryWrapper);
54
+            responseBean.addSuccess(result);
55
+        }catch (Exception e){
56
+            e.printStackTrace();
57
+            logger.error("tsUserBehaviorStatisticList -=- {}",e.toString());
58
+            responseBean.addError(e.getMessage());
59
+        }
60
+        return responseBean;
61
+    }
62
+
63
+    /**
64
+     * 保存对象
65
+     * @param tsUserBehaviorStatistic 实体对象
66
+     * @return
67
+     */
68
+    @RequestMapping(value="/tsUserBehaviorStatistic",method= RequestMethod.POST)
69
+    public ResponseBean tsUserBehaviorStatisticAdd(@RequestBody TsUserBehaviorStatistic tsUserBehaviorStatistic){
70
+        ResponseBean responseBean = new ResponseBean();
71
+        try {
72
+            if (iTsUserBehaviorStatisticService.save(tsUserBehaviorStatistic)){
73
+                responseBean.addSuccess(tsUserBehaviorStatistic);
74
+            }else {
75
+                responseBean.addError("fail");
76
+            }
77
+        }catch (Exception e){
78
+            e.printStackTrace();
79
+            logger.error("tsUserBehaviorStatisticAdd -=- {}",e.toString());
80
+            responseBean.addError(e.getMessage());
81
+        }
82
+        return responseBean;
83
+    }
84
+
85
+    /**
86
+     * 根据id删除对象
87
+     * @param id  实体ID
88
+     */
89
+    @ResponseBody
90
+    @RequestMapping(value="/tsUserBehaviorStatistic/{id}", method= RequestMethod.DELETE)
91
+    public ResponseBean tsUserBehaviorStatisticDelete(@PathVariable Integer id){
92
+        ResponseBean responseBean = new ResponseBean();
93
+        try {
94
+            if(iTsUserBehaviorStatisticService.removeById(id)){
95
+                responseBean.addSuccess("success");
96
+            }else {
97
+                responseBean.addError("fail");
98
+            }
99
+        }catch (Exception e){
100
+            e.printStackTrace();
101
+            logger.error("tsUserBehaviorStatisticDelete -=- {}",e.toString());
102
+            responseBean.addError(e.getMessage());
103
+        }
104
+        return responseBean;
105
+    }
106
+
107
+    /**
108
+     * 修改对象
109
+     * @param id  实体ID
110
+     * @param tsUserBehaviorStatistic 实体对象
111
+     * @return
112
+     */
113
+    @RequestMapping(value="/tsUserBehaviorStatistic/{id}",method= RequestMethod.PUT)
114
+    public ResponseBean tsUserBehaviorStatisticUpdate(@PathVariable Integer id,
115
+                                        @RequestBody TsUserBehaviorStatistic tsUserBehaviorStatistic){
116
+        ResponseBean responseBean = new ResponseBean();
117
+        try {
118
+            if (iTsUserBehaviorStatisticService.updateById(tsUserBehaviorStatistic)){
119
+                responseBean.addSuccess(tsUserBehaviorStatistic);
120
+            }else {
121
+                responseBean.addError("fail");
122
+            }
123
+        }catch (Exception e){
124
+            e.printStackTrace();
125
+            logger.error("tsUserBehaviorStatisticUpdate -=- {}",e.toString());
126
+            responseBean.addError(e.getMessage());
127
+        }
128
+        return responseBean;
129
+    }
130
+
131
+    /**
132
+     * 根据id查询对象
133
+     * @param id  实体ID
134
+     */
135
+    @RequestMapping(value="/tsUserBehaviorStatistic/{id}",method= RequestMethod.GET)
136
+    public ResponseBean tsUserBehaviorStatisticGet(@PathVariable Integer id){
137
+        ResponseBean responseBean = new ResponseBean();
138
+        try {
139
+            responseBean.addSuccess(iTsUserBehaviorStatisticService.getById(id));
140
+        }catch (Exception e){
141
+            e.printStackTrace();
142
+            logger.error("tsUserBehaviorStatisticDelete -=- {}",e.toString());
143
+            responseBean.addError(e.getMessage());
144
+        }
145
+        return responseBean;
146
+    }
147
+
148
+    /**
149
+     * 用户行为
150
+     * @return
151
+     */
152
+    @GetMapping(value = "/admin/tsUserBehavior")
153
+    public ResponseBean selectUserBehavior(
154
+                                           @RequestParam(value = "startDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate startDate,
155
+                                           @RequestParam(value = "endDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)  LocalDate endDate,
156
+                                           @RequestParam(value = "buildingId", required = false) String buildingId,
157
+                                           HttpServletRequest request) {
158
+        return iTsUserBehaviorStatisticService.selectUserBehavior(getOrgId(request), startDate, endDate, buildingId);
159
+    }
160
+}

+ 64
- 0
src/main/java/com/huiju/estateagents/statistic/entity/TsUserBehaviorStatistic.java 查看文件

@@ -0,0 +1,64 @@
1
+package com.huiju.estateagents.statistic.entity;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableId;
5
+import lombok.Data;
6
+import lombok.EqualsAndHashCode;
7
+import lombok.experimental.Accessors;
8
+
9
+import java.io.Serializable;
10
+import java.time.LocalDateTime;
11
+
12
+/**
13
+ * <p>
14
+ * 用户行为统计表 
15
+ * </p>
16
+ *
17
+ * @author jobob
18
+ * @since 2020-01-13
19
+ */
20
+@Data
21
+@EqualsAndHashCode(callSuper = false)
22
+@Accessors(chain = true)
23
+public class TsUserBehaviorStatistic implements Serializable {
24
+
25
+    private static final long serialVersionUID = 1L;
26
+
27
+    /**
28
+     * 用户行为统计主键
29
+     */
30
+    @TableId(value = "behavior_id", type = IdType.AUTO)
31
+    private Integer behaviorId;
32
+
33
+    /**
34
+     * 公司id
35
+     */
36
+    private Integer orgId;
37
+
38
+    /**
39
+     * 楼盘id
40
+     */
41
+    private String buildingId;
42
+
43
+    /**
44
+     * 事件名称
45
+     */
46
+    private String eventName;
47
+
48
+    /**
49
+     * 事件类型
50
+     */
51
+    private String eventType;
52
+
53
+    /**
54
+     * 行为数量统计
55
+     */
56
+    private Integer behaviorNum;
57
+
58
+    /**
59
+     * 创建时间
60
+     */
61
+    private LocalDateTime createDate;
62
+
63
+
64
+}

+ 28
- 0
src/main/java/com/huiju/estateagents/statistic/mapper/TsUserBehaviorStatisticMapper.java 查看文件

@@ -0,0 +1,28 @@
1
+package com.huiju.estateagents.statistic.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.huiju.estateagents.po.PersonPO;
5
+import com.huiju.estateagents.statistic.entity.TsUserBehaviorStatistic;
6
+import org.apache.ibatis.annotations.Mapper;
7
+import org.apache.ibatis.annotations.Param;
8
+
9
+import java.time.LocalDate;
10
+import java.util.List;
11
+
12
+/**
13
+ * <p>
14
+ * 用户行为统计表  Mapper 接口
15
+ * </p>
16
+ *
17
+ * @author jobob
18
+ * @since 2020-01-13
19
+ */
20
+@Mapper
21
+public interface TsUserBehaviorStatisticMapper extends BaseMapper<TsUserBehaviorStatistic> {
22
+
23
+    List<TsUserBehaviorStatistic> seleUserBehaviorList();
24
+
25
+    int deleteByDate();
26
+
27
+    List<PersonPO>  seleBehaviorListByDate(@Param("orgId") Integer orgId, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate, @Param("buildingId") String buildingId);
28
+}

+ 30
- 0
src/main/java/com/huiju/estateagents/statistic/service/ITsUserBehaviorStatisticService.java 查看文件

@@ -0,0 +1,30 @@
1
+package com.huiju.estateagents.statistic.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.huiju.estateagents.base.ResponseBean;
5
+import com.huiju.estateagents.statistic.entity.TsUserBehaviorStatistic;
6
+
7
+import java.time.LocalDate;
8
+
9
+/**
10
+ * <p>
11
+ * 用户行为统计表  服务类
12
+ * </p>
13
+ *
14
+ * @author jobob
15
+ * @since 2020-01-13
16
+ */
17
+public interface ITsUserBehaviorStatisticService extends IService<TsUserBehaviorStatistic> {
18
+
19
+    void userBehaviorStatustic();
20
+
21
+    /**
22
+     * 按日期获取统计列表
23
+     * @param orgId
24
+     * @param startDate
25
+     * @param endDate
26
+     * @param buildingId
27
+     * @return
28
+     */
29
+    ResponseBean selectUserBehavior(Integer orgId, LocalDate startDate, LocalDate endDate, String buildingId);
30
+}

+ 66
- 0
src/main/java/com/huiju/estateagents/statistic/service/impl/TsUserBehaviorStatisticServiceImpl.java 查看文件

@@ -0,0 +1,66 @@
1
+package com.huiju.estateagents.statistic.service.impl;
2
+
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5
+import com.huiju.estateagents.base.ResponseBean;
6
+import com.huiju.estateagents.entity.TdBizEvent;
7
+import com.huiju.estateagents.entity.TdBizEventType;
8
+import com.huiju.estateagents.mapper.TdBizEventTypeMapper;
9
+import com.huiju.estateagents.po.PersonPO;
10
+import com.huiju.estateagents.statistic.entity.TsUserBehaviorStatistic;
11
+import com.huiju.estateagents.statistic.mapper.TsUserBehaviorStatisticMapper;
12
+import com.huiju.estateagents.statistic.service.ITsUserBehaviorStatisticService;
13
+import org.springframework.beans.factory.annotation.Autowired;
14
+import org.springframework.stereotype.Service;
15
+
16
+import java.time.LocalDate;
17
+import java.util.HashMap;
18
+import java.util.List;
19
+import java.util.Map;
20
+
21
+/**
22
+ * <p>
23
+ * 用户行为统计表  服务实现类
24
+ * </p>
25
+ *
26
+ * @author jobob
27
+ * @since 2020-01-13
28
+ */
29
+@Service
30
+public class TsUserBehaviorStatisticServiceImpl extends ServiceImpl<TsUserBehaviorStatisticMapper, TsUserBehaviorStatistic> implements ITsUserBehaviorStatisticService {
31
+
32
+    @Autowired
33
+    private TsUserBehaviorStatisticMapper tsUserBehaviorStatisticMapper;
34
+
35
+    @Autowired
36
+    private TdBizEventTypeMapper tdBizEventTypeMapper;
37
+
38
+    @Override
39
+    public void userBehaviorStatustic() {
40
+        //查询当天信息
41
+        List<TsUserBehaviorStatistic> list = tsUserBehaviorStatisticMapper.seleUserBehaviorList();
42
+        //删除当天信息
43
+        tsUserBehaviorStatisticMapper.deleteByDate();
44
+        //批量插入信息
45
+        this.saveBatch(list);
46
+    }
47
+
48
+    /**
49
+     * 按日期获取统计列表
50
+     *
51
+     * @param orgId
52
+     * @param startDate
53
+     * @param endDate
54
+     * @param buildingId
55
+     * @return
56
+     */
57
+    @Override
58
+    public ResponseBean selectUserBehavior(Integer orgId, LocalDate startDate, LocalDate endDate, String buildingId) {
59
+        ResponseBean responseBean = new ResponseBean();
60
+        List<PersonPO> tsUserBehaviorStatistics = tsUserBehaviorStatisticMapper.seleBehaviorListByDate(orgId, startDate, endDate, buildingId);
61
+        Map<String, Object> map = new HashMap<>();
62
+        map.put("selectUserBehavior", tsUserBehaviorStatistics);
63
+        responseBean.addSuccess(map);
64
+        return responseBean;
65
+    }
66
+}

+ 95
- 0
src/main/resources/mapper/statistic/TsUserBehaviorStatisticMapper.xml 查看文件

@@ -0,0 +1,95 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
+<mapper namespace="com.huiju.estateagents.statistic.mapper.TsUserBehaviorStatisticMapper">
4
+    <delete id="deleteByDate">
5
+        delete from ts_user_behavior_statistic where DATE_FORMAT( create_date, '%Y-%m-%d' ) = DATE_FORMAT( NOW( ), '%Y-%m-%d' )
6
+    </delete>
7
+
8
+    <select id="seleUserBehaviorList"
9
+            resultType="com.huiju.estateagents.statistic.entity.TsUserBehaviorStatistic">
10
+                SELECT
11
+            temp_date.date AS create_date,
12
+            temp_date.type_name AS event_name,
13
+            temp_date.type_id AS event_type,
14
+            temp.activityCount AS behavior_num,
15
+            temp.building_id,
16
+            temp.org_id
17
+        FROM
18
+            (
19
+        SELECT
20
+            DATE_FORMAT( DATE_SUB( now( ), INTERVAL a.rownum DAY ), '%Y-%m-%d' ) AS date,
21
+            b.type_id,
22
+            b.type_name,
23
+            a.rownum
24
+        FROM
25
+            sequence a,
26
+            td_biz_event_type b
27
+            ) AS temp_date
28
+            LEFT JOIN (
29
+        SELECT
30
+            COUNT( 1 ) AS activityCount,
31
+            tpvr.event_type,
32
+            DATE_FORMAT( tpvr.visit_time, '%Y-%m-%d' ) AS date,
33
+            tpvr.building_id,
34
+            tp.org_id
35
+        FROM
36
+            ta_person tp
37
+            INNER JOIN ta_person_visit_record tpvr ON tp.person_id = tpvr.person_id
38
+        WHERE
39
+            tp.person_type IN ( 'customer', 'drift', 'estate agent' )
40
+        GROUP BY
41
+            tpvr.event_type,
42
+            DATE_FORMAT( tpvr.visit_time, '%Y-%m-%d' ),
43
+            tp.org_id,
44
+            tpvr.building_id
45
+            ) AS temp ON temp_date.date = temp.date
46
+            AND temp_date.type_id = temp.event_type where temp_date.date = DATE_FORMAT( now( ), '%Y-%m-%d' )
47
+    </select>
48
+    <select id="seleBehaviorListByDate"
49
+            resultType="com.huiju.estateagents.po.PersonPO">
50
+        SELECT
51
+            temp_date.date AS date,
52
+            temp_date.type_name AS activity,
53
+            temp.activityCount AS activityCount
54
+        FROM
55
+        (
56
+            SELECT
57
+            DATE_FORMAT( DATE_SUB( now( ), INTERVAL a.rownum DAY ), '%Y-%m-%d' ) AS date,
58
+            b.type_id,
59
+            b.type_name
60
+            FROM
61
+            sequence a,
62
+            td_biz_event_type b
63
+            <trim prefix="where">
64
+                <if test="startDate != null or endDate != null">
65
+                    a.rownum <![CDATA[ <= ]]> datediff(#{endDate}, #{startDate})
66
+                </if>
67
+            </trim>
68
+        ) AS temp_date
69
+        LEFT JOIN (
70
+            SELECT
71
+            tp.event_type,
72
+            tp.event_name as activity,
73
+            sum( tp.behavior_num )  as activityCount,
74
+            DATE_FORMAT( tp.create_date, '%Y-%m-%d' )  as date
75
+            FROM
76
+            ts_user_behavior_statistic tp
77
+            where tp.org_id = #{orgId}
78
+            <if test="startDate != null or endDate != null">
79
+                AND  DATE_FORMAT( tp.create_date, '%Y-%m-%d' ) BETWEEN #{startDate} and #{endDate}
80
+            </if>
81
+            <if test="startDate == null or endDate == null">
82
+                AND DATE_FORMAT( tp.create_date, '%Y-%m-%d' ) BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
83
+            </if>
84
+            <if test="buildingId != null and buildingId != ''">
85
+                and tp.building_id = #{buildingId}
86
+            </if>
87
+            GROUP BY
88
+            DATE_FORMAT( tp.create_date, '%Y-%m-%d' ),
89
+            tp.event_type
90
+        ) AS temp ON temp_date.date = temp.date
91
+        AND temp_date.type_id = temp.event_type
92
+        ORDER BY
93
+        temp_date.date ASC
94
+    </select>
95
+</mapper>