Browse Source

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

张延森 5 years ago
parent
commit
8a08bea235
30 changed files with 699 additions and 109 deletions
  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 View File

@@ -255,4 +255,14 @@ public class SysUserController extends BaseController {
255 255
         sysTokenService.remove(sysTokenQueryWrapper);
256 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 View File

@@ -249,7 +249,7 @@ public class TaUserController extends BaseController {
249 249
 
250 250
     /**
251 251
      * 业务端  修改密码
252
-     * @return
252
+     * @return/
253 253
      */
254 254
     @PutMapping(value = "/admin/update/password")
255 255
     public ResponseBean updatePassword( @RequestParam String originalPassword,
@@ -339,7 +339,7 @@ public class TaUserController extends BaseController {
339 339
         }
340 340
     
341 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 345
         List<TaRole> roles = iTaRoleService.getRolesByUser(taUser.getUserId());

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

@@ -96,6 +96,9 @@ public class TaUserServiceImpl extends ServiceImpl<TaUserMapper, TaUser> impleme
96 96
 	@Autowired
97 97
 	private TaChannelAppRelationMapper taChannelAppRelationMapper;
98 98
 
99
+	@Autowired
100
+	private TaChannelProxyMapper taChannelProxyMapper;
101
+
99 102
 	@Override
100 103
 	public IPage<Map<String,Object>> getPageList(IPage pg, Integer channelId) {
101 104
 		List<Map<String,Object>> taUserList = taUserMapper.getPageList(pg, channelId);
@@ -138,6 +141,18 @@ public class TaUserServiceImpl extends ServiceImpl<TaUserMapper, TaUser> impleme
138 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 156
 		// 先插入 org
142 157
 		TaOrg taOrg = new TaOrg();
143 158
 		taOrg.setName(taUser.getOrgName());

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

@@ -10,11 +10,16 @@ import com.huiju.estateagents.center.sysUser.entity.SysToken;
10 10
 import com.huiju.estateagents.center.sysUser.entity.SysUser;
11 11
 import com.huiju.estateagents.center.sysUser.service.ISysTokenService;
12 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 15
 import com.huiju.estateagents.channel.sysChannel.entity.TaChannelProxy;
14 16
 import com.huiju.estateagents.channel.sysChannel.service.ITaChannelProxyService;
15 17
 import com.huiju.estateagents.common.CommConstant;
16 18
 import com.huiju.estateagents.common.JWTUtils;
17 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 23
 import org.slf4j.Logger;
19 24
 import org.slf4j.LoggerFactory;
20 25
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,7 +27,9 @@ import org.springframework.web.bind.annotation.*;
22 27
 
23 28
 import javax.servlet.http.HttpServletRequest;
24 29
 import java.time.LocalDateTime;
30
+import java.util.ArrayList;
25 31
 import java.util.HashMap;
32
+import java.util.List;
26 33
 import java.util.Map;
27 34
 
28 35
 /**
@@ -45,9 +52,15 @@ public class SysUserChannelController extends BaseController {
45 52
     @Autowired
46 53
     private ISysTokenService sysTokenService;
47 54
 
55
+    @Autowired
56
+    private ITaUserService iTaUserService;
57
+
48 58
     @Autowired
49 59
     private ITaChannelProxyService iTaChannelProxyService;
50 60
 
61
+    @Autowired
62
+    private ITaChannelAppRelationService iTaChannelAppRelationService;
63
+
51 64
     /**
52 65
      * 修改对象
53 66
      * @param sysUser 实体对象
@@ -216,11 +229,31 @@ public class SysUserChannelController extends BaseController {
216 229
     public ResponseBean taNewsTypeUpdate(@PathVariable Integer id,
217 230
                                          @RequestBody TaChannelProxy taChannelProxy, HttpServletRequest request){
218 231
         ResponseBean responseBean = new ResponseBean();
219
-        if (taChannelProxy.getAppMaxNum() != null && taChannelProxy.getAppMaxNum() < 0){
232
+        if (taChannelProxy.getAppMaxNum() != null && taChannelProxy.getAppMaxNum() <= 0){
220 233
             responseBean.addError("维护小程序数量不得小于0");
221 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 257
         QueryWrapper<TaChannelProxy> taChannelProxyQueryWrapper = new QueryWrapper<>();
225 258
         taChannelProxyQueryWrapper.eq("channel_id", id);
226 259
         iTaChannelProxyService.update(taChannelProxy, taChannelProxyQueryWrapper);

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

@@ -199,15 +199,21 @@ public class MiniAppController extends BaseController {
199 199
             personQueryWrapper.eq("org_id",orgId);
200 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 202
             TaPerson taPerson = taPersonService.newPersonByOpenid(session.getOpenid(), orgId);
208 203
             if (null == taPerson) {
209 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 217
             Map<Object,Object> map = new HashMap<>();
212 218
             map.put("openId",session.getOpenid());
213 219
             map.put("orgId",orgId);
@@ -244,7 +250,8 @@ public class MiniAppController extends BaseController {
244 250
                 QueryWrapper<TaSharePersonFrom> sharePersonFromQueryWrapper = new QueryWrapper<>();
245 251
                 sharePersonFromQueryWrapper.eq("person_id",taPerson.getPersonId());
246 252
                 if(from.equals("dynamic_share")){ // activity_share
247
-                    taSharePersonFrom.setStatus(CommConstant.STATUS_UNACCALIMED);
253
+                    //产品不认了
254
+                    taSharePersonFrom.setStatus(CommConstant.STATUS_NORMAL);
248 255
                     TaBuildingDynamic buildingDynamic = buildingDynamicService.getById(targetId);
249 256
                     taSharePersonFrom.setBuildingId(buildingDynamic.getBuildingId());
250 257
                     sharePersonFromQueryWrapper.eq("building_id",buildingDynamic.getBuildingId());
@@ -322,6 +329,19 @@ public class MiniAppController extends BaseController {
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 View File

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

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

@@ -357,9 +357,9 @@ public class TaPersonVisitRecordController extends BaseController {
357 357
 
358 358
         List<TaConsultantInfo> taConsultantInfos = result.getRecords();
359 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 361
             switch (e.getEventType()){
362
-                case CommConstant.FAVOR_PROJECT:
362
+                case CommConstant.FAVOR_ACTIVITY:
363 363
                     e.setActivityShareNum(shareNum);
364 364
                     break;
365 365
                 case CommConstant.POINTS_CHANGE_HELP:
@@ -371,7 +371,7 @@ public class TaPersonVisitRecordController extends BaseController {
371 371
                 case CommConstant.CAROUSEL_NEWS:
372 372
                     e.setNewsNum(shareNum);
373 373
                     break;
374
-                case CommConstant.POSTER_CONTENT_TYPE_BUILDING:
374
+                case CommConstant.FAVOR_PROJECT:
375 375
                     e.setBuildingNum(shareNum);
376 376
                     break;
377 377
                 case CommConstant.EVENT_H5:

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

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

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

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

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

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

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

@@ -221,4 +221,6 @@ public interface TaPersonMapper extends BaseMapper<TaPerson> {
221 221
     Integer judgeBindStatusByCondition(@Param("userId") Integer userId, @Param("orgId") Integer orgId, @Param("phone") String phone);
222 222
 
223 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 View File

@@ -216,10 +216,11 @@ public class StatisticalServiceImpl implements IStatisticalService {
216 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 224
         Map<String, Object> map = new HashMap<>();
224 225
         map.put("person_realty_consultant", person_realty_consultant);
225 226
         map.put("person_estate_agent", person_estate_agent);

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

@@ -304,7 +304,7 @@ public class TaBuildingServiceImpl extends ServiceImpl<TaBuildingMapper, TaBuild
304 304
 
305 305
         boolean isMainMoreThanTenFlag = publishCountIsMainBuilding(building, orgId, null, "update");
306 306
         if (!isMainMoreThanTenFlag){
307
-            responseBean.addError("每个城市只能推荐10个楼盘到首页,请先将已推荐楼盘取消推荐后再推荐当前楼盘。");
307
+            responseBean.addError("当前城市最多只能推荐10个项目至首页哦。");
308 308
             return responseBean;
309 309
         }
310 310
 
@@ -458,6 +458,12 @@ public class TaBuildingServiceImpl extends ServiceImpl<TaBuildingMapper, TaBuild
458 458
 
459 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 467
         building.setCreateDate(LocalDateTime.now());
462 468
         building.setStatus(2);
463 469
         building.setOrgId(orgId);
@@ -553,7 +559,7 @@ public class TaBuildingServiceImpl extends ServiceImpl<TaBuildingMapper, TaBuild
553 559
 
554 560
         boolean isMainMoreThanTenFlag = publishCountIsMainBuilding(taBuildingMapper.selectOne(buildingIdQueryWrapper), orgId, status, "updateStatus");
555 561
         if (!isMainMoreThanTenFlag){
556
-            responseBean.addError("每个城市只能推荐10个楼盘到首页,请先将已推荐楼盘取消推荐后再推荐当前楼盘。");
562
+            responseBean.addError("当前城市最多只能推荐10个项目至首页哦");
557 563
             return responseBean;
558 564
         }
559 565
 
@@ -944,9 +950,9 @@ public class TaBuildingServiceImpl extends ServiceImpl<TaBuildingMapper, TaBuild
944 950
         if (taBuilding.getIsMain() != 1){
945 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 956
         if (operte.equals("updateStatus") && status == 2){
951 957
             return true;
952 958
         }

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

@@ -63,18 +63,6 @@ public class TaMiniappServiceImpl extends ServiceImpl<TaMiniappMapper, TaMiniapp
63 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 66
         TaMiniapp orign = this.getById(taMiniapp.getMiniappId());
79 67
         if (null != orign) {
80 68
             if (!this.updateById(taMiniapp)) {

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

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

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

@@ -132,7 +132,7 @@ public class TaPersonVisitRecordServiceImpl extends ServiceImpl<TaPersonVisitRec
132 132
 				e.setUserTel(personInfo.getPhone());
133 133
 			}
134 134
 
135
-			TaPerson userShareInfo = taPersonMapper.selectById(e.getSharePersonId());
135
+			TaPerson userShareInfo = taPersonMapper.selectById(e.getPersonId());
136 136
 			if (userShareInfo != null) {
137 137
 				e.setShareName(userShareInfo.getNickname());
138 138
 				e.setShareTel(userShareInfo.getPhone());
@@ -223,7 +223,7 @@ public class TaPersonVisitRecordServiceImpl extends ServiceImpl<TaPersonVisitRec
223 223
 		taPersonQueryWrapper.eq("org_id",orgId);
224 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 227
 		List<TaPersonVisitRecord> records = result.getRecords();
228 228
 		//判断是否我的客户状态
229 229
 		records.forEach(e -> {

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

@@ -88,9 +88,15 @@ public class TaRecommendCustomerServiceImpl extends ServiceImpl<TaRecommendCusto
88 88
     @Autowired
89 89
     private TaUserMapper taUserMapper;
90 90
 
91
+    @Autowired
92
+    private TaPersonFromRecordMapper taPersonFromRecordMapper;
93
+
91 94
     @Autowired
92 95
     private TdPersonFromMapper tdPersonFromMapper;
93 96
 
97
+    @Autowired
98
+    private TdWxDictMapper tdWxDictMapper;
99
+
94 100
     @Override
95 101
     public ResponseBean getMyCustList(String openid, String keywords, int pageNumber, int pageSize) {
96 102
         List<TaPerson> taPersons = getPersonsByOpenId(openid);
@@ -571,16 +577,6 @@ public class TaRecommendCustomerServiceImpl extends ServiceImpl<TaRecommendCusto
571 577
             taRecommendCustomer.setVisitRecords(taPersonVisitRecordIPage);
572 578
             taRecommendCustomer.setVisitTimes(taPersonVisitRecordIPage.getRecords().size());
573 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 581
         if(!StringUtils.isEmpty(taRecommendCustomer.getRealtyConsultant())){
586 582
             TaPerson consultant =  taPersonMapper.getById(taRecommendCustomer.getRealtyConsultant());
@@ -600,11 +596,29 @@ public class TaRecommendCustomerServiceImpl extends ServiceImpl<TaRecommendCusto
600 596
         }
601 597
         //构造来源类型
602 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 624
         return taRecommendCustomer;
@@ -612,7 +626,7 @@ public class TaRecommendCustomerServiceImpl extends ServiceImpl<TaRecommendCusto
612 626
 
613 627
     @Override
614 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 630
         if(!StringUtils.isEmpty(personId)){
617 631
             IPage<TaPersonVisitRecord>page = new Page<>(pageNumber,pageSize);
618 632
             IPage<TaPersonVisitRecord> taPersonVisitRecordIPage = taPersonVisitRecordMapper.visitRecordByPersonId(page,personId,taPersonBuildingList,buildingId);
@@ -656,26 +670,33 @@ public class TaRecommendCustomerServiceImpl extends ServiceImpl<TaRecommendCusto
656 670
                 }
657 671
             });
658 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 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 702
     @Override

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

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

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

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

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

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

@@ -9,7 +9,7 @@
9 9
             t.event_type,
10 10
             t.org_id,
11 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 13
         FROM
14 14
             ta_person_from_record t
15 15
             LEFT JOIN ta_person p ON t.person_id = p.person_id

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

@@ -575,4 +575,23 @@ FROM
575 575
         </if>
576 576
         order by t.create_date desc
577 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 597
 </mapper>

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

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

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

@@ -559,6 +559,7 @@ FROM
559 559
                 and b.tel like CONCAT('%',#{consultTel}, '%')
560 560
             </if>
561 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 563
         </where>
563 564
         order by b.create_date desc
564 565
         limit #{pageCode}, #{pageSize}
@@ -632,11 +633,14 @@ FROM
632 633
         FROM
633 634
         ta_recommend_customer a
634 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 639
         <where>
637 640
             a.status > 0
638 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 644
             <if test="orgId != null">
641 645
                 and a.org_id = #{orgId}
642 646
             </if>

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

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

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

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

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

@@ -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>