Sfoglia il codice sorgente

Merge branch 'dev' of http://git.ycjcjy.com/zhiyuxing/estateagents into dev

张延森 5 anni fa
parent
commit
8a08bea235
30 ha cambiato i file con 699 aggiunte e 109 eliminazioni
  1. 10
    0
      src/main/java/com/huiju/estateagents/center/sysUser/controller/SysUserController.java
  2. 2
    2
      src/main/java/com/huiju/estateagents/center/taUser/controller/TaUserController.java
  3. 15
    0
      src/main/java/com/huiju/estateagents/center/taUser/service/impl/TaUserServiceImpl.java
  4. 34
    1
      src/main/java/com/huiju/estateagents/channel/sysChannel/controller/SysUserChannelController.java
  5. 26
    6
      src/main/java/com/huiju/estateagents/controller/MiniAppController.java
  6. 5
    0
      src/main/java/com/huiju/estateagents/controller/TaPersonFromRecordController.java
  7. 3
    3
      src/main/java/com/huiju/estateagents/controller/TaPersonVisitRecordController.java
  8. 2
    2
      src/main/java/com/huiju/estateagents/excel/TaActivityDynamicEnlistExport.java
  9. 1
    1
      src/main/java/com/huiju/estateagents/interceptor/AccessInterceptor.java
  10. 7
    0
      src/main/java/com/huiju/estateagents/job/CustomerStatisticTimeJob.java
  11. 2
    0
      src/main/java/com/huiju/estateagents/mapper/TaPersonMapper.java
  12. 5
    4
      src/main/java/com/huiju/estateagents/service/impl/StatisticalServiceImpl.java
  13. 11
    5
      src/main/java/com/huiju/estateagents/service/impl/TaBuildingServiceImpl.java
  14. 0
    12
      src/main/java/com/huiju/estateagents/service/impl/TaMiniappServiceImpl.java
  15. 1
    1
      src/main/java/com/huiju/estateagents/service/impl/TaPersonFromRecordServiceImpl.java
  16. 2
    2
      src/main/java/com/huiju/estateagents/service/impl/TaPersonVisitRecordServiceImpl.java
  17. 51
    30
      src/main/java/com/huiju/estateagents/service/impl/TaRecommendCustomerServiceImpl.java
  18. 4
    0
      src/main/java/com/huiju/estateagents/service/impl/TaShareServiceImpl.java
  19. 160
    0
      src/main/java/com/huiju/estateagents/statistic/controller/TsUserBehaviorStatisticController.java
  20. 64
    0
      src/main/java/com/huiju/estateagents/statistic/entity/TsUserBehaviorStatistic.java
  21. 28
    0
      src/main/java/com/huiju/estateagents/statistic/mapper/TsUserBehaviorStatisticMapper.java
  22. 30
    0
      src/main/java/com/huiju/estateagents/statistic/service/ITsUserBehaviorStatisticService.java
  23. 66
    0
      src/main/java/com/huiju/estateagents/statistic/service/impl/TsUserBehaviorStatisticServiceImpl.java
  24. 1
    1
      src/main/resources/mapper/TaPersonFromRecordMapper.xml
  25. 19
    0
      src/main/resources/mapper/TaPersonMapper.xml
  26. 47
    35
      src/main/resources/mapper/TaPersonVisitRecordMapper.xml
  27. 6
    2
      src/main/resources/mapper/TaRecommendCustomerMapper.xml
  28. 1
    1
      src/main/resources/mapper/TaUserMapper.xml
  29. 1
    1
      src/main/resources/mapper/TdBizEventMapper.xml
  30. 95
    0
      src/main/resources/mapper/statistic/TsUserBehaviorStatisticMapper.xml

+ 10
- 0
src/main/java/com/huiju/estateagents/center/sysUser/controller/SysUserController.java Vedi File

255
         sysTokenService.remove(sysTokenQueryWrapper);
255
         sysTokenService.remove(sysTokenQueryWrapper);
256
         return ResponseBean.success("成功退出");
256
         return ResponseBean.success("成功退出");
257
     }
257
     }
258
+
259
+    @RequestMapping(value="/center/logo",method= RequestMethod.GET)
260
+    public ResponseBean getLogoImg(HttpServletRequest request){
261
+        ResponseBean responseBean = new ResponseBean();
262
+        Integer channelId = getChannelId(request);
263
+        TaChannelProxy taChannelProxy = iTaChannelProxyService.getById(channelId);
264
+        responseBean.addSuccess(taChannelProxy);
265
+        return responseBean;
266
+    }
267
+
258
 }
268
 }

+ 2
- 2
src/main/java/com/huiju/estateagents/center/taUser/controller/TaUserController.java Vedi File

249
 
249
 
250
     /**
250
     /**
251
      * 业务端  修改密码
251
      * 业务端  修改密码
252
-     * @return
252
+     * @return/
253
      */
253
      */
254
     @PutMapping(value = "/admin/update/password")
254
     @PutMapping(value = "/admin/update/password")
255
     public ResponseBean updatePassword( @RequestParam String originalPassword,
255
     public ResponseBean updatePassword( @RequestParam String originalPassword,
339
         }
339
         }
340
     
340
     
341
         if (!taUser.getStatus().equals(CommConstant.STATUS_NORMAL) ) {
341
         if (!taUser.getStatus().equals(CommConstant.STATUS_NORMAL) ) {
342
-            return ResponseBean.error("用户状态异常", ResponseBean.ERROR_UNAVAILABLE);
342
+            return ResponseBean.error("当前后台服务已到期,请联系相关管理人员", ResponseBean.ERROR_UNAVAILABLE);
343
         }
343
         }
344
 
344
 
345
         List<TaRole> roles = iTaRoleService.getRolesByUser(taUser.getUserId());
345
         List<TaRole> roles = iTaRoleService.getRolesByUser(taUser.getUserId());

+ 15
- 0
src/main/java/com/huiju/estateagents/center/taUser/service/impl/TaUserServiceImpl.java Vedi File

96
 	@Autowired
96
 	@Autowired
97
 	private TaChannelAppRelationMapper taChannelAppRelationMapper;
97
 	private TaChannelAppRelationMapper taChannelAppRelationMapper;
98
 
98
 
99
+	@Autowired
100
+	private TaChannelProxyMapper taChannelProxyMapper;
101
+
99
 	@Override
102
 	@Override
100
 	public IPage<Map<String,Object>> getPageList(IPage pg, Integer channelId) {
103
 	public IPage<Map<String,Object>> getPageList(IPage pg, Integer channelId) {
101
 		List<Map<String,Object>> taUserList = taUserMapper.getPageList(pg, channelId);
104
 		List<Map<String,Object>> taUserList = taUserMapper.getPageList(pg, channelId);
138
 			throw new Exception("电话号码或登录名重复");
141
 			throw new Exception("电话号码或登录名重复");
139
 		}
142
 		}
140
 
143
 
144
+		//判断渠道端新增小程序最大数
145
+		QueryWrapper<TaChannelProxy> taChannelProxyQueryWrapper = new QueryWrapper<>();
146
+		taChannelProxyQueryWrapper.eq("channel_id", channelId);
147
+		TaChannelProxy taChannelProxy = taChannelProxyMapper.selectOne(taChannelProxyQueryWrapper);
148
+
149
+		QueryWrapper<TaChannelAppRelation> relationQueryWrapper = new QueryWrapper<>();
150
+		relationQueryWrapper.eq("channel_id", channelId);
151
+		Integer miniAppCount = taChannelAppRelationMapper.selectCount(relationQueryWrapper);
152
+		if (miniAppCount >= taChannelProxy.getAppMaxNum()){
153
+			throw new Exception("当前系统仅供维护"+ taChannelProxy.getAppMaxNum() +"个小程序,需要维护更多项目,请联系相关管理人员");
154
+		}
155
+
141
 		// 先插入 org
156
 		// 先插入 org
142
 		TaOrg taOrg = new TaOrg();
157
 		TaOrg taOrg = new TaOrg();
