|
@@ -1,23 +1,21 @@
|
1
|
1
|
package com.huiju.estateagents.reportCustomerAop;
|
2
|
2
|
|
3
|
3
|
import java.time.LocalDateTime;
|
4
|
|
-import java.util.ArrayList;
|
5
|
|
-import java.util.Arrays;
|
6
|
4
|
import java.util.List;
|
|
5
|
+import java.util.Map;
|
7
|
6
|
|
8
|
7
|
import javax.servlet.http.HttpServletRequest;
|
9
|
8
|
|
10
|
9
|
import org.aspectj.lang.JoinPoint;
|
11
|
|
-import org.aspectj.lang.ProceedingJoinPoint;
|
12
|
|
-import org.aspectj.lang.annotation.Around;
|
13
|
10
|
import org.aspectj.lang.annotation.Aspect;
|
14
|
11
|
import org.aspectj.lang.annotation.Before;
|
15
|
12
|
import org.aspectj.lang.annotation.Pointcut;
|
16
|
13
|
import org.aspectj.lang.reflect.MethodSignature;
|
|
14
|
+import org.slf4j.Logger;
|
|
15
|
+import org.slf4j.LoggerFactory;
|
17
|
16
|
import org.springframework.beans.factory.annotation.Autowired;
|
18
|
17
|
import org.springframework.stereotype.Component;
|
19
|
18
|
|
20
|
|
-import com.alibaba.fastjson.JSONObject;
|
21
|
19
|
import com.huiju.estateagents.base.BaseController;
|
22
|
20
|
import com.huiju.estateagents.base.ResponseBean;
|
23
|
21
|
import com.huiju.estateagents.common.CommConstant;
|
|
@@ -29,12 +27,12 @@ import com.huiju.estateagents.mapper.TaBuildingMapper;
|
29
|
27
|
import com.huiju.estateagents.mapper.TaPersonMapper;
|
30
|
28
|
import com.huiju.estateagents.service.ITaRecommendCustomerService;
|
31
|
29
|
|
32
|
|
-import io.swagger.models.auth.In;
|
33
|
|
-
|
34
|
30
|
@Aspect
|
35
|
31
|
@Component
|
36
|
32
|
public class ReportCustomerAspect extends BaseController {
|
37
|
33
|
|
|
34
|
+ private final Logger logger = LoggerFactory.getLogger(ReportCustomerAspect.class);
|
|
35
|
+
|
38
|
36
|
@Autowired
|
39
|
37
|
private ITaRecommendCustomerService iTaRecommendCustomerService;
|
40
|
38
|
|
|
@@ -42,7 +40,10 @@ public class ReportCustomerAspect extends BaseController {
|
42
|
40
|
TaPersonMapper taPersonMapper;
|
43
|
41
|
|
44
|
42
|
@Autowired
|
45
|
|
- private TaBuildingMapper taBuildingMapper;
|
|
43
|
+ TaBuildingMapper taBuildingMapper;
|
|
44
|
+
|
|
45
|
+ @Autowired
|
|
46
|
+ ReportCustomerImpl reportCustomerImpl;
|
46
|
47
|
|
47
|
48
|
|
48
|
49
|
/** 以自定义 @ReportCustomer 注解为切点 */
|
|
@@ -58,51 +59,47 @@ public class ReportCustomerAspect extends BaseController {
|
58
|
59
|
ReportCustomer reportCustomer = ((MethodSignature)proceedingJoinPoint.getSignature()).getMethod().getAnnotation(ReportCustomer.class);
|
59
|
60
|
//获取请求参数
|
60
|
61
|
Object[] args = proceedingJoinPoint.getArgs();
|
61
|
|
- HttpServletRequest request = (HttpServletRequest)args[1];
|
|
62
|
+ String targetType = reportCustomer.type();
|
|
63
|
+ String targetId = String.valueOf(args[0]);
|
|
64
|
+ String qrCodeId = String.valueOf(args[1]);
|
|
65
|
+ String channelId = String.valueOf(args[2]);
|
|
66
|
+ String sceneId = String.valueOf(args[3]);
|
|
67
|
+ HttpServletRequest request = (HttpServletRequest)args[4];
|
62
|
68
|
|
|
69
|
+ Map<String, Object> stringObjectMap = getBuildingByIdAndType(targetId, targetType);
|
63
|
70
|
if (request == null){
|
64
|
71
|
responseBean.addError("未授权,不进行操作");
|
65
|
72
|
return responseBean;
|
66
|
73
|
}
|
67
|
74
|
|
68
|
|
- String params = request.getHeader("reportInfo");
|
69
|
|
- JSONObject paramObject = JSONObject.parseObject(params);
|
|
75
|
+ String consultantPersonId = request.getHeader("x-consultant");
|
|
76
|
+ String recommend = request.getHeader("x-recommender");
|
70
|
77
|
|
71
|
78
|
List<TaPerson> persons = getPersonsByOpenId(getOpenId(request));
|
72
|
79
|
TaPerson taPerson = persons.get(0);
|
73
|
80
|
Integer orgId = getOrgId(request);
|
74
|
81
|
|
75
|
|
- // 楼盘ID
|
76
|
|
- String buildingId = paramObject.getString("buildingId");
|
77
|
|
- // 场景ID
|
78
|
|
- String sceneId = paramObject.getString("sceneId");
|
79
|
|
- // 访问目标
|
80
|
|
- String targetType = reportCustomer.type();
|
81
|
|
- // 目标ID
|
82
|
|
- String targetId = paramObject.getString("targetId");
|
83
|
|
- // 目标名称
|
84
|
|
- String targetName = paramObject.getString("targetName");
|
85
|
|
- // 推广用户
|
86
|
|
- String promoter = paramObject.getString("promoter");
|
87
|
|
-
|
88
|
|
- TaCustomerFrom taCustomerFrom = assembleVO(taPerson, targetType, targetId, targetName, orgId, sceneId);
|
|
82
|
+ TaCustomerFrom taCustomerFrom = assembleVO(taPerson, targetType, targetId, stringObjectMap.get("targetName").toString(), orgId, sceneId, channelId, qrCodeId);
|
89
|
83
|
// 推广人
|
90
|
|
- TaPerson recPerson = StringUtils.isEmpty(promoter) ? null : taPersonMapper.getById(promoter);
|
|
84
|
+ TaPerson recPerson = StringUtils.isEmpty(recommend) ? null : taPersonMapper.getById(recommend);
|
91
|
85
|
// 是否置业顾问
|
92
|
86
|
boolean isConsultant = null != recPerson && CommConstant.PERSON_REALTY_CONSULTANT.equals(recPerson.getPersonType());
|
|
87
|
+ TaPerson consultantInfo = null != consultantPersonId ? reportCustomerImpl.getPerson(consultantPersonId) : (isConsultant ? recPerson : null);
|
93
|
88
|
// 推荐楼盘
|
94
|
|
- TaBuilding building = StringUtils.isEmpty(buildingId) ? null : taBuildingMapper.selectById(buildingId);
|
|
89
|
+ TaBuilding taBuilding = (TaBuilding) stringObjectMap.get("taBuilding");
|
|
90
|
+ TaBuilding building = taBuilding == null ? null : taBuildingMapper.selectById(taBuilding.getBuildingId());
|
95
|
91
|
|
96
|
|
- iTaRecommendCustomerService.newCustomer(orgId, taPerson, recPerson, isConsultant ? recPerson : null, building, taCustomerFrom);
|
|
92
|
+ iTaRecommendCustomerService.newCustomer(orgId, taPerson, recPerson, consultantInfo, building, taCustomerFrom);
|
97
|
93
|
responseBean.addSuccess("绑定成功");
|
98
|
94
|
|
99
|
95
|
}catch (Exception e){
|
|
96
|
+ logger.error("绑定失败");
|
100
|
97
|
responseBean.addError("失败");
|
101
|
98
|
}
|
102
|
99
|
return responseBean;
|
103
|
100
|
}
|
104
|
101
|
|
105
|
|
- public TaCustomerFrom assembleVO(TaPerson person, String targetType, String targetId, String targetName, Integer orgId, String sceneId){
|
|
102
|
+ public TaCustomerFrom assembleVO(TaPerson person, String targetType, String targetId, String targetName, Integer orgId, String sceneId, String channelId, String qrCodeId){
|
106
|
103
|
// 客户来源
|
107
|
104
|
TaCustomerFrom customerFrom = new TaCustomerFrom();
|
108
|
105
|
customerFrom.setPersonId(person.getPersonId());
|
|
@@ -112,6 +109,12 @@ public class ReportCustomerAspect extends BaseController {
|
112
|
109
|
customerFrom.setTargetName(targetName);
|
113
|
110
|
customerFrom.setOrgId(orgId);
|
114
|
111
|
customerFrom.setSceneId(sceneId);
|
|
112
|
+ if (!StringUtils.isEmpty(channelId)){
|
|
113
|
+ customerFrom.setChannelId(Integer.valueOf(channelId));
|
|
114
|
+ }
|
|
115
|
+ if(!StringUtils.isEmpty(qrCodeId)){
|
|
116
|
+ customerFrom.setQrCodeId(Integer.valueOf(qrCodeId));
|
|
117
|
+ }
|
115
|
118
|
customerFrom.setCreateDate(LocalDateTime.now());
|
116
|
119
|
|
117
|
120
|
return customerFrom;
|
|
@@ -120,4 +123,36 @@ public class ReportCustomerAspect extends BaseController {
|
120
|
123
|
public List<TaPerson> getPersonsByOpenId(String openId){
|
121
|
124
|
return taPersonMapper.getPersonByOpenId(openId);
|
122
|
125
|
}
|
|
126
|
+
|
|
127
|
+ public Map<String, Object> getBuildingByIdAndType(String targetId, String targetType){
|
|
128
|
+ Map<String, Object> buildingAndNameInfo = null;
|
|
129
|
+
|
|
130
|
+ switch (targetType){
|
|
131
|
+ case CommConstant.FAVOR_ACTIVITY:
|
|
132
|
+ buildingAndNameInfo = reportCustomerImpl.selectActivityBuildingInfo(targetId);
|
|
133
|
+ break;
|
|
134
|
+ case CommConstant.POINTS_CHANGE_HELP:
|
|
135
|
+ buildingAndNameInfo = reportCustomerImpl.selectHelpBuildingInfo(targetId);
|
|
136
|
+ break;
|
|
137
|
+ case CommConstant.POINTS_CHANGE_GROUP:
|
|
138
|
+ buildingAndNameInfo = reportCustomerImpl.selectGroupBuildingInfo(targetId);
|
|
139
|
+ break;
|
|
140
|
+ case CommConstant.LIVE:
|
|
141
|
+ buildingAndNameInfo = reportCustomerImpl.selectLiveBuildingInfo(targetId);
|
|
142
|
+ break;
|
|
143
|
+ case CommConstant.EVENT_H5:
|
|
144
|
+ buildingAndNameInfo = reportCustomerImpl.selectH5BuildingInfo(targetId);
|
|
145
|
+ break;
|
|
146
|
+ case CommConstant.FAVOR_NEWS:
|
|
147
|
+ buildingAndNameInfo = reportCustomerImpl.selectNewsBuildingInfo(targetId);
|
|
148
|
+ break;
|
|
149
|
+ default:
|
|
150
|
+ buildingAndNameInfo = reportCustomerImpl.selectBuildingInfo(targetId);
|
|
151
|
+ break;
|
|
152
|
+ }
|
|
153
|
+
|
|
154
|
+ return buildingAndNameInfo;
|
|
155
|
+ }
|
|
156
|
+
|
|
157
|
+
|
123
|
158
|
}
|