143
 		taOrg.setName(taUser.getOrgName());
158
 		taOrg.setName(taUser.getOrgName());

+ 34
- 1
src/main/java/com/huiju/estateagents/channel/sysChannel/controller/SysUserChannelController.java Vedi File

10
 import com.huiju.estateagents.center.sysUser.entity.SysUser;
10
 import com.huiju.estateagents.center.sysUser.entity.SysUser;
11
 import com.huiju.estateagents.center.sysUser.service.ISysTokenService;
11
 import com.huiju.estateagents.center.sysUser.service.ISysTokenService;
12
 import com.huiju.estateagents.center.sysUser.service.ISysUserService;
12
 import com.huiju.estateagents.center.sysUser.service.ISysUserService;
13
+import com.huiju.estateagents.center.taUser.entity.TaUser;
14
+import com.huiju.estateagents.center.taUser.service.ITaUserService;
13
 import com.huiju.estateagents.channel.sysChannel.entity.TaChannelProxy;
15
 import com.huiju.estateagents.channel.sysChannel.entity.TaChannelProxy;
14
 import com.huiju.estateagents.channel.sysChannel.service.ITaChannelProxyService;
16
 import com.huiju.estateagents.channel.sysChannel.service.ITaChannelProxyService;
15
 import com.huiju.estateagents.common.CommConstant;
17
 import com.huiju.estateagents.common.CommConstant;
16
 import com.huiju.estateagents.common.JWTUtils;
18
 import com.huiju.estateagents.common.JWTUtils;
17
 import com.huiju.estateagents.common.MD5Utils;
19
 import com.huiju.estateagents.common.MD5Utils;
20
+import com.huiju.estateagents.entity.TaChannelAppRelation;
21
+import com.huiju.estateagents.service.ITaChannelAppRelationService;
22
+import org.apache.commons.collections.CollectionUtils;
18
 import org.slf4j.Logger;
23
 import org.slf4j.Logger;
19
 import org.slf4j.LoggerFactory;
24
 import org.slf4j.LoggerFactory;
20
 import org.springframework.beans.factory.annotation.Autowired;
25
 import org.springframework.beans.factory.annotation.Autowired;
22
 
27
 
23
 import javax.servlet.http.HttpServletRequest;
28
 import javax.servlet.http.HttpServletRequest;
24
 import java.time.LocalDateTime;
29
 import java.time.LocalDateTime;
30
+import java.util.ArrayList;
25
 import java.util.HashMap;
31
 import java.util.HashMap;
32
+import java.util.List;
26
 import java.util.Map;
33
 import java.util.Map;
27
 
34
 
28
 /**
35
 /**
45
     @Autowired
52
     @Autowired
46
     private ISysTokenService sysTokenService;
53
     private ISysTokenService sysTokenService;
47
 
54
 
55
+    @Autowired
56
+    private ITaUserService iTaUserService;
57
+
48
     @Autowired
58
     @Autowired
49
     private ITaChannelProxyService iTaChannelProxyService;
59
     private ITaChannelProxyService iTaChannelProxyService;
50
 
60
 
61
+    @Autowired
62
+    private ITaChannelAppRelationService iTaChannelAppRelationService;
63
+
51
     /**
64
     /**
52
      * 修改对象
65
      * 修改对象
53
      * @param sysUser 实体对象
66
      * @param sysUser 实体对象
216
     public ResponseBean taNewsTypeUpdate(@PathVariable Integer id,
229
     public ResponseBean taNewsTypeUpdate(@PathVariable Integer id,
217
                                          @RequestBody TaChannelProxy taChannelProxy, HttpServletRequest request){
230
                                          @RequestBody TaChannelProxy taChannelProxy, HttpServletRequest request){
218
         ResponseBean responseBean = new ResponseBean();
231
         ResponseBean responseBean = new ResponseBean();
219
-        if (taChannelProxy.getAppMaxNum() != null && taChannelProxy.getAppMaxNum() < 0){
232
+        if (taChannelProxy.getAppMaxNum() != null && taChannelProxy.getAppMaxNum() <= 0){
220
             responseBean.addError("维护小程序数量不得小于0");
233
             responseBean.addError("维护小程序数量不得小于0");
221
             return responseBean;
234
             return responseBean;
222
         }
235
         }
223
 
236
 
237
+        taChannelProxy.setExpireDate(taChannelProxy.getExpireDate().plusDays(1L));
238
+        //更新业务层的登录账号为禁用
239
+        if (taChannelProxy.getStatus() != null){
240
+            QueryWrapper<TaChannelAppRelation> taChannelAppRelationQueryWrapper = new QueryWrapper<>();
241
+            taChannelAppRelationQueryWrapper.eq("channel_id", id);
242
+            List<TaChannelAppRelation> taChannelAppRelation = iTaChannelAppRelationService.list(taChannelAppRelationQueryWrapper);
243
+            List<Integer> orgIdList = new ArrayList<>();
244
+            taChannelAppRelation.forEach(e->{
245
+                orgIdList.add(e.getOrgId());
246
+            });
247
+            if (CollectionUtils.isNotEmpty(orgIdList)){
248
+                QueryWrapper<TaUser> taUserQueryWrapper = new QueryWrapper<>();
249
+                taUserQueryWrapper.in("org_id", orgIdList);
250
+                TaUser taUser = new TaUser();
251
+                taUser.setStatus(taChannelProxy.getStatus());
252
+                iTaUserService.update(taUser, taUserQueryWrapper);
253
+            }
254
+
255
+        }
256
+
224
         QueryWrapper<TaChannelProxy> taChannelProxyQueryWrapper = new QueryWrapper<>();
257
         QueryWrapper<TaChannelProxy> taChannelProxyQueryWrapper = new QueryWrapper<>();
225
         taChannelProxyQueryWrapper.eq("channel_id", id);
258
         taChannelProxyQueryWrapper.eq("channel_id", id);
226
         iTaChannelProxyService.update(taChannelProxy, taChannelProxyQueryWrapper);
259
         iTaChannelProxyService.update(taChannelProxy, taChannelProxyQueryWrapper);

+ 26
- 6
src/main/java/com/huiju/estateagents/controller/MiniAppController.java Vedi File

199
             personQueryWrapper.eq("org_id",orgId);
199
             personQueryWrapper.eq("org_id",orgId);
200
             int count = taPersonService.count(personQueryWrapper);
200
             int count = taPersonService.count(personQueryWrapper);
201
 
201
 
202
-            if(null!=from&&from.contains("share") && StringUtils.isNotBlank(recommender) && count>0){
203
-                // 添加积分
204
-                 applicationContext.publishEvent(new EventBus(recommender, EventBus.EventType.SharePosterAll, orgId));
205
-            }
206
-
207
             TaPerson taPerson = taPersonService.newPersonByOpenid(session.getOpenid(), orgId);
202
             TaPerson taPerson = taPersonService.newPersonByOpenid(session.getOpenid(), orgId);
208
             if (null == taPerson) {
203
             if (null == taPerson) {
209
                 return ResponseBean.error("发生未知错误", ResponseBean.ERROR_UNAVAILABLE);
204
                 return ResponseBean.error("发生未知错误", ResponseBean.ERROR_UNAVAILABLE);
210
             }
205
             }
206
+
207
+            if(null!=from&&from.contains("share") && StringUtils.isNotBlank(recommender) && count>0){
208
+                // 校验是否点击过此人的分享
209
+                boolean checkPoint = checkSharePersonFrom(from,taPerson.getPersonId(),targetId,orgId);
210
+                if (checkPoint){
211
+                    // 添加积分
212
+                    applicationContext.publishEvent(new EventBus(recommender, EventBus.EventType.SharePosterAll, orgId));
213
+                }
214
+            }
215
+
216
+
211
             Map<Object,Object> map = new HashMap<>();
217
             Map<Object,Object> map = new HashMap<>();
212
             map.put("openId",session.getOpenid());
218
             map.put("openId",session.getOpenid());
213
             map.put("orgId",orgId);
219
             map.put("orgId",orgId);
244
                 QueryWrapper<TaSharePersonFrom> sharePersonFromQueryWrapper = new QueryWrapper<>();
250
                 QueryWrapper<TaSharePersonFrom> sharePersonFromQueryWrapper = new QueryWrapper<>();
245
                 sharePersonFromQueryWrapper.eq("person_id",taPerson.getPersonId());
251
                 sharePersonFromQueryWrapper.eq("person_id",taPerson.getPersonId());
246
                 if(from.equals("dynamic_share")){ // activity_share
252
                 if(from.equals("dynamic_share")){ // activity_share
247
-                    taSharePersonFrom.setStatus(CommConstant.STATUS_UNACCALIMED);
253
+                    //产品不认了
254
+                    taSharePersonFrom.setStatus(CommConstant.STATUS_NORMAL);
248
                     TaBuildingDynamic buildingDynamic = buildingDynamicService.getById(targetId);
255
                     TaBuildingDynamic buildingDynamic = buildingDynamicService.getById(targetId);
249
                     taSharePersonFrom.setBuildingId(buildingDynamic.getBuildingId());
256
                     taSharePersonFrom.setBuildingId(buildingDynamic.getBuildingId());
250
                     sharePersonFromQueryWrapper.eq("building_id",buildingDynamic.getBuildingId());
257
                     sharePersonFromQueryWrapper.eq("building_id",buildingDynamic.getBuildingId());
322
         }
329
         }
323
     }
330
     }
324
 
331
 
332
+    private boolean checkSharePersonFrom(String from, String personId, String targetId, Integer orgId) {
333
+        QueryWrapper<TaSharePersonFrom> queryWrapper =  new QueryWrapper<>();
334
+        queryWrapper.eq("target_type",from);
335
+        queryWrapper.eq("person_id",personId);
336
+        queryWrapper.eq("target_id",targetId);
337
+        queryWrapper.eq("org_id",orgId);
338
+        List<TaSharePersonFrom> list = taSharePersonFromService.list(queryWrapper);
339
+        if (list.size() > 0){
340
+            return false;
341
+        }
342
+        return true;
343
+    }
344
+
325
     /**
345
     /**
326
      * 登陆接口
346
      * 登陆接口
327
      */
347
      */

+ 5
- 0
src/main/java/com/huiju/estateagents/controller/TaPersonFromRecordController.java Vedi File

10
 import com.huiju.estateagents.entity.*;
10
 import com.huiju.estateagents.entity.*;
11
 import com.huiju.estateagents.service.ITaPersonFromRecordService;
11
 import com.huiju.estateagents.service.ITaPersonFromRecordService;
12
 import com.huiju.estateagents.service.ITaPersonService;
12
 import com.huiju.estateagents.service.ITaPersonService;
13
+import com.huiju.estateagents.statistic.service.ITsUserBehaviorStatisticService;
13
 import org.slf4j.Logger;
14
 import org.slf4j.Logger;
14
 import org.slf4j.LoggerFactory;
15
 import org.slf4j.LoggerFactory;
15
 import org.springframework.beans.factory.annotation.Autowired;
16
 import org.springframework.beans.factory.annotation.Autowired;
39
     @Autowired
40
     @Autowired
40
     public ITaPersonService taPersonService;
41
     public ITaPersonService taPersonService;
41
 
42
 
43
+    @Autowired
44
+    private ITsUserBehaviorStatisticService iTsUserBehaviorStatisticService;
45
+
42
     /**
46
     /**
43
      * 分页查询列表
47
      * 分页查询列表
44
      * @param pageNum
48
      * @param pageNum
50
                                                @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
54
                                                @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
51
         ResponseBean responseBean = new ResponseBean();
55
         ResponseBean responseBean = new ResponseBean();
52
         iTaPersonFromRecordService.personFromStatistic();
56
         iTaPersonFromRecordService.personFromStatistic();
57
+        iTsUserBehaviorStatisticService.userBehaviorStatustic();
53
         responseBean.addSuccess("成功");
58
         responseBean.addSuccess("成功");
54
         return responseBean;
59
         return responseBean;
55
     }
60
     }

+ 3
- 3
src/main/java/com/huiju/estateagents/controller/TaPersonVisitRecordController.java Vedi File

357
 
357
 
358
         List<TaConsultantInfo> taConsultantInfos = result.getRecords();
358
         List<TaConsultantInfo> taConsultantInfos = result.getRecords();
359
         taConsultantInfos.forEach(e ->{
359
         taConsultantInfos.forEach(e ->{
360
-            Integer shareNum = iTaPersonVisitRecordService.countShareNumByEventType(getOrgId(request), e.getTargetId(), userId, (CommConstant.FAVOR_PROJECT.equals(e.getEventType()) ? "building" : e.getEventType()) + "_share");
360
+            Integer shareNum = iTaPersonVisitRecordService.countShareNumByEventType(getOrgId(request), e.getTargetId(), userId, (CommConstant.FAVOR_PROJECT.equals(e.getEventType()) ? "building" : CommConstant.FAVOR_ACTIVITY.equals(e.getEventType()) ? "dynamic" : e.getEventType())  + "_share");
361
             switch (e.getEventType()){
361
             switch (e.getEventType()){
362
-                case CommConstant.FAVOR_PROJECT:
362
+                case CommConstant.FAVOR_ACTIVITY:
363
                     e.setActivityShareNum(shareNum);
363
                     e.setActivityShareNum(shareNum);
364
                     break;
364
                     break;
365
                 case CommConstant.POINTS_CHANGE_HELP:
365
                 case CommConstant.POINTS_CHANGE_HELP:
371
                 case CommConstant.CAROUSEL_NEWS:
371
                 case CommConstant.CAROUSEL_NEWS:
372
                     e.setNewsNum(shareNum);
372
                     e.setNewsNum(shareNum);
373
                     break;
373
                     break;
374
-                case CommConstant.POSTER_CONTENT_TYPE_BUILDING:
374
+                case CommConstant.FAVOR_PROJECT:
375
                     e.setBuildingNum(shareNum);
375
                     e.setBuildingNum(shareNum);
376
                     break;
376
                     break;
377
                 case CommConstant.EVENT_H5:
377
                 case CommConstant.EVENT_H5:

+ 2
- 2
src/main/java/com/huiju/estateagents/excel/TaActivityDynamicEnlistExport.java Vedi File

41
      * 推广人
41
      * 推广人
42
      */
42
      */
43
     @ColumnWidth(15)
43
     @ColumnWidth(15)
44
-    @ExcelProperty(value = "推广人", index = 4)
44
+    @ExcelProperty(value = "引流人", index = 4)
45
     private String sharePersonName;
45
     private String sharePersonName;
46
 
46
 
47
-    /**
47
+    /*
48
      * 公司
48
      * 公司
49
      */
49
      */
50
     @ColumnWidth(15)
50
     @ColumnWidth(15)

+ 1
- 1
src/main/java/com/huiju/estateagents/interceptor/AccessInterceptor.java Vedi File

145
             // 只尝试去解析
145
             // 只尝试去解析
146
             Jwts.parser().setSigningKey(JWTUtils.key).parseClaimsJws(jwtAuths[1]);
146
             Jwts.parser().setSigningKey(JWTUtils.key).parseClaimsJws(jwtAuths[1]);
147
         } catch (ExpiredJwtException e) {
147
         } catch (ExpiredJwtException e) {
148
-            ResponseBean resp = ResponseBean.error("权限验证非法, Token 已过期", ResponseBean.ERROR_AUTH_EXPIRED);
148
+            ResponseBean resp = ResponseBean.error("权限验证非法, 身份信息已过期", ResponseBean.ERROR_AUTH_EXPIRED);
149
             response.addHeader("Content-type", "application/json");
149
             response.addHeader("Content-type", "application/json");
150
             response.getOutputStream().write(JSONObject.toJSONBytes(resp));
150
             response.getOutputStream().write(JSONObject.toJSONBytes(resp));
151
             return false;
151
             return false;

+ 7
- 0
src/main/java/com/huiju/estateagents/job/CustomerStatisticTimeJob.java Vedi File

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

+ 2
- 0
src/main/java/com/huiju/estateagents/mapper/TaPersonMapper.java Vedi File

221
     Integer judgeBindStatusByCondition(@Param("userId") Integer userId, @Param("orgId") Integer orgId, @Param("phone") String phone);
221
     Integer judgeBindStatusByCondition(@Param("userId") Integer userId, @Param("orgId") Integer orgId, @Param("phone") String phone);
222
 
222
 
223
     IPage<TaPerson> selectDriftCustomerPageList(IPage<TaPerson> page,@Param("buildingId") String buildingId,@Param("orgId") Integer orgId,@Param("personEstateDrift") String personEstateDrift,@Param("sceneType") String sceneType);
223
     IPage<TaPerson> selectDriftCustomerPageList(IPage<TaPerson> page,@Param("buildingId") String buildingId,@Param("orgId") Integer orgId,@Param("personEstateDrift") String personEstateDrift,@Param("sceneType") String sceneType);
224
+
225
+    int selectFromNum(@Param("orgId") Integer orgId,@Param("personType") String personType);
224
 }
226
 }

+ 5
- 4
src/main/java/com/huiju/estateagents/service/impl/StatisticalServiceImpl.java Vedi File

216
         List<Map<String, Object>> mapList = taPersonMapper.selectUserSourceColumnar(orgId, CommConstant.PERSON_REALTY_CONSULTANT, startDate, endDate);
216
         List<Map<String, Object>> mapList = taPersonMapper.selectUserSourceColumnar(orgId, CommConstant.PERSON_REALTY_CONSULTANT, startDate, endDate);
217
 
217
 
218
         // 用户来源饼状
218
         // 用户来源饼状
219
-        // 来源置业顾问, 来源全民经纪人,自由进入
220
-        Integer person_realty_consultant = taPersonMapper.selectUserSourcePie(orgId, CommConstant.PERSON_REALTY_CONSULTANT, CommConstant.PERSON_REALTY_CONSULTANT);
221
-        Integer person_estate_agent = taPersonMapper.selectUserSourcePie(orgId, CommConstant.PERSON_ESTATE_AGENT, CommConstant.PERSON_REALTY_CONSULTANT);
222
-        Integer person_null = taPersonMapper.selectUserSourcePie(orgId, null, CommConstant.PERSON_REALTY_CONSULTANT);
219
+        // 来源置业顾问, 来源客户,其他
220
+        Integer total = taPersonMapper.selectFromNum(orgId, null) ;
221
+        Integer person_realty_consultant = taPersonMapper.selectFromNum(orgId, CommConstant.PERSON_REALTY_CONSULTANT);
222
+        Integer person_estate_agent = taPersonMapper.selectFromNum(orgId, CommConstant.PERSON_ESTATE_CUSTOMER);
223
+        Integer person_null = total - person_realty_consultant - person_estate_agent;
223
         Map<String, Object> map = new HashMap<>();
224
         Map<String, Object> map = new HashMap<>();
224
         map.put("person_realty_consultant", person_realty_consultant);
225
         map.put("person_realty_consultant", person_realty_consultant);
225
         map.put("person_estate_agent", person_estate_agent);
226
         map.put("person_estate_agent", person_estate_agent);

+ 11
- 5
src/main/java/com/huiju/estateagents/service/impl/TaBuildingServiceImpl.java Vedi File

304
 
304
 
305
         boolean isMainMoreThanTenFlag = publishCountIsMainBuilding(building, orgId, null, "update");
305
         boolean isMainMoreThanTenFlag = publishCountIsMainBuilding(building, orgId, null, "update");
306
         if (!isMainMoreThanTenFlag){
306
         if (!isMainMoreThanTenFlag){
307
-            responseBean.addError("每个城市只能推荐10个楼盘到首页,请先将已推荐楼盘取消推荐后再推荐当前楼盘。");
307
+            responseBean.addError("当前城市最多只能推荐10个项目至首页哦。");
308
             return responseBean;
308
             return responseBean;
309
         }
309
         }
310
 
310
 
458
 
458
 
459
         TaBuilding building = object.toJavaObject(TaBuilding.class);
459
         TaBuilding building = object.toJavaObject(TaBuilding.class);
460
 
460
 
461
+        boolean isMainMoreThanTenFlag = publishCountIsMainBuilding(building, orgId, null, "add");
462
+        if (!isMainMoreThanTenFlag){
463
+            responseBean.addError("当前城市最多只能推荐10个项目至首页哦。");
464
+            return responseBean;
465
+        }
466
+
461
         building.setCreateDate(LocalDateTime.now());
467
         building.setCreateDate(LocalDateTime.now());
462
         building.setStatus(2);
468
         building.setStatus(2);
463
         building.setOrgId(orgId);
469
         building.setOrgId(orgId);
553
 
559
 
554
         boolean isMainMoreThanTenFlag = publishCountIsMainBuilding(taBuildingMapper.selectOne(buildingIdQueryWrapper), orgId, status, "updateStatus");
560
         boolean isMainMoreThanTenFlag = publishCountIsMainBuilding(taBuildingMapper.selectOne(buildingIdQueryWrapper), orgId, status, "updateStatus");
555
         if (!isMainMoreThanTenFlag){
561
         if (!isMainMoreThanTenFlag){
556
-            responseBean.addError("每个城市只能推荐10个楼盘到首页,请先将已推荐楼盘取消推荐后再推荐当前楼盘。");
562
+            responseBean.addError("当前城市最多只能推荐10个项目至首页哦");
557
             return responseBean;
563
             return responseBean;
558
         }
564
         }
559
 
565
 
944
         if (taBuilding.getIsMain() != 1){
950
         if (taBuilding.getIsMain() != 1){
945
             return true;
951
             return true;
946
         }
952
         }
947
-        if (operte.equals("update") && (info.getStatus() == 2)){
948
-            return true;
949
-        }
953
+//        if (operte.equals("update") && (info.getStatus() == 2)){
954
+//            return true;
955
+//        }
950
         if (operte.equals("updateStatus") && status == 2){
956
         if (operte.equals("updateStatus") && status == 2){
951
             return true;
957
             return true;
952
         }
958
         }

+ 0
- 12
src/main/java/com/huiju/estateagents/service/impl/TaMiniappServiceImpl.java Vedi File

63
             throw new Exception("未知的小程序所属对象");
63
             throw new Exception("未知的小程序所属对象");
64
         }
64
         }
65
 
65
 
66
-        //判断渠道端新增小程序最大数
67
-        QueryWrapper<TaChannelProxy> taChannelProxyQueryWrapper = new QueryWrapper<>();
68
-        taChannelProxyQueryWrapper.eq("channel_id", channelId);
69
-        TaChannelProxy taChannelProxy = taChannelProxyMapper.selectOne(taChannelProxyQueryWrapper);
70
-
71
-        QueryWrapper<TaChannelAppRelation> relationQueryWrapper = new QueryWrapper<>();
72
-        relationQueryWrapper.eq("channel_id", channelId);
73
-        Integer miniAppCount = taChannelAppRelationMapper.selectCount(relationQueryWrapper);
74
-        if (miniAppCount >= taChannelProxy.getAppMaxNum()){
75
-            throw new Exception("当前系统仅供维护"+ taChannelProxy.getAppMaxNum() +"个小程序,需要维护更多项目,请联系相关管理人员");
76
-        }
77
-
78
         TaMiniapp orign = this.getById(taMiniapp.getMiniappId());
66
         TaMiniapp orign = this.getById(taMiniapp.getMiniappId());
79
         if (null != orign) {
67
         if (null != orign) {
80
             if (!this.updateById(taMiniapp)) {
68
             if (!this.updateById(taMiniapp)) {

+ 1
- 1
src/main/java/com/huiju/estateagents/service/impl/TaPersonFromRecordServiceImpl.java Vedi File

61
         queryWrapper.eq("person_id",taPersonVisitRecord.getPersonId());
61
         queryWrapper.eq("person_id",taPersonVisitRecord.getPersonId());
62
         int count = taPersonFromRecordMapper.selectCount(queryWrapper);
62
         int count = taPersonFromRecordMapper.selectCount(queryWrapper);
63
         if(count > 0){
63
         if(count > 0){
64
-            taPersonFromRecord.setIsFirstTime(false);
64
+            return;
65
         }else {
65
         }else {
66
             taPersonFromRecord.setIsFirstTime(true);
66
             taPersonFromRecord.setIsFirstTime(true);
67
         }
67
         }

+ 2
- 2
src/main/java/com/huiju/estateagents/service/impl/TaPersonVisitRecordServiceImpl.java Vedi File

132
 				e.setUserTel(personInfo.getPhone());
132
 				e.setUserTel(personInfo.getPhone());
133
 			}
133
 			}
134
 
134
 
135
-			TaPerson userShareInfo = taPersonMapper.selectById(e.getSharePersonId());
135
+			TaPerson userShareInfo = taPersonMapper.selectById(e.getPersonId());
136
 			if (userShareInfo != null) {
136
 			if (userShareInfo != null) {
137
 				e.setShareName(userShareInfo.getNickname());
137
 				e.setShareName(userShareInfo.getNickname());
138
 				e.setShareTel(userShareInfo.getPhone());
138
 				e.setShareTel(userShareInfo.getPhone());
223
 		taPersonQueryWrapper.eq("org_id",orgId);
223
 		taPersonQueryWrapper.eq("org_id",orgId);
224
 		TaPerson taPerson = taPersonMapper.selectOne(taPersonQueryWrapper);
224
 		TaPerson taPerson = taPersonMapper.selectOne(taPersonQueryWrapper);
225
 		//获取我的访问客户列表
225
 		//获取我的访问客户列表
226
-		IPage<TaPersonVisitRecord> result = personVisitRecordMapper.getWxActivityVisitRecordList(pg,userId,orgId, targetId,taPerson.getPersonId(), eventType);
226
+		IPage<TaPersonVisitRecord> result = personVisitRecordMapper.getWxActivityVisitRecordList(pg,userId,orgId, targetId,taPerson.getPersonId(), (CommConstant.FAVOR_PROJECT.equals(eventType) ? "building" : CommConstant.FAVOR_ACTIVITY.equals(eventType) ? "dynamic" : eventType)  + "_share");
227
 		List<TaPersonVisitRecord> records = result.getRecords();
227
 		List<TaPersonVisitRecord> records = result.getRecords();
228
 		//判断是否我的客户状态
228
 		//判断是否我的客户状态
229
 		records.forEach(e -> {
229
 		records.forEach(e -> {

+ 51
- 30
src/main/java/com/huiju/estateagents/service/impl/TaRecommendCustomerServiceImpl.java Vedi File

88
     @Autowired
88
     @Autowired
89
     private TaUserMapper taUserMapper;
89
     private TaUserMapper taUserMapper;
90
 
90
 
91
+    @Autowired
92
+    private TaPersonFromRecordMapper taPersonFromRecordMapper;
93
+
91
     @Autowired
94
     @Autowired
92
     private TdPersonFromMapper tdPersonFromMapper;
95
     private TdPersonFromMapper tdPersonFromMapper;
93
 
96
 
97
+    @Autowired
98
+    private TdWxDictMapper tdWxDictMapper;
99
+
94
     @Override
100
     @Override
95
     public ResponseBean getMyCustList(String openid, String keywords, int pageNumber, int pageSize) {
101
     public ResponseBean getMyCustList(String openid, String keywords, int pageNumber, int pageSize) {
96
         List<TaPerson> taPersons = getPersonsByOpenId(openid);
102
         List<TaPerson> taPersons = getPersonsByOpenId(openid);
571
             taRecommendCustomer.setVisitRecords(taPersonVisitRecordIPage);
577
             taRecommendCustomer.setVisitRecords(taPersonVisitRecordIPage);
572
             taRecommendCustomer.setVisitTimes(taPersonVisitRecordIPage.getRecords().size());
578
             taRecommendCustomer.setVisitTimes(taPersonVisitRecordIPage.getRecords().size());
573
             taRecommendCustomer.setIntentions(taRecommendCustomerMapper.getCustomerIntentions(personId,taPersonBuildingList));
579
             taRecommendCustomer.setIntentions(taRecommendCustomerMapper.getCustomerIntentions(personId,taPersonBuildingList));
574
-            Map<String,String>geoInfo = new HashMap<>();
575
-            geoInfo.put("provience",person.getProvince());
576
-            geoInfo.put("country",person.getCountry());
577
-            TdCity city = cityMapper.selectById(person.getCity());
578
-            if(null!=city){
579
-                geoInfo.put("city",city.getName());
580
-            }else {
581
-                geoInfo.put("city","未知");
582
-            }
583
-            taRecommendCustomer.setGeoInfo(geoInfo);
584
         }
580
         }
585
         if(!StringUtils.isEmpty(taRecommendCustomer.getRealtyConsultant())){
581
         if(!StringUtils.isEmpty(taRecommendCustomer.getRealtyConsultant())){
586
             TaPerson consultant =  taPersonMapper.getById(taRecommendCustomer.getRealtyConsultant());
582
             TaPerson consultant =  taPersonMapper.getById(taRecommendCustomer.getRealtyConsultant());
600
         }
596
         }
601
         //构造来源类型
597
         //构造来源类型
602
         taRecommendCustomer.setPersonFrom("");
598
         taRecommendCustomer.setPersonFrom("");
603
-        if (null != person && null != person.getFromCode()){
604
-            QueryWrapper<TdPersonFrom> tdPersonFromQueryWrapper = new QueryWrapper<>();
605
-            tdPersonFromQueryWrapper.eq("from_code",person.getFromCode());
606
-            TdPersonFrom tdPersonFrom = tdPersonFromMapper.selectOne(tdPersonFromQueryWrapper);
607
-            taRecommendCustomer.setPersonFrom(null != tdPersonFrom ? tdPersonFrom.getFromName() : "");
599
+        if (null != person){
600
+            Map<String,String>geoInfo = new HashMap<>();
601
+            geoInfo.put("provience",person.getProvince());
602
+            geoInfo.put("country",person.getCountry());
603
+            TdCity city = cityMapper.selectById(person.getCity());
604
+            if(null!=city){
605
+                geoInfo.put("city",city.getName());
606
+            }else {
607
+                geoInfo.put("city","未知");
608
+            }
609
+            taRecommendCustomer.setGeoInfo(geoInfo);
610
+
611
+            QueryWrapper<TaPersonFromRecord> queryWrapper = new QueryWrapper<>();
612
+            queryWrapper.eq("org_id",person.getOrgId());
613
+            queryWrapper.eq("person_id",person.getPersonId());
614
+            queryWrapper.eq("is_first_time",1);
615
+            List<TaPersonFromRecord> taPersonFromRecords = taPersonFromRecordMapper.selectList(queryWrapper);
616
+            if (taPersonFromRecords.size() > 0){
617
+                QueryWrapper<TdWxDict> tdWxDictQueryWrapper = new QueryWrapper<>();
618
+                tdWxDictQueryWrapper.eq("scene_id",taPersonFromRecords.get(0).getSceneId());
619
+                TdWxDict tdWxDict = tdWxDictMapper.selectOne(tdWxDictQueryWrapper);
620
+                taRecommendCustomer.setPersonFrom(null != tdWxDict ? tdWxDict.getSceneAlias() : "");
621
+            }
608
         }
622
         }
609
 
623
 
610
         return taRecommendCustomer;
624
         return taRecommendCustomer;
612
 
626
 
613
     @Override
627
     @Override
614
     public TaPerson getPublicCustomerDetail(String personId,int pageNumber, int pageSize,List<TaPersonBuilding> taPersonBuildingList,String buildingId){
628
     public TaPerson getPublicCustomerDetail(String personId,int pageNumber, int pageSize,List<TaPersonBuilding> taPersonBuildingList,String buildingId){
615
-        TaPerson taRecommendCustomer = taPersonMapper.getById(personId);
629
+        TaPerson taPerson = taPersonMapper.getById(personId);
616
         if(!StringUtils.isEmpty(personId)){
630
         if(!StringUtils.isEmpty(personId)){
617
             IPage<TaPersonVisitRecord>page = new Page<>(pageNumber,pageSize);
631
             IPage<TaPersonVisitRecord>page = new Page<>(pageNumber,pageSize);
618
             IPage<TaPersonVisitRecord> taPersonVisitRecordIPage = taPersonVisitRecordMapper.visitRecordByPersonId(page,personId,taPersonBuildingList,buildingId);
632
             IPage<TaPersonVisitRecord> taPersonVisitRecordIPage = taPersonVisitRecordMapper.visitRecordByPersonId(page,personId,taPersonBuildingList,buildingId);
656
                 }
670
                 }
657
             });
671
             });
658
             taPersonVisitRecordIPage.setRecords(records);
672
             taPersonVisitRecordIPage.setRecords(records);
659
-            taRecommendCustomer.setVisitRecords(taPersonVisitRecordIPage);
660
-            taRecommendCustomer.setVisitTimes(taPersonVisitRecordIPage.getRecords().size());
661
-            taRecommendCustomer.setIntentions(taRecommendCustomerMapper.getCustomerIntentions(personId,taPersonBuildingList));
662
-            taRecommendCustomer.setDuration(taPersonVisitRecordMapper.getDurationByPersonId(personId));
663
-            taRecommendCustomer.setVisitTime(taPersonVisitRecordMapper.getFirstVisitTimeByPersonId(personId));
664
-            TdCity city = cityMapper.selectById(taRecommendCustomer.getCity());
673
+            taPerson.setVisitRecords(taPersonVisitRecordIPage);
674
+            taPerson.setVisitTimes(taPersonVisitRecordIPage.getRecords().size());
675
+            taPerson.setIntentions(taRecommendCustomerMapper.getCustomerIntentions(personId,taPersonBuildingList));
676
+            taPerson.setDuration(taPersonVisitRecordMapper.getDurationByPersonId(personId));
677
+            taPerson.setVisitTime(taPersonVisitRecordMapper.getFirstVisitTimeByPersonId(personId));
678
+            TdCity city = cityMapper.selectById(taPerson.getCity());
665
             if(null != city){
679
             if(null != city){
666
-                taRecommendCustomer.setCity(city.getName());
680
+                taPerson.setCity(city.getName());
667
             }
681
             }
668
 
682
 
669
             //构造来源类型
683
             //构造来源类型
670
-            taRecommendCustomer.setPersonFrom("");
671
-            if (null != taRecommendCustomer.getFromCode()){
672
-                QueryWrapper<TdPersonFrom> tdPersonFromQueryWrapper = new QueryWrapper<>();
673
-                tdPersonFromQueryWrapper.eq("from_code",taRecommendCustomer.getFromCode());
674
-                TdPersonFrom tdPersonFrom = tdPersonFromMapper.selectOne(tdPersonFromQueryWrapper);
675
-                taRecommendCustomer.setPersonFrom(null != tdPersonFrom ? tdPersonFrom.getFromName() : "");
684
+            taPerson.setPersonFrom("");
685
+            if (null != taPerson){
686
+                QueryWrapper<TaPersonFromRecord> queryWrapper = new QueryWrapper<>();
687
+                queryWrapper.eq("org_id",taPerson.getOrgId());
688
+                queryWrapper.eq("person_id",taPerson.getPersonId());
689
+                queryWrapper.eq("is_first_time",1);
690
+                List<TaPersonFromRecord> taPersonFromRecords = taPersonFromRecordMapper.selectList(queryWrapper);
691
+                if (taPersonFromRecords.size() > 0){
692
+                    QueryWrapper<TdWxDict> tdWxDictQueryWrapper = new QueryWrapper<>();
693
+                    tdWxDictQueryWrapper.eq("scene_id",taPersonFromRecords.get(0).getSceneId());
694
+                    TdWxDict tdWxDict = tdWxDictMapper.selectOne(tdWxDictQueryWrapper);
695
+                    taPerson.setPersonFrom(null != tdWxDict ? tdWxDict.getSceneAlias() : "");
696
+                }
676
             }
697
             }
677
         }
698
         }
678
-        return taRecommendCustomer;
699
+        return taPerson;
679
     }
700
     }
680
 
701
 
681
     @Override
702
     @Override

+ 4
- 0
src/main/java/com/huiju/estateagents/service/impl/TaShareServiceImpl.java Vedi File

71
         queryWrapper.eq("tagert_type", typeOf);
71
         queryWrapper.eq("tagert_type", typeOf);
72
         List<TaShare> uvs = taShareMapper.selectList(queryWrapper);
72
         List<TaShare> uvs = taShareMapper.selectList(queryWrapper);
73
         if (null != uvs && uvs.size() > 0) {
73
         if (null != uvs && uvs.size() > 0) {
74
+            //更新分享为最新时间
75
+            TaShare taShare = new TaShare();
76
+            taShare.setCreateDate(LocalDateTime.now());
77
+            taShareMapper.update(taShare, queryWrapper);
74
             return ResponseBean.success("");
78
             return ResponseBean.success("");
75
         }
79
         }
76
 
80
 

+ 160
- 0
src/main/java/com/huiju/estateagents/statistic/controller/TsUserBehaviorStatisticController.java Vedi File

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 Vedi File

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 Vedi File

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 Vedi File

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 Vedi File

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
+}

+ 1
- 1
src/main/resources/mapper/TaPersonFromRecordMapper.xml Vedi File

9
             t.event_type,
9
             t.event_type,
10
             t.org_id,
10
             t.org_id,
11
             t.create_date,
11
             t.create_date,
12
-            sum( IF ( p.photo IS NOT NULL OR p.tel IS NOT NULL, 1, 0 ) ) AS registered_num
12
+            sum( IF ( p.phone IS NOT NULL OR p.tel IS NOT NULL, 1, 0 ) ) AS registered_num
13
         FROM
13
         FROM
14
             ta_person_from_record t
14
             ta_person_from_record t
15
             LEFT JOIN ta_person p ON t.person_id = p.person_id
15
             LEFT JOIN ta_person p ON t.person_id = p.person_id

+ 19
- 0
src/main/resources/mapper/TaPersonMapper.xml Vedi File

575
         </if>
575
         </if>
576
         order by t.create_date desc
576
         order by t.create_date desc
577
     </select>
577
     </select>
578
+
579
+    <select id="selectFromNum" resultType="java.lang.Integer">
580
+        SELECT
581
+            count( 1 )
582
+        FROM
583
+        (
584
+            SELECT
585
+                t.from_record_id,
586
+                t.person_id
587
+            FROM
588
+                ta_person_from_record t
589
+                LEFT JOIN ta_person p ON t.share_person_id = p.person_id
590
+                WHERE t.is_first_time = 1
591
+            and t.org_id = #{orgId}
592
+            <if test="personType !=null and personType !=''">
593
+                and p.person_type = #{personType}
594
+            </if>
595
+                GROUP BY t.person_id) d
596
+    </select>
578
 </mapper>
597
 </mapper>

+ 47
- 35
src/main/resources/mapper/TaPersonVisitRecordMapper.xml Vedi File

23
     </sql>
23
     </sql>
24
 
24
 
25
     <select id="visitRecordByPersonId" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
25
     <select id="visitRecordByPersonId" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
26
-        select * from ta_person_visit_record t
26
+        select
27
+            t.* ,
28
+            b.parent_type_id from ta_person_visit_record t
29
+        left join td_biz_event_type b on t.event_type = b.type_id
27
         where t.person_id = #{personId}
30
         where t.person_id = #{personId}
28
         <if test="personBuildingList != null and personBuildingList.size > 0">
31
         <if test="personBuildingList != null and personBuildingList.size > 0">
29
-            AND t.building_id in
32
+            AND (b.parent_type_id = 'public' or t.building_id in
30
             <foreach collection="personBuildingList" item="personBuilding" open="(" close=")" separator=",">
33
             <foreach collection="personBuildingList" item="personBuilding" open="(" close=")" separator=",">
31
                 #{personBuilding.buildingId}
34
                 #{personBuilding.buildingId}
32
             </foreach>
35
             </foreach>
36
+            )
33
         </if>
37
         </if>
34
         <if test="buildingId != null and buildingId != ''">
38
         <if test="buildingId != null and buildingId != ''">
35
-            AND t.building_id = #{buildingId}
39
+            AND (b.parent_type_id = 'public' or t.building_id = #{buildingId} )
36
         </if>
40
         </if>
37
         order by t.visit_time desc
41
         order by t.visit_time desc
38
     </select>
42
     </select>
119
 
123
 
120
     <select id="getWxActivityVisitRecordList" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
124
     <select id="getWxActivityVisitRecordList" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
121
         SELECT
125
         SELECT
122
-            t.* ,
126
+            t.share_from_id, t.share_person as consultant_id, t.share_person_type, t.person_id, t.target_type, t.target_id, t.create_date as visit_time, t.org_id ,building_id, t.status, t.is_first_time,
123
 	        p.`name` as user_name,
127
 	        p.`name` as user_name,
124
 	        p.`nickname` as nickname,
128
 	        p.`nickname` as nickname,
125
 	        p.avatarurl
129
 	        p.avatarurl
126
         FROM
130
         FROM
127
-            ( SELECT * FROM ta_person_visit_record WHERE org_id = #{orgId} and target_id = #{targetId} AND consultant_id = #{userId} and person_id != #{personId} and event_type = #{eventType} ORDER BY visit_time DESC LIMIT 999) t
131
+            ( SELECT * FROM ta_share_person_from WHERE org_id = #{orgId} and target_id = #{targetId} AND share_person = #{userId} and target_type = #{eventType} ORDER BY create_date DESC LIMIT 999) t
128
             left JOIN ta_person p on t.person_id = p.person_id
132
             left JOIN ta_person p on t.person_id = p.person_id
133
+            where p.user_id != #{userId}
129
         GROUP BY
134
         GROUP BY
130
             t.person_id
135
             t.person_id
131
         ORDER BY
136
         ORDER BY
132
-	        t.visit_time DESC
137
+	        t.create_date DESC
133
     </select>
138
     </select>
134
 
139
 
135
 
140
 
150
     <select id="getDrainageVisitRecord" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
155
     <select id="getDrainageVisitRecord" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
151
         select * from (
156
         select * from (
152
             select
157
             select
153
-            <include refid="columnSql"></include>,
158
+<!--            <include refid="columnSql"></include>,-->
159
+            t.person_id,
160
+            c.person_type,
161
+            t.create_date as visit_time,
162
+            t.tagert_type as event_type,
163
+            t.be_share as target_id,
154
             b.name as drainageName,
164
             b.name as drainageName,
155
             d.building_name as buildingName,
165
             d.building_name as buildingName,
156
             tn.news_name as newsName,
166
             tn.news_name as newsName,
158
             tsa.activity_name as groupActivityName,
168
             tsa.activity_name as groupActivityName,
159
             tbd.title as activityName,
169
             tbd.title as activityName,
160
             b.drainage_id
170
             b.drainage_id
161
-            from ta_person_visit_record t
162
-            left join ta_drainage b on t.target_id = b.drainage_id
163
-            left join ta_building d on t.target_id = d.building_id
164
-            left join ta_news tn on t.target_id = tn.news_id
165
-            left join ta_help_activity tha on t.target_id = tha.help_activity_id
166
-            left join ta_share_activity tsa on t.target_id = tsa.group_activity_id
167
-            left join ta_building_dynamic tbd on t.target_id = tbd.dynamic_id
168
-            left join ta_person c on t.share_person_id = c.person_id
169
-            where
170
-            t.share_person_id != t.person_id and t.share_person_id is not null and t.share_person_id != ''
171
+            from ta_share t
172
+            left join ta_drainage b on t.be_share = b.drainage_id
173
+            left join ta_building d on t.be_share = d.building_id
174
+            left join ta_news tn on t.be_share = tn.news_id
175
+            left join ta_help_activity tha on t.be_share = tha.help_activity_id
176
+            left join ta_share_activity tsa on t.be_share = tsa.group_activity_id
177
+            left join ta_building_dynamic tbd on t.be_share = tbd.dynamic_id
178
+            left join ta_person c on t.person_id = c.person_id
179
+            where 1=1
171
             <if test="orgId != null and orgId != ''">
180
             <if test="orgId != null and orgId != ''">
172
-                and t.org_id = #{orgId}
181
+                and c.org_id = #{orgId}
173
             </if>
182
             </if>
174
             <if test="eventType !=null and eventType != ''">
183
             <if test="eventType !=null and eventType != ''">
175
-                and t.event_type = #{eventType}
184
+                and t.tagert_type = #{eventType}
176
             </if>
185
             </if>
177
             <if test="activityName !=null and activityName != ''">
186
             <if test="activityName !=null and activityName != ''">
178
                 and (
187
                 and (
179
-                (b.name like concat('%',#{activityName},'%') and t.event_type = 'h5')or (d.name like concat('%',#{activityName},'%') and t.event_type = 'building') or (tn.news_name like concat('%',#{activityName},'%') and t.event_type = 'news')
180
-                or (tha.title like concat( '%', #{activityName}, '%' ) and t.event_type = 'help')  or (tsa.activity_name like concat('%',#{activityName},'%') and t.event_type = 'group') or (tbd.title like concat('%',#{activityName},'%') and t.event_type = 'activity')
188
+                (b.name like concat('%',#{activityName},'%') and t.tagert_type = 'h5')or (d.name like concat('%',#{activityName},'%') and t.tagert_type = 'building') or (tn.news_name like concat('%',#{activityName},'%') and t.tagert_type = 'news')
189
+                or (tha.title like concat( '%', #{activityName}, '%' ) and t.tagert_type = 'help')  or (tsa.activity_name like concat('%',#{activityName},'%') and t.tagert_type = 'group') or (tbd.title like concat('%',#{activityName},'%') and t.tagert_type = 'activity')
181
                 )
190
                 )
182
             </if>
191
             </if>
183
             <if test="shareName !=null and shareName != ''">
192
             <if test="shareName !=null and shareName != ''">
187
                 and c.phone = #{shareTel}
196
                 and c.phone = #{shareTel}
188
             </if>
197
             </if>
189
             <if test="personType == 'Realty Consultant'">
198
             <if test="personType == 'Realty Consultant'">
190
-                and t.consultant_id is not null  and t.consultant_id != ''
199
+                and c.person_type = 'Realty Consultant'
191
             </if>
200
             </if>
192
             <if test="personType == 'customer'">
201
             <if test="personType == 'customer'">
193
-                and t.consultant_id is null
202
+                and c.person_type != 'Realty Consultant'
194
             </if>
203
             </if>
195
             <if test="buildingId !=null and buildingId != ''">
204
             <if test="buildingId !=null and buildingId != ''">
196
-                and t.building_id = #{buildingId}
205
+                and d.building_id = #{buildingId}
197
             </if>
206
             </if>
198
             <if test="personBuildingList != null and personBuildingList.size > 0">
207
             <if test="personBuildingList != null and personBuildingList.size > 0">
199
-                AND t.building_id in
208
+                AND d.building_id in
200
                 <foreach collection="personBuildingList" item="personBuilding" open="(" close=")" separator=",">
209
                 <foreach collection="personBuildingList" item="personBuilding" open="(" close=")" separator=",">
201
                     #{personBuilding.buildingId}
210
                     #{personBuilding.buildingId}
202
                 </foreach>
211
                 </foreach>
203
             </if>
212
             </if>
204
-            order by t.visit_time desc
213
+            order by t.create_date desc
205
         ) t
214
         ) t
206
-        group by t.person_id, t.share_person_id,t.target_id,t.event_type
215
+        group by t.person_id, t.target_id,t.event_type
207
         order by t.visit_time desc
216
         order by t.visit_time desc
208
     </select>
217
     </select>
209
 
218
 
218
                 a.address,
227
                 a.address,
219
                 a.price,
228
                 a.price,
220
                 t.tagert_type as eventType,
229
                 t.tagert_type as eventType,
221
-				t.create_date
230
+				t.create_date as visit_time
222
                 from ta_share t
231
                 from ta_share t
223
                 left join (select b.url, a.building_name,a.address,a.price,a.building_id from ta_building a left join ta_building_img b on a.building_id = b.building_id where b.img_type = 'list') a on t.be_share = a.building_id
232
                 left join (select b.url, a.building_name,a.address,a.price,a.building_id from ta_building a left join ta_building_img b on a.building_id = b.building_id where b.img_type = 'list') a on t.be_share = a.building_id
224
                 where t.tagert_type = 'project'
233
                 where t.tagert_type = 'project'
237
         '2' as building_name,
246
         '2' as building_name,
238
         '3' as address,
247
         '3' as address,
239
         t.tagert_type as eventType,
248
         t.tagert_type as eventType,
240
-		t.create_date
249
+		t.create_date as visit_time
241
         from ta_share t
250
         from ta_share t
242
         left join ta_building_dynamic b on t.be_share = b.dynamic_id
251
         left join ta_building_dynamic b on t.be_share = b.dynamic_id
243
         where t.tagert_type = 'activity'
252
         where t.tagert_type = 'activity'
256
         '2' as building_name,
265
         '2' as building_name,
257
         '3' as address,
266
         '3' as address,
258
         t.tagert_type as eventType,
267
         t.tagert_type as eventType,
259
-		t.create_date
268
+		t.create_date as visit_time
260
         from ta_share t
269
         from ta_share t
261
         left join ta_help_activity c on t.be_share = c.help_activity_id
270
         left join ta_help_activity c on t.be_share = c.help_activity_id
262
         where t.tagert_type = 'help'
271
         where t.tagert_type = 'help'
275
         '2' as building_name,
284
         '2' as building_name,
276
         '3' as address,
285
         '3' as address,
277
         t.tagert_type as eventType,
286
         t.tagert_type as eventType,
278
-		t.create_date
287
+		t.create_date as visit_time
279
         from ta_share t
288
         from ta_share t
280
         left join ta_share_activity d on t.be_share = d.group_activity_id
289
         left join ta_share_activity d on t.be_share = d.group_activity_id
281
         where t.tagert_type = 'group'
290
         where t.tagert_type = 'group'
294
         '2' as building_name,
303
         '2' as building_name,
295
         '3' as address,
304
         '3' as address,
296
         t.tagert_type as eventType,
305
         t.tagert_type as eventType,
297
-		t.create_date
306
+		t.create_date as visit_time
298
         from ta_share t
307
         from ta_share t
299
         left join ta_news e on t.be_share = e.news_id
308
         left join ta_news e on t.be_share = e.news_id
300
         where t.tagert_type = 'news'
309
         where t.tagert_type = 'news'
313
             '2' as building_name,
322
             '2' as building_name,
314
             '3' as address,
323
             '3' as address,
315
 			t.tagert_type as eventType,
324
 			t.tagert_type as eventType,
316
-			t.create_date
325
+			t.create_date as visit_time
317
             from ta_share t
326
             from ta_share t
318
             left join ta_drainage f on t.be_share = f.drainage_id
327
             left join ta_drainage f on t.be_share = f.drainage_id
319
             where t.tagert_type = 'h5'
328
             where t.tagert_type = 'h5'
321
             ) t
330
             ) t
322
             group by t.target_id
331
             group by t.target_id
323
         ) t
332
         ) t
324
-        order by t.create_date desc
333
+        order by t.visit_time desc
325
     </select>
334
     </select>
326
 
335
 
327
     <select id="countShareNumByEventType" resultType="java.lang.Integer">
336
     <select id="countShareNumByEventType" resultType="java.lang.Integer">
328
         select count(DISTINCT t.person_id)  from ta_share_person_from t
337
         select count(DISTINCT t.person_id)  from ta_share_person_from t
338
+        left join ta_person a on t.person_id = a.person_id
329
         where
339
         where
330
         t.share_person = #{userId}
340
         t.share_person = #{userId}
331
-        and t.orgId = #{orgId}
341
+        and t.org_id = #{orgId}
332
         and t.target_type = #{eventType}
342
         and t.target_type = #{eventType}
333
         and t.target_id = #{targetId}
343
         and t.target_id = #{targetId}
344
+        and t.status = 1
345
+        and a.user_id != #{userId}
334
         group by t.target_type
346
         group by t.target_type
335
     </select>
347
     </select>
336
 
348
 

+ 6
- 2
src/main/resources/mapper/TaRecommendCustomerMapper.xml Vedi File

559
                 and b.tel like CONCAT('%',#{consultTel}, '%')
559
                 and b.tel like CONCAT('%',#{consultTel}, '%')
560
             </if>
560
             </if>
561
             and NOT EXISTS ( select * from ta_recommend_customer a where a.recommend_person = b.person_id)
561
             and NOT EXISTS ( select * from ta_recommend_customer a where a.recommend_person = b.person_id)
562
+            AND b.person_id not IN ( SELECT c.person_id FROM ta_recommend_customer c WHERE c.org_id = #{orgId} AND person_id is not null AND person_id != ''  )
562
         </where>
563
         </where>
563
         order by b.create_date desc
564
         order by b.create_date desc
564
         limit #{pageCode}, #{pageSize}
565
         limit #{pageCode}, #{pageSize}
632
         FROM
633
         FROM
633
         ta_recommend_customer a
634
         ta_recommend_customer a
634
         LEFT JOIN ta_person b ON a.realty_consultant = b.person_id
635
         LEFT JOIN ta_person b ON a.realty_consultant = b.person_id
635
-        left join ta_person c on a.realty_consultant = c.user_id
636
+        LEFT JOIN ta_person c ON a.realty_consultant = c.user_id
637
+        LEFT JOIN ta_user d on d.user_id = a.realty_consultant
638
+        LEFT JOIN ta_person_from_record p ON a.person_id = p.person_id AND p.is_first_time = 1
636
         <where>
639
         <where>
637
             a.status > 0
640
             a.status > 0
638
             and a.verify_status = 1
641
             and a.verify_status = 1
639
-            and realty_consultant is not null
642
+            and a.realty_consultant is not null
643
+            and a.realty_consultant != ''
640
             <if test="orgId != null">
644
             <if test="orgId != null">
641
                 and a.org_id = #{orgId}
645
                 and a.org_id = #{orgId}
642
             </if>
646
             </if>

+ 1
- 1
src/main/resources/mapper/TaUserMapper.xml Vedi File

21
             m.token,
21
             m.token,
22
             m.NAME AS miniappName,
22
             m.NAME AS miniappName,
23
             m.qr_code AS qrCode,
23
             m.qr_code AS qrCode,
24
-            z.expire_date,
24
+            t.exp_date as expire_date,
25
             m.org_id
25
             m.org_id
26
         FROM
26
         FROM
27
             ta_user t
27
             ta_user t

+ 1
- 1
src/main/resources/mapper/TdBizEventMapper.xml Vedi File

32
         ) as building_intention
32
         ) as building_intention
33
 
33
 
34
         ON biz_event.event_id = building_intention.event_id
34
         ON biz_event.event_id = building_intention.event_id
35
-
35
+        where biz_event.points is not null
36
     </select>
36
     </select>
37
 
37
 
38
 </mapper>
38
 </mapper>

+ 95
- 0
src/main/resources/mapper/statistic/TsUserBehaviorStatisticMapper.xml Vedi File

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>