ソースを参照

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

张延森 5 年 前
コミット
99c33f425c
共有100 個のファイルを変更した3383 個の追加318 個の削除を含む
  1. 9
    33
      pom.xml
  2. 20
    0
      src/main/java/com/huiju/estateagents/base/BaseController.java
  3. 77
    23
      src/main/java/com/huiju/estateagents/center/sysUser/controller/SysUserController.java
  4. 31
    6
      src/main/java/com/huiju/estateagents/center/taUser/controller/TaUserController.java
  5. 12
    0
      src/main/java/com/huiju/estateagents/center/taUser/entity/TaUser.java
  6. 1
    1
      src/main/java/com/huiju/estateagents/center/taUser/mapper/TaUserMapper.java
  7. 2
    2
      src/main/java/com/huiju/estateagents/center/taUser/service/ITaUserService.java
  8. 50
    7
      src/main/java/com/huiju/estateagents/center/taUser/service/impl/TaUserServiceImpl.java
  9. 289
    0
      src/main/java/com/huiju/estateagents/channel/sysChannel/controller/SysUserChannelController.java
  10. 41
    0
      src/main/java/com/huiju/estateagents/channel/sysChannel/entity/TaChannelProxy.java
  11. 12
    0
      src/main/java/com/huiju/estateagents/channel/sysChannel/mapper/TaChannelProxyMapper.java
  12. 12
    0
      src/main/java/com/huiju/estateagents/channel/sysChannel/service/ITaChannelProxyService.java
  13. 57
    0
      src/main/java/com/huiju/estateagents/channel/sysChannel/service/impl/TaChannelProxyServiceImpl.java
  14. 47
    1
      src/main/java/com/huiju/estateagents/common/CommConstant.java
  15. 13
    7
      src/main/java/com/huiju/estateagents/controller/ExtendContentController.java
  16. 110
    11
      src/main/java/com/huiju/estateagents/controller/MiniAppController.java
  17. 21
    0
      src/main/java/com/huiju/estateagents/controller/StatisticalController.java
  18. 4
    3
      src/main/java/com/huiju/estateagents/controller/TaBuildingController.java
  19. 2
    2
      src/main/java/com/huiju/estateagents/controller/TaBuildingDynamicController.java
  20. 211
    0
      src/main/java/com/huiju/estateagents/controller/TaBuildingPanoramaController.java
  21. 2
    2
      src/main/java/com/huiju/estateagents/controller/TaMiniappController.java
  22. 147
    0
      src/main/java/com/huiju/estateagents/controller/TaPersonFromRecordController.java
  23. 15
    6
      src/main/java/com/huiju/estateagents/controller/TaPersonVisitRecordController.java
  24. 1
    1
      src/main/java/com/huiju/estateagents/controller/TaPointsRecordsController.java
  25. 27
    8
      src/main/java/com/huiju/estateagents/controller/TaRecommendCustomerController.java
  26. 16
    8
      src/main/java/com/huiju/estateagents/controller/TaSharePersonFromController.java
  27. 2
    1
      src/main/java/com/huiju/estateagents/controller/TdCityController.java
  28. 2
    0
      src/main/java/com/huiju/estateagents/controller/TdReportController.java
  29. 143
    0
      src/main/java/com/huiju/estateagents/controller/TdWxDictController.java
  30. 19
    1
      src/main/java/com/huiju/estateagents/drainage/controller/TaDrainageController.java
  31. 2
    1
      src/main/java/com/huiju/estateagents/drainage/entity/TaDrainage.java
  32. 34
    1
      src/main/java/com/huiju/estateagents/entity/TaBuilding.java
  33. 79
    0
      src/main/java/com/huiju/estateagents/entity/TaBuildingPanorama.java
  34. 49
    0
      src/main/java/com/huiju/estateagents/entity/TaChannelAppRelation.java
  35. 6
    0
      src/main/java/com/huiju/estateagents/entity/TaPerson.java
  36. 93
    0
      src/main/java/com/huiju/estateagents/entity/TaPersonFromRecord.java
  37. 8
    0
      src/main/java/com/huiju/estateagents/entity/TaPersonVisitRecord.java
  38. 5
    5
      src/main/java/com/huiju/estateagents/entity/TaShareRecord.java
  39. 4
    0
      src/main/java/com/huiju/estateagents/entity/TdBizEvent.java
  40. 62
    0
      src/main/java/com/huiju/estateagents/entity/TdWxDict.java
  41. 2
    2
      src/main/java/com/huiju/estateagents/excel/TaActivityDynamicEnlistExport.java
  42. 5
    2
      src/main/java/com/huiju/estateagents/interceptor/AccessInterceptor.java
  43. 24
    10
      src/main/java/com/huiju/estateagents/job/CustomerStatisticTimeJob.java
  44. 0
    2
      src/main/java/com/huiju/estateagents/job/JudglActivityTimeJob.java
  45. 2
    0
      src/main/java/com/huiju/estateagents/mapper/TaBuildingMapper.java
  46. 18
    0
      src/main/java/com/huiju/estateagents/mapper/TaBuildingPanoramaMapper.java
  47. 18
    0
      src/main/java/com/huiju/estateagents/mapper/TaChannelAppRelationMapper.java
  48. 22
    0
      src/main/java/com/huiju/estateagents/mapper/TaPersonFromRecordMapper.java
  49. 20
    0
      src/main/java/com/huiju/estateagents/mapper/TaPersonMapper.java
  50. 7
    4
      src/main/java/com/huiju/estateagents/mapper/TaPersonVisitRecordMapper.java
  51. 2
    2
      src/main/java/com/huiju/estateagents/mapper/TaRecommendCustomerMapper.java
  52. 2
    0
      src/main/java/com/huiju/estateagents/mapper/TdCityMapper.java
  53. 18
    0
      src/main/java/com/huiju/estateagents/mapper/TdWxDictMapper.java
  54. 18
    0
      src/main/java/com/huiju/estateagents/service/IStatisticalService.java
  55. 16
    0
      src/main/java/com/huiju/estateagents/service/ITaBuildingPanoramaService.java
  56. 1
    1
      src/main/java/com/huiju/estateagents/service/ITaBuildingService.java
  57. 16
    0
      src/main/java/com/huiju/estateagents/service/ITaChannelAppRelationService.java
  58. 3
    1
      src/main/java/com/huiju/estateagents/service/ITaMiniappService.java
  59. 23
    0
      src/main/java/com/huiju/estateagents/service/ITaPersonFromRecordService.java
  60. 1
    1
      src/main/java/com/huiju/estateagents/service/ITaPersonService.java
  61. 2
    2
      src/main/java/com/huiju/estateagents/service/ITaPersonVisitRecordService.java
  62. 7
    4
      src/main/java/com/huiju/estateagents/service/ITaRecommendCustomerService.java
  63. 11
    0
      src/main/java/com/huiju/estateagents/service/ITaSharePersonFromService.java
  64. 2
    2
      src/main/java/com/huiju/estateagents/service/ITdCityService.java
  65. 16
    0
      src/main/java/com/huiju/estateagents/service/ITdWxDictService.java
  66. 1
    1
      src/main/java/com/huiju/estateagents/service/impl/ExtendContentServiceImpl.java
  67. 104
    6
      src/main/java/com/huiju/estateagents/service/impl/StatisticalServiceImpl.java
  68. 1
    1
      src/main/java/com/huiju/estateagents/service/impl/TaBuildingIntentionServiceImpl.java
  69. 20
    0
      src/main/java/com/huiju/estateagents/service/impl/TaBuildingPanoramaServiceImpl.java
  70. 74
    14
      src/main/java/com/huiju/estateagents/service/impl/TaBuildingServiceImpl.java
  71. 20
    0
      src/main/java/com/huiju/estateagents/service/impl/TaChannelAppRelationServiceImpl.java
  72. 28
    1
      src/main/java/com/huiju/estateagents/service/impl/TaMiniappServiceImpl.java
  73. 80
    0
      src/main/java/com/huiju/estateagents/service/impl/TaPersonFromRecordServiceImpl.java
  74. 3
    2
      src/main/java/com/huiju/estateagents/service/impl/TaPersonServiceImpl.java
  75. 15
    13
      src/main/java/com/huiju/estateagents/service/impl/TaPersonVisitRecordServiceImpl.java
  76. 105
    75
      src/main/java/com/huiju/estateagents/service/impl/TaRecommendCustomerServiceImpl.java
  77. 84
    2
      src/main/java/com/huiju/estateagents/service/impl/TaSharePersonFromServiceImpl.java
  78. 5
    1
      src/main/java/com/huiju/estateagents/service/impl/TaShareServiceImpl.java
  79. 16
    4
      src/main/java/com/huiju/estateagents/service/impl/TdCityServiceImpl.java
  80. 20
    0
      src/main/java/com/huiju/estateagents/service/impl/TdWxDictServiceImpl.java
  81. 143
    0
      src/main/java/com/huiju/estateagents/statistic/controller/TsPersonFromStatisticController.java
  82. 160
    0
      src/main/java/com/huiju/estateagents/statistic/controller/TsUserBehaviorStatisticController.java
  83. 69
    0
      src/main/java/com/huiju/estateagents/statistic/entity/TsPersonFromStatistic.java
  84. 64
    0
      src/main/java/com/huiju/estateagents/statistic/entity/TsUserBehaviorStatistic.java
  85. 30
    0
      src/main/java/com/huiju/estateagents/statistic/mapper/TsPersonFromStatisticMapper.java
  86. 28
    0
      src/main/java/com/huiju/estateagents/statistic/mapper/TsUserBehaviorStatisticMapper.java
  87. 16
    0
      src/main/java/com/huiju/estateagents/statistic/service/ITsPersonFromStatisticService.java
  88. 30
    0
      src/main/java/com/huiju/estateagents/statistic/service/ITsUserBehaviorStatisticService.java
  89. 20
    0
      src/main/java/com/huiju/estateagents/statistic/service/impl/TsPersonFromStatisticServiceImpl.java
  90. 66
    0
      src/main/java/com/huiju/estateagents/statistic/service/impl/TsUserBehaviorStatisticServiceImpl.java
  91. 7
    7
      src/main/resources/application-blue.yml
  92. 5
    5
      src/main/resources/application-dev.yml
  93. 74
    0
      src/main/resources/application-green.yml
  94. 4
    4
      src/main/resources/application-gzysd.yml
  95. 4
    4
      src/main/resources/application-hj.yml
  96. 4
    4
      src/main/resources/application-jj.yml
  97. 4
    4
      src/main/resources/application-nj.yml
  98. 7
    7
      src/main/resources/application-prod-blue.yml
  99. 79
    0
      src/main/resources/application-prod-green.yml
  100. 0
    0
      src/main/resources/application-rc.yml

+ 9
- 33
pom.xml ファイルの表示

@@ -10,7 +10,7 @@
10 10
 	</parent>
11 11
 	<groupId>com.huiju</groupId>
12 12
 	<artifactId>estateagents</artifactId>
13
-	<version>v3.5.5</version>
13
+	<version>v3.5.6</version>
14 14
 	<name>estateages</name>
15 15
 	<description>置业经纪人</description>
16 16
 
@@ -142,51 +142,27 @@
142 142
 			</properties>
143 143
 		</profile>
144 144
 		<profile>
145
-			<id>test</id>
145
+			<id>green</id>
146 146
 			<properties>
147
-				<profiles.active>test</profiles.active>
147
+				<profiles.active>green</profiles.active>
148 148
 			</properties>
149 149
 		</profile>
150 150
 		<profile>
151
-			<id>prod</id>
151
+			<id>prod-blue</id>
152 152
 			<properties>
153
-				<profiles.active>prod</profiles.active>
153
+				<profiles.active>prod-blue</profiles.active>
154 154
 			</properties>
155 155
 		</profile>
156 156
 		<profile>
157
-			<id>xs</id>
157
+			<id>prod-green</id>
158 158
 			<properties>
159
-				<profiles.active>xs</profiles.active>
159
+				<profiles.active>prod-green</profiles.active>
160 160
 			</properties>
161 161
 		</profile>
162 162
 		<profile>
163
-			<id>rc</id>
163
+			<id>blue</id>
164 164
 			<properties>
165
-				<profiles.active>rc</profiles.active>
166
-			</properties>
167
-		</profile>
168
-		<profile>
169
-			<id>nj</id>
170
-			<properties>
171
-				<profiles.active>nj</profiles.active>
172
-			</properties>
173
-		</profile>
174
-		<profile>
175
-			<id>hj</id>
176
-			<properties>
177
-				<profiles.active>hj</profiles.active>
178
-			</properties>
179
-		</profile>
180
-		<profile>
181
-			<id>gzysd</id>
182
-			<properties>
183
-				<profiles.active>gzysd</profiles.active>
184
-			</properties>
185
-		</profile>
186
-		<profile>
187
-			<id>jj</id>
188
-			<properties>
189
-				<profiles.active>jj</profiles.active>
165
+				<profiles.active>blue</profiles.active>
190 166
 			</properties>
191 167
 		</profile>
192 168
 	</profiles>

+ 20
- 0
src/main/java/com/huiju/estateagents/base/BaseController.java ファイルの表示

@@ -39,6 +39,26 @@ public class BaseController {
39 39
 		return null;
40 40
 	}
41 41
 
42
+	public Integer getChannelId(HttpServletRequest request){
43
+
44
+		Map map = JWTUtils.getUserIdAndOrgId(request);
45
+		if (null != map && null != map.get("channelId")){
46
+			return Integer.valueOf(map.get("channelId").toString());
47
+		}
48
+
49
+		return null;
50
+	}
51
+
52
+	public String getChannelUserName(HttpServletRequest request){
53
+
54
+		Map map = JWTUtils.getUserIdAndOrgId(request);
55
+		if (null != map && null != map.get("userName")){
56
+			return map.get("userName").toString();
57
+		}
58
+
59
+		return null;
60
+	}
61
+
42 62
 	public String getOpenId(HttpServletRequest request){
43 63
 
44 64
 		Map map = JWTUtils.getUserIdAndOrgId(request);

+ 77
- 23
src/main/java/com/huiju/estateagents/center/sysUser/controller/SysUserController.java ファイルの表示

@@ -10,6 +10,10 @@ 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;
15
+import com.huiju.estateagents.channel.sysChannel.entity.TaChannelProxy;
16
+import com.huiju.estateagents.channel.sysChannel.service.ITaChannelProxyService;
13 17
 import com.huiju.estateagents.common.CommConstant;
14 18
 import com.huiju.estateagents.common.JWTUtils;
15 19
 import com.huiju.estateagents.common.MD5Utils;
@@ -44,6 +48,12 @@ public class SysUserController extends BaseController {
44 48
     @Autowired
45 49
     private ISysTokenService sysTokenService;
46 50
 
51
+    @Autowired
52
+    private ITaUserService iTaUserService;
53
+
54
+    @Autowired
55
+    private ITaChannelProxyService iTaChannelProxyService;
56
+
47 57
     /**
48 58
      * 分页查询列表
49 59
      * @param pageNum
@@ -162,13 +172,14 @@ public class SysUserController extends BaseController {
162 172
      */
163 173
     @RequestMapping(value="/center/current",method=RequestMethod.GET)
164 174
     public ResponseBean currentUser(HttpServletRequest request){
165
-        String userName = JWTUtils.getSubject(request);
166
-        QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
167
-        sysUserQueryWrapper.eq("user_name",userName);
168
-        SysUser sysUser = iSysUserService.getOne(sysUserQueryWrapper);
169
-        sysUser.setPassword(null);
170
-
171
-        return ResponseBean.success(sysUser);
175
+        Map map = JWTUtils.getUserIdAndOrgId(request);
176
+        QueryWrapper<TaChannelProxy> taChannelProxyQueryWrapper = new QueryWrapper<>();
177
+        taChannelProxyQueryWrapper.eq("user_name", map.get("userName")).or().eq("channel_tel", map.get("userName"));
178
+        TaChannelProxy taChannelProxy = iTaChannelProxyService.getOne(taChannelProxyQueryWrapper);
179
+        if (StringUtils.isEmpty(taChannelProxy.getUserName())){
180
+            taChannelProxy.setUserName(map.get("userName").toString());
181
+        }
182
+        return ResponseBean.success(taChannelProxy);
172 183
     }
173 184
     
174 185
     @PostMapping("/center/signin")
@@ -177,35 +188,68 @@ public class SysUserController extends BaseController {
177 188
         if (params == null) {
178 189
             return ResponseBean.error("非法参数", ResponseBean.ERROR_MISSING_PARAMS);
179 190
         }
180
-        
191
+
192
+        QueryWrapper<TaChannelProxy> taChannelProxyQueryWrapper = new QueryWrapper<>();
181 193
         String userName = params.getString("userName");
182
-        String userPassword = params.getString("password");
183
-        
194
+        if (StringUtils.isEmpty(userName)){
195
+            return ResponseBean.error("用户名不能为空", ResponseBean.ERROR_ILLEGAL_PARAMS);
196
+        }
197
+
198
+        taChannelProxyQueryWrapper.eq("user_name", userName).or().eq("channel_tel", userName);
199
+
184 200
         //验证用户名密码是否正确
185
-        QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
186
-        sysUserQueryWrapper.eq("user_name",userName);
187
-        sysUserQueryWrapper.eq("password", MD5Utils.md5(userPassword));
188
-        SysUser sysUser = iSysUserService.getOne(sysUserQueryWrapper);
189
-        if (sysUser == null) {
201
+        TaChannelProxy taChannelProxy = iTaChannelProxyService.getOne(taChannelProxyQueryWrapper);
202
+        String defaultPsw = MD5Utils.md5(params.getString("password"));
203
+        if (taChannelProxy == null || !defaultPsw.equals(taChannelProxy.getPassword())) {
190 204
             return ResponseBean.error("用户名或密码错误", ResponseBean.ERROR_ILLEGAL_PARAMS);
191 205
         }
192
-        
193
-        if (sysUser.getStatus() != CommConstant.STATUS_NORMAL) {
194
-            return ResponseBean.error("用户状态异常", ResponseBean.ERROR_UNAVAILABLE);
206
+
207
+        //校验是否过期且是否停用
208
+        if (LocalDateTime.now().isAfter(taChannelProxy.getExpireDate()) || taChannelProxy.getStatus() == 0){
209
+            return ResponseBean.error("当前后台服务已到期,请联系管理员", ResponseBean.ERROR_ILLEGAL_PARAMS);
195 210
         }
196
-        
197
-        String token = JWTUtils.newToken(sysUser.getUserName());
198
-    
211
+
212
+        Map map = new HashMap();
213
+        map.put("userName", StringUtils.isEmpty(taChannelProxy.getUserName()) ? taChannelProxy.getChannelTel() : taChannelProxy.getUserName());
214
+        map.put("channelId",taChannelProxy.getChannelId().toString());
215
+        String token = JWTUtils.newTokenByMap(map);
216
+
199 217
         //保存token
200 218
         sysTokenService.saveToken(token);
201 219
         
202 220
         Map<String, Object> result = new HashMap<>();
203 221
         result.put("token", token);
204
-        result.put("user", sysUser);
222
+        result.put("user", taChannelProxy);
205 223
         
206 224
         return ResponseBean.success(result);
207 225
     }
208
-    
226
+
227
+    @PostMapping("/center/changePassword")
228
+    public ResponseBean changePassword(@RequestParam String originalPassword,
229
+                                       @RequestParam String newPassword,HttpServletRequest request) {
230
+
231
+        if (org.apache.commons.lang3.StringUtils.isBlank(newPassword) || newPassword.length() < 6) {
232
+            return ResponseBean.error("新密不能小于6位", ResponseBean.ERROR_UNAVAILABLE);
233
+        }
234
+
235
+        Integer channelId = getChannelId(request);
236
+
237
+        // 校验当前旧密码是否正确
238
+        String password = MD5Utils.md5(MD5Utils.md5(originalPassword));
239
+        TaChannelProxy taChannelProxy = iTaChannelProxyService.getById(channelId);
240
+        if (!password.equals(taChannelProxy.getPassword())){
241
+            return ResponseBean.error("旧密码错误,请重新输入", ResponseBean.ERROR_UNAVAILABLE);
242
+        }
243
+
244
+        try {
245
+            iTaChannelProxyService.resetPassword(channelId, newPassword);
246
+            return ResponseBean.success("操作成功!");
247
+        } catch (Exception e) {
248
+            e.printStackTrace();
249
+            return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_UNAVAILABLE);
250
+        }
251
+    }
252
+
209 253
     @PostMapping("/center/signout")
210 254
     public ResponseBean signout(HttpServletRequest request) {
211 255
         String token = JWTUtils.getToken(request);
@@ -214,4 +258,14 @@ public class SysUserController extends BaseController {
214 258
         sysTokenService.remove(sysTokenQueryWrapper);
215 259
         return ResponseBean.success("成功退出");
216 260
     }
261
+
262
+    @RequestMapping(value="/center/logo",method= RequestMethod.GET)
263
+    public ResponseBean getLogoImg(HttpServletRequest request){
264
+        ResponseBean responseBean = new ResponseBean();
265
+        Integer channelId = getChannelId(request);
266
+        TaChannelProxy taChannelProxy = iTaChannelProxyService.getById(channelId);
267
+        responseBean.addSuccess(taChannelProxy);
268
+        return responseBean;
269
+    }
270
+
217 271
 }

+ 31
- 6
src/main/java/com/huiju/estateagents/center/taUser/controller/TaUserController.java ファイルの表示

@@ -96,12 +96,36 @@ public class TaUserController extends BaseController {
96 96
      */
97 97
     @RequestMapping(value="/center/taUser",method= RequestMethod.GET)
98 98
     public ResponseBean taUserList(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
99
-									 @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
99
+									 @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize, HttpServletRequest request){
100 100
         ResponseBean responseBean = new ResponseBean();
101
+
101 102
         try {
102 103
             //使用分页插件
103 104
 		    IPage pg = new Page<>(pageNum, pageSize);
104
-            IPage<Map<String,Object>> result = iTaUserService.getPageList(pg);
105
+            IPage<Map<String,Object>> result = iTaUserService.getPageList(pg, getChannelId(request));
106
+            responseBean.addSuccess(result);
107
+        }catch (Exception e){
108
+            e.printStackTrace();
109
+            logger.error("taUserList -=- {}",e.toString());
110
+            responseBean.addError(e.getMessage());
111
+        }
112
+        return responseBean;
113
+    }
114
+
115
+    /**
116
+     * 分页查询列表
117
+     * @param pageNum
118
+     * @param pageSize
119
+     * @return
120
+     */
121
+    @RequestMapping(value="/channel/taUser",method= RequestMethod.GET)
122
+    public ResponseBean taUserChannelList(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
123
+                                   @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
124
+        ResponseBean responseBean = new ResponseBean();
125
+        try {
126
+            //使用分页插件
127
+            IPage pg = new Page<>(pageNum, pageSize);
128
+            IPage<Map<String,Object>> result = iTaUserService.getPageList(pg, null);
105 129
             responseBean.addSuccess(result);
106 130
         }catch (Exception e){
107 131
             e.printStackTrace();
@@ -117,10 +141,11 @@ public class TaUserController extends BaseController {
117 141
      * @return
118 142
      */
119 143
     @RequestMapping(value="/center/taUser",method= RequestMethod.POST)
120
-    public ResponseBean taUserAdd(@RequestBody TaUser taUser){
144
+    public ResponseBean taUserAdd(@RequestBody TaUser taUser, HttpServletRequest request){
121 145
         ResponseBean responseBean = new ResponseBean();
146
+        Integer channelId = getChannelId(request);
122 147
         try {
123
-            responseBean.addSuccess(iTaUserService.newUserAndOrg(taUser));
148
+            responseBean.addSuccess(iTaUserService.newUserAndOrg(taUser, channelId));
124 149
         }catch (Exception e){
125 150
             e.printStackTrace();
126 151
             logger.error("taUserAdd -=- {}",e.toString());
@@ -224,7 +249,7 @@ public class TaUserController extends BaseController {
224 249
 
225 250
     /**
226 251
      * 业务端  修改密码
227
-     * @return
252
+     * @return/
228 253
      */
229 254
     @PutMapping(value = "/admin/update/password")
230 255
     public ResponseBean updatePassword( @RequestParam String originalPassword,
@@ -314,7 +339,7 @@ public class TaUserController extends BaseController {
314 339
         }
315 340
     
316 341
         if (!taUser.getStatus().equals(CommConstant.STATUS_NORMAL) ) {
317
-            return ResponseBean.error("用户状态异常", ResponseBean.ERROR_UNAVAILABLE);
342
+            return ResponseBean.error("当前后台服务已到期,请联系相关管理人员", ResponseBean.ERROR_UNAVAILABLE);
318 343
         }
319 344
 
320 345
         List<TaRole> roles = iTaRoleService.getRolesByUser(taUser.getUserId());

+ 12
- 0
src/main/java/com/huiju/estateagents/center/taUser/entity/TaUser.java ファイルの表示

@@ -201,4 +201,16 @@ public class TaUser implements Serializable {
201 201
 
202 202
     @TableField(exist = false)
203 203
     private List<String> buildingIds = new ArrayList<String>();
204
+
205
+    /**
206
+     * 新密码
207
+     */
208
+    @TableField(exist = false)
209
+    private String newPassword;
210
+
211
+    /**
212
+     * 确认新密码
213
+     */
214
+    @TableField(exist = false)
215
+    private String confirmPassword;
204 216
 }

+ 1
- 1
src/main/java/com/huiju/estateagents/center/taUser/mapper/TaUserMapper.java ファイルの表示

@@ -22,7 +22,7 @@ import java.util.Map;
22 22
 @Mapper
23 23
 public interface TaUserMapper extends BaseMapper<TaUser> {
24 24
 	
25
-	List<Map<String,Object>> getPageList(IPage<TaUser> pg);
25
+	List<Map<String,Object>> getPageList(IPage<TaUser> pg, @Param("channelId") Integer channelId);
26 26
 	
27 27
 	List<TaTags> getTagsList(@Param("userId") Integer userId,@Param("orgId") Integer orgId);
28 28
 	

+ 2
- 2
src/main/java/com/huiju/estateagents/center/taUser/service/ITaUserService.java ファイルの表示

@@ -20,9 +20,9 @@ import java.util.Map;
20 20
  */
21 21
 public interface ITaUserService extends IService<TaUser> {
22 22
 	
23
-	IPage<Map<String,Object>> getPageList(IPage<TaUser> pg);
23
+	IPage<Map<String,Object>> getPageList(IPage<TaUser> pg, Integer channelId);
24 24
 
25
-    TaUser newUserAndOrg(TaUser taUser) throws Exception;
25
+    TaUser newUserAndOrg(TaUser taUser, Integer channelId) throws Exception;
26 26
 
27 27
     TaUser getInfoWithOrg(Integer id);
28 28
 

+ 50
- 7
src/main/java/com/huiju/estateagents/center/taUser/service/impl/TaUserServiceImpl.java ファイルの表示

@@ -14,6 +14,8 @@ import com.huiju.estateagents.center.taUser.mapper.TaTagUserMapper;
14 14
 import com.huiju.estateagents.center.taUser.mapper.TaUserMapper;
15 15
 import com.huiju.estateagents.center.taUser.mapper.TaUserRoleMapper;
16 16
 import com.huiju.estateagents.center.taUser.service.ITaUserService;
17
+import com.huiju.estateagents.channel.sysChannel.entity.TaChannelProxy;
18
+import com.huiju.estateagents.channel.sysChannel.mapper.TaChannelProxyMapper;
17 19
 import com.huiju.estateagents.common.CommConstant;
18 20
 import com.huiju.estateagents.common.MD5Utils;
19 21
 import com.huiju.estateagents.common.StringUtils;
@@ -21,11 +23,13 @@ import com.huiju.estateagents.entity.*;
21 23
 import com.huiju.estateagents.mapper.*;
22 24
 import com.huiju.estateagents.service.*;
23 25
 import org.apache.commons.collections.CollectionUtils;
26
+import org.apache.commons.collections.map.HashedMap;
24 27
 import org.springframework.beans.factory.annotation.Autowired;
25 28
 import org.springframework.stereotype.Service;
26 29
 
27 30
 import java.time.LocalDateTime;
28 31
 import java.util.ArrayList;
32
+import java.util.Iterator;
29 33
 import java.util.List;
30 34
 import java.util.Map;
31 35
 import java.util.stream.Collectors;
@@ -88,16 +92,34 @@ public class TaUserServiceImpl extends ServiceImpl<TaUserMapper, TaUser> impleme
88 92
 
89 93
 	@Autowired
90 94
 	private ISysOrgParamsService iSysOrgParamsService;
91
-	
95
+
96
+	@Autowired
97
+	private TaChannelAppRelationMapper taChannelAppRelationMapper;
98
+
99
+	@Autowired
100
+	private TaChannelProxyMapper taChannelProxyMapper;
101
+
92 102
 	@Override
93
-	public IPage<Map<String,Object>> getPageList(IPage pg) {
94
-		List<Map<String,Object>> taUserList = taUserMapper.getPageList(pg);
103
+	public IPage<Map<String,Object>> getPageList(IPage pg, Integer channelId) {
104
+		List<Map<String,Object>> taUserList = taUserMapper.getPageList(pg, channelId);
105
+
106
+		for (Map map : taUserList){
107
+			if (map.get("orgId") == null){
108
+				map.put("userCount", 0);
109
+				map.put("registeredCount", 0);
110
+				continue;
111
+			}
112
+			Integer userCount = taPersonMapper.selectChannelUserCount(map.get("orgId").toString());
113
+			Integer registeredCount = taPersonMapper.selectChannelRegisteredCount(map.get("orgId").toString());
114
+			map.put("userCount", userCount);
115
+			map.put("registeredCount", registeredCount);
116
+		}
95 117
 		pg.setRecords(taUserList);
96 118
 		return pg;
97 119
 	}
98 120
 
99 121
 	@Override
100
-	public TaUser newUserAndOrg(TaUser taUser) throws Exception {
122
+	public TaUser newUserAndOrg(TaUser taUser, Integer channelId) throws Exception {
101 123
 		if (StringUtils.isEmpty(taUser.getPhone())) {
102 124
 			throw new Exception("电话号码不能为空");
103 125
 		}
@@ -119,6 +141,18 @@ public class TaUserServiceImpl extends ServiceImpl<TaUserMapper, TaUser> impleme
119 141
 			throw new Exception("电话号码或登录名重复");
120 142
 		}
121 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
+
122 156
 		// 先插入 org
123 157
 		TaOrg taOrg = new TaOrg();
124 158
 		taOrg.setName(taUser.getOrgName());
@@ -130,6 +164,13 @@ public class TaUserServiceImpl extends ServiceImpl<TaUserMapper, TaUser> impleme
130 164
 			throw new Exception("生成用户公司信息失败");
131 165
 		}
132 166
 
167
+		//维护渠道和小程序关系
168
+		TaChannelAppRelation taChannelAppRelation = new TaChannelAppRelation();
169
+		taChannelAppRelation.setChannelId(channelId);
170
+		taChannelAppRelation.setOrgId(taOrg.getOrgId());
171
+		taChannelAppRelation.setCreateTime(LocalDateTime.now());
172
+		taChannelAppRelationMapper.insert(taChannelAppRelation);
173
+
133 174
 		// 维护当前城市所在城市
134 175
 		addAndupdate(taUser.getSelectCityTree(),false,taOrg.getOrgId());
135 176
 
@@ -294,9 +335,11 @@ public class TaUserServiceImpl extends ServiceImpl<TaUserMapper, TaUser> impleme
294 335
 		Integer status = isOn ? CommConstant.STATUS_NORMAL : CommConstant.STATUS_CLOSED;
295 336
 		TaUser user = new TaUser();
296 337
 		user.setStatus(status);
297
-		user.setUserId(id);
298 338
 
299
-		if (!this.updateById(user)) {
339
+		QueryWrapper<TaUser> taUserQueryWrapper = new QueryWrapper<>();
340
+		taUserQueryWrapper.eq("org_id", taUserMapper.selectById(id).getOrgId());
341
+
342
+		if (!this.update(user, taUserQueryWrapper)) {
300 343
 			throw new Exception("开启或禁用用户失败");
301 344
 		}
302 345
 	}
@@ -336,7 +379,7 @@ public class TaUserServiceImpl extends ServiceImpl<TaUserMapper, TaUser> impleme
336 379
 			taUser.setLoginName(taUser.getPhone());
337 380
 		}
338 381
 		
339
-		List<TaUser> taUserList = taUserMapper.getUserList(taUser.getPhone(),taUser.getLoginName(),taUser.getOrgId());
382
+		List<TaUser> taUserList = taUserMapper.getUserList(taUser.getPhone(),taUser.getLoginName(),null);
340 383
 		if (null != taUserList && taUserList.size() > 0) {
341 384
 			throw new Exception("电话号码或登录名重复");
342 385
 		}

+ 289
- 0
src/main/java/com/huiju/estateagents/channel/sysChannel/controller/SysUserChannelController.java ファイルの表示

@@ -0,0 +1,289 @@
1
+package com.huiju.estateagents.channel.sysUser.controller;
2
+
3
+import com.alibaba.fastjson.JSONObject;
4
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
+import com.baomidou.mybatisplus.core.metadata.IPage;
6
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7
+import com.huiju.estateagents.base.BaseController;
8
+import com.huiju.estateagents.base.ResponseBean;
9
+import com.huiju.estateagents.center.sysUser.entity.SysToken;
10
+import com.huiju.estateagents.center.sysUser.entity.SysUser;
11
+import com.huiju.estateagents.center.sysUser.service.ISysTokenService;
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;
15
+import com.huiju.estateagents.channel.sysChannel.entity.TaChannelProxy;
16
+import com.huiju.estateagents.channel.sysChannel.service.ITaChannelProxyService;
17
+import com.huiju.estateagents.common.CommConstant;
18
+import com.huiju.estateagents.common.JWTUtils;
19
+import com.huiju.estateagents.common.MD5Utils;
20
+import com.huiju.estateagents.common.StringUtils;
21
+import com.huiju.estateagents.entity.TaChannelAppRelation;
22
+import com.huiju.estateagents.service.ITaChannelAppRelationService;
23
+import org.apache.commons.collections.CollectionUtils;
24
+import org.slf4j.Logger;
25
+import org.slf4j.LoggerFactory;
26
+import org.springframework.beans.factory.annotation.Autowired;
27
+import org.springframework.web.bind.annotation.*;
28
+
29
+import javax.servlet.http.HttpServletRequest;
30
+import java.time.LocalDateTime;
31
+import java.util.ArrayList;
32
+import java.util.HashMap;
33
+import java.util.List;
34
+import java.util.Map;
35
+
36
+/**
37
+ * <p>
38
+    * 系统用户 系统中心账户 前端控制器
39
+    * </p>
40
+ *
41
+ * @author jobob
42
+ * @since 2019-09-11
43
+ */
44
+@RestController
45
+@RequestMapping("/api")
46
+public class SysUserChannelController extends BaseController {
47
+
48
+    private final Logger logger = LoggerFactory.getLogger(SysUserChannelController.class);
49
+
50
+    @Autowired
51
+    public ISysUserService iSysUserService;
52
+    
53
+    @Autowired
54
+    private ISysTokenService sysTokenService;
55
+
56
+    @Autowired
57
+    private ITaUserService iTaUserService;
58
+
59
+    @Autowired
60
+    private ITaChannelProxyService iTaChannelProxyService;
61
+
62
+    @Autowired
63
+    private ITaChannelAppRelationService iTaChannelAppRelationService;
64
+
65
+    /**
66
+     * 修改对象
67
+     * @param sysUser 实体对象
68
+     * @return
69
+     */
70
+    @RequestMapping(value="/channel/sysUser",method= RequestMethod.PUT)
71
+    public ResponseBean sysUserUpdate(@RequestBody SysUser sysUser, HttpServletRequest request){
72
+        ResponseBean responseBean = new ResponseBean();
73
+        try {
74
+            String userName = JWTUtils.getSubject(request);
75
+            sysUser.setPassword(MD5Utils.md5(sysUser.getPassword()));
76
+            sysUser.setUserName(userName);
77
+            if (iSysUserService.updateById(sysUser)){
78
+                responseBean.addSuccess(sysUser);
79
+            }else {
80
+                responseBean.addError("fail");
81
+            }
82
+        }catch (Exception e){
83
+            e.printStackTrace();
84
+            logger.error("sysUserUpdate -=- {}",e.toString());
85
+            responseBean.addError(e.getMessage());
86
+        }
87
+        return responseBean;
88
+    }
89
+
90
+    @PostMapping("/channel/signin")
91
+    public ResponseBean signinChannel(@RequestBody String paramStr) {
92
+        JSONObject params = JSONObject.parseObject(paramStr);
93
+        if (params == null) {
94
+            return ResponseBean.error("非法参数", ResponseBean.ERROR_MISSING_PARAMS);
95
+        }
96
+
97
+        String userName = params.getString("userName");
98
+        String userPassword = params.getString("password");
99
+
100
+        //验证用户名密码是否正确
101
+        QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
102
+        sysUserQueryWrapper.eq("user_name",userName);
103
+        sysUserQueryWrapper.eq("password", MD5Utils.md5(userPassword));
104
+        sysUserQueryWrapper.eq("type", CommConstant.LOGIN_TYPE_CHANNEL);
105
+        SysUser sysUser = iSysUserService.getOne(sysUserQueryWrapper);
106
+        if (sysUser == null) {
107
+            return ResponseBean.error("用户名或密码错误", ResponseBean.ERROR_ILLEGAL_PARAMS);
108
+        }
109
+
110
+        if (sysUser.getStatus() != CommConstant.STATUS_NORMAL) {
111
+            return ResponseBean.error("用户状态异常", ResponseBean.ERROR_UNAVAILABLE);
112
+        }
113
+
114
+        String token = JWTUtils.newToken(sysUser.getUserName());
115
+
116
+        //保存token
117
+        sysTokenService.saveToken(token);
118
+
119
+        Map<String, Object> result = new HashMap<>();
120
+        result.put("token", token);
121
+        result.put("user", sysUser);
122
+
123
+        return ResponseBean.success(result);
124
+    }
125
+
126
+    @PostMapping("/channel/signout")
127
+    public ResponseBean signoutChannel(HttpServletRequest request) {
128
+        String token = JWTUtils.getToken(request);
129
+        QueryWrapper<SysToken> sysTokenQueryWrapper = new QueryWrapper<>();
130
+        sysTokenQueryWrapper.eq("token",token);
131
+        sysTokenService.remove(sysTokenQueryWrapper);
132
+        return ResponseBean.success("成功退出");
133
+    }
134
+
135
+    /**
136
+     * 根据id查询对象
137
+     * @param id  实体ID
138
+     */
139
+    @RequestMapping(value="/channel/current",method=RequestMethod.GET)
140
+    public ResponseBean currentChannelUser(HttpServletRequest request){
141
+        String userName = JWTUtils.getSubject(request);
142
+        QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
143
+        sysUserQueryWrapper.eq("user_name",userName);
144
+        sysUserQueryWrapper.eq("type",CommConstant.LOGIN_TYPE_CHANNEL);
145
+        SysUser sysUser = iSysUserService.getOne(sysUserQueryWrapper);
146
+        sysUser.setPassword(null);
147
+
148
+        return ResponseBean.success(sysUser);
149
+    }
150
+
151
+    /**
152
+     * 分页查询列表
153
+     * @param pageNum
154
+     * @param pageSize
155
+     * @return
156
+     */
157
+    @RequestMapping(value="/channel/taChannel",method= RequestMethod.GET)
158
+    public ResponseBean taUserList(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
159
+                                   @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
160
+        ResponseBean responseBean = new ResponseBean();
161
+        try {
162
+            //使用分页插件
163
+            IPage pg = new Page<>(pageNum, pageSize);
164
+            IPage<TaChannelProxy> result = iTaChannelProxyService.getChannelList(pg);
165
+            responseBean.addSuccess(result);
166
+        }catch (Exception e){
167
+            e.printStackTrace();
168
+            logger.error("taUserList -=- {}",e.toString());
169
+            responseBean.addError(e.getMessage());
170
+        }
171
+        return responseBean;
172
+    }
173
+
174
+    /**
175
+     * 新增代理商
176
+     * @param taChannelProxy
177
+     * @param request
178
+     * @return
179
+     */
180
+    @RequestMapping(value="/channel/taChannel",method= RequestMethod.POST)
181
+    public ResponseBean taUserList(@RequestBody TaChannelProxy taChannelProxy, HttpServletRequest request){
182
+        ResponseBean responseBean = new ResponseBean();
183
+        try {
184
+            if (taChannelProxy.getAppMaxNum() != null && taChannelProxy.getAppMaxNum() <= 0){
185
+                responseBean.addError("维护小程序数量不得小于0");
186
+                return responseBean;
187
+            }
188
+            if (StringUtils.isEmpty(taChannelProxy.getUserName())){
189
+                taChannelProxy.setUserName(taChannelProxy.getChannelTel());
190
+            }
191
+
192
+            QueryWrapper<TaChannelProxy> userNameQueryWrapper = new QueryWrapper<>();
193
+            userNameQueryWrapper.eq("user_name", taChannelProxy.getUserName());
194
+            Integer countUserName = iTaChannelProxyService.count(userNameQueryWrapper);
195
+            if (countUserName > 0){
196
+                responseBean.addError("账户名已存在");
197
+                return responseBean;
198
+            }
199
+
200
+
201
+            QueryWrapper<TaChannelProxy> taChannelProxyQueryWrapper = new QueryWrapper<>();
202
+            taChannelProxyQueryWrapper.eq("channel_tel", taChannelProxy.getChannelTel());
203
+            Integer countChannel = iTaChannelProxyService.count(taChannelProxyQueryWrapper);
204
+            if (countChannel > 0){
205
+                responseBean.addError("手机号已存在");
206
+                return responseBean;
207
+            }
208
+            taChannelProxy.setPassword(MD5Utils.md5(MD5Utils.md5("abc@123")));
209
+            taChannelProxy.setStatus(1);
210
+            taChannelProxy.setCreateTime(LocalDateTime.now());
211
+            iTaChannelProxyService.save(taChannelProxy);
212
+        }catch (Exception e){
213
+            e.printStackTrace();
214
+            logger.error("taUserList -=- {}",e.toString());
215
+            responseBean.addError(e.getMessage());
216
+        }
217
+        return responseBean;
218
+    }
219
+
220
+    /**
221
+     * 根据id查询对象
222
+     * @param id  实体ID
223
+     */
224
+    @RequestMapping(value="/channel/taChannel/{id}",method= RequestMethod.GET)
225
+    public ResponseBean getChannelProxyById(@PathVariable Integer id){
226
+        ResponseBean responseBean = new ResponseBean();
227
+        QueryWrapper<TaChannelProxy> queryWrapper = new QueryWrapper<>();
228
+        queryWrapper.eq("channel_id", id);
229
+        TaChannelProxy taChannelProxy = iTaChannelProxyService.getOne(queryWrapper);
230
+        responseBean.addSuccess(taChannelProxy);
231
+        return responseBean;
232
+    }
233
+
234
+    /**
235
+     * 修改对象
236
+     * @param id
237
+     * @param taChannelProxy
238
+     * @param request
239
+     * @return
240
+     */
241
+    @RequestMapping(value="/channel/taChannel/{id}",method= RequestMethod.PUT)
242
+    public ResponseBean taNewsTypeUpdate(@PathVariable Integer id,
243
+                                         @RequestBody TaChannelProxy taChannelProxy, HttpServletRequest request){
244
+        ResponseBean responseBean = new ResponseBean();
245
+        if (taChannelProxy.getAppMaxNum() != null && taChannelProxy.getAppMaxNum() <= 0){
246
+            responseBean.addError("维护小程序数量不得小于0");
247
+            return responseBean;
248
+        }
249
+
250
+        if (StringUtils.isEmpty(taChannelProxy.getUserName())){
251
+            taChannelProxy.setUserName(taChannelProxy.getChannelTel());
252
+        }
253
+
254
+        QueryWrapper<TaChannelProxy> userNameQueryWrapper = new QueryWrapper<>();
255
+        userNameQueryWrapper.eq("user_name", taChannelProxy.getUserName());
256
+        userNameQueryWrapper.ne("channel_id", id);
257
+        Integer countUserName = iTaChannelProxyService.count(userNameQueryWrapper);
258
+        if (countUserName > 0){
259
+            responseBean.addError("账户名已存在");
260
+            return responseBean;
261
+        }
262
+
263
+        taChannelProxy.setExpireDate(taChannelProxy.getExpireDate().plusDays(1L));
264
+        //更新业务层的登录账号为禁用
265
+        if (taChannelProxy.getStatus() != null){
266
+            QueryWrapper<TaChannelAppRelation> taChannelAppRelationQueryWrapper = new QueryWrapper<>();
267
+            taChannelAppRelationQueryWrapper.eq("channel_id", id);
268
+            List<TaChannelAppRelation> taChannelAppRelation = iTaChannelAppRelationService.list(taChannelAppRelationQueryWrapper);
269
+            List<Integer> orgIdList = new ArrayList<>();
270
+            taChannelAppRelation.forEach(e->{
271
+                orgIdList.add(e.getOrgId());
272
+            });
273
+            if (CollectionUtils.isNotEmpty(orgIdList)){
274
+                QueryWrapper<TaUser> taUserQueryWrapper = new QueryWrapper<>();
275
+                taUserQueryWrapper.in("org_id", orgIdList);
276
+                TaUser taUser = new TaUser();
277
+                taUser.setStatus(taChannelProxy.getStatus());
278
+                iTaUserService.update(taUser, taUserQueryWrapper);
279
+            }
280
+
281
+        }
282
+
283
+        QueryWrapper<TaChannelProxy> taChannelProxyQueryWrapper = new QueryWrapper<>();
284
+        taChannelProxyQueryWrapper.eq("channel_id", id);
285
+        iTaChannelProxyService.update(taChannelProxy, taChannelProxyQueryWrapper);
286
+        return ResponseBean.success("更新成功");
287
+    }
288
+
289
+}

+ 41
- 0
src/main/java/com/huiju/estateagents/channel/sysChannel/entity/TaChannelProxy.java ファイルの表示

@@ -0,0 +1,41 @@
1
+package com.huiju.estateagents.channel.sysChannel.entity;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableField;
5
+import com.baomidou.mybatisplus.annotation.TableId;
6
+import lombok.Data;
7
+import lombok.EqualsAndHashCode;
8
+import lombok.experimental.Accessors;
9
+
10
+import java.time.LocalDateTime;
11
+
12
+@Data
13
+@EqualsAndHashCode(callSuper = false)
14
+@Accessors(chain = true)
15
+public class TaChannelProxy {
16
+    @TableId(value = "channel_id", type = IdType.AUTO)
17
+    private Integer channelId;
18
+
19
+    private String channelProxyName;
20
+
21
+    private String channelImg;
22
+
23
+    private String channelContactName;
24
+
25
+    private String channelTel;
26
+
27
+    private String userName;
28
+
29
+    private String password;
30
+
31
+    private LocalDateTime expireDate;
32
+
33
+    private Integer status;
34
+
35
+    private Integer appMaxNum;
36
+
37
+    private LocalDateTime createTime;
38
+
39
+    @TableField(exist = false)
40
+    private Integer appCurrentNum;
41
+}

+ 12
- 0
src/main/java/com/huiju/estateagents/channel/sysChannel/mapper/TaChannelProxyMapper.java ファイルの表示

@@ -0,0 +1,12 @@
1
+package com.huiju.estateagents.channel.sysChannel.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.baomidou.mybatisplus.core.metadata.IPage;
5
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6
+import com.huiju.estateagents.channel.sysChannel.entity.TaChannelProxy;
7
+import org.apache.ibatis.annotations.Mapper;
8
+
9
+@Mapper
10
+public interface TaChannelProxyMapper extends BaseMapper<TaChannelProxy> {
11
+    IPage<TaChannelProxy> getChannelList(IPage page);
12
+}

+ 12
- 0
src/main/java/com/huiju/estateagents/channel/sysChannel/service/ITaChannelProxyService.java ファイルの表示

@@ -0,0 +1,12 @@
1
+package com.huiju.estateagents.channel.sysChannel.service;
2
+
3
+import com.baomidou.mybatisplus.core.metadata.IPage;
4
+import com.baomidou.mybatisplus.extension.service.IService;
5
+import com.huiju.estateagents.channel.sysChannel.entity.TaChannelProxy;
6
+
7
+
8
+public interface ITaChannelProxyService extends IService<TaChannelProxy> {
9
+    IPage<TaChannelProxy> getChannelList(IPage page);
10
+
11
+    void resetPassword(Integer id, String newPass) throws Exception;
12
+}

+ 57
- 0
src/main/java/com/huiju/estateagents/channel/sysChannel/service/impl/TaChannelProxyServiceImpl.java ファイルの表示

@@ -0,0 +1,57 @@
1
+package com.huiju.estateagents.channel.sysChannel.service.impl;
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7
+import com.huiju.estateagents.center.taUser.entity.TaUser;
8
+import com.huiju.estateagents.channel.sysChannel.entity.TaChannelProxy;
9
+import com.huiju.estateagents.channel.sysChannel.mapper.TaChannelProxyMapper;
10
+import com.huiju.estateagents.channel.sysChannel.service.ITaChannelProxyService;
11
+import com.huiju.estateagents.common.MD5Utils;
12
+import com.huiju.estateagents.entity.TaChannelAppRelation;
13
+import com.huiju.estateagents.mapper.TaChannelAppRelationMapper;
14
+import org.apache.commons.collections.CollectionUtils;
15
+import org.springframework.beans.factory.annotation.Autowired;
16
+import org.springframework.stereotype.Service;
17
+
18
+@Service
19
+public class TaChannelProxyServiceImpl extends ServiceImpl<TaChannelProxyMapper, TaChannelProxy>  implements ITaChannelProxyService {
20
+    @Autowired
21
+    private TaChannelProxyMapper taChannelProxyMapper;
22
+
23
+    @Autowired
24
+    private TaChannelAppRelationMapper taChannelAppRelationMapper;
25
+
26
+    @Override
27
+    public IPage<TaChannelProxy> getChannelList(IPage page) {
28
+        IPage<TaChannelProxy> taChannelProxyIPage = taChannelProxyMapper.getChannelList(page);
29
+        if (CollectionUtils.isNotEmpty(taChannelProxyIPage.getRecords())){
30
+            taChannelProxyIPage.getRecords().forEach(e->{
31
+                QueryWrapper<TaChannelAppRelation> taChannelAppRelationQueryWrapper = new QueryWrapper<>();
32
+                taChannelAppRelationQueryWrapper.eq("channel_id", e.getChannelId());
33
+                taChannelAppRelationQueryWrapper.groupBy("channel_id");
34
+                e.setAppCurrentNum(taChannelAppRelationMapper.selectCount(taChannelAppRelationQueryWrapper));
35
+            });
36
+            taChannelProxyIPage.setRecords(taChannelProxyIPage.getRecords());
37
+        }
38
+        return taChannelProxyIPage;
39
+    }
40
+
41
+    @Override
42
+    public void resetPassword(Integer id, String newPass) throws Exception {
43
+        TaChannelProxy taChannelProxy = this.getById(id);
44
+        if (null == taChannelProxy) {
45
+            throw new Exception("未找到有效的渠道信息");
46
+        }
47
+
48
+        String encryptPass = MD5Utils.md5(MD5Utils.md5(newPass));
49
+        TaChannelProxy proxy = new TaChannelProxy();
50
+        proxy.setPassword(encryptPass);
51
+        proxy.setChannelId(id);
52
+
53
+        if (!this.updateById(proxy)) {
54
+            throw new Exception("重置渠道密码失败");
55
+        }
56
+    }
57
+}

+ 47
- 1
src/main/java/com/huiju/estateagents/common/CommConstant.java ファイルの表示

@@ -135,7 +135,7 @@ public class CommConstant {
135 135
      */
136 136
     public final static String MINIAPP_INDEX = "/index/index";
137 137
 
138
-    public final static String MINIAPP_DEFAULT_AVATAR = "https://estateagents.oss-cn-shanghai.aliyuncs.com/miniapp/upload/images/default_avatar.jpg";
138
+    public final static String MINIAPP_DEFAULT_AVATAR = "https://njcj.oss-cn-shanghai.aliyuncs.com/miniapp/upload/images/default_avatar.jpg";
139 139
 
140 140
 
141 141
     /**
@@ -440,6 +440,7 @@ public class CommConstant {
440 440
 	public static final Object GROUP_ACTIVITY = "groupActivity";
441 441
 	public static final String TARGET_TYPE_H5 = "H5";
442 442
     public static final String ACTIVITY_QRCODE = "{\"scene\":\"id=#0&type=#1\",\"page\":\"pages/checkin/index\"}";
443
+    public static final String DRAINAGE_QRCODE = "{\"scene\":\"id=#0&type=#1\",\"page\":\"pages/project/h5Page\"}";
443 444
     
444 445
     /**
445 446
      * 消息通知
@@ -541,4 +542,49 @@ public class CommConstant {
541 542
      */
542 543
     public static final String MESSAGE_TYPE_OF_MINIAPP_TEMPLATE = "miniapp_template";
543 544
 
545
+    /**
546
+     * 进入小程序
547
+     */
548
+    public static final String BIZ_EVENT_START = "start";
549
+
550
+    /**
551
+     * 登录渠道端系统类型
552
+     */
553
+    public static final String LOGIN_TYPE_CHANNEL = "channel";
554
+
555
+    /**
556
+     * 登录中心端系统类型
557
+     */
558
+    public static final String LOGIN_TYPE_CENTER = "center";
559
+
560
+    /**
561
+     * 查看分享者活动类型 h5
562
+     */
563
+    public static final String H5_SHARE = "h5_share";
564
+
565
+    /**
566
+     * 查看分享者活动类型 拼团
567
+     */
568
+    public static final String GROUP_SHARE = "group_share";
569
+
570
+    /**
571
+     * 查看分享者活动类型 助力
572
+     */
573
+    public static final String HELP_SHARE = "help_share";
574
+
575
+    /**
576
+     * 查看分享者活动类型 活动
577
+     */
578
+    public static final String DYNAMIC_SHARE = "dynamic_share";
579
+
580
+    /**
581
+     * 户型
582
+     */
583
+    public static final String APARTMENT_TYPR_APART = "apart";
584
+
585
+    /**
586
+     * 户型全景图
587
+     */
588
+    public static final String PANORAMA_TYPE_APARTMENT = "apartment";
589
+
544 590
 }

+ 13
- 7
src/main/java/com/huiju/estateagents/controller/ExtendContentController.java ファイルの表示

@@ -18,16 +18,11 @@ import io.swagger.annotations.ApiImplicitParams;
18 18
 import io.swagger.annotations.ApiOperation;
19 19
 import jodd.util.StringUtil;
20 20
 import org.apache.commons.lang3.StringUtils;
21
+import org.apache.ibatis.annotations.Param;
21 22
 import org.slf4j.Logger;
22 23
 import org.slf4j.LoggerFactory;
23 24
 import org.springframework.beans.factory.annotation.Autowired;
24
-import org.springframework.web.bind.annotation.PathVariable;
25
-import org.springframework.web.bind.annotation.RequestBody;
26
-import org.springframework.web.bind.annotation.RequestMapping;
27
-import org.springframework.web.bind.annotation.RequestMethod;
28
-import org.springframework.web.bind.annotation.RequestParam;
29
-import org.springframework.web.bind.annotation.ResponseBody;
30
-import org.springframework.web.bind.annotation.RestController;
25
+import org.springframework.web.bind.annotation.*;
31 26
 
32 27
 import javax.servlet.http.HttpServletRequest;
33 28
 import java.time.LocalDateTime;
@@ -156,6 +151,17 @@ public class ExtendContentController extends BaseController {
156 151
         return responseBean;
157 152
     }
158 153
 
154
+    /**
155
+     * 针对首屏优化, 获取一些 banner, 开屏等配置
156
+     * @param cityId
157
+     * @param request
158
+     * @return
159
+     */
160
+    @GetMapping("/wx/extendContent")
161
+    public ResponseBean extendContentListOfWX(@RequestParam(value = "cityId") Integer cityId, HttpServletRequest request) {
162
+        return iExtendContentService.selectExtendContentListShowType(null, null, null,null, null, null, cityId,getOrgId(request));
163
+    }
164
+
159 165
 
160 166
     /**
161 167
      * 保存对象

+ 110
- 11
src/main/java/com/huiju/estateagents/controller/MiniAppController.java ファイルの表示

@@ -16,12 +16,14 @@ import com.huiju.estateagents.common.CommConstant;
16 16
 import com.huiju.estateagents.common.WxUtils;
17 17
 import com.huiju.estateagents.entity.*;
18 18
 import com.huiju.estateagents.event.EventBus;
19
+import com.huiju.estateagents.mapper.TaOrgCityMapper;
19 20
 import com.huiju.estateagents.mapper.TaShareMapper;
20 21
 import com.huiju.estateagents.service.*;
21 22
 import com.huiju.estateagents.common.JWTUtils;
22 23
 import com.huiju.estateagents.third.entity.TaThirdPartyMiniappConfig;
23 24
 import com.huiju.estateagents.third.service.ITaThirdPartyMiniappConfigService;
24 25
 import me.chanjar.weixin.common.error.WxErrorException;
26
+import net.bytebuddy.asm.Advice;
25 27
 import org.apache.commons.collections.CollectionUtils;
26 28
 import org.apache.commons.lang3.StringUtils;
27 29
 import org.apache.http.HttpStatus;
@@ -82,6 +84,17 @@ public class MiniAppController extends BaseController {
82 84
     @Autowired
83 85
     private ITaCustomImgService iTaCustomImgService;
84 86
 
87
+    @Autowired
88
+    public ITdPointsRulesService iTdPointsRulesService;
89
+
90
+    @Autowired
91
+    public ITaMiniappService iTaMiniappService;
92
+
93
+    @Autowired
94
+    public TaOrgCityMapper taOrgCityMapper;
95
+
96
+    @Autowired
97
+    public ITdCityService iTdCityService;
85 98
 
86 99
     /**
87 100
      * 验证接入
@@ -94,6 +107,60 @@ public class MiniAppController extends BaseController {
94 107
         return echostr;
95 108
     }
96 109
 
110
+
111
+    /**
112
+     * 小程序数据预拉取 https://developers.weixin.qq.com/miniprogram/dev/framework/ability/pre-fetch.html
113
+     * @param appid
114
+     * @param timestamp
115
+     * @param token
116
+     * @param code
117
+     * @param path
118
+     * @param query
119
+     * @param scene
120
+     * @return
121
+     */
122
+    @GetMapping("/preload")
123
+    public ResponseBean getPreloadData(
124
+            @RequestParam(name = "appid") String appid,
125
+            @RequestParam(name = "timestamp") Long timestamp,
126
+            String token,
127
+            String code,
128
+            String path,
129
+            String query,
130
+            Integer scene
131
+    ) {
132
+        // 获取小程序信息
133
+        TaMiniapp taMiniapp = iTaMiniappService.getInfoWithTpls(appid);
134
+        if (null == taMiniapp) {
135
+            return ResponseBean.error("当前 appid 未在系统内注册", ResponseBean.ERROR_ILLEGAL_PARAMS);
136
+        }
137
+
138
+        // 获取组织信息
139
+        TaOrg taOrg = taOrgService.getById(taMiniapp.getOrgId());
140
+        if (null == taOrg) {
141
+            return ResponseBean.error("当前 appid 未设置对应组织", ResponseBean.ERROR_UNAVAILABLE);
142
+        }
143
+
144
+        // 获取城市列表
145
+        QueryWrapper<TaOrgCity> queryCity = new QueryWrapper<>();
146
+        queryCity.eq("id", taOrg.getOrgId());
147
+        queryCity.eq("status", CommConstant.STATUS_NORMAL);
148
+        List<TaOrgCity> taOrgCityList = taOrgCityMapper.selectList(queryCity);
149
+
150
+        // 获取默认扩展设置
151
+        QueryWrapper<TaCustomImg> queryExt = new QueryWrapper<>();
152
+        queryExt.eq("org_id", taOrg.getOrgId());
153
+        queryExt.eq("status", CommConstant.STATUS_NORMAL);
154
+        List<TaCustomImg> taCustomImg = iTaCustomImgService.list(queryExt);
155
+
156
+        return ResponseBean.success(new HashMap<String, Object>(){{
157
+            put("miniapp", taMiniapp);
158
+            put("org", taOrg);
159
+            put("cityList", taOrgCityList);
160
+            put("customImg", taCustomImg);
161
+        }});
162
+    }
163
+
97 164
     /**
98 165
      * 登陆接口
99 166
      */
@@ -101,8 +168,10 @@ public class MiniAppController extends BaseController {
101 168
     public ResponseBean login(
102 169
             String code,
103 170
             @RequestParam(required = false) String from,
104
-            @RequestParam(required = false)String recommender,
105
-            @RequestParam(required = false)String targetId,
171
+            @RequestParam(required = false) String recommender,
172
+            @RequestParam(required = false) String targetId,
173
+            @RequestParam(required = false) String lon,
174
+            @RequestParam(required = false) String lat,
106 175
             HttpServletRequest request) {
107 176
         String appid = request.getHeader("appid");
108 177
 
@@ -130,15 +199,21 @@ public class MiniAppController extends BaseController {
130 199
             personQueryWrapper.eq("org_id",orgId);
131 200
             int count = taPersonService.count(personQueryWrapper);
132 201
 
133
-            if(null!=from&&from.contains("share") && StringUtils.isNotBlank(recommender) && count>0){
134
-                // 添加积分
135
-                 applicationContext.publishEvent(new EventBus(recommender, EventBus.EventType.SharePosterAll, orgId));
136
-            }
137
-
138 202
             TaPerson taPerson = taPersonService.newPersonByOpenid(session.getOpenid(), orgId);
139 203
             if (null == taPerson) {
140 204
                 return ResponseBean.error("发生未知错误", ResponseBean.ERROR_UNAVAILABLE);
141 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
+
142 217
             Map<Object,Object> map = new HashMap<>();
143 218
             map.put("openId",session.getOpenid());
144 219
             map.put("orgId",orgId);
@@ -175,7 +250,8 @@ public class MiniAppController extends BaseController {
175 250
                 QueryWrapper<TaSharePersonFrom> sharePersonFromQueryWrapper = new QueryWrapper<>();
176 251
                 sharePersonFromQueryWrapper.eq("person_id",taPerson.getPersonId());
177 252
                 if(from.equals("dynamic_share")){ // activity_share
178
-                    taSharePersonFrom.setStatus(CommConstant.STATUS_UNACCALIMED);
253
+                    //产品不认了
254
+                    taSharePersonFrom.setStatus(CommConstant.STATUS_NORMAL);
179 255
                     TaBuildingDynamic buildingDynamic = buildingDynamicService.getById(targetId);
180 256
                     taSharePersonFrom.setBuildingId(buildingDynamic.getBuildingId());
181 257
                     sharePersonFromQueryWrapper.eq("building_id",buildingDynamic.getBuildingId());
@@ -215,7 +291,7 @@ public class MiniAppController extends BaseController {
215 291
             // 所有人员都返回 org yansen 2019-11-13 19:56:18
216 292
 //            if (CommConstant.PERSON_REALTY_CONSULTANT.equals(taPerson.getPersonType())){
217 293
                 QueryWrapper<TaOrg>orgQueryWrapper = new QueryWrapper<>();
218
-                orgQueryWrapper.eq("org_id",taPerson.getOrgId());
294
+                orgQueryWrapper.eq("org_id", orgId);
219 295
                 TaOrg org = taOrgService.getOne(orgQueryWrapper);
220 296
                 taPerson.setOrg(org);
221 297
 //            }
@@ -227,15 +303,25 @@ public class MiniAppController extends BaseController {
227 303
 
228 304
             //返回是否授权标识
229 305
             QueryWrapper<TaCustomImg> queryWrapper = new QueryWrapper<>();
230
-            queryWrapper.eq("org_id", getOrgId(request));
306
+            queryWrapper.eq("org_id", orgId);
231 307
             queryWrapper.eq("img_type", "auth");
232 308
             List<TaCustomImg>  taCustomImgs = iTaCustomImgService.list(queryWrapper);
233 309
             result.put("avatarAuth", CollectionUtils.isEmpty(taCustomImgs) ? false : "1".equals(taCustomImgs.get(0).getImgUrl()) ? true: false);
234 310
 
235
-
236 311
             String token = (String) miniResp.get("token");
237 312
             sysTokenService.saveToken(token);
238 313
 
314
+            //把積分規則返回給小程序
315
+            QueryWrapper<TdPointsRules> tdPointsRulesQueryWrapper = new QueryWrapper<>();
316
+            tdPointsRulesQueryWrapper.eq("org_id", orgId);
317
+            List<TdPointsRules> rulesPointList = iTdPointsRulesService.list(tdPointsRulesQueryWrapper);
318
+            result.put("rulesPointList",rulesPointList);
319
+
320
+            // 定位城市
321
+            String location = null == lon ? null : lon + "," + lat;
322
+            TdCity tdCity = iTdCityService.getLocationCity(location, orgId);
323
+            result.put("city", tdCity);
324
+
239 325
             return ResponseBean.success(result);
240 326
         } catch (WxErrorException e) {
241 327
             System.err.println(e.getError());
@@ -243,6 +329,19 @@ public class MiniAppController extends BaseController {
243 329
         }
244 330
     }
245 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
+
246 345
     /**
247 346
      * 登陆接口
248 347
      */

+ 21
- 0
src/main/java/com/huiju/estateagents/controller/StatisticalController.java ファイルの表示

@@ -163,4 +163,25 @@ public class StatisticalController extends BaseController {
163 163
         return iStatisticalService.selectIntentionUser(pageNum, pageSize, getOrgId(request), buildingId);
164 164
     }
165 165
 
166
+    /**
167
+     * 用户来源  首页
168
+     * @return
169
+     */
170
+    @GetMapping(value = "/admin/selectPersonFrom")
171
+    public ResponseBean selectPersonFrom(@RequestParam(value = "startDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate startDate,
172
+                                         @RequestParam(value = "endDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate endDate,
173
+                                            HttpServletRequest request) {
174
+        return iStatisticalService.selectPersonFrom(getOrgId(request), startDate,endDate);
175
+    }
176
+
177
+    /**
178
+     * 用户来源  折线图 首页
179
+     * @return
180
+     */
181
+    @GetMapping(value = "/admin/selectPersonFromGroupByDay")
182
+    public ResponseBean selectPersonFromGroupByDay(@RequestParam(value = "startDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate startDate,
183
+                                         @RequestParam(value = "endDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate endDate,
184
+                                         HttpServletRequest request) {
185
+        return iStatisticalService.selectPersonFromGroupByDay(getOrgId(request), startDate,endDate);
186
+    }
166 187
 }

+ 4
- 3
src/main/java/com/huiju/estateagents/controller/TaBuildingController.java ファイルの表示

@@ -321,9 +321,10 @@ public class TaBuildingController extends BaseController {
321 321
      * 微信推荐楼盘列表
322 322
      * @return
323 323
      */
324
-    @RequestMapping(value = "/wx/building/mian", method = RequestMethod.GET)
325
-    public ResponseBean getWxMainBuildingList(){
326
-        return taBuildingService.getWxMainBuildingList();
324
+    @RequestMapping(value = "/wx/building/main", method = RequestMethod.GET)
325
+    public ResponseBean getWxMainBuildingList(String cityId, HttpServletRequest request){
326
+        Integer orgId = getOrgId(request);
327
+        return taBuildingService.getWxMainBuildingList(cityId, orgId);
327 328
     }
328 329
 
329 330
     /**

+ 2
- 2
src/main/java/com/huiju/estateagents/controller/TaBuildingDynamicController.java ファイルの表示

@@ -532,7 +532,7 @@ public class TaBuildingDynamicController extends BaseController {
532 532
         dynamicQueryWrapper.eq("dynamic_id",dynamic);
533 533
         if (iBuildingDynamicService.updateById(dynamic)){
534 534
             responseBean.addSuccess("成功");
535
-        }else {
535
+        } else {
536 536
             responseBean.addError("失败");
537 537
         }
538 538
         return responseBean;
@@ -553,7 +553,7 @@ public class TaBuildingDynamicController extends BaseController {
553 553
         dynamicQueryWrapper.eq("dynamic_id",dynamic);
554 554
         if (iBuildingDynamicService.updateById(dynamic)){
555 555
             responseBean.addSuccess("成功");
556
-        }else {
556
+        } else {
557 557
             responseBean.addError("失败");
558 558
         }
559 559
         return responseBean;

+ 211
- 0
src/main/java/com/huiju/estateagents/controller/TaBuildingPanoramaController.java ファイルの表示

@@ -0,0 +1,211 @@
1
+package com.huiju.estateagents.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.common.CommConstant;
9
+import com.huiju.estateagents.entity.TaBuildingApartment;
10
+import com.huiju.estateagents.entity.TaBuildingPanorama;
11
+import com.huiju.estateagents.service.ITaBuildingApartmentService;
12
+import com.huiju.estateagents.service.ITaBuildingPanoramaService;
13
+import org.slf4j.Logger;
14
+import org.slf4j.LoggerFactory;
15
+import org.springframework.beans.factory.annotation.Autowired;
16
+import org.springframework.web.bind.annotation.*;
17
+
18
+import javax.servlet.http.HttpServletRequest;
19
+import java.time.LocalDateTime;
20
+import java.util.ArrayList;
21
+import java.util.Collections;
22
+import java.util.List;
23
+import java.util.stream.Collectors;
24
+import java.util.stream.Stream;
25
+
26
+/**
27
+ * <p>
28
+    *   前端控制器
29
+    * </p>
30
+ *
31
+ * @author jobob
32
+ * @since 2020-01-30
33
+ */
34
+@RestController
35
+@RequestMapping("/api")
36
+public class TaBuildingPanoramaController extends BaseController {
37
+
38
+    private final Logger logger = LoggerFactory.getLogger(TaBuildingPanoramaController.class);
39
+
40
+    @Autowired
41
+    public ITaBuildingPanoramaService iTaBuildingPanoramaService;
42
+
43
+
44
+    @Autowired
45
+    private ITaBuildingApartmentService taBuildingApartmentService;
46
+
47
+    /**
48
+     * 查询列表
49
+     * @return
50
+     */
51
+    @RequestMapping(value="/admin/panorama/{buildingId}",method= RequestMethod.GET)
52
+    public ResponseBean taBuildingPanoramaList(@PathVariable String buildingId,HttpServletRequest request){
53
+        ResponseBean responseBean = new ResponseBean();
54
+        try {
55
+            QueryWrapper<TaBuildingPanorama> queryWrapper = new QueryWrapper<>();
56
+            queryWrapper.eq("org_id",getOrgId(request));
57
+            queryWrapper.eq("building_id",buildingId);
58
+            queryWrapper.eq("status",CommConstant.STATUS_NORMAL);
59
+            
60
+            queryWrapper.orderByDesc("create_date");
61
+            List<TaBuildingPanorama> result = iTaBuildingPanoramaService.list(queryWrapper);
62
+
63
+            responseBean.addSuccess(result);
64
+        }catch (Exception e){
65
+            e.printStackTrace();
66
+            logger.error("taBuildingPanoramaList -=- {}",e.toString());
67
+            responseBean.addError(e.getMessage());
68
+        }
69
+        return responseBean;
70
+    }
71
+
72
+
73
+    /**
74
+     * 获取全景图的户型列表
75
+     * @return
76
+     */
77
+    @RequestMapping(value="/admin/panorama/apartment",method= RequestMethod.GET)
78
+    public ResponseBean getApartmentList(@RequestParam(value ="buildingId") String buildingId,
79
+                                               HttpServletRequest request){
80
+        ResponseBean responseBean = new ResponseBean();
81
+        try {
82
+            //获取此楼盘下的所有的户型
83
+            QueryWrapper<TaBuildingApartment> queryWrapper = new QueryWrapper<>();
84
+            queryWrapper.eq("status",CommConstant.STATUS_NORMAL);
85
+            queryWrapper.eq("apartment_type",CommConstant.APARTMENT_TYPR_APART);
86
+            queryWrapper.eq("building_id",buildingId);
87
+            List<TaBuildingApartment> apartmentList = taBuildingApartmentService.list(queryWrapper);
88
+
89
+            //获取此楼盘下所有已经有全景图的户型
90
+            QueryWrapper<TaBuildingPanorama> panoramaQueryWrapper = new QueryWrapper<>();
91
+            panoramaQueryWrapper.eq("status",CommConstant.STATUS_NORMAL);
92
+            panoramaQueryWrapper.eq("panorama_type",CommConstant.PANORAMA_TYPE_APARTMENT);
93
+            panoramaQueryWrapper.eq("building_id",buildingId);
94
+            panoramaQueryWrapper.eq("org_id",getOrgId(request));
95
+            List<TaBuildingPanorama> panoramaList = iTaBuildingPanoramaService.list(panoramaQueryWrapper);
96
+            List<String> stringList = panoramaList.stream().map(TaBuildingPanorama::getApartmentId).collect(Collectors.toList());
97
+
98
+            List<TaBuildingApartment> resultList = new ArrayList<>();
99
+            //过滤已经选择的
100
+            apartmentList.forEach(e -> {
101
+                if (!stringList.contains(e.getApartmentId())){
102
+                    resultList.add(e);
103
+                }
104
+            });
105
+
106
+            responseBean.addSuccess(resultList);
107
+        }catch (Exception e){
108
+            e.printStackTrace();
109
+            logger.error("getApartmentList -=- {}",e.toString());
110
+            responseBean.addError(e.getMessage());
111
+        }
112
+        return responseBean;
113
+    }
114
+
115
+    /**
116
+     * 保存对象
117
+     * @param taBuildingPanorama 实体对象
118
+     * @return
119
+     */
120
+    @RequestMapping(value="/admin/panorama",method= RequestMethod.POST)
121
+    public ResponseBean taBuildingPanoramaAdd(@RequestBody TaBuildingPanorama taBuildingPanorama,HttpServletRequest request){
122
+        ResponseBean responseBean = new ResponseBean();
123
+        try {
124
+            taBuildingPanorama.setStatus(CommConstant.STATUS_NORMAL);
125
+            taBuildingPanorama.setCreateDate(LocalDateTime.now());
126
+            taBuildingPanorama.setOrgId(getOrgId(request));
127
+            //把户型给内容
128
+            if (taBuildingPanorama.getPanoramaType().equals(CommConstant.PANORAMA_TYPE_APARTMENT)){
129
+                TaBuildingApartment apartment = taBuildingApartmentService.getById(taBuildingPanorama.getApartmentId());
130
+                taBuildingPanorama.setContent(apartment.getApartmentName());
131
+            }
132
+            if (iTaBuildingPanoramaService.save(taBuildingPanorama)){
133
+                responseBean.addSuccess(taBuildingPanorama);
134
+            }else {
135
+                responseBean.addError("fail");
136
+            }
137
+        }catch (Exception e){
138
+            e.printStackTrace();
139
+            logger.error("taBuildingPanoramaAdd -=- {}",e.toString());
140
+            responseBean.addError(e.getMessage());
141
+        }
142
+        return responseBean;
143
+    }
144
+
145
+    /**
146
+     * 根据id删除对象--逻辑删除
147
+     * @param id  实体ID
148
+     */
149
+    @ResponseBody
150
+    @RequestMapping(value="/admin/panorama/{id}", method= RequestMethod.DELETE)
151
+    public ResponseBean taBuildingPanoramaDelete(@PathVariable Integer id){
152
+        ResponseBean responseBean = new ResponseBean();
153
+        try {
154
+            TaBuildingPanorama taBuildingPanorama = new TaBuildingPanorama();
155
+            taBuildingPanorama.setPanoramaId(id);
156
+            taBuildingPanorama.setStatus(CommConstant.STATUS_UNACCALIMED);
157
+            if(iTaBuildingPanoramaService.updateById(taBuildingPanorama)){
158
+                responseBean.addSuccess("success");
159
+            }else {
160
+                responseBean.addError("fail");
161
+            }
162
+        }catch (Exception e){
163
+            e.printStackTrace();
164
+            logger.error("taBuildingPanoramaDelete -=- {}",e.toString());
165
+            responseBean.addError(e.getMessage());
166
+        }
167
+        return responseBean;
168
+    }
169
+
170
+    /**
171
+     * 修改对象
172
+     * @param id  实体ID
173
+     * @param taBuildingPanorama 实体对象
174
+     * @return
175
+     */
176
+    @RequestMapping(value="/admin/panorama/{id}",method= RequestMethod.PUT)
177
+    public ResponseBean taBuildingPanoramaUpdate(@PathVariable Integer id,
178
+                                        @RequestBody TaBuildingPanorama taBuildingPanorama){
179
+        ResponseBean responseBean = new ResponseBean();
180
+        try {
181
+            taBuildingPanorama.setPanoramaId(id);
182
+            if (iTaBuildingPanoramaService.updateById(taBuildingPanorama)){
183
+                responseBean.addSuccess(taBuildingPanorama);
184
+            }else {
185
+                responseBean.addError("fail");
186
+            }
187
+        }catch (Exception e){
188
+            e.printStackTrace();
189
+            logger.error("taBuildingPanoramaUpdate -=- {}",e.toString());
190
+            responseBean.addError(e.getMessage());
191
+        }
192
+        return responseBean;
193
+    }
194
+
195
+    /**
196
+     * 根据id查询对象
197
+     * @param id  实体ID
198
+     */
199
+    @RequestMapping(value="/panorama/{id}",method= RequestMethod.GET)
200
+    public ResponseBean taBuildingPanoramaGet(@PathVariable Integer id){
201
+        ResponseBean responseBean = new ResponseBean();
202
+        try {
203
+            responseBean.addSuccess(iTaBuildingPanoramaService.getById(id));
204
+        }catch (Exception e){
205
+            e.printStackTrace();
206
+            logger.error("taBuildingPanoramaDelete -=- {}",e.toString());
207
+            responseBean.addError(e.getMessage());
208
+        }
209
+        return responseBean;
210
+    }
211
+}

+ 2
- 2
src/main/java/com/huiju/estateagents/controller/TaMiniappController.java ファイルの表示

@@ -79,9 +79,9 @@ public class TaMiniappController extends BaseController {
79 79
     @RequestMapping(value="/center/taMiniapp",method= RequestMethod.POST)
80 80
     public ResponseBean taMiniappAdd(@RequestBody TaMiniapp taMiniapp, HttpServletRequest request){
81 81
         ResponseBean responseBean = new ResponseBean();
82
-
82
+        Integer channelId = getChannelId(request);
83 83
         try {
84
-            iTaMiniappService.saveInfoWithTpls(taMiniapp);
84
+            iTaMiniappService.saveInfoWithTpls(taMiniapp, channelId);
85 85
             responseBean.addSuccess(taMiniapp);
86 86
         }catch (Exception e){
87 87
             e.printStackTrace();

+ 147
- 0
src/main/java/com/huiju/estateagents/controller/TaPersonFromRecordController.java ファイルの表示

@@ -0,0 +1,147 @@
1
+package com.huiju.estateagents.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.common.CommConstant;
9
+import com.huiju.estateagents.common.StringUtils;
10
+import com.huiju.estateagents.entity.*;
11
+import com.huiju.estateagents.service.ITaPersonFromRecordService;
12
+import com.huiju.estateagents.service.ITaPersonService;
13
+import com.huiju.estateagents.statistic.service.ITsUserBehaviorStatisticService;
14
+import org.slf4j.Logger;
15
+import org.slf4j.LoggerFactory;
16
+import org.springframework.beans.factory.annotation.Autowired;
17
+import org.springframework.web.bind.annotation.*;
18
+
19
+import javax.servlet.http.HttpServletRequest;
20
+import java.time.LocalDateTime;
21
+import java.util.List;
22
+
23
+/**
24
+ * <p>
25
+    * 新增用户来源表  前端控制器
26
+    * </p>
27
+ *
28
+ * @author jobob
29
+ * @since 2020-01-03
30
+ */
31
+@RestController
32
+@RequestMapping("/api")
33
+public class TaPersonFromRecordController extends BaseController {
34
+
35
+    private final Logger logger = LoggerFactory.getLogger(TaPersonFromRecordController.class);
36
+
37
+    @Autowired
38
+    public ITaPersonFromRecordService iTaPersonFromRecordService;
39
+
40
+    @Autowired
41
+    public ITaPersonService taPersonService;
42
+
43
+    @Autowired
44
+    private ITsUserBehaviorStatisticService iTsUserBehaviorStatisticService;
45
+
46
+    /**
47
+     * 分页查询列表
48
+     * @param pageNum
49
+     * @param pageSize
50
+     * @return
51
+     */
52
+    @RequestMapping(value="/admin/taPersonFromRecord",method= RequestMethod.GET)
53
+    public ResponseBean taPersonFromRecordList(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
54
+                                               @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
55
+        ResponseBean responseBean = new ResponseBean();
56
+        iTaPersonFromRecordService.personFromStatistic();
57
+        iTsUserBehaviorStatisticService.userBehaviorStatustic();
58
+        responseBean.addSuccess("成功");
59
+        return responseBean;
60
+    }
61
+
62
+    /**
63
+     * 保存对象
64
+     * @param taPersonFromRecord 实体对象
65
+     * @return
66
+     */
67
+    @RequestMapping(value="/taPersonFromRecord",method= RequestMethod.POST)
68
+    public ResponseBean taPersonFromRecordAdd(@RequestBody TaPersonFromRecord taPersonFromRecord){
69
+        ResponseBean responseBean = new ResponseBean();
70
+        try {
71
+            if (iTaPersonFromRecordService.save(taPersonFromRecord)){
72
+                responseBean.addSuccess(taPersonFromRecord);
73
+            }else {
74
+                responseBean.addError("fail");
75
+            }
76
+        }catch (Exception e){
77
+            e.printStackTrace();
78
+            logger.error("taPersonFromRecordAdd -=- {}",e.toString());
79
+            responseBean.addError(e.getMessage());
80
+        }
81
+        return responseBean;
82
+    }
83
+
84
+    /**
85
+     * 根据id删除对象
86
+     * @param id  实体ID
87
+     */
88
+    @ResponseBody
89
+    @RequestMapping(value="/taPersonFromRecord/{id}", method= RequestMethod.DELETE)
90
+    public ResponseBean taPersonFromRecordDelete(@PathVariable Integer id){
91
+        ResponseBean responseBean = new ResponseBean();
92
+        try {
93
+            if(iTaPersonFromRecordService.removeById(id)){
94
+                responseBean.addSuccess("success");
95
+            }else {
96
+                responseBean.addError("fail");
97
+            }
98
+        }catch (Exception e){
99
+            e.printStackTrace();
100
+            logger.error("taPersonFromRecordDelete -=- {}",e.toString());
101
+            responseBean.addError(e.getMessage());
102
+        }
103
+        return responseBean;
104
+    }
105
+
106
+    /**
107
+     * 修改对象
108
+     * @param id  实体ID
109
+     * @param taPersonFromRecord 实体对象
110
+     * @return
111
+     */
112
+    @RequestMapping(value="/taPersonFromRecord/{id}",method= RequestMethod.PUT)
113
+    public ResponseBean taPersonFromRecordUpdate(@PathVariable Integer id,
114
+                                        @RequestBody TaPersonFromRecord taPersonFromRecord){
115
+        ResponseBean responseBean = new ResponseBean();
116
+        try {
117
+            if (iTaPersonFromRecordService.updateById(taPersonFromRecord)){
118
+                responseBean.addSuccess(taPersonFromRecord);
119
+            }else {
120
+                responseBean.addError("fail");
121
+            }
122
+        }catch (Exception e){
123
+            e.printStackTrace();
124
+            logger.error("taPersonFromRecordUpdate -=- {}",e.toString());
125
+            responseBean.addError(e.getMessage());
126
+        }
127
+        return responseBean;
128
+    }
129
+
130
+    /**
131
+     * 根据id查询对象
132
+     * @param id  实体ID
133
+     */
134
+    @RequestMapping(value="/taPersonFromRecord/{id}",method= RequestMethod.GET)
135
+    public ResponseBean taPersonFromRecordGet(@PathVariable Integer id){
136
+        ResponseBean responseBean = new ResponseBean();
137
+        try {
138
+            responseBean.addSuccess(iTaPersonFromRecordService.getById(id));
139
+        }catch (Exception e){
140
+            e.printStackTrace();
141
+            logger.error("taPersonFromRecordDelete -=- {}",e.toString());
142
+            responseBean.addError(e.getMessage());
143
+        }
144
+        return responseBean;
145
+    }
146
+
147
+}

+ 15
- 6
src/main/java/com/huiju/estateagents/controller/TaPersonVisitRecordController.java ファイルの表示

@@ -53,7 +53,8 @@ public class TaPersonVisitRecordController extends BaseController {
53 53
     public ITaBuildingService buildingService;
54 54
     @Autowired
55 55
     private ITaRecommendCustomerService taRecommendCustomerService;
56
-
56
+    @Autowired
57
+    public ITaPersonFromRecordService iTaPersonFromRecordService;
57 58
 
58 59
 
59 60
     /**
@@ -80,7 +81,7 @@ public class TaPersonVisitRecordController extends BaseController {
80 81
     }
81 82
 
82 83
     /**
83
-     * 保存对象
84
+     * 保存对象--埋点数据保存
84 85
      * @param taPersonVisitRecord 实体对象
85 86
      * @return
86 87
      */
@@ -141,6 +142,11 @@ public class TaPersonVisitRecordController extends BaseController {
141 142
         }
142 143
         try {
143 144
             if (iTaPersonVisitRecordService.save(taPersonVisitRecord)){
145
+                //清洗埋點數據到新增用戶表--只有进入小程序的时候 start才记录
146
+                if(taPersonVisitRecord.getEvent().equals(CommConstant.BIZ_EVENT_START)){
147
+                    iTaPersonFromRecordService.addNewPersonRecordRecord(taPersonVisitRecord);
148
+                }
149
+
144 150
                 return ResponseBean.success(taPersonVisitRecord);
145 151
             }else {
146 152
                 return ResponseBean.error("保存失败",ResponseBean.ERROR_UNAVAILABLE);
@@ -344,13 +350,16 @@ public class TaPersonVisitRecordController extends BaseController {
344 350
         }
345 351
         //使用分页插件
346 352
         IPage<TaConsultantInfo> pg = new Page<>(pageNumber, pageSize);
347
-        IPage<TaConsultantInfo> result = iTaPersonVisitRecordService.getConsultantShareInfoList(pg, userId, getOrgId(request));
353
+        QueryWrapper<TaPerson> taPersonQueryWrapper = new QueryWrapper<>();
354
+        taPersonQueryWrapper.eq("user_id", userId);
355
+        TaPerson taPerson = taPersonService.getOne(taPersonQueryWrapper);
356
+        IPage<TaConsultantInfo> result = iTaPersonVisitRecordService.getConsultantShareInfoList(pg, taPerson.getPersonId());
348 357
 
349 358
         List<TaConsultantInfo> taConsultantInfos = result.getRecords();
350 359
         taConsultantInfos.forEach(e ->{
351
-            Integer shareNum = iTaPersonVisitRecordService.countShareNumByEventType(e.getTargetId(), getOrgId(request), userId, e.getEventType());
360
+            Integer shareNum = iTaPersonVisitRecordService.countShareNumByEventType(getOrgId(request), e.getTargetId(), userId, taPerson.getPersonId(), (CommConstant.FAVOR_PROJECT.equals(e.getEventType()) ? "building" : CommConstant.FAVOR_ACTIVITY.equals(e.getEventType()) ? "dynamic" : e.getEventType())  + "_share");
352 361
             switch (e.getEventType()){
353
-                case CommConstant.POSTER_CONTENT_TYPE_ACTIVITY:
362
+                case CommConstant.FAVOR_ACTIVITY:
354 363
                     e.setActivityShareNum(shareNum);
355 364
                     break;
356 365
                 case CommConstant.POINTS_CHANGE_HELP:
@@ -362,7 +371,7 @@ public class TaPersonVisitRecordController extends BaseController {
362 371
                 case CommConstant.CAROUSEL_NEWS:
363 372
                     e.setNewsNum(shareNum);
364 373
                     break;
365
-                case CommConstant.POSTER_CONTENT_TYPE_BUILDING:
374
+                case CommConstant.FAVOR_PROJECT:
366 375
                     e.setBuildingNum(shareNum);
367 376
                     break;
368 377
                 case CommConstant.EVENT_H5:

+ 1
- 1
src/main/java/com/huiju/estateagents/controller/TaPointsRecordsController.java ファイルの表示

@@ -111,7 +111,7 @@ public class TaPointsRecordsController extends BaseController {
111 111
                         result.getRecords().get(i).setRecordName("兑换商品");
112 112
                         break;
113 113
                     case CommConstant.POINTS_CHANGE_SHARE_POSTER:
114
-                        result.getRecords().get(i).setRecordName("分享海报");
114
+                        result.getRecords().get(i).setRecordName("分享转发");
115 115
                         break;
116 116
                     case CommConstant.POINTS_CHANGE_CHECKIN:
117 117
                         result.getRecords().get(i).setRecordName("签到");

+ 27
- 8
src/main/java/com/huiju/estateagents/controller/TaRecommendCustomerController.java ファイルの表示

@@ -306,7 +306,8 @@ public class TaRecommendCustomerController extends BaseController {
306 306
                                          @RequestParam(value ="verifyStatus",required = false) String verifyStatus,
307 307
                                          @RequestParam(value = "sex",required = false)Integer sex,
308 308
                                          @RequestParam(value = "customerType") String customerType,// public 公  private 私
309
-                                         @RequestParam(value = "status",required = false) Integer status){
309
+                                         @RequestParam(value = "status",required = false) Integer status,
310
+                                         @RequestParam(value = "sceneType",required = false) String sceneType){
310 311
         try{
311 312
 
312 313
             // TODO 目前如果是公客,就取当前操作人员的 buildingId
@@ -320,7 +321,7 @@ public class TaRecommendCustomerController extends BaseController {
320 321
 //                TaPersonBuilding personBuilding = taPersonBuildingMapper.selectOne(queryWrapper);
321 322
 //                buildingId = personBuilding.getBuildingId();
322 323
 //            }
323
-            return ResponseBean.success(taRecommendCustomerService.getCustomerList(status,pageNumber,pageSize,buildingId,name,tel,consultName,consultTel,entryType,verifyStatus,sex, customerType, getOrgId(request),getTaPersonBuildingListByUserId(request)));
324
+            return ResponseBean.success(taRecommendCustomerService.getCustomerList(status,pageNumber,pageSize,buildingId,name,tel,consultName,consultTel,entryType,verifyStatus,sex, customerType, getOrgId(request),getTaPersonBuildingListByUserId(request),sceneType));
324 325
         }catch (Exception e){
325 326
             e.printStackTrace();
326 327
             return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);
@@ -393,6 +394,20 @@ public class TaRecommendCustomerController extends BaseController {
393 394
         }
394 395
     }
395 396
 
397
+    /**
398
+     * 分配置业顾问
399
+     */
400
+    @RequestMapping(value="/admin/customer/consultant/assist/{personId}",method= RequestMethod.POST)
401
+    public ResponseBean assistConsultant (@RequestBody TaUser taUser, @PathVariable String personId, HttpServletRequest request){
402
+        try{
403
+            Integer orgId = getOrgId(request);
404
+            taRecommendCustomerService.consultantAssist(taUser, personId, orgId);
405
+            return ResponseBean.success("");
406
+        }catch (Exception e){
407
+            e.printStackTrace();
408
+            return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);
409
+        }
410
+    }
396 411
 
397 412
     @GetMapping("/admin/customer/recommend/{customerId}")
398 413
     public ResponseBean getCustomersIRecommended (@RequestParam int pageNumber, @RequestParam int pageSize, @PathVariable String customerId,HttpServletRequest request){
@@ -521,10 +536,12 @@ public class TaRecommendCustomerController extends BaseController {
521 536
     @GetMapping(value = "/admin/customer/recommend/get/{id}")
522 537
     public ResponseBean getCustomerDetail(@PathVariable String id,
523 538
                                           @RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
524
-                                          @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,HttpServletRequest request) {
539
+                                          @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
540
+                                          @RequestParam(value ="buildingId",required = false) String buildingId,
541
+                                          HttpServletRequest request) {
525 542
         ResponseBean responseBean = new ResponseBean();
526 543
         try {
527
-            responseBean.addSuccess(taRecommendCustomerService.getCustomerDetail(id,pageNumber,pageSize,getTaPersonBuildingListByUserId(request)));
544
+            responseBean.addSuccess(taRecommendCustomerService.getCustomerDetail(id,pageNumber,pageSize,getTaPersonBuildingListByUserId(request),buildingId));
528 545
         }catch (Exception e){
529 546
             e.printStackTrace();
530 547
             responseBean.addError(e.getMessage());
@@ -535,10 +552,11 @@ public class TaRecommendCustomerController extends BaseController {
535 552
     @GetMapping(value = "/admin/customer/recommend/public/get/{id}")
536 553
     public ResponseBean getPublicCustomerDetail(@PathVariable String id,
537 554
                                                 @RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
538
-                                                @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,HttpServletRequest request) {
555
+                                                @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
556
+                                                @RequestParam(value ="buildingId",required = false) String buildingId,HttpServletRequest request) {
539 557
         ResponseBean responseBean = new ResponseBean();
540 558
         try {
541
-            responseBean.addSuccess(taRecommendCustomerService.getPublicCustomerDetail(id,pageNumber,pageSize,getTaPersonBuildingListByUserId(request)));
559
+            responseBean.addSuccess(taRecommendCustomerService.getPublicCustomerDetail(id,pageNumber,pageSize,getTaPersonBuildingListByUserId(request),buildingId));
542 560
         }catch (Exception e){
543 561
             e.printStackTrace();
544 562
             responseBean.addError(e.getMessage());
@@ -548,11 +566,12 @@ public class TaRecommendCustomerController extends BaseController {
548 566
 
549 567
     @GetMapping("/admin/customer/recommend/drift")
550 568
     public ResponseBean getDriftCustomerList (HttpServletRequest request,
551
-                                              @RequestParam(value ="buildingId",defaultValue = "false") String buildingId,
569
+                                              @RequestParam(value ="buildingId",defaultValue = "") String buildingId,
570
+                                              @RequestParam(value ="sceneType",defaultValue = "") String sceneType,
552 571
                                          @RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
553 572
                                          @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
554 573
         try{
555
-            return ResponseBean.success(taPersonService.getDriftCustomerList(pageNumber,pageSize,buildingId, getOrgId(request)));
574
+            return ResponseBean.success(taPersonService.getDriftCustomerList(pageNumber,pageSize,buildingId, getOrgId(request),sceneType));
556 575
         }catch (Exception e){
557 576
             e.printStackTrace();
558 577
             return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);

+ 16
- 8
src/main/java/com/huiju/estateagents/controller/TaSharePersonFromController.java ファイルの表示

@@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
5 5
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 6
 import com.huiju.estateagents.base.BaseController;
7 7
 import com.huiju.estateagents.base.ResponseBean;
8
-import com.huiju.estateagents.entity.TaSharePersonFrom;
8
+import com.huiju.estateagents.common.CommConstant;
9
+import com.huiju.estateagents.entity.*;
9 10
 import com.huiju.estateagents.service.ITaSharePersonFromService;
11
+import org.apache.commons.lang3.StringUtils;
10 12
 import org.slf4j.Logger;
11 13
 import org.slf4j.LoggerFactory;
12 14
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +20,9 @@ import org.springframework.web.bind.annotation.RequestParam;
18 20
 import org.springframework.web.bind.annotation.ResponseBody;
19 21
 import org.springframework.web.bind.annotation.RestController;
20 22
 
23
+import javax.servlet.http.HttpServletRequest;
24
+import java.time.LocalDateTime;
25
+
21 26
 /**
22 27
  * <p>
23 28
     *   前端控制器
@@ -63,18 +68,21 @@ public class TaSharePersonFromController extends BaseController {
63 68
     }
64 69
 
65 70
     /**
66
-     * 保存对象
67
-     * @param taSharePersonFrom 实体对象
71
+     * 保存对象--分享记录埋点
72
+     *
68 73
      * @return
69 74
      */
70
-    @RequestMapping(value="/taSharePersonFrom",method= RequestMethod.POST)
71
-    public ResponseBean taSharePersonFromAdd(@RequestBody TaSharePersonFrom taSharePersonFrom){
75
+    @RequestMapping(value="/wx/taSharePersonFrom",method= RequestMethod.POST)
76
+    public ResponseBean taSharePersonFromAdd( @RequestParam(required = false) String from,
77
+                                              @RequestParam(required = false)String recommender,
78
+                                              @RequestParam(required = false)String targetId,
79
+                                              HttpServletRequest request){
72 80
         ResponseBean responseBean = new ResponseBean();
73 81
         try {
74
-            if (iTaSharePersonFromService.save(taSharePersonFrom)){
82
+            if(StringUtils.isNotBlank(from) &&StringUtils.isNotBlank(recommender) &&StringUtils.isNotBlank(targetId)){
83
+                //添加客户分享信息记录
84
+                TaSharePersonFrom taSharePersonFrom = iTaSharePersonFromService.addSharePersonRecord(getPersonId(request), getOrgId(request), from, recommender, targetId);
75 85
                 responseBean.addSuccess(taSharePersonFrom);
76
-            }else {
77
-                responseBean.addError("fail");
78 86
             }
79 87
         }catch (Exception e){
80 88
             e.printStackTrace();

+ 2
- 1
src/main/java/com/huiju/estateagents/controller/TdCityController.java ファイルの表示

@@ -189,8 +189,9 @@ public class TdCityController extends BaseController {
189 189
     @RequestMapping(value="/wx/location/city",method= RequestMethod.GET)
190 190
     public ResponseBean wxLocationCityDetail(@RequestParam(value = "location") String location,HttpServletRequest request){
191 191
         ResponseBean responseBean = new ResponseBean();
192
+        Integer orgId = getOrgId(request);
192 193
         try {
193
-            TdCity tdCity = iTdCityService.getLocationCity(location);
194
+            TdCity tdCity = iTdCityService.getLocationCity(location, orgId);
194 195
             responseBean.addSuccess(tdCity);
195 196
         }catch (Exception e){
196 197
             logger.error("tdCityList -=- {}",e.toString());

+ 2
- 0
src/main/java/com/huiju/estateagents/controller/TdReportController.java ファイルの表示

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 4
 import com.baomidou.mybatisplus.core.metadata.IPage;
5 5
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 6
 import com.huiju.estateagents.base.ResponseBean;
7
+import com.huiju.estateagents.common.CommConstant;
7 8
 import com.huiju.estateagents.entity.TdReport;
8 9
 import com.huiju.estateagents.service.ITdReportService;
9 10
 import io.swagger.annotations.Api;
@@ -60,6 +61,7 @@ public class TdReportController extends BaseController {
60 61
             //使用分页插件
61 62
 		    IPage<TdReport> pg = new Page<>(pageNum, pageSize);
62 63
             QueryWrapper<TdReport> queryWrapper = new QueryWrapper<>();
64
+            queryWrapper.eq("status", CommConstant.STATUS_NORMAL);
63 65
             queryWrapper.orderByDesc("create_date");
64 66
 
65 67
             IPage<TdReport> result = iTdReportService.page(pg, queryWrapper);

+ 143
- 0
src/main/java/com/huiju/estateagents/controller/TdWxDictController.java ファイルの表示

@@ -0,0 +1,143 @@
1
+package com.huiju.estateagents.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.entity.TdWxDict;
9
+import com.huiju.estateagents.service.ITdWxDictService;
10
+import org.slf4j.Logger;
11
+import org.slf4j.LoggerFactory;
12
+import org.springframework.beans.factory.annotation.Autowired;
13
+import org.springframework.web.bind.annotation.*;
14
+
15
+/**
16
+ * <p>
17
+    * 微信字典表  前端控制器
18
+    * </p>
19
+ *
20
+ * @author jobob
21
+ * @since 2020-01-06
22
+ */
23
+@RestController
24
+@RequestMapping("/api")
25
+public class TdWxDictController extends BaseController {
26
+
27
+    private final Logger logger = LoggerFactory.getLogger(TdWxDictController.class);
28
+
29
+    @Autowired
30
+    public ITdWxDictService iTdWxDictService;
31
+
32
+
33
+    /**
34
+     * 分页查询列表
35
+     * @param pageNumber
36
+     * @param pageSize
37
+     * @return
38
+     */
39
+    @RequestMapping(value="/admin/tdWxDict",method= RequestMethod.GET)
40
+    public ResponseBean tdWxDictList(@RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
41
+                                     @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
42
+        ResponseBean responseBean = new ResponseBean();
43
+        try {
44
+            //使用分页插件
45
+		    IPage<TdWxDict> pg = new Page<>(pageNumber, pageSize);
46
+            QueryWrapper<TdWxDict> queryWrapper = new QueryWrapper<>();
47
+            queryWrapper.groupBy("scene_type");
48
+
49
+            IPage<TdWxDict> result = iTdWxDictService.page(pg, queryWrapper);
50
+            responseBean.addSuccess(result);
51
+        }catch (Exception e){
52
+            e.printStackTrace();
53
+            logger.error("tdWxDictList -=- {}",e.toString());
54
+            responseBean.addError(e.getMessage());
55
+        }
56
+        return responseBean;
57
+    }
58
+
59
+    /**
60
+     * 保存对象
61
+     * @param tdWxDict 实体对象
62
+     * @return
63
+     */
64
+    @RequestMapping(value="/tdWxDict",method= RequestMethod.POST)
65
+    public ResponseBean tdWxDictAdd(@RequestBody TdWxDict tdWxDict){
66
+        ResponseBean responseBean = new ResponseBean();
67
+        try {
68
+            if (iTdWxDictService.save(tdWxDict)){
69
+                responseBean.addSuccess(tdWxDict);
70
+            }else {
71
+                responseBean.addError("fail");
72
+            }
73
+        }catch (Exception e){
74
+            e.printStackTrace();
75
+            logger.error("tdWxDictAdd -=- {}",e.toString());
76
+            responseBean.addError(e.getMessage());
77
+        }
78
+        return responseBean;
79
+    }
80
+
81
+    /**
82
+     * 根据id删除对象
83
+     * @param id  实体ID
84
+     */
85
+    @ResponseBody
86
+    @RequestMapping(value="/tdWxDict/{id}", method= RequestMethod.DELETE)
87
+    public ResponseBean tdWxDictDelete(@PathVariable Integer id){
88
+        ResponseBean responseBean = new ResponseBean();
89
+        try {
90
+            if(iTdWxDictService.removeById(id)){
91
+                responseBean.addSuccess("success");
92
+            }else {
93
+                responseBean.addError("fail");
94
+            }
95
+        }catch (Exception e){
96
+            e.printStackTrace();
97
+            logger.error("tdWxDictDelete -=- {}",e.toString());
98
+            responseBean.addError(e.getMessage());
99
+        }
100
+        return responseBean;
101
+    }
102
+
103
+    /**
104
+     * 修改对象
105
+     * @param id  实体ID
106
+     * @param tdWxDict 实体对象
107
+     * @return
108
+     */
109
+    @RequestMapping(value="/tdWxDict/{id}",method= RequestMethod.PUT)
110
+    public ResponseBean tdWxDictUpdate(@PathVariable Integer id,
111
+                                        @RequestBody TdWxDict tdWxDict){
112
+        ResponseBean responseBean = new ResponseBean();
113
+        try {
114
+            if (iTdWxDictService.updateById(tdWxDict)){
115
+                responseBean.addSuccess(tdWxDict);
116
+            }else {
117
+                responseBean.addError("fail");
118
+            }
119
+        }catch (Exception e){
120
+            e.printStackTrace();
121
+            logger.error("tdWxDictUpdate -=- {}",e.toString());
122
+            responseBean.addError(e.getMessage());
123
+        }
124
+        return responseBean;
125
+    }
126
+
127
+    /**
128
+     * 根据id查询对象
129
+     * @param id  实体ID
130
+     */
131
+    @RequestMapping(value="/tdWxDict/{id}",method= RequestMethod.GET)
132
+    public ResponseBean tdWxDictGet(@PathVariable Integer id){
133
+        ResponseBean responseBean = new ResponseBean();
134
+        try {
135
+            responseBean.addSuccess(iTdWxDictService.getById(id));
136
+        }catch (Exception e){
137
+            e.printStackTrace();
138
+            logger.error("tdWxDictDelete -=- {}",e.toString());
139
+            responseBean.addError(e.getMessage());
140
+        }
141
+        return responseBean;
142
+    }
143
+}

+ 19
- 1
src/main/java/com/huiju/estateagents/drainage/controller/TaDrainageController.java ファイルの表示

@@ -12,7 +12,10 @@ import com.huiju.estateagents.drainage.entity.TaDrainageRecord;
12 12
 import com.huiju.estateagents.drainage.service.ITaDrainageRecordService;
13 13
 import com.huiju.estateagents.drainage.service.ITaDrainageService;
14 14
 import com.huiju.estateagents.entity.ExtendContent;
15
+import com.huiju.estateagents.entity.TaMiniapp;
16
+import com.huiju.estateagents.mapper.TaMiniappMapper;
15 17
 import com.huiju.estateagents.service.IExtendContentService;
18
+import com.huiju.estateagents.service.IMiniAppService;
16 19
 import com.huiju.estateagents.third.entity.TaThirdPartyMiniappConfig;
17 20
 import com.huiju.estateagents.third.service.ITaThirdPartyMiniappConfigService;
18 21
 import io.swagger.models.auth.In;
@@ -60,6 +63,12 @@ public class TaDrainageController extends BaseController {
60 63
     @Autowired
61 64
     public IExtendContentService iExtendContentService;
62 65
 
66
+    @Autowired
67
+    private TaMiniappMapper taMiniappMapper;
68
+
69
+    @Autowired
70
+    private IMiniAppService miniAppService;
71
+
63 72
     /**
64 73
      * 分页查询列表
65 74
      * @param pageNum
@@ -128,7 +137,16 @@ public class TaDrainageController extends BaseController {
128 137
                 taDrainage.setStatus(CommConstant.STATUS_NORMAL);
129 138
             }
130 139
             if (iTaDrainageService.save(taDrainage)){
131
-                //添加第三方appid和secret
140
+                // 根据ORGID查询当前小程序表的miniapp_id
141
+                QueryWrapper<TaMiniapp> taMiniappQuery= new QueryWrapper<>();
142
+                taMiniappQuery.eq("org_id",getOrgId(request));
143
+                TaMiniapp taMiniapp = taMiniappMapper.selectOne(taMiniappQuery);
144
+                // 生成二维码
145
+                ResponseBean taMiniappQrcode = miniAppService.getQrCode(CommConstant.DRAINAGE_QRCODE.replace("#0",taDrainage.getDrainageId().toString()).replace("#1","h5"),taMiniapp.getMiniappId());
146
+                taDrainage.setQrCode(String.valueOf(taMiniappQrcode.getData()));
147
+                iTaDrainageService.updateById(taDrainage);
148
+
149
+                //添加第三方appid和secretis
132 150
                 TaThirdPartyMiniappConfig taThirdPartyMiniappConfig = new TaThirdPartyMiniappConfig();
133 151
                 taThirdPartyMiniappConfig.setOrgId(getOrgId(request));
134 152
                 taThirdPartyMiniappConfig.setAppid(getUUIDS());

+ 2
- 1
src/main/java/com/huiju/estateagents/drainage/entity/TaDrainage.java ファイルの表示

@@ -73,7 +73,8 @@ public class TaDrainage implements Serializable {
73 73
     private String middleImg ;
74 74
     /** 状态 */
75 75
     private Integer status ;
76
-
76
+    /** 二维码*/
77
+    private String qrCode;
77 78
     @TableField(exist = false)
78 79
     private String appid;
79 80
     

+ 34
- 1
src/main/java/com/huiju/estateagents/entity/TaBuilding.java ファイルの表示

@@ -52,7 +52,7 @@ public class TaBuilding implements Serializable {
52 52
     /**
53 53
      * 开盘时间
54 54
      */
55
-    private LocalDateTime openingDate;
55
+    private String openingDate;
56 56
 
57 57
     /**
58 58
      * 项目地址
@@ -198,6 +198,21 @@ public class TaBuilding implements Serializable {
198 198
      */
199 199
     private Integer mapScope;
200 200
 
201
+    /**
202
+     * 开发商
203
+     */
204
+    private String propertyDeveloper;
205
+
206
+    /**
207
+     * 楼栋总数
208
+     */
209
+    private Integer buildingNum;
210
+
211
+    /**
212
+     * 备案名
213
+     */
214
+    private String recordName;
215
+
201 216
     /**
202 217
      * 地图数据
203 218
      */
@@ -275,4 +290,22 @@ public class TaBuilding implements Serializable {
275 290
      */
276 291
     @TableField(exist = false)
277 292
     private List<TaBuildingImg> buildingListImg;
293
+
294
+    /**
295
+     * 列表封面图
296
+     */
297
+    @TableField(exist = false)
298
+    private String listPoster;
299
+
300
+    /**
301
+     * 标签列表, 逗哈分隔
302
+     */
303
+    @TableField(exist = false)
304
+    private String tags;
305
+
306
+    /**
307
+     * 全景图
308
+     */
309
+    @TableField(exist = false)
310
+    private List<TaBuildingPanorama> panoramaList;
278 311
 }

+ 79
- 0
src/main/java/com/huiju/estateagents/entity/TaBuildingPanorama.java ファイルの表示

@@ -0,0 +1,79 @@
1
+package com.huiju.estateagents.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-30
19
+ */
20
+@Data
21
+@EqualsAndHashCode(callSuper = false)
22
+@Accessors(chain = true)
23
+public class TaBuildingPanorama implements Serializable {
24
+
25
+    private static final long serialVersionUID = 1L;
26
+
27
+    /**
28
+     * 全景图ID 全景图ID
29
+     */
30
+    @TableId(value = "panorama_id", type = IdType.AUTO)
31
+    private Integer panoramaId;
32
+
33
+    /**
34
+     * 公司id
35
+     */
36
+    private Integer orgId;
37
+
38
+    /**
39
+     * 楼盘id
40
+     */
41
+    private String buildingId;
42
+
43
+    /**
44
+     * 户型ID
45
+     */
46
+    private String apartmentId;
47
+
48
+    /**
49
+     * 全景图类型 全景图类型building指楼盘全景图,apartment指户型全景图
50
+     */
51
+    private String panoramaType;
52
+
53
+    /**
54
+     * 全景内容
55
+     */
56
+    private String content;
57
+
58
+    /**
59
+     * 全景封面
60
+     */
61
+    private String coverImg;
62
+
63
+    /**
64
+     * 全景图链接地址
65
+     */
66
+    private String panoramaLink;
67
+
68
+    /**
69
+     * 创建时间
70
+     */
71
+    private LocalDateTime createDate;
72
+
73
+    /**
74
+     * 状态
75
+     */
76
+    private Integer status;
77
+
78
+
79
+}

+ 49
- 0
src/main/java/com/huiju/estateagents/entity/TaChannelAppRelation.java ファイルの表示

@@ -0,0 +1,49 @@
1
+package com.huiju.estateagents.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-04
19
+ */
20
+@Data
21
+@EqualsAndHashCode(callSuper = false)
22
+@Accessors(chain = true)
23
+public class TaChannelAppRelation implements Serializable {
24
+
25
+    private static final long serialVersionUID = 1L;
26
+
27
+    /**
28
+     * 关系id
29
+     */
30
+    @TableId(value = "relation_id", type = IdType.AUTO)
31
+    private Integer relationId;
32
+
33
+    /**
34
+     * 渠道id
35
+     */
36
+    private Integer channelId;
37
+
38
+    /**
39
+     * 公司id
40
+     */
41
+    private Integer orgId;
42
+
43
+    /**
44
+     * 创建时间
45
+     */
46
+    private LocalDateTime createTime;
47
+
48
+
49
+}

+ 6
- 0
src/main/java/com/huiju/estateagents/entity/TaPerson.java ファイルの表示

@@ -287,4 +287,10 @@ public class TaPerson implements Serializable {
287 287
      */
288 288
     @TableField(exist = false)
289 289
     private String personFrom;
290
+
291
+    /**
292
+     * 用户来源
293
+     */
294
+    @TableField(exist = false)
295
+    private String sceneAlias;
290 296
 }

+ 93
- 0
src/main/java/com/huiju/estateagents/entity/TaPersonFromRecord.java ファイルの表示

@@ -0,0 +1,93 @@
1
+package com.huiju.estateagents.entity;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableField;
5
+import com.baomidou.mybatisplus.annotation.TableId;
6
+import lombok.Data;
7
+import lombok.EqualsAndHashCode;
8
+import lombok.experimental.Accessors;
9
+
10
+import java.io.Serializable;
11
+import java.time.LocalDateTime;
12
+
13
+/**
14
+ * <p>
15
+ * 新增用户来源表 
16
+ * </p>
17
+ *
18
+ * @author jobob
19
+ * @since 2020-01-03
20
+ */
21
+@Data
22
+@EqualsAndHashCode(callSuper = false)
23
+@Accessors(chain = true)
24
+public class TaPersonFromRecord implements Serializable {
25
+
26
+    private static final long serialVersionUID = 1L;
27
+
28
+    /**
29
+     * 新增用户来源id
30
+     */
31
+    @TableId(value = "from_record_id", type = IdType.AUTO)
32
+    private Integer fromRecordId;
33
+
34
+    /**
35
+     * 微信来源字典id
36
+     */
37
+    private String sceneId;
38
+
39
+    /**
40
+     * 新增用户id
41
+     */
42
+    private String personId;
43
+
44
+    /**
45
+     * 是否第一次
46
+     */
47
+    private Boolean isFirstTime;
48
+
49
+    /**
50
+     * 类型ID值
51
+     */
52
+    private String targetId;
53
+
54
+    /**
55
+     * 分享人Id
56
+     */
57
+    private String sharePersonId;
58
+
59
+    /**
60
+     * 创建时间
61
+     */
62
+    private LocalDateTime createDate;
63
+
64
+    /**
65
+     * 公司id
66
+     */
67
+    private Integer orgId;
68
+
69
+    /**
70
+     * 楼盘id
71
+     */
72
+    private String buildingId;
73
+
74
+    /**
75
+     * 事件
76
+     */
77
+    private String event;
78
+
79
+    /**
80
+     * 事件类型
81
+     */
82
+    private String eventType;
83
+
84
+    /**
85
+     * 行为
86
+     */
87
+    private String activity;
88
+
89
+    /**
90
+     * 微信来源类型
91
+     */
92
+    private String sceneType;
93
+}

+ 8
- 0
src/main/java/com/huiju/estateagents/entity/TaPersonVisitRecord.java ファイルの表示

@@ -81,6 +81,12 @@ public class TaPersonVisitRecord implements Serializable {
81 81
      */
82 82
     private String consultantId;
83 83
 
84
+    /**
85
+     * 场景值id
86
+     */
87
+    @TableField(exist = false)
88
+    private String sceneId;
89
+
84 90
     /**
85 91
      * 分享者personid
86 92
      */
@@ -94,6 +100,8 @@ public class TaPersonVisitRecord implements Serializable {
94 100
 
95 101
     private String targetId;
96 102
 
103
+    private String targetType ;
104
+
97 105
     /**
98 106
      * 用户名称
99 107
      */

+ 5
- 5
src/main/java/com/huiju/estateagents/entity/TaShareRecord.java ファイルの表示

@@ -93,19 +93,19 @@ public class TaShareRecord implements Serializable {
93 93
 
94 94
     @TableField(exist = false)
95 95
     private String activityName;
96
-    
96
+
97 97
     @TableField(exist = false)
98 98
     private String mainImg;
99
-    
99
+
100 100
     @TableField(exist = false)
101 101
     private Integer activityStatus;
102
-    
102
+
103 103
     @TableField(exist = false)
104 104
     private LocalDateTime endDate;
105
-    
105
+
106 106
     @TableField(exist = false)
107 107
     private Integer id;
108
-    
108
+
109 109
     /**
110 110
      * 是否发起者
111 111
      */

+ 4
- 0
src/main/java/com/huiju/estateagents/entity/TdBizEvent.java ファイルの表示

@@ -55,6 +55,10 @@ public class TdBizEvent implements Serializable {
55 55
      */
56 56
     private LocalDateTime createDate;
57 57
 
58
+    /**
59
+     * 分数
60
+     */
61
+    private Integer points;
58 62
     /**
59 63
      * 意向值
60 64
      */

+ 62
- 0
src/main/java/com/huiju/estateagents/entity/TdWxDict.java ファイルの表示

@@ -0,0 +1,62 @@
1
+package com.huiju.estateagents.entity;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableField;
5
+import com.baomidou.mybatisplus.annotation.TableId;
6
+import com.huiju.estateagents.statistic.entity.TsPersonFromStatistic;
7
+import lombok.Data;
8
+import lombok.EqualsAndHashCode;
9
+import lombok.experimental.Accessors;
10
+
11
+import java.io.Serializable;
12
+import java.util.List;
13
+
14
+/**
15
+ * <p>
16
+ * 微信字典表 
17
+ * </p>
18
+ *
19
+ * @author jobob
20
+ * @since 2020-01-06
21
+ */
22
+@Data
23
+@EqualsAndHashCode(callSuper = false)
24
+@Accessors(chain = true)
25
+public class TdWxDict implements Serializable {
26
+
27
+    private static final long serialVersionUID = 1L;
28
+
29
+    /**
30
+     * 场景值id
31
+     */
32
+    @TableId(value = "scene_id", type = IdType.AUTO)
33
+    private String sceneId;
34
+
35
+    /**
36
+     * 场景名称
37
+     */
38
+    private String sceneName;
39
+
40
+    /**
41
+     * 场景类型
42
+     */
43
+    private String sceneType;
44
+
45
+    /**
46
+     * 场景类型别名
47
+     */
48
+    private String sceneAlias;
49
+
50
+
51
+    /**
52
+     * 来源人数合集
53
+     */
54
+    @TableField(exist = false)
55
+    private Integer fromData;
56
+
57
+    /**
58
+     * 注册人数合集
59
+     */
60
+    @TableField(exist = false)
61
+    private Integer registerSum;
62
+}

+ 2
- 2
src/main/java/com/huiju/estateagents/excel/TaActivityDynamicEnlistExport.java ファイルの表示

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

+ 5
- 2
src/main/java/com/huiju/estateagents/interceptor/AccessInterceptor.java ファイルの表示

@@ -52,10 +52,12 @@ public class AccessInterceptor implements HandlerInterceptor {
52 52
             "/wx/chat", // 聊天暂时不鉴权
53 53
             "/api/wx/",
54 54
             "/api/wx/tdCity",
55
+            "/api/wx/preload",
55 56
             "/api/admin/signin",
56 57
             "/api/taCheckin/activity",
57 58
             "/api/wx/qrcode/scene",
58 59
 		    "/api/center/signin",
60
+            "/api/channel/signin",
59 61
 		    "/api/admin/taUser/signin",
60 62
             "/swagger-resources/configuration/ui",
61 63
             "/swagger-resources",
@@ -66,7 +68,8 @@ public class AccessInterceptor implements HandlerInterceptor {
66 68
             "/webjars/springfox-swagger-ui",
67 69
             "/webjars/springfox-swagger-ui/css/typography.css",
68 70
             "/clean/menurole",
69
-            "/clean/buttonrole"
71
+            "/clean/buttonrole",
72
+            "/api/admin/taPersonFromRecord"
70 73
     };
71 74
 
72 75
     /*
@@ -142,7 +145,7 @@ public class AccessInterceptor implements HandlerInterceptor {
142 145
             // 只尝试去解析
143 146
             Jwts.parser().setSigningKey(JWTUtils.key).parseClaimsJws(jwtAuths[1]);
144 147
         } catch (ExpiredJwtException e) {
145
-            ResponseBean resp = ResponseBean.error("权限验证非法, Token 已过期", ResponseBean.ERROR_AUTH_EXPIRED);
148
+            ResponseBean resp = ResponseBean.error("权限验证非法, 身份信息已过期", ResponseBean.ERROR_AUTH_EXPIRED);
146 149
             response.addHeader("Content-type", "application/json");
147 150
             response.getOutputStream().write(JSONObject.toJSONBytes(resp));
148 151
             return false;

+ 24
- 10
src/main/java/com/huiju/estateagents/job/CustomerStatisticTimeJob.java ファイルの表示

@@ -1,9 +1,11 @@
1 1
 package com.huiju.estateagents.job;
2 2
 
3 3
 import com.huiju.estateagents.base.BaseController;
4
+import com.huiju.estateagents.service.ITaPersonFromRecordService;
4 5
 import com.huiju.estateagents.statistic.service.ITsCustomerGenderStatisticService;
5 6
 import com.huiju.estateagents.statistic.service.ITsCustomerStatisticDailyService;
6 7
 import com.huiju.estateagents.statistic.service.ITsCustomerStatisticMonthlyService;
8
+import com.huiju.estateagents.statistic.service.ITsUserBehaviorStatisticService;
7 9
 import org.slf4j.Logger;
8 10
 import org.slf4j.LoggerFactory;
9 11
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +38,12 @@ public class CustomerStatisticTimeJob extends BaseController {
36 38
     @Autowired
37 39
     private ITsCustomerStatisticMonthlyService customerStatisticMonthlyService;
38 40
 
41
+    @Autowired
42
+    public ITaPersonFromRecordService iTaPersonFromRecordService;
43
+
44
+    @Autowired
45
+    private ITsUserBehaviorStatisticService iTsUserBehaviorStatisticService;
46
+
39 47
     /**
40 48
      *
41 49
      * 盘客工具数据统计
@@ -43,36 +51,42 @@ public class CustomerStatisticTimeJob extends BaseController {
43 51
      * 开启定时任务,每天23:50执行
44 52
      */
45 53
     @Scheduled(cron = "59 50 23 * * ?")
46
-    //@Scheduled(cron = "* 0/5 * * * ?")
54
+//    @Scheduled(cron = "* 0/1 * * * ?")
47 55
     private void configureTasks() {
48 56
         LocalDateTime nowDate = LocalDateTime.now();
49
-    
57
+
50 58
         //每天的新增客户统计并入表
51 59
         customerStatisticDailyService.newCustomerStatisticDaily(nowDate);
52
-        
60
+
53 61
         //每天的跟进客户统计并入表
54 62
         customerStatisticDailyService.followUpStatisticDaily(nowDate);
55
-        
63
+
56 64
         //每天的到访客户统计并入表
57 65
         customerStatisticDailyService.visiteStatisticDaily(nowDate);
58
-    
66
+
59 67
         //每天的新增客户性别统计并入表
60 68
         taCustomerGenderStatisticService.newCustomerSexStatisticDaily(nowDate);
61
-    
69
+
62 70
         //每天的跟进客户性别统计并入表
63 71
         taCustomerGenderStatisticService.followUpSexStatisticDaily(nowDate);
64
-    
72
+
65 73
         //每天的到访客户性别统计并入表
66 74
         taCustomerGenderStatisticService.visiteSexStatisticDaily(nowDate);
67
-    
75
+
68 76
         //每月的新增客户统计并入表,但是每天都更新
69 77
         customerStatisticMonthlyService.newCustomerStatisticMonthly(nowDate);
70
-    
78
+
71 79
         //每月的跟进客户统计并入表,但是每天都更新
72 80
         customerStatisticMonthlyService.followUpStatisticMonthly(nowDate);
73
-    
81
+
74 82
         //每月的到访客户统计并入表,但是每天都更新
75 83
         customerStatisticMonthlyService.visiteStatisticMonthly(nowDate);
84
+
85
+        //统计新增来源用户
86
+        iTaPersonFromRecordService.personFromStatistic();
87
+
88
+        //统计用户行为数据
89
+        iTsUserBehaviorStatisticService.userBehaviorStatustic();
76 90
     }
77 91
 
78 92
 }

+ 0
- 2
src/main/java/com/huiju/estateagents/job/JudglActivityTimeJob.java ファイルの表示

@@ -1,7 +1,6 @@
1 1
 package com.huiju.estateagents.job;
2 2
 
3 3
 import com.huiju.estateagents.base.BaseController;
4
-import com.huiju.estateagents.center.sysUser.controller.SysUserController;
5 4
 import com.huiju.estateagents.common.DateUtils;
6 5
 import com.huiju.estateagents.drainage.service.ITaDrainageService;
7 6
 import com.huiju.estateagents.service.*;
@@ -89,7 +88,6 @@ public class JudglActivityTimeJob extends BaseController {
89 88
 
90 89
         //更新H5活动状态为已结束
91 90
         iTaDrainageService.updateDrainageToEnd();
92
-
93 91
     }
94 92
 
95 93
 }

+ 2
- 0
src/main/java/com/huiju/estateagents/mapper/TaBuildingMapper.java ファイルの表示

@@ -91,4 +91,6 @@ public interface TaBuildingMapper extends BaseMapper<TaBuilding> {
91 91
      * @return
92 92
      */
93 93
     int countNumByHeavy(@Param("heavy") Integer heavy, @Param("dynamicId") String dynamicId);
94
+
95
+    List<TaBuilding> selectMainBuildings(@Param("cityId") String cityId, @Param("orgId") Integer orgId);
94 96
 }

+ 18
- 0
src/main/java/com/huiju/estateagents/mapper/TaBuildingPanoramaMapper.java ファイルの表示

@@ -0,0 +1,18 @@
1
+package com.huiju.estateagents.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.huiju.estateagents.entity.TaBuildingPanorama;
5
+import org.apache.ibatis.annotations.Mapper;
6
+
7
+/**
8
+ * <p>
9
+ *   Mapper 接口
10
+ * </p>
11
+ *
12
+ * @author jobob
13
+ * @since 2020-01-30
14
+ */
15
+@Mapper
16
+public interface TaBuildingPanoramaMapper extends BaseMapper<TaBuildingPanorama> {
17
+
18
+}

+ 18
- 0
src/main/java/com/huiju/estateagents/mapper/TaChannelAppRelationMapper.java ファイルの表示

@@ -0,0 +1,18 @@
1
+package com.huiju.estateagents.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.huiju.estateagents.entity.TaChannelAppRelation;
5
+import org.apache.ibatis.annotations.Mapper;
6
+
7
+/**
8
+ * <p>
9
+ * 渠道小程序关系表 Mapper 接口
10
+ * </p>
11
+ *
12
+ * @author jobob
13
+ * @since 2020-01-04
14
+ */
15
+@Mapper
16
+public interface TaChannelAppRelationMapper extends BaseMapper<TaChannelAppRelation> {
17
+
18
+}

+ 22
- 0
src/main/java/com/huiju/estateagents/mapper/TaPersonFromRecordMapper.java ファイルの表示

@@ -0,0 +1,22 @@
1
+package com.huiju.estateagents.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.huiju.estateagents.entity.TaPersonFromRecord;
5
+import com.huiju.estateagents.statistic.entity.TsPersonFromStatistic;
6
+import org.apache.ibatis.annotations.Mapper;
7
+
8
+import java.util.List;
9
+
10
+/**
11
+ * <p>
12
+ * 新增用户来源表  Mapper 接口
13
+ * </p>
14
+ *
15
+ * @author jobob
16
+ * @since 2020-01-03
17
+ */
18
+@Mapper
19
+public interface TaPersonFromRecordMapper extends BaseMapper<TaPersonFromRecord> {
20
+
21
+    List<TsPersonFromStatistic> getNowDataList();
22
+}

+ 20
- 0
src/main/java/com/huiju/estateagents/mapper/TaPersonMapper.java ファイルの表示

@@ -67,6 +67,22 @@ public interface TaPersonMapper extends BaseMapper<TaPerson> {
67 67
     @Select("select count(1) from ta_person where org_id = #{org} AND person_type IN ('customer','drift','estate agent') and phone is not null")
68 68
     Integer selectRegisteredCount(@Param("org") Integer orgId);
69 69
 
70
+    /**
71
+     * 渠道代理后台总用户数
72
+     * @return
73
+     */
74
+    @ResultType(Integer.class)
75
+    @Select("select count(1) from ta_person where org_id = #{org}")
76
+    Integer selectChannelUserCount(@Param("org") String orgId);
77
+
78
+    /**
79
+     * 渠道代理后台总注册数
80
+     * @return
81
+     */
82
+    @ResultType(Integer.class)
83
+    @Select("select count(1) from ta_person where org_id = #{org} and phone is not null")
84
+    Integer selectChannelRegisteredCount(@Param("org") String orgId);
85
+
70 86
     /**
71 87
      * 根据时间段查询
72 88
      * @param personType
@@ -203,4 +219,8 @@ public interface TaPersonMapper extends BaseMapper<TaPerson> {
203 219
      * @return
204 220
      */
205 221
     Integer judgeBindStatusByCondition(@Param("userId") Integer userId, @Param("orgId") Integer orgId, @Param("phone") String phone);
222
+
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);
206 226
 }

+ 7
- 4
src/main/java/com/huiju/estateagents/mapper/TaPersonVisitRecordMapper.java ファイルの表示

@@ -4,7 +4,6 @@ package com.huiju.estateagents.mapper;
4 4
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 5
 import com.baomidou.mybatisplus.core.metadata.IPage;
6 6
 import com.huiju.estateagents.entity.TaConsultantInfo;
7
-import com.huiju.estateagents.entity.TaPerson;
8 7
 import com.huiju.estateagents.entity.TaPersonBuilding;
9 8
 import com.huiju.estateagents.entity.TaPersonVisitRecord;
10 9
 import org.apache.ibatis.annotations.Mapper;
@@ -27,7 +26,7 @@ import java.util.List;
27 26
 @Mapper
28 27
 public interface TaPersonVisitRecordMapper extends BaseMapper<TaPersonVisitRecord> {
29 28
 
30
-    IPage<TaPersonVisitRecord> visitRecordByPersonId(IPage<TaPersonVisitRecord> page,@Param("personId") String personId);
29
+    IPage<TaPersonVisitRecord> visitRecordByPersonId(IPage<TaPersonVisitRecord> page,@Param("personId") String personId,@Param("personBuildingList") List<TaPersonBuilding> personBuildingList,@Param("buildingId") String buildingId);
31 30
 
32 31
     Integer getDurationByPersonId(@Param("personId") String personId);
33 32
 
@@ -80,7 +79,11 @@ public interface TaPersonVisitRecordMapper extends BaseMapper<TaPersonVisitRecor
80 79
 
81 80
     IPage<TaPersonVisitRecord> getWxVisitRecordActivityList(IPage<TaPersonVisitRecord> pg, @Param("userId") Integer userId,@Param("personId") String personId,@Param("orgId") Integer orgId,@Param("eventType") String eventType);
82 81
 
83
-    IPage<TaConsultantInfo> getConsultantShareInfoList(IPage<TaConsultantInfo> pg, @Param("userId") Integer userId, @Param("orgId") Integer orgId);
82
+    IPage<TaConsultantInfo> getConsultantShareInfoList(IPage<TaConsultantInfo> pg, @Param("personId") String personId);
84 83
 
85
-    Integer countShareNumByEventType(@Param("targetId") String targetId, @Param("orgId")Integer orgId, @Param("userId")Integer userId, @Param("eventType")String eventType);
84
+    Integer countShareNumByEventType(@Param("orgId")Integer orgId, @Param("targetId") String targetId, @Param("userId")Integer userId, @Param("personId")String personId, @Param("eventType")String eventType);
85
+
86
+    List<TaPersonVisitRecord> selectData();
87
+
88
+    List<TaPersonVisitRecord> selectTapersonFromShare();
86 89
 }

+ 2
- 2
src/main/java/com/huiju/estateagents/mapper/TaRecommendCustomerMapper.java ファイルの表示

@@ -33,7 +33,7 @@ public interface TaRecommendCustomerMapper extends BaseMapper<TaRecommendCustome
33 33
 
34 34
     TaRecommendCustomer getCustomerById(@Param("customerId")String customerId);
35 35
 
36
-    IPage<TaRecommendCustomer> getCustomerList(IPage<TaRecommendCustomer> page,@Param("building") String building, @Param("name") String name, @Param("tel") String tel, @Param("consultName") String consultName, @Param("consultTel") String consultTel,@Param("entryType") String entryType,@Param("verifyStatus") String verifyStatus,@Param("sex") Integer sex, @Param("orgId") Integer orgId,@Param("status")Integer status, @Param("personBuildingList") List<TaPersonBuilding> personBuildingList);
36
+    IPage<TaRecommendCustomer> getCustomerList(IPage<TaRecommendCustomer> page,@Param("building") String building, @Param("name") String name, @Param("tel") String tel, @Param("consultName") String consultName, @Param("consultTel") String consultTel,@Param("entryType") String entryType,@Param("verifyStatus") String verifyStatus,@Param("sex") Integer sex, @Param("orgId") Integer orgId,@Param("status")Integer status, @Param("personBuildingList") List<TaPersonBuilding> personBuildingList,@Param("sceneType") String sceneType);
37 37
     IPage<TaRecommendCustomer> getRecCustomerList(IPage<TaRecommendCustomer> page,@Param("building") String building, @Param("name") String name, @Param("tel") String tel, @Param("consultName") String consultName, @Param("consultTel") String consultTel,@Param("entryType") String entryType,@Param("verifyStatus") String verifyStatus,@Param("sex") Integer sex, @Param("orgId") Integer orgId, @Param("personBuildingList") List<TaPersonBuilding> personBuildingList);
38 38
     IPage<TaRecommendCustomer> getRepCustomerList(IPage<TaRecommendCustomer> page,@Param("building") String building, @Param("name") String name, @Param("tel") String tel, @Param("consultName") String consultName, @Param("consultTel") String consultTel,@Param("entryType") String entryType,@Param("verifyStatus") String verifyStatus,@Param("sex") Integer sex, @Param("orgId") Integer orgId, @Param("personBuildingList") List<TaPersonBuilding> personBuildingList);
39 39
     IPage<TaPerson> getIndependentAgents(IPage<TaPerson>page, @Param("name") String name, @Param("tel") String tel, @Param("orgId") Integer orgId);
@@ -48,7 +48,7 @@ public interface TaRecommendCustomerMapper extends BaseMapper<TaRecommendCustome
48 48
      * @param sex
49 49
      * @return
50 50
      */
51
-    IPage<TaPerson> getPublicCustomerList(IPage<TaPerson> page, @Param("name") String name, @Param("tel") String tel,@Param("entryType") String entryType,@Param("verifyStatus") String verifyStatus,@Param("sex") Integer sex, @Param("orgId") Integer orgId,@Param("consultTel")String consultTel);
51
+    IPage<TaPerson> getPublicCustomerList(IPage<TaPerson> page, @Param("name") String name, @Param("tel") String tel,@Param("entryType") String entryType,@Param("verifyStatus") String verifyStatus,@Param("sex") Integer sex, @Param("orgId") Integer orgId,@Param("consultTel")String consultTel,@Param("sceneType") String sceneType);
52 52
 
53 53
     /**
54 54
      * 导出数据 获取推荐用户数据

+ 2
- 0
src/main/java/com/huiju/estateagents/mapper/TdCityMapper.java ファイルの表示

@@ -26,4 +26,6 @@ public interface TdCityMapper extends BaseMapper<TdCity> {
26 26
      * @return
27 27
      */
28 28
     List<TdCity> selectWxCity(@Param("orgId") Integer orgId);
29
+
30
+    TdCity getOrgDefaultCity(@Param("orgId") Integer orgId);
29 31
 }

+ 18
- 0
src/main/java/com/huiju/estateagents/mapper/TdWxDictMapper.java ファイルの表示

@@ -0,0 +1,18 @@
1
+package com.huiju.estateagents.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.huiju.estateagents.entity.TdWxDict;
5
+import org.apache.ibatis.annotations.Mapper;
6
+
7
+/**
8
+ * <p>
9
+ * 微信字典表  Mapper 接口
10
+ * </p>
11
+ *
12
+ * @author jobob
13
+ * @since 2020-01-06
14
+ */
15
+@Mapper
16
+public interface TdWxDictMapper extends BaseMapper<TdWxDict> {
17
+
18
+}

+ 18
- 0
src/main/java/com/huiju/estateagents/service/IStatisticalService.java ファイルの表示

@@ -106,4 +106,22 @@ public interface IStatisticalService {
106 106
      * @return
107 107
      */
108 108
     ResponseBean selectIntentionUser(Integer pageNum, Integer pageSize, Integer orgId, String buildingId);
109
+
110
+    /**
111
+     * 用户来源数据 首页
112
+     * @param orgId
113
+     * @param startDate
114
+     * @param endDate
115
+     * @return
116
+     */
117
+    ResponseBean selectPersonFrom(Integer orgId, LocalDate startDate, LocalDate endDate);
118
+
119
+    /**
120
+     * 用户来源数据统计折线图
121
+     * @param orgId
122
+     * @param startDate
123
+     * @param endDate
124
+     * @return
125
+     */
126
+    ResponseBean selectPersonFromGroupByDay(Integer orgId, LocalDate startDate, LocalDate endDate);
109 127
 }

+ 16
- 0
src/main/java/com/huiju/estateagents/service/ITaBuildingPanoramaService.java ファイルの表示

@@ -0,0 +1,16 @@
1
+package com.huiju.estateagents.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.huiju.estateagents.entity.TaBuildingPanorama;
5
+
6
+/**
7
+ * <p>
8
+ *   服务类
9
+ * </p>
10
+ *
11
+ * @author jobob
12
+ * @since 2020-01-30
13
+ */
14
+public interface ITaBuildingPanoramaService extends IService<TaBuildingPanorama> {
15
+
16
+}

+ 1
- 1
src/main/java/com/huiju/estateagents/service/ITaBuildingService.java ファイルの表示

@@ -133,7 +133,7 @@ public interface ITaBuildingService extends IService<TaBuilding> {
133 133
      * 微信小程序 楼盘列表
134 134
      * @return
135 135
      */
136
-    ResponseBean getWxMainBuildingList();
136
+    ResponseBean getWxMainBuildingList(String cityId, Integer orgId);
137 137
 
138 138
     ResponseBean getWxBuildingById(String buildingId);
139 139
 

+ 16
- 0
src/main/java/com/huiju/estateagents/service/ITaChannelAppRelationService.java ファイルの表示

@@ -0,0 +1,16 @@
1
+package com.huiju.estateagents.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.huiju.estateagents.entity.TaChannelAppRelation;
5
+
6
+/**
7
+ * <p>
8
+ * 渠道小程序关系表 服务类
9
+ * </p>
10
+ *
11
+ * @author jobob
12
+ * @since 2020-01-04
13
+ */
14
+public interface ITaChannelAppRelationService extends IService<TaChannelAppRelation> {
15
+
16
+}

+ 3
- 1
src/main/java/com/huiju/estateagents/service/ITaMiniappService.java ファイルの表示

@@ -13,5 +13,7 @@ import com.huiju.estateagents.entity.TaMiniapp;
13 13
  */
14 14
 public interface ITaMiniappService extends IService<TaMiniapp> {
15 15
 
16
-    TaMiniapp saveInfoWithTpls(TaMiniapp taMiniapp) throws Exception;
16
+    TaMiniapp saveInfoWithTpls(TaMiniapp taMiniapp, Integer channelId) throws Exception;
17
+
18
+    TaMiniapp getInfoWithTpls(String appid);
17 19
 }

+ 23
- 0
src/main/java/com/huiju/estateagents/service/ITaPersonFromRecordService.java ファイルの表示

@@ -0,0 +1,23 @@
1
+package com.huiju.estateagents.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.huiju.estateagents.entity.TaPersonFromRecord;
5
+import com.huiju.estateagents.entity.TaPersonVisitRecord;
6
+
7
+/**
8
+ * <p>
9
+ * 新增用户来源表  服务类
10
+ * </p>
11
+ *
12
+ * @author jobob
13
+ * @since 2020-01-03
14
+ */
15
+public interface ITaPersonFromRecordService extends IService<TaPersonFromRecord> {
16
+
17
+    void addNewPersonRecordRecord(TaPersonVisitRecord taPersonVisitRecord);
18
+
19
+    /**
20
+     * 定时任务批量保存数据
21
+     */
22
+    void personFromStatistic();
23
+}

+ 1
- 1
src/main/java/com/huiju/estateagents/service/ITaPersonService.java ファイルの表示

@@ -57,7 +57,7 @@ public interface ITaPersonService extends IService<TaPerson> {
57 57
 
58 58
     List<TaPerson> getPersonsByOpenId(String openid);
59 59
 
60
-    IPage<TaPerson> getDriftCustomerList (int pageNumber, int pageSize,String building, Integer orgId);
60
+    IPage<TaPerson> getDriftCustomerList (int pageNumber, int pageSize,String building, Integer orgId, String sceneType);
61 61
 
62 62
     String getPersonIdByCustomerId(String customerId);
63 63
 

+ 2
- 2
src/main/java/com/huiju/estateagents/service/ITaPersonVisitRecordService.java ファイルの表示

@@ -60,7 +60,7 @@ public interface ITaPersonVisitRecordService extends IService<TaPersonVisitRecor
60 60
 
61 61
 	IPage<TaPersonVisitRecord> getDrainageVisitRecord(IPage<TaPersonVisitRecord> pg, Integer orgId, String activityName, String eventType, String shareName, String shareTel, String buildingId, String personType, List<TaPersonBuilding> taPersonBuildingList);
62 62
 
63
-	IPage<TaConsultantInfo> getConsultantShareInfoList(IPage<TaConsultantInfo> pg, Integer userId, Integer orgId);
63
+	IPage<TaConsultantInfo> getConsultantShareInfoList(IPage<TaConsultantInfo> pg, String personId);
64 64
 
65
-	Integer countShareNumByEventType(String targetId, Integer orgId, Integer userId, String eventType);
65
+	Integer countShareNumByEventType(Integer orgId, String targetId, Integer userId, String personId, String eventType);
66 66
 }

+ 7
- 4
src/main/java/com/huiju/estateagents/service/ITaRecommendCustomerService.java ファイルの表示

@@ -2,6 +2,7 @@ package com.huiju.estateagents.service;
2 2
 
3 3
 import com.baomidou.mybatisplus.core.metadata.IPage;
4 4
 import com.huiju.estateagents.base.ResponseBean;
5
+import com.huiju.estateagents.center.taUser.entity.TaUser;
5 6
 import com.huiju.estateagents.entity.TaPerson;
6 7
 import com.huiju.estateagents.entity.TaPersonBuilding;
7 8
 import com.huiju.estateagents.entity.TaRecommendCustomer;
@@ -9,8 +10,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
9 10
 import com.huiju.estateagents.excel.AgentsRecommendCustomer;
10 11
 import com.huiju.estateagents.excel.ExcelRecommendCustomer;
11 12
 import com.huiju.estateagents.excel.ReporRecommendCustomer;
13
+import io.swagger.models.auth.In;
12 14
 
13
-import java.time.LocalDateTime;
14 15
 import java.util.List;
15 16
 
16 17
 /**
@@ -35,7 +36,7 @@ public interface ITaRecommendCustomerService extends IService<TaRecommendCustome
35 36
 
36 37
     IPage<TaRecommendCustomer> getUnSignedCustomerList(int pageNumber, int pageSize, String building,String personId);
37 38
 
38
-    IPage getCustomerList(Integer status,int pageNumber, int pageSize, String building,String name,String tel,String consultName,String consultTel,String entryType,String verifyStatus,Integer sex, String customerType, Integer orgId,List<TaPersonBuilding> taPersonBuildingList);
39
+    IPage getCustomerList(Integer status,int pageNumber, int pageSize, String building,String name,String tel,String consultName,String consultTel,String entryType,String verifyStatus,Integer sex, String customerType, Integer orgId,List<TaPersonBuilding> taPersonBuildingList,String sceneType);
39 40
 
40 41
     IPage<TaRecommendCustomer> getRecCustomerList(int pageNumber, int pageSize, String building,String name,String tel,String consultName,String consultTel,String entryType,String verifyStatus,Integer sex, Integer orgId,List<TaPersonBuilding> taPersonBuildingList);
41 42
 
@@ -44,9 +45,9 @@ public interface ITaRecommendCustomerService extends IService<TaRecommendCustome
44 45
     IPage<TaPerson> getIndependentAgents(int pageNumber, int pageSize,String name,String tel, Integer orgId);
45 46
 
46 47
 
47
-    TaRecommendCustomer getCustomerDetail(String customerId,int pageNumber, int pageSize,List<TaPersonBuilding> taPersonBuildingList);
48
+    TaRecommendCustomer getCustomerDetail(String customerId,int pageNumber, int pageSize,List<TaPersonBuilding> taPersonBuildingList,String buildingId);
48 49
 
49
-    TaPerson getPublicCustomerDetail(String personId,int pageNumber, int pageSize,List<TaPersonBuilding> taPersonBuildingList);
50
+    TaPerson getPublicCustomerDetail(String personId,int pageNumber, int pageSize,List<TaPersonBuilding> taPersonBuildingList,String buildingId);
50 51
 
51 52
     TaRecommendCustomer getCustomerById(String customerId);
52 53
 
@@ -54,6 +55,8 @@ public interface ITaRecommendCustomerService extends IService<TaRecommendCustome
54 55
 
55 56
     TaRecommendCustomer newByPerson(TaPerson person);
56 57
 
58
+    ResponseBean consultantAssist(TaUser taUser, String personId, Integer orgId);
59
+
57 60
     /**
58 61
      * 导出数据(推荐客户)
59 62
      * @param orgId

+ 11
- 0
src/main/java/com/huiju/estateagents/service/ITaSharePersonFromService.java ファイルの表示

@@ -1,6 +1,7 @@
1 1
 package com.huiju.estateagents.service;
2 2
 
3 3
 import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.huiju.estateagents.base.ResponseBean;
4 5
 import com.huiju.estateagents.entity.TaSharePersonFrom;
5 6
 
6 7
 /**
@@ -13,4 +14,14 @@ import com.huiju.estateagents.entity.TaSharePersonFrom;
13 14
  */
14 15
 public interface ITaSharePersonFromService extends IService<TaSharePersonFrom> {
15 16
 
17
+    /**
18
+     * 添加客户分享记录
19
+     * @param personId
20
+     * @param orgId
21
+     * @param from
22
+     * @param recommender
23
+     * @param targetId
24
+     * @return
25
+     */
26
+    TaSharePersonFrom addSharePersonRecord(String personId, Integer orgId, String from, String recommender, String targetId);
16 27
 }

+ 2
- 2
src/main/java/com/huiju/estateagents/service/ITdCityService.java ファイルの表示

@@ -18,12 +18,12 @@ public interface ITdCityService extends IService<TdCity> {
18 18
     List<TdCity> selectCity(String leveltype,String status);
19 19
 
20 20
     // 微信端城市
21
-    List<TdCity> selectWxCity(String leveltype,Integer orgId);
21
+    List<TdCity> selectWxCity(String leveltype, Integer orgId);
22 22
 	
23 23
 	/**
24 24
 	 * 根据经纬度获取城市详情信息
25 25
 	 * @param location
26 26
 	 * @return
27 27
 	 */
28
-	TdCity getLocationCity(String location);
28
+	TdCity getLocationCity(String location, Integer orgId);
29 29
 }

+ 16
- 0
src/main/java/com/huiju/estateagents/service/ITdWxDictService.java ファイルの表示

@@ -0,0 +1,16 @@
1
+package com.huiju.estateagents.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.huiju.estateagents.entity.TdWxDict;
5
+
6
+/**
7
+ * <p>
8
+ * 微信字典表  服务类
9
+ * </p>
10
+ *
11
+ * @author jobob
12
+ * @since 2020-01-06
13
+ */
14
+public interface ITdWxDictService extends IService<TdWxDict> {
15
+
16
+}

+ 1
- 1
src/main/java/com/huiju/estateagents/service/impl/ExtendContentServiceImpl.java ファイルの表示

@@ -76,7 +76,7 @@ public class ExtendContentServiceImpl extends ServiceImpl<ExtendContentMapper, E
76 76
         // 开屏
77 77
         QueryWrapper<ExtendContent> extendContentQuery= new QueryWrapper<>();
78 78
         // banner 或 screen(首屏广告) ,这里是 screen
79
-        extendContentQuery.eq("show_type",showType);
79
+        extendContentQuery.eq(StringUtils.isNotBlank(showType), "show_type",showType);
80 80
         extendContentQuery.eq(StringUtils.isNotBlank(showPosition), "show_position",showPosition);
81 81
         extendContentQuery.eq(StringUtils.isNotBlank(targetId), "target_id",targetId);
82 82
         extendContentQuery.eq(StringUtils.isNotBlank(contentId), "content_id",contentId);

+ 104
- 6
src/main/java/com/huiju/estateagents/service/impl/StatisticalServiceImpl.java ファイルの表示

@@ -1,20 +1,29 @@
1 1
 package com.huiju.estateagents.service.impl;
2 2
 
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
3 4
 import com.baomidou.mybatisplus.core.metadata.IPage;
4 5
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5 6
 import com.huiju.estateagents.base.ResponseBean;
6 7
 import com.huiju.estateagents.common.CommConstant;
7 8
 import com.huiju.estateagents.entity.TaPersonVisitRecord;
9
+import com.huiju.estateagents.entity.TdWxDict;
8 10
 import com.huiju.estateagents.exception.EstaException;
9 11
 import com.huiju.estateagents.mapper.*;
10 12
 import com.huiju.estateagents.po.PersonPO;
11 13
 import com.huiju.estateagents.service.IStatisticalService;
14
+import com.huiju.estateagents.statistic.entity.TsPersonFromStatistic;
15
+import com.huiju.estateagents.statistic.mapper.TsPersonFromStatisticMapper;
12 16
 import lombok.extern.slf4j.Slf4j;
13 17
 import org.springframework.beans.factory.annotation.Autowired;
14 18
 import org.springframework.stereotype.Service;
15 19
 
16 20
 import java.time.LocalDate;
21
+import java.time.LocalDateTime;
22
+import java.time.format.DateTimeFormatter;
23
+import java.time.temporal.ChronoUnit;
17 24
 import java.util.*;
25
+import java.util.stream.Collectors;
26
+import java.util.stream.Stream;
18 27
 
19 28
 /**
20 29
  * 数据统计
@@ -42,6 +51,12 @@ public class StatisticalServiceImpl implements IStatisticalService {
42 51
     @Autowired
43 52
     private TaPersonIntentionRecordMapper taPersonIntentionRecordMapper;
44 53
 
54
+    @Autowired
55
+    private TsPersonFromStatisticMapper tsPersonFromStatisticMapper;
56
+
57
+    @Autowired
58
+    private TdWxDictMapper tdWxDictMapper;
59
+
45 60
 
46 61
     @Override
47 62
     public ResponseBean indexStatistical(Integer orgId) {
@@ -198,13 +213,14 @@ public class StatisticalServiceImpl implements IStatisticalService {
198 213
     public ResponseBean selectUserResource(Integer orgId, LocalDate startDate, LocalDate endDate) {
199 214
         ResponseBean responseBean = new ResponseBean();
200 215
         // 用户来源 柱状
201
-        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);
202 217
 
203 218
         // 用户来源饼状
204
-        // 来源置业顾问, 来源全民经纪人,自由进入
205
-        Integer person_realty_consultant = taPersonMapper.selectUserSourcePie(orgId, CommConstant.PERSON_REALTY_CONSULTANT, CommConstant.PERSON_REALTY_CONSULTANT);
206
-        Integer person_estate_agent = taPersonMapper.selectUserSourcePie(orgId, CommConstant.PERSON_ESTATE_AGENT, CommConstant.PERSON_REALTY_CONSULTANT);
207
-        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;
208 224
         Map<String, Object> map = new HashMap<>();
209 225
         map.put("person_realty_consultant", person_realty_consultant);
210 226
         map.put("person_estate_agent", person_estate_agent);
@@ -214,7 +230,7 @@ public class StatisticalServiceImpl implements IStatisticalService {
214 230
         List<Map<String, Object>> selectUserSourceData = taPersonMapper.selectUserSourceData(orgId, CommConstant.PERSON_ESTATE_AGENT, startDate, endDate);
215 231
 
216 232
         Map<String, Object> result = new HashMap<>();
217
-        result.put("columnar", mapList);
233
+        result.put("columnar", new ArrayList<Map<String,Object>>());
218 234
         result.put("pie", map);
219 235
         result.put("data", selectUserSourceData);
220 236
 
@@ -302,4 +318,86 @@ public class StatisticalServiceImpl implements IStatisticalService {
302 318
         responseBean.addSuccess(page);
303 319
         return responseBean;
304 320
     }
321
+
322
+    /**
323
+     * 用户来源数据 首页
324
+     *
325
+     * @param orgId
326
+     * @param startDate
327
+     * @param endDate
328
+     * @return
329
+     */
330
+    @Override
331
+    public ResponseBean selectPersonFrom(Integer orgId, LocalDate startDate, LocalDate endDate) {
332
+        ResponseBean responseBean = new ResponseBean();
333
+//        List<TsPersonFromStatistic> list = tsPersonFromStatisticMapper.selectPersonFrom(orgId,startDate,endDate);
334
+        QueryWrapper<TdWxDict> tdWxDictQueryWrapper = new QueryWrapper<>();
335
+        tdWxDictQueryWrapper.groupBy("scene_type");
336
+        List<TdWxDict> tdWxDicts = tdWxDictMapper.selectList(tdWxDictQueryWrapper);
337
+//        tdWxDicts.forEach(e -> {
338
+//            int fromSum = list.stream().filter(l -> e.getSceneType().equals(l.getSceneType())).mapToInt(TsPersonFromStatistic::getFromNum).sum();
339
+//            int registerSum = list.stream().filter(l -> e.getSceneType().equals(l.getSceneType())).mapToInt(TsPersonFromStatistic::getRegisteredNum).sum();
340
+//            e.setFromData(fromSum);
341
+//            e.setRegisterSum(registerSum);
342
+//        });
343
+        Map<String,Object> map = new HashMap<>();
344
+        map.put("tdWxDicts",tdWxDicts);
345
+//        List<TsPersonFromStatistic> tableList = tsPersonFromStatisticMapper.selectPersonFromGroupByData(orgId,startDate,endDate);
346
+//        map.put("list",tableList);
347
+        responseBean.addSuccess(map);
348
+        return responseBean;
349
+    }
350
+
351
+    /**
352
+     * 用户来源数据统计折线图
353
+     *
354
+     * @param orgId
355
+     * @param startDate
356
+     * @param endDate
357
+     * @return
358
+     */
359
+    @Override
360
+    public ResponseBean selectPersonFromGroupByDay(Integer orgId, LocalDate startDate, LocalDate endDate) {
361
+        List<TsPersonFromStatistic> dayList = getDayList(startDate, endDate);
362
+        List<TsPersonFromStatistic> list = tsPersonFromStatisticMapper.selectPersonFromGroupByDay(orgId,startDate,endDate);
363
+        dayList.forEach(e -> {
364
+            list.forEach(l -> {
365
+                if (e.getCreateTime().equals(l.getCreateTime())){
366
+                    e.setFromNum(l.getFromNum());
367
+                    e.setRegisteredNum(l.getRegisteredNum());
368
+                }
369
+            });
370
+        });
371
+        return ResponseBean.success(dayList);
372
+    }
373
+
374
+    /**
375
+     * 返回时间区间格式
376
+     * @param startDate
377
+     * @param endDate
378
+     * @return
379
+     */
380
+    private List<TsPersonFromStatistic> getDayList(LocalDate startDate, LocalDate endDate) {
381
+        if (null == startDate || null == endDate){
382
+            endDate = LocalDate.now();
383
+            startDate = LocalDate.now().plusDays(-7);
384
+        }
385
+
386
+        //获取时间区间
387
+        List<LocalDate> dates = Stream.iterate(startDate, date -> date.plusDays(1))
388
+                .limit(ChronoUnit.DAYS.between(startDate, endDate))
389
+                .collect(Collectors.toList());
390
+
391
+        //格式化时间
392
+        List<TsPersonFromStatistic> dataList = new ArrayList<>();
393
+        DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
394
+        dates.forEach(e -> {
395
+            TsPersonFromStatistic tsPersonFromStatistic = new TsPersonFromStatistic();
396
+            tsPersonFromStatistic.setRegisteredNum(0);
397
+            tsPersonFromStatistic.setFromNum(0);
398
+            tsPersonFromStatistic.setCreateTime(dtf3.format(e));
399
+            dataList.add(tsPersonFromStatistic);
400
+        });
401
+        return dataList;
402
+    }
305 403
 }

+ 1
- 1
src/main/java/com/huiju/estateagents/service/impl/TaBuildingIntentionServiceImpl.java ファイルの表示

@@ -79,7 +79,7 @@ public class TaBuildingIntentionServiceImpl extends ServiceImpl<TaBuildingIntent
79 79
             taBuildingIntention.setEventId(e.getEventId());
80 80
             taBuildingIntention.setEventCode(e.getEventCode());
81 81
             taBuildingIntention.setEventName(e.getEventName());
82
-            taBuildingIntention.setIntention(1);
82
+            taBuildingIntention.setIntention(e.getPoints());
83 83
             taBuildingIntention.setCreateDate(LocalDateTime.now());
84 84
             taBuildingIntention.setBuildingId(buildingId);
85 85
             taBuildingIntention.setStatus(1);

+ 20
- 0
src/main/java/com/huiju/estateagents/service/impl/TaBuildingPanoramaServiceImpl.java ファイルの表示

@@ -0,0 +1,20 @@
1
+package com.huiju.estateagents.service.impl;
2
+
3
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4
+import com.huiju.estateagents.entity.TaBuildingPanorama;
5
+import com.huiju.estateagents.mapper.TaBuildingPanoramaMapper;
6
+import com.huiju.estateagents.service.ITaBuildingPanoramaService;
7
+import org.springframework.stereotype.Service;
8
+
9
+/**
10
+ * <p>
11
+ *   服务实现类
12
+ * </p>
13
+ *
14
+ * @author jobob
15
+ * @since 2020-01-30
16
+ */
17
+@Service
18
+public class TaBuildingPanoramaServiceImpl extends ServiceImpl<TaBuildingPanoramaMapper, TaBuildingPanorama> implements ITaBuildingPanoramaService {
19
+
20
+}

+ 74
- 14
src/main/java/com/huiju/estateagents/service/impl/TaBuildingServiceImpl.java ファイルの表示

@@ -102,6 +102,9 @@ public class TaBuildingServiceImpl extends ServiceImpl<TaBuildingMapper, TaBuild
102 102
     @Autowired
103 103
     public ITaBuildingIntentionService iTaBuildingIntentionService;
104 104
 
105
+    @Autowired
106
+    private ITaBuildingPanoramaService taBuildingPanoramaService;
107
+
105 108
     @Override
106 109
     public ResponseBean buildingList(Integer pageNum, Integer pageSize, String name, String code, LocalDateTime startDate, String buildingStatus, String marketStatus, Integer cityId, Integer isMain, Integer orgId,List<TaPersonBuilding> taPersonBuildingList) {
107 110
         Page<TaBuilding> page = new Page<>();
@@ -292,6 +295,15 @@ public class TaBuildingServiceImpl extends ServiceImpl<TaBuildingMapper, TaBuild
292 295
         List<TaBuildingMapRelation> mapRelationList = iTaBuildingMapRelationService.list(mapRelationQueryWrapper);
293 296
         building.setMapJson(mapRelationList.size() > 0 ? JSONObject.toJSONString(mapRelationList) : null);
294 297
 
298
+        //查询关联的全景图列表
299
+        QueryWrapper<TaBuildingPanorama> panoramaQueryWrapper = new QueryWrapper<>();
300
+        panoramaQueryWrapper.eq("building_id", building.getBuildingId());
301
+        panoramaQueryWrapper.eq("org_id", building.getOrgId());
302
+        panoramaQueryWrapper.eq("status", CommConstant.STATUS_NORMAL);
303
+        panoramaQueryWrapper.orderByDesc("create_date");
304
+        List<TaBuildingPanorama> panoramaList = taBuildingPanoramaService.list(panoramaQueryWrapper);
305
+        building.setPanoramaList(panoramaList);
306
+
295 307
         return ResponseBean.success(building);
296 308
     }
297 309
 
@@ -304,7 +316,7 @@ public class TaBuildingServiceImpl extends ServiceImpl<TaBuildingMapper, TaBuild
304 316
 
305 317
         boolean isMainMoreThanTenFlag = publishCountIsMainBuilding(building, orgId, null, "update");
306 318
         if (!isMainMoreThanTenFlag){
307
-            responseBean.addError("每个城市只能推荐10个楼盘到首页,请先将已推荐楼盘取消推荐后再推荐当前楼盘。");
319
+            responseBean.addError("当前城市最多只能推荐10个项目至首页哦。");
308 320
             return responseBean;
309 321
         }
310 322
 
@@ -458,9 +470,12 @@ public class TaBuildingServiceImpl extends ServiceImpl<TaBuildingMapper, TaBuild
458 470
 
459 471
         TaBuilding building = object.toJavaObject(TaBuilding.class);
460 472
 
461
-        if(null!= object.getDate("openingDate")){
462
-            building.setOpeningDate(DateUtils.date2LocalDateTime(object.getDate("openingDate")));
473
+        boolean isMainMoreThanTenFlag = publishCountIsMainBuilding(building, orgId, null, "add");
474
+        if (!isMainMoreThanTenFlag){
475
+            responseBean.addError("当前城市最多只能推荐10个项目至首页哦。");
476
+            return responseBean;
463 477
         }
478
+
464 479
         building.setCreateDate(LocalDateTime.now());
465 480
         building.setStatus(2);
466 481
         building.setOrgId(orgId);
@@ -556,7 +571,7 @@ public class TaBuildingServiceImpl extends ServiceImpl<TaBuildingMapper, TaBuild
556 571
 
557 572
         boolean isMainMoreThanTenFlag = publishCountIsMainBuilding(taBuildingMapper.selectOne(buildingIdQueryWrapper), orgId, status, "updateStatus");
558 573
         if (!isMainMoreThanTenFlag){
559
-            responseBean.addError("每个城市只能推荐10个楼盘到首页,请先将已推荐楼盘取消推荐后再推荐当前楼盘。");
574
+            responseBean.addError("当前城市最多只能推荐10个项目至首页哦");
560 575
             return responseBean;
561 576
         }
562 577
 
@@ -764,18 +779,60 @@ public class TaBuildingServiceImpl extends ServiceImpl<TaBuildingMapper, TaBuild
764 779
     }
765 780
 
766 781
     @Override
767
-    public ResponseBean getWxMainBuildingList() {
768
-        QueryWrapper<TaBuilding> buildingQueryWrapper = new QueryWrapper<>();
769
-        buildingQueryWrapper.eq("status", 1);
770
-        buildingQueryWrapper.eq("is_main", 1);
771
-        buildingQueryWrapper.orderByAsc("order_no");
772
-        List<TaBuilding> buildingList = taBuildingMapper.selectList(buildingQueryWrapper);
782
+    public ResponseBean getWxMainBuildingList(String cityId, Integer orgId) {
783
+        List<TaBuilding> buildingList = taBuildingMapper.selectMainBuildings(cityId, orgId);
784
+        if (null == buildingList) {
785
+            return ResponseBean.success(new ArrayList<>());
786
+        }
773 787
 
774
-        for (TaBuilding build:buildingList) {
775
-            getBuildingAttaches(build);
788
+        for (TaBuilding building : buildingList) {
789
+            String buildingId = building.getBuildingId();
790
+
791
+            // 列表封面
792
+            if (!StringUtils.isEmpty(building.getListPoster())) {
793
+                List<TaBuildingImg> listImage = new ArrayList<>();
794
+                TaBuildingImg img = new TaBuildingImg();
795
+                img.setImgType(CommConstant.BUILDING_IMG_LIST);
796
+                img.setBuildingId(buildingId);
797
+                img.setUrl(building.getListPoster());
798
+                listImage.add(img);
799
+                building.setBuildingListImg(listImage);
800
+            }
801
+
802
+            // tags
803
+            if (!StringUtils.isEmpty(building.getTags())) {
804
+                List<TaBuildingTag> tags = new ArrayList<>();
805
+                String[] tagsArray =  building.getTags().split(",");
806
+                if (null != tagsArray) {
807
+                    for(String tagName: tagsArray) {
808
+                        TaBuildingTag tag = new TaBuildingTag();
809
+                        tag.setBuildingId(buildingId);
810
+                        tag.setTagName(tagName);
811
+                        tags.add(tag);
812
+                    }
813
+                }
814
+                building.setBuildingTag(tags);
815
+            }
816
+
817
+            // Uv
818
+            IPage<TaUv> pageUv = new Page<>(1, 10);
819
+            QueryWrapper<TaUv> query3 = new QueryWrapper<>();
820
+            query3.eq("be_uv", buildingId);
821
+            query3.eq("tagert_type", CommConstant.FAVOR_PROJECT);
822
+            query3.orderByDesc("create_date");
823
+            IPage<TaUv> uvs = taUvMapper.selectPage(pageUv, query3);
824
+            building.setUvList(uvs);
825
+
826
+            // share num
827
+            IPage<TaShare> pageSN = new Page<>(1, 10);
828
+            pageSN.setTotal(null == building.getShareNum() ? 0l : building.getShareNum());
829
+            building.setShareList(pageSN);
776 830
         }
777 831
 
778
-        return ResponseBean.success(buildingList);
832
+        IPage<TaBuilding> page = new Page<>(1, 10);
833
+        page.setTotal(buildingList.size());
834
+        page.setRecords(buildingList);
835
+        return ResponseBean.success(page);
779 836
     }
780 837
 
781 838
     @Override
@@ -902,9 +959,12 @@ public class TaBuildingServiceImpl extends ServiceImpl<TaBuildingMapper, TaBuild
902 959
         queryWrapper.eq("building_id", taBuilding.getBuildingId());
903 960
         queryWrapper.eq("org_id", orgId);
904 961
         TaBuilding info = taBuildingMapper.selectOne(queryWrapper);
905
-        if (operte.equals("update") && (taBuilding.getIsMain() != 1 || info.getStatus() == 2)){
962
+        if (taBuilding.getIsMain() != 1){
906 963
             return true;
907 964
         }
965
+//        if (operte.equals("update") && (info.getStatus() == 2)){
966
+//            return true;
967
+//        }
908 968
         if (operte.equals("updateStatus") && status == 2){
909 969
             return true;
910 970
         }

+ 20
- 0
src/main/java/com/huiju/estateagents/service/impl/TaChannelAppRelationServiceImpl.java ファイルの表示

@@ -0,0 +1,20 @@
1
+package com.huiju.estateagents.service.impl;
2
+
3
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4
+import com.huiju.estateagents.entity.TaChannelAppRelation;
5
+import com.huiju.estateagents.mapper.TaChannelAppRelationMapper;
6
+import com.huiju.estateagents.service.ITaChannelAppRelationService;
7
+import org.springframework.stereotype.Service;
8
+
9
+/**
10
+ * <p>
11
+ * 渠道小程序关系表 服务实现类
12
+ * </p>
13
+ *
14
+ * @author jobob
15
+ * @since 2020-01-04
16
+ */
17
+@Service
18
+public class TaChannelAppRelationServiceImpl extends ServiceImpl<TaChannelAppRelationMapper, TaChannelAppRelation> implements ITaChannelAppRelationService {
19
+
20
+}

+ 28
- 1
src/main/java/com/huiju/estateagents/service/impl/TaMiniappServiceImpl.java ファイルの表示

@@ -3,10 +3,14 @@ package com.huiju.estateagents.service.impl;
3 3
 import cn.binarywang.wx.miniapp.api.WxMaService;
4 4
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5 5
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
6
+import com.huiju.estateagents.channel.sysChannel.entity.TaChannelProxy;
7
+import com.huiju.estateagents.channel.sysChannel.mapper.TaChannelProxyMapper;
6 8
 import com.huiju.estateagents.common.StringUtils;
7 9
 import com.huiju.estateagents.common.WxUtils;
10
+import com.huiju.estateagents.entity.TaChannelAppRelation;
8 11
 import com.huiju.estateagents.entity.TaMiniapp;
9 12
 import com.huiju.estateagents.entity.TaMiniappTemplate;
13
+import com.huiju.estateagents.mapper.TaChannelAppRelationMapper;
10 14
 import com.huiju.estateagents.mapper.TaMiniappMapper;
11 15
 import com.huiju.estateagents.mapper.TaMiniappTemplateMapper;
12 16
 import com.huiju.estateagents.service.ITaMiniappService;
@@ -14,6 +18,8 @@ import org.checkerframework.checker.units.qual.A;
14 18
 import org.springframework.beans.factory.annotation.Autowired;
15 19
 import org.springframework.stereotype.Service;
16 20
 
21
+import java.time.LocalDateTime;
22
+
17 23
 /**
18 24
  * <p>
19 25
  * 小程序表  服务实现类
@@ -24,14 +30,23 @@ import org.springframework.stereotype.Service;
24 30
  */
25 31
 @Service
26 32
 public class TaMiniappServiceImpl extends ServiceImpl<TaMiniappMapper, TaMiniapp> implements ITaMiniappService {
33
+    @Autowired
34
+    TaMiniappMapper taMiniappMapper;
35
+
27 36
     @Autowired
28 37
     TaMiniappTemplateMapper taMiniappTemplateMapper;
29 38
 
30 39
     @Autowired
31 40
     WxUtils wxUtils;
32 41
 
42
+    @Autowired
43
+    private TaChannelAppRelationMapper taChannelAppRelationMapper;
44
+
45
+    @Autowired
46
+    private TaChannelProxyMapper taChannelProxyMapper;
47
+
33 48
     @Override
34
-    public TaMiniapp saveInfoWithTpls(TaMiniapp taMiniapp) throws Exception {
49
+    public TaMiniapp saveInfoWithTpls(TaMiniapp taMiniapp, Integer channelId) throws Exception {
35 50
         if (StringUtils.isEmpty(taMiniapp.getMiniappId())) {
36 51
             throw new Exception("请填写小程序 AppID");
37 52
         }
@@ -76,4 +91,16 @@ public class TaMiniappServiceImpl extends ServiceImpl<TaMiniappMapper, TaMiniapp
76 91
 
77 92
         return taMiniapp;
78 93
     }
94
+
95
+    @Override
96
+    public TaMiniapp getInfoWithTpls(String appid) {
97
+        TaMiniapp taMiniapp = taMiniappMapper.selectById(appid);
98
+
99
+        QueryWrapper<TaMiniappTemplate> queryWrapper = new QueryWrapper<>();
100
+        queryWrapper.eq("miniapp_id", appid);
101
+        queryWrapper.eq("is_subscribe", 1);
102
+        taMiniapp.setTpls(taMiniappTemplateMapper.selectList(queryWrapper));
103
+
104
+        return taMiniapp;
105
+    }
79 106
 }

+ 80
- 0
src/main/java/com/huiju/estateagents/service/impl/TaPersonFromRecordServiceImpl.java ファイルの表示

@@ -0,0 +1,80 @@
1
+package com.huiju.estateagents.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.common.StringUtils;
6
+import com.huiju.estateagents.entity.TaPersonFromRecord;
7
+import com.huiju.estateagents.entity.TaPersonVisitRecord;
8
+import com.huiju.estateagents.entity.TdWxDict;
9
+import com.huiju.estateagents.mapper.TaPersonFromRecordMapper;
10
+import com.huiju.estateagents.mapper.TdWxDictMapper;
11
+import com.huiju.estateagents.service.ITaPersonFromRecordService;
12
+import com.huiju.estateagents.statistic.entity.TsPersonFromStatistic;
13
+import com.huiju.estateagents.statistic.mapper.TsPersonFromStatisticMapper;
14
+import org.springframework.beans.factory.annotation.Autowired;
15
+import org.springframework.stereotype.Service;
16
+
17
+import java.time.LocalDateTime;
18
+import java.util.List;
19
+
20
+/**
21
+ * <p>
22
+ * 新增用户来源表  服务实现类
23
+ * </p>
24
+ *
25
+ * @author jobob
26
+ * @since 2020-01-03
27
+ */
28
+@Service
29
+public class TaPersonFromRecordServiceImpl extends ServiceImpl<TaPersonFromRecordMapper, TaPersonFromRecord> implements ITaPersonFromRecordService {
30
+
31
+    @Autowired
32
+    private TaPersonFromRecordMapper taPersonFromRecordMapper;
33
+
34
+    @Autowired
35
+    private TsPersonFromStatisticMapper tsPersonFromStatisticMapper;
36
+
37
+    @Autowired
38
+    private TdWxDictMapper tdWxDictMapper;
39
+
40
+    /**
41
+     * 通過買點表清洗數據
42
+     * @param taPersonVisitRecord
43
+     */
44
+    @Override
45
+    public void addNewPersonRecordRecord(TaPersonVisitRecord taPersonVisitRecord) {
46
+        TaPersonFromRecord taPersonFromRecord = new TaPersonFromRecord();
47
+        taPersonFromRecord.setCreateDate(LocalDateTime.now());
48
+        taPersonFromRecord.setActivity(taPersonVisitRecord.getActivity());
49
+        taPersonFromRecord.setOrgId(Integer.valueOf(taPersonVisitRecord.getOrgId()));
50
+        taPersonFromRecord.setPersonId(taPersonVisitRecord.getPersonId());
51
+        taPersonFromRecord.setBuildingId(taPersonVisitRecord.getBuildingId());
52
+        taPersonFromRecord.setEvent(taPersonVisitRecord.getEvent());
53
+        taPersonFromRecord.setEventType(taPersonVisitRecord.getEventType());
54
+        taPersonFromRecord.setSceneId(taPersonVisitRecord.getSceneId());
55
+        TdWxDict tdWxDict = tdWxDictMapper.selectById(taPersonVisitRecord.getSceneId());
56
+        taPersonFromRecord.setSceneType(null == tdWxDict ? "" : tdWxDict.getSceneType());
57
+        taPersonFromRecord.setSharePersonId(taPersonVisitRecord.getSharePersonId());
58
+        taPersonFromRecord.setTargetId(taPersonVisitRecord.getTargetId());
59
+        QueryWrapper<TaPersonFromRecord> queryWrapper = new QueryWrapper<>();
60
+        queryWrapper.eq("org_id",taPersonVisitRecord.getOrgId());
61
+        queryWrapper.eq("person_id",taPersonVisitRecord.getPersonId());
62
+        int count = taPersonFromRecordMapper.selectCount(queryWrapper);
63
+        if(count > 0){
64
+            return;
65
+        }else {
66
+            taPersonFromRecord.setIsFirstTime(true);
67
+        }
68
+        taPersonFromRecordMapper.insert(taPersonFromRecord);
69
+    }
70
+
71
+    /**
72
+     * 定时任务批量保存数据
73
+     */
74
+    @Override
75
+    public void personFromStatistic() {
76
+        List<TsPersonFromStatistic> list =  taPersonFromRecordMapper.getNowDataList();
77
+        tsPersonFromStatisticMapper.deleteByData();
78
+        tsPersonFromStatisticMapper.insertStatisticList(list);
79
+    }
80
+}

+ 3
- 2
src/main/java/com/huiju/estateagents/service/impl/TaPersonServiceImpl.java ファイルの表示

@@ -394,6 +394,7 @@ public class TaPersonServiceImpl extends ServiceImpl<TaPersonMapper, TaPerson> i
394 394
         Integer saved = taSaveMapper.selectCount(saveQueryWrapper);
395 395
         result.put("saved",saved);
396 396
         result.put("personType",taPerson.getPersonType());
397
+        result.put("userId", taPerson.getUserId());
397 398
 
398 399
         return ResponseBean.success(result);
399 400
     }
@@ -737,7 +738,7 @@ public class TaPersonServiceImpl extends ServiceImpl<TaPersonMapper, TaPerson> i
737 738
     }
738 739
 
739 740
     @Override
740
-    public IPage<TaPerson> getDriftCustomerList (int pageNumber, int pageSize,String building, Integer orgId){
741
+    public IPage<TaPerson> getDriftCustomerList (int pageNumber, int pageSize,String building, Integer orgId,String sceneType){
741 742
         QueryWrapper<TaPerson> queryWrapper = new QueryWrapper<>();
742 743
         queryWrapper.eq("person_type",CommConstant.PERSON_ESTATE_DRIFT);
743 744
         if(building.equals("") && null != building){
@@ -746,7 +747,7 @@ public class TaPersonServiceImpl extends ServiceImpl<TaPersonMapper, TaPerson> i
746 747
         queryWrapper.eq(orgId != null, "org_id", orgId);
747 748
         queryWrapper.orderByDesc("create_date");
748 749
         IPage<TaPerson> page = new Page<>(pageNumber, pageSize);
749
-        return taPersonMapper.selectPage(page,queryWrapper);
750
+        return taPersonMapper.selectDriftCustomerPageList(page,building,orgId,CommConstant.PERSON_ESTATE_DRIFT,sceneType);
750 751
     }
751 752
 
752 753
     @Override

+ 15
- 13
src/main/java/com/huiju/estateagents/service/impl/TaPersonVisitRecordServiceImpl.java ファイルの表示

@@ -132,29 +132,31 @@ public class TaPersonVisitRecordServiceImpl extends ServiceImpl<TaPersonVisitRec
132 132
 				e.setUserTel(personInfo.getPhone());
133 133
 			}
134 134
 
135
-			TaPerson userShareInfo = taPersonMapper.selectById(e.getSharePersonId());
135
+			QueryWrapper<TaPerson> queryWrapper = new QueryWrapper<>();
136
+			queryWrapper.eq("user_id", e.getSharePersonId()).or().eq("person_id", e.getSharePersonId());
137
+			TaPerson userShareInfo = taPersonMapper.selectOne(queryWrapper);
136 138
 			if (userShareInfo != null) {
137 139
 				e.setShareName(userShareInfo.getNickname());
138 140
 				e.setShareTel(userShareInfo.getPhone());
139 141
 			}
140 142
 
141
-			if (CommConstant.EVENT_H5.equals(e.getEventType())) {
143
+			if (CommConstant.H5_SHARE.equals(e.getEventType())) {
142 144
 				e.setActivityName(e.getDrainageName());
143 145
 				continue;
144 146
 			}
145
-			if (CommConstant.POSTER_CONTENT_TYPE_BUILDING.equals(e.getEventType())) {
147
+			if (CommConstant.BUILDING_SHARE.equals(e.getEventType())) {
146 148
 				e.setActivityName(e.getBuildingName());
147 149
 				continue;
148 150
 			}
149
-			if (CommConstant.POSTER_CONTENT_TYPE_NEWS.equals(e.getEventType())) {
151
+			if (CommConstant.NEWS_SHARE.equals(e.getEventType())) {
150 152
 				e.setActivityName(e.getNewsName());
151 153
 				continue;
152 154
 			}
153
-			if (CommConstant.POINTS_CHANGE_HELP.equals(e.getEventType())) {
155
+			if (CommConstant.HELP_SHARE.equals(e.getEventType())) {
154 156
 				e.setActivityName(e.getHelpActivityName());
155 157
 				continue;
156 158
 			}
157
-			if (CommConstant.POINTS_CHANGE_GROUP.equals(e.getEventType())) {
159
+			if (CommConstant.GROUP_SHARE.equals(e.getEventType())) {
158 160
 				e.setActivityName(e.getGroupActivityName());
159 161
 				continue;
160 162
 			}
@@ -164,14 +166,14 @@ public class TaPersonVisitRecordServiceImpl extends ServiceImpl<TaPersonVisitRec
164 166
 	}
165 167
 
166 168
 	@Override
167
-	public IPage<TaConsultantInfo> getConsultantShareInfoList(IPage<TaConsultantInfo> pg, Integer userId, Integer orgId) {
168
-		IPage<TaConsultantInfo> result = personVisitRecordMapper.getConsultantShareInfoList(pg,userId,orgId);
169
+	public IPage<TaConsultantInfo> getConsultantShareInfoList(IPage<TaConsultantInfo> pg, String personId) {
170
+		IPage<TaConsultantInfo> result = personVisitRecordMapper.getConsultantShareInfoList(pg,personId);
169 171
 		return result;
170 172
 	}
171 173
 
172 174
 	@Override
173
-	public Integer countShareNumByEventType(String targetId, Integer orgId, Integer userId, String eventType) {
174
-		return personVisitRecordMapper.countShareNumByEventType(targetId, orgId, userId, eventType);
175
+	public Integer countShareNumByEventType(Integer orgId, String targetId, Integer userId, String personId, String eventType) {
176
+		return personVisitRecordMapper.countShareNumByEventType(orgId, targetId, userId, personId, eventType);
175 177
 	}
176 178
 
177 179
 	/**
@@ -197,8 +199,8 @@ public class TaPersonVisitRecordServiceImpl extends ServiceImpl<TaPersonVisitRec
197 199
 			QueryWrapper<TaRecommendCustomer> queryWrapper = new QueryWrapper();
198 200
 			queryWrapper.eq("realty_consultant",e.getConsultantId());
199 201
 			queryWrapper.eq("person_id",e.getPersonId());
200
-			TaRecommendCustomer taRecommendCustomer = taRecommendCustomerMapper.selectOne(queryWrapper);
201
-			if (null != taRecommendCustomer){
202
+			List<TaRecommendCustomer> taRecommendCustomer = taRecommendCustomerMapper.selectList(queryWrapper);
203
+			if (taRecommendCustomer.size() > 0){
202 204
 				//1是我的客户
203 205
 				e.setMyCustomer(CommConstant.STATUS_NORMAL);
204 206
 			}
@@ -223,7 +225,7 @@ public class TaPersonVisitRecordServiceImpl extends ServiceImpl<TaPersonVisitRec
223 225
 		taPersonQueryWrapper.eq("org_id",orgId);
224 226
 		TaPerson taPerson = taPersonMapper.selectOne(taPersonQueryWrapper);
225 227
 		//获取我的访问客户列表
226
-		IPage<TaPersonVisitRecord> result = personVisitRecordMapper.getWxActivityVisitRecordList(pg,userId,orgId, targetId,taPerson.getPersonId(), eventType);
228
+		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 229
 		List<TaPersonVisitRecord> records = result.getRecords();
228 230
 		//判断是否我的客户状态
229 231
 		records.forEach(e -> {

+ 105
- 75
src/main/java/com/huiju/estateagents/service/impl/TaRecommendCustomerServiceImpl.java ファイルの表示

@@ -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);
@@ -480,55 +486,17 @@ public class TaRecommendCustomerServiceImpl extends ServiceImpl<TaRecommendCusto
480 486
     }
481 487
 
482 488
     @Override
483
-    public IPage getCustomerList(Integer status,int pageNumber, int pageSize,String building,String name,String tel,String consultName,String consultTel,String entryType,String verifyStatus,Integer sex, String customerType, Integer orgId,List<TaPersonBuilding> taPersonBuildingList){
489
+    public IPage getCustomerList(Integer status,int pageNumber, int pageSize,String building,String name,String tel,String consultName,String consultTel,String entryType,String verifyStatus,Integer sex, String customerType, Integer orgId,List<TaPersonBuilding> taPersonBuildingList,String sceneType){
484 490
 
485 491
         if (CommConstant.CUTOMER_TYPE_PUBLIC.equals(customerType)) {
486
-
487
-            /**
488
-             * <if test="buildingId != null">
489
-             *             ,(select tpp.name from ta_share_person_from tspf left join ta_person tpp on  tspf.share_person = tpp.person_id where tspf.building_id = #{buildingId} and tspf.is_first_time = 1) as sharePersonName
490
-             *         </if>
491
-             */
492
-
493
-            /**
494
-             * SELECT
495
-             *         b.*
496
-             *         FROM
497
-             *         ta_person b
498
-             *         <where>
499
-             *             b.status > 0
500
-             *             AND IFNULL(b.person_type, '') in ('estate agent', 'customer')
501
-             *             <if test="name != null and name !=''">
502
-             *                 and b.nickname like CONCAT('%',#{name}, '%')
503
-             *             </if>
504
-             *             <if test="tel != null and tel!=''">
505
-             *                 and b.phone like CONCAT('%',#{tel}, '%')
506
-             *             </if>
507
-             *             <if test="entryType != null and entryType !=''">
508
-             *                 and b.entry_type = #{entryType}
509
-             *             </if>
510
-             *             <if test="sex != null and sex !=''">
511
-             *                 and b.sex = #{sex}
512
-             *             </if>
513
-             *             <if test="orgId != null">
514
-             *                 and b.org_id = #{orgId}
515
-             *             </if>
516
-             *             <if test="consultTel != null and consultTel !=''">
517
-             *                 and b.tel like CONCAT('%',#{consultTel}, '%')
518
-             *             </if>
519
-             *             and NOT EXISTS ( select * from ta_recommend_customer a where a.recommend_person = b.person_id)
520
-             *         </where>
521
-             *         order by b.create_date desc
522
-             */
523
-
524 492
             // 公客
525 493
             IPage<TaPerson>page = new Page<>(pageNumber,pageSize);
526 494
             // 公客就不用 buildingId 进行查询
527
-            return taRecommendCustomerMapper.getPublicCustomerList(page,name, tel,  entryType, verifyStatus, sex, orgId,consultTel);
495
+            return taRecommendCustomerMapper.getPublicCustomerList(page,name, tel,  entryType, verifyStatus, sex, orgId,consultTel,sceneType);
528 496
         } else {
529 497
             // 私客
530 498
             IPage<TaRecommendCustomer>page = new Page<>(pageNumber,pageSize);
531
-            return taRecommendCustomerMapper.getCustomerList(page, building, name, tel, consultName, consultTel, entryType, verifyStatus, sex, orgId,status,taPersonBuildingList);
499
+            return taRecommendCustomerMapper.getCustomerList(page, building, name, tel, consultName, consultTel, entryType, verifyStatus, sex, orgId,status,taPersonBuildingList,sceneType);
532 500
         }
533 501
 
534 502
     }
@@ -559,13 +527,13 @@ public class TaRecommendCustomerServiceImpl extends ServiceImpl<TaRecommendCusto
559 527
 
560 528
 
561 529
     @Override
562
-    public TaRecommendCustomer getCustomerDetail(String customerId,int pageNumber, int pageSize,List<TaPersonBuilding> taPersonBuildingList){
530
+    public TaRecommendCustomer getCustomerDetail(String customerId,int pageNumber, int pageSize,List<TaPersonBuilding> taPersonBuildingList,String buildingId){
563 531
         String personId = taRecommendCustomerMapper.getCustomerById(customerId).getPersonId();
564 532
         TaRecommendCustomer taRecommendCustomer = taRecommendCustomerMapper.getCustomerDetail(customerId,personId);
565 533
         TaPerson person = taPersonMapper.selectById(personId);
566 534
         if(!StringUtils.isEmpty(personId)){
567 535
             IPage<TaPersonVisitRecord>page = new Page<>(pageNumber,pageSize);
568
-            IPage<TaPersonVisitRecord> taPersonVisitRecordIPage = taPersonVisitRecordMapper.visitRecordByPersonId(page,personId);
536
+            IPage<TaPersonVisitRecord> taPersonVisitRecordIPage = taPersonVisitRecordMapper.visitRecordByPersonId(page,personId,taPersonBuildingList,buildingId);
569 537
             List<TaPersonVisitRecord> records = taPersonVisitRecordIPage.getRecords();
570 538
             records.forEach(e -> {
571 539
                 //获取活动标题
@@ -609,16 +577,6 @@ public class TaRecommendCustomerServiceImpl extends ServiceImpl<TaRecommendCusto
609 577
             taRecommendCustomer.setVisitRecords(taPersonVisitRecordIPage);
610 578
             taRecommendCustomer.setVisitTimes(taPersonVisitRecordIPage.getRecords().size());
611 579
             taRecommendCustomer.setIntentions(taRecommendCustomerMapper.getCustomerIntentions(personId,taPersonBuildingList));
612
-            Map<String,String>geoInfo = new HashMap<>();
613
-            geoInfo.put("provience",person.getProvince());
614
-            geoInfo.put("country",person.getCountry());
615
-            TdCity city = cityMapper.selectById(person.getCity());
616
-            if(null!=city){
617
-                geoInfo.put("city",city.getName());
618
-            }else {
619
-                geoInfo.put("city","未知");
620
-            }
621
-            taRecommendCustomer.setGeoInfo(geoInfo);
622 580
         }
623 581
         if(!StringUtils.isEmpty(taRecommendCustomer.getRealtyConsultant())){
624 582
             TaPerson consultant =  taPersonMapper.getById(taRecommendCustomer.getRealtyConsultant());
@@ -638,22 +596,40 @@ public class TaRecommendCustomerServiceImpl extends ServiceImpl<TaRecommendCusto
638 596
         }
639 597
         //构造来源类型
640 598
         taRecommendCustomer.setPersonFrom("");
641
-        if (null != person && null != person.getFromCode()){
642
-            QueryWrapper<TdPersonFrom> tdPersonFromQueryWrapper = new QueryWrapper<>();
643
-            tdPersonFromQueryWrapper.eq("from_code",person.getFromCode());
644
-            TdPersonFrom tdPersonFrom = tdPersonFromMapper.selectOne(tdPersonFromQueryWrapper);
645
-            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
+            }
646 622
         }
647 623
 
648 624
         return taRecommendCustomer;
649 625
     }
650 626
 
651 627
     @Override
652
-    public TaPerson getPublicCustomerDetail(String personId,int pageNumber, int pageSize,List<TaPersonBuilding> taPersonBuildingList){
653
-        TaPerson taRecommendCustomer = taPersonMapper.getById(personId);
628
+    public TaPerson getPublicCustomerDetail(String personId,int pageNumber, int pageSize,List<TaPersonBuilding> taPersonBuildingList,String buildingId){
629
+        TaPerson taPerson = taPersonMapper.getById(personId);
654 630
         if(!StringUtils.isEmpty(personId)){
655 631
             IPage<TaPersonVisitRecord>page = new Page<>(pageNumber,pageSize);
656
-            IPage<TaPersonVisitRecord> taPersonVisitRecordIPage = taPersonVisitRecordMapper.visitRecordByPersonId(page,personId);
632
+            IPage<TaPersonVisitRecord> taPersonVisitRecordIPage = taPersonVisitRecordMapper.visitRecordByPersonId(page,personId,taPersonBuildingList,buildingId);
657 633
             List<TaPersonVisitRecord> records = taPersonVisitRecordIPage.getRecords();
658 634
             records.forEach(e -> {
659 635
                 //获取活动标题
@@ -694,26 +670,33 @@ public class TaRecommendCustomerServiceImpl extends ServiceImpl<TaRecommendCusto
694 670
                 }
695 671
             });
696 672
             taPersonVisitRecordIPage.setRecords(records);
697
-            taRecommendCustomer.setVisitRecords(taPersonVisitRecordIPage);
698
-            taRecommendCustomer.setVisitTimes(taPersonVisitRecordIPage.getRecords().size());
699
-            taRecommendCustomer.setIntentions(taRecommendCustomerMapper.getCustomerIntentions(personId,taPersonBuildingList));
700
-            taRecommendCustomer.setDuration(taPersonVisitRecordMapper.getDurationByPersonId(personId));
701
-            taRecommendCustomer.setVisitTime(taPersonVisitRecordMapper.getFirstVisitTimeByPersonId(personId));
702
-            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());
703 679
             if(null != city){
704
-                taRecommendCustomer.setCity(city.getName());
680
+                taPerson.setCity(city.getName());
705 681
             }
706 682
 
707 683
             //构造来源类型
708
-            taRecommendCustomer.setPersonFrom("");
709
-            if (null != taRecommendCustomer.getFromCode()){
710
-                QueryWrapper<TdPersonFrom> tdPersonFromQueryWrapper = new QueryWrapper<>();
711
-                tdPersonFromQueryWrapper.eq("from_code",taRecommendCustomer.getFromCode());
712
-                TdPersonFrom tdPersonFrom = tdPersonFromMapper.selectOne(tdPersonFromQueryWrapper);
713
-                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
+                }
714 697
             }
715 698
         }
716
-        return taRecommendCustomer;
699
+        return taPerson;
717 700
     }
718 701
 
719 702
     @Override
@@ -767,6 +750,53 @@ public class TaRecommendCustomerServiceImpl extends ServiceImpl<TaRecommendCusto
767 750
         }
768 751
     }
769 752
 
753
+    @Override
754
+    public ResponseBean consultantAssist(TaUser taUser, String personId, Integer orgId) {
755
+        TaPerson taPerson = taPersonMapper.getById(personId);
756
+
757
+        TaPerson recommendPerson = taPersonMapper.selectById(personId);
758
+
759
+        QueryWrapper<TaUser> queryWrapper = new QueryWrapper();
760
+        queryWrapper.eq("user_id", taUser.getUserId());
761
+        TaUser userInfo = taUserMapper.selectOne(queryWrapper);
762
+
763
+        QueryWrapper<TaPersonBuilding> taPersonBuildingQueryWrapper = new QueryWrapper();
764
+        taPersonBuildingQueryWrapper.eq("user_id", taUser.getUserId());
765
+        TaPersonBuilding taPersonBuilding = taPersonBuildingMapper.selectOne(taPersonBuildingQueryWrapper);
766
+
767
+        if (null == userInfo || userInfo.getStatus() != CommConstant.STATUS_NORMAL) {
768
+            return ResponseBean.error("置业顾问不存在或已被注销", ResponseBean.ERROR_UNAVAILABLE);
769
+        }
770
+
771
+        TaRecommendCustomer taRecommendCustomer = new TaRecommendCustomer();
772
+        taRecommendCustomer.setOrgId(orgId);
773
+        taRecommendCustomer.setName(taPerson.getNickname());
774
+        taRecommendCustomer.setPicture(taPerson.getAvatarurl());
775
+        taRecommendCustomer.setPhone(taPerson.getPhone());
776
+        taRecommendCustomer.setSex(null == taPerson.getGender() ? null : ("1".equals(taPerson.getGender()) ? 1 : 2));
777
+        taRecommendCustomer.setRealtyConsultant(userInfo.getUserId().toString());
778
+        taRecommendCustomer.setBuildingId(taPersonBuilding.getBuildingId());
779
+        TaBuilding building = taBuildingMapper.selectById(taPersonBuilding.getBuildingId());
780
+        taRecommendCustomer.setIntention(building.getBuildingName());
781
+        taRecommendCustomer.setReportRecommendStatus(CommConstant.VERIFY_AGREE);
782
+        taRecommendCustomer.setCreateDate(LocalDateTime.now());
783
+        taRecommendCustomer.setReportDate(LocalDateTime.now());
784
+        taRecommendCustomer.setPersonId(taPerson.getPersonId());
785
+        taRecommendCustomer.setEntryType(CommConstant.ENTRY_VERIFY);
786
+        taRecommendCustomer.setVerifyStatus(CommConstant.VERIFY_AGREE);
787
+        taRecommendCustomer.setStatus(CommConstant.CUSTOMER_REPORT);
788
+        taRecommendCustomer.setPersonId(personId);
789
+        taRecommendCustomer.setRecommendPerson(recommendPerson == null ? "" : recommendPerson.getRecommendPerson());
790
+
791
+        int row = taRecommendCustomerMapper.insert(taRecommendCustomer);
792
+        if (row < 1) {
793
+            return ResponseBean.error("分配客户失败", ResponseBean.ERROR_UNAVAILABLE);
794
+        }
795
+
796
+        return ResponseBean.success(taRecommendCustomer);
797
+
798
+    }
799
+
770 800
     private List<TaRecommendCustomer> getCustomerByPhone(String phone) {
771 801
         QueryWrapper<TaRecommendCustomer> queryWrapper = new QueryWrapper<>();
772 802
         queryWrapper.eq("phone", phone);

+ 84
- 2
src/main/java/com/huiju/estateagents/service/impl/TaSharePersonFromServiceImpl.java ファイルの表示

@@ -1,11 +1,17 @@
1 1
 package com.huiju.estateagents.service.impl;
2 2
 
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
3 4
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4
-import com.huiju.estateagents.entity.TaSharePersonFrom;
5
-import com.huiju.estateagents.mapper.TaSharePersonFromMapper;
5
+import com.huiju.estateagents.base.ResponseBean;
6
+import com.huiju.estateagents.common.CommConstant;
7
+import com.huiju.estateagents.entity.*;
8
+import com.huiju.estateagents.mapper.*;
6 9
 import com.huiju.estateagents.service.ITaSharePersonFromService;
10
+import org.springframework.beans.factory.annotation.Autowired;
7 11
 import org.springframework.stereotype.Service;
8 12
 
13
+import java.time.LocalDateTime;
14
+
9 15
 /**
10 16
  * <p>
11 17
  *   服务实现类
@@ -17,4 +23,80 @@ import org.springframework.stereotype.Service;
17 23
 @Service
18 24
 public class TaSharePersonFromServiceImpl extends ServiceImpl<TaSharePersonFromMapper, TaSharePersonFrom> implements ITaSharePersonFromService {
19 25
 
26
+    @Autowired
27
+    private TaPersonMapper taPersonMapper;
28
+
29
+    @Autowired
30
+    private TaBuildingDynamicMapper taBuildingDynamicMapper;
31
+
32
+    @Autowired
33
+    private TaPersonBuildingMapper taPersonBuildingMapper;
34
+
35
+    @Autowired
36
+    private TaNewsMapper taNewsMapper;
37
+
38
+    @Autowired
39
+    private TaSharePersonFromMapper taSharePersonFromMapper;
40
+    /**
41
+     * 添加客户分享记录
42
+     *
43
+     * @param personId
44
+     * @param orgId
45
+     * @param from
46
+     * @param recommender
47
+     * @param targetId
48
+     * @return
49
+     */
50
+    @Override
51
+    public TaSharePersonFrom addSharePersonRecord(String personId, Integer orgId, String from, String recommender, String targetId) {
52
+        TaPerson taPerson = taPersonMapper.getById(personId);
53
+        TaSharePersonFrom taSharePersonFrom = new TaSharePersonFrom();
54
+        TaPerson recommenderPerson = taPersonMapper.getById(recommender);
55
+        taSharePersonFrom.setCreateDate(LocalDateTime.now());
56
+        taSharePersonFrom.setOrgId(orgId);
57
+        taSharePersonFrom.setPersonId(taPerson.getPersonId());
58
+        taSharePersonFrom.setSharePersonType(recommenderPerson.getPersonType());
59
+        taSharePersonFrom.setTargetId(targetId);
60
+        taSharePersonFrom.setTargetType(from);
61
+        if(CommConstant.PERSON_REALTY_CONSULTANT.equals(recommenderPerson.getPersonType())){
62
+            taSharePersonFrom.setSharePerson(recommenderPerson.getUserId().toString());
63
+        }else {
64
+            taSharePersonFrom.setSharePerson(recommenderPerson.getPersonId());
65
+        }
66
+        QueryWrapper<TaSharePersonFrom> sharePersonFromQueryWrapper = new QueryWrapper<>();
67
+        sharePersonFromQueryWrapper.eq("person_id",taPerson.getPersonId());
68
+        if(from.equals("dynamic_share")){ // activity_share
69
+            taSharePersonFrom.setStatus(CommConstant.STATUS_UNACCALIMED);
70
+            TaBuildingDynamic buildingDynamic = taBuildingDynamicMapper.selectById(targetId);
71
+            taSharePersonFrom.setBuildingId(buildingDynamic.getBuildingId());
72
+            sharePersonFromQueryWrapper.eq("building_id",buildingDynamic.getBuildingId());
73
+        }else {
74
+            taSharePersonFrom.setStatus(CommConstant.STATUS_NORMAL);
75
+        }
76
+        if (from.contains("card")){
77
+            // 因为targetId 是 personId ,需要查询出 userId
78
+            TaPerson person = taPersonMapper.getById(targetId);
79
+
80
+            QueryWrapper<TaPersonBuilding> personBuildingQueryWrapper = new QueryWrapper<>();
81
+            personBuildingQueryWrapper.eq("user_id",person.getUserId());
82
+            TaPersonBuilding personBuilding = taPersonBuildingMapper.selectOne(personBuildingQueryWrapper);
83
+            taSharePersonFrom.setBuildingId(personBuilding.getBuildingId());
84
+            sharePersonFromQueryWrapper.eq("building_id",personBuilding.getBuildingId());
85
+        }else if (from.contains("news")){
86
+            TaNews news = taNewsMapper.selectById(targetId);
87
+            taSharePersonFrom.setBuildingId(news.getBuildingId());
88
+            sharePersonFromQueryWrapper.eq("building_id",news.getBuildingId());
89
+        }else if (from.contains("building")){
90
+            taSharePersonFrom.setBuildingId(targetId);
91
+            sharePersonFromQueryWrapper.eq("building_id",targetId);
92
+        }
93
+        Integer isFirstTime = taSharePersonFromMapper.selectCount(sharePersonFromQueryWrapper);
94
+        if(isFirstTime>0){
95
+            taSharePersonFrom.setIsFirstTime(false);
96
+        }else {
97
+            taSharePersonFrom.setIsFirstTime(true);
98
+        }
99
+        taSharePersonFromMapper.insert(taSharePersonFrom);
100
+        return taSharePersonFrom;
101
+    }
20 102
 }

+ 5
- 1
src/main/java/com/huiju/estateagents/service/impl/TaShareServiceImpl.java ファイルの表示

@@ -62,7 +62,7 @@ public class TaShareServiceImpl extends ServiceImpl<TaShareMapper, TaShare> impl
62 62
             taBuildingDynamicQuery.eq("dynamic_id",id);
63 63
             TaBuildingDynamic taBuildingDynamic = taBuildingDynamicMapper.selectOne(taBuildingDynamicQuery);
64 64
             taBuildingDynamicMapper.updateById( taBuildingDynamic.setShareNum(taBuildingDynamic.getShareNum() == null ? 1:taBuildingDynamic.getShareNum()+1));
65
-            return ResponseBean.success("成功");
65
+//            return ResponseBean.success("成功");
66 66
         }
67 67
 
68 68
         QueryWrapper<TaShare> queryWrapper = new QueryWrapper<>();
@@ -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
 

+ 16
- 4
src/main/java/com/huiju/estateagents/service/impl/TdCityServiceImpl.java ファイルの表示

@@ -45,7 +45,11 @@ public class TdCityServiceImpl extends ServiceImpl<TdCityMapper, TdCity> impleme
45 45
      * @return
46 46
      */
47 47
     @Override
48
-    public TdCity getLocationCity(String location) {
48
+    public TdCity getLocationCity(String location, Integer orgId) {
49
+        if (null == location) {
50
+            return tdCityMapper.getOrgDefaultCity(orgId);
51
+        }
52
+
49 53
         //获取高德地图的坐标
50 54
         String amapString = CommConstant.AMAP_HTTP + "?location="+location+"&key=" + CommConstant.AMAP_KEY;
51 55
         RestTemplate restTemplate = new RestTemplate();
@@ -60,11 +64,19 @@ public class TdCityServiceImpl extends ServiceImpl<TdCityMapper, TdCity> impleme
60 64
             queryWrapper.eq("leveltype",2);
61 65
             List<TdCity> tdCities = tdCityMapper.selectList(queryWrapper);
62 66
             if (tdCities.size() > 0){
63
-                return tdCities.get(0);
67
+                List<TdCity> cityList = selectWxCity(null, orgId);
68
+                Integer cityId = tdCities.get(0).getId();
69
+                for (TdCity tdCity : cityList){
70
+                    if (tdCity.getId().equals(cityId)){
71
+                        return tdCity;
72
+                    }
73
+                }
64 74
             }
65
-            return null;
75
+//            return null;
66 76
         }
67
-        return null;
77
+
78
+        // 没有匹配到则返回默认城市
79
+        return tdCityMapper.getOrgDefaultCity(orgId);
68 80
     }
69 81
     
70 82
 }

+ 20
- 0
src/main/java/com/huiju/estateagents/service/impl/TdWxDictServiceImpl.java ファイルの表示

@@ -0,0 +1,20 @@
1
+package com.huiju.estateagents.service.impl;
2
+
3
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4
+import com.huiju.estateagents.entity.TdWxDict;
5
+import com.huiju.estateagents.mapper.TdWxDictMapper;
6
+import com.huiju.estateagents.service.ITdWxDictService;
7
+import org.springframework.stereotype.Service;
8
+
9
+/**
10
+ * <p>
11
+ * 微信字典表  服务实现类
12
+ * </p>
13
+ *
14
+ * @author jobob
15
+ * @since 2020-01-06
16
+ */
17
+@Service
18
+public class TdWxDictServiceImpl extends ServiceImpl<TdWxDictMapper, TdWxDict> implements ITdWxDictService {
19
+
20
+}

+ 143
- 0
src/main/java/com/huiju/estateagents/statistic/controller/TsPersonFromStatisticController.java ファイルの表示

@@ -0,0 +1,143 @@
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.TsPersonFromStatistic;
9
+import com.huiju.estateagents.statistic.service.ITsPersonFromStatisticService;
10
+import org.slf4j.Logger;
11
+import org.slf4j.LoggerFactory;
12
+import org.springframework.beans.factory.annotation.Autowired;
13
+import org.springframework.web.bind.annotation.*;
14
+
15
+/**
16
+ * <p>
17
+    * 用户来源统计表  前端控制器
18
+    * </p>
19
+ *
20
+ * @author jobob
21
+ * @since 2020-01-04
22
+ */
23
+@RestController
24
+@RequestMapping("/")
25
+public class TsPersonFromStatisticController extends BaseController {
26
+
27
+    private final Logger logger = LoggerFactory.getLogger(TsPersonFromStatisticController.class);
28
+
29
+    @Autowired
30
+    public ITsPersonFromStatisticService iTsPersonFromStatisticService;
31
+
32
+
33
+    /**
34
+     * 分页查询列表
35
+     * @param pageNum
36
+     * @param pageSize
37
+     * @return
38
+     */
39
+    @RequestMapping(value="/tsPersonFromStatistic",method= RequestMethod.GET)
40
+    public ResponseBean tsPersonFromStatisticList(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
41
+                                                  @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
42
+        ResponseBean responseBean = new ResponseBean();
43
+        try {
44
+            //使用分页插件
45
+		    IPage<TsPersonFromStatistic> pg = new Page<>(pageNum, pageSize);
46
+            QueryWrapper<TsPersonFromStatistic> queryWrapper = new QueryWrapper<>();
47
+            queryWrapper.orderByDesc("create_date");
48
+
49
+            IPage<TsPersonFromStatistic> result = iTsPersonFromStatisticService.page(pg, queryWrapper);
50
+            responseBean.addSuccess(result);
51
+        }catch (Exception e){
52
+            e.printStackTrace();
53
+            logger.error("tsPersonFromStatisticList -=- {}",e.toString());
54
+            responseBean.addError(e.getMessage());
55
+        }
56
+        return responseBean;
57
+    }
58
+
59
+    /**
60
+     * 保存对象
61
+     * @param tsPersonFromStatistic 实体对象
62
+     * @return
63
+     */
64
+    @RequestMapping(value="/tsPersonFromStatistic",method= RequestMethod.POST)
65
+    public ResponseBean tsPersonFromStatisticAdd(@RequestBody TsPersonFromStatistic tsPersonFromStatistic){
66
+        ResponseBean responseBean = new ResponseBean();
67
+        try {
68
+            if (iTsPersonFromStatisticService.save(tsPersonFromStatistic)){
69
+                responseBean.addSuccess(tsPersonFromStatistic);
70
+            }else {
71
+                responseBean.addError("fail");
72
+            }
73
+        }catch (Exception e){
74
+            e.printStackTrace();
75
+            logger.error("tsPersonFromStatisticAdd -=- {}",e.toString());
76
+            responseBean.addError(e.getMessage());
77
+        }
78
+        return responseBean;
79
+    }
80
+
81
+    /**
82
+     * 根据id删除对象
83
+     * @param id  实体ID
84
+     */
85
+    @ResponseBody
86
+    @RequestMapping(value="/tsPersonFromStatistic/{id}", method= RequestMethod.DELETE)
87
+    public ResponseBean tsPersonFromStatisticDelete(@PathVariable Integer id){
88
+        ResponseBean responseBean = new ResponseBean();
89
+        try {
90
+            if(iTsPersonFromStatisticService.removeById(id)){
91
+                responseBean.addSuccess("success");
92
+            }else {
93
+                responseBean.addError("fail");
94
+            }
95
+        }catch (Exception e){
96
+            e.printStackTrace();
97
+            logger.error("tsPersonFromStatisticDelete -=- {}",e.toString());
98
+            responseBean.addError(e.getMessage());
99
+        }
100
+        return responseBean;
101
+    }
102
+
103
+    /**
104
+     * 修改对象
105
+     * @param id  实体ID
106
+     * @param tsPersonFromStatistic 实体对象
107
+     * @return
108
+     */
109
+    @RequestMapping(value="/tsPersonFromStatistic/{id}",method= RequestMethod.PUT)
110
+    public ResponseBean tsPersonFromStatisticUpdate(@PathVariable Integer id,
111
+                                        @RequestBody TsPersonFromStatistic tsPersonFromStatistic){
112
+        ResponseBean responseBean = new ResponseBean();
113
+        try {
114
+            if (iTsPersonFromStatisticService.updateById(tsPersonFromStatistic)){
115
+                responseBean.addSuccess(tsPersonFromStatistic);
116
+            }else {
117
+                responseBean.addError("fail");
118
+            }
119
+        }catch (Exception e){
120
+            e.printStackTrace();
121
+            logger.error("tsPersonFromStatisticUpdate -=- {}",e.toString());
122
+            responseBean.addError(e.getMessage());
123
+        }
124
+        return responseBean;
125
+    }
126
+
127
+    /**
128
+     * 根据id查询对象
129
+     * @param id  实体ID
130
+     */
131
+    @RequestMapping(value="/tsPersonFromStatistic/{id}",method= RequestMethod.GET)
132
+    public ResponseBean tsPersonFromStatisticGet(@PathVariable Integer id){
133
+        ResponseBean responseBean = new ResponseBean();
134
+        try {
135
+            responseBean.addSuccess(iTsPersonFromStatisticService.getById(id));
136
+        }catch (Exception e){
137
+            e.printStackTrace();
138
+            logger.error("tsPersonFromStatisticDelete -=- {}",e.toString());
139
+            responseBean.addError(e.getMessage());
140
+        }
141
+        return responseBean;
142
+    }
143
+}

+ 160
- 0
src/main/java/com/huiju/estateagents/statistic/controller/TsUserBehaviorStatisticController.java ファイルの表示

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

+ 69
- 0
src/main/java/com/huiju/estateagents/statistic/entity/TsPersonFromStatistic.java ファイルの表示

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

+ 64
- 0
src/main/java/com/huiju/estateagents/statistic/entity/TsUserBehaviorStatistic.java ファイルの表示

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

+ 30
- 0
src/main/java/com/huiju/estateagents/statistic/mapper/TsPersonFromStatisticMapper.java ファイルの表示

@@ -0,0 +1,30 @@
1
+package com.huiju.estateagents.statistic.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.huiju.estateagents.statistic.entity.TsPersonFromStatistic;
5
+import org.apache.ibatis.annotations.Mapper;
6
+
7
+import java.time.LocalDate;
8
+import java.util.List;
9
+
10
+/**
11
+ * <p>
12
+ * 用户来源统计表  Mapper 接口
13
+ * </p>
14
+ *
15
+ * @author jobob
16
+ * @since 2020-01-04
17
+ */
18
+@Mapper
19
+public interface TsPersonFromStatisticMapper extends BaseMapper<TsPersonFromStatistic> {
20
+
21
+    void insertStatisticList(List<TsPersonFromStatistic> list);
22
+
23
+    List<TsPersonFromStatistic> selectPersonFrom(Integer orgId, LocalDate startDate, LocalDate endDate);
24
+
25
+    List<TsPersonFromStatistic> selectPersonFromGroupByDay(Integer orgId, LocalDate startDate, LocalDate endDate);
26
+
27
+    List<TsPersonFromStatistic> selectPersonFromGroupByData(Integer orgId, LocalDate startDate, LocalDate endDate);
28
+
29
+    void deleteByData();
30
+}

+ 28
- 0
src/main/java/com/huiju/estateagents/statistic/mapper/TsUserBehaviorStatisticMapper.java ファイルの表示

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

+ 16
- 0
src/main/java/com/huiju/estateagents/statistic/service/ITsPersonFromStatisticService.java ファイルの表示

@@ -0,0 +1,16 @@
1
+package com.huiju.estateagents.statistic.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.huiju.estateagents.statistic.entity.TsPersonFromStatistic;
5
+
6
+/**
7
+ * <p>
8
+ * 用户来源统计表  服务类
9
+ * </p>
10
+ *
11
+ * @author jobob
12
+ * @since 2020-01-04
13
+ */
14
+public interface ITsPersonFromStatisticService extends IService<TsPersonFromStatistic> {
15
+
16
+}

+ 30
- 0
src/main/java/com/huiju/estateagents/statistic/service/ITsUserBehaviorStatisticService.java ファイルの表示

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

+ 20
- 0
src/main/java/com/huiju/estateagents/statistic/service/impl/TsPersonFromStatisticServiceImpl.java ファイルの表示

@@ -0,0 +1,20 @@
1
+package com.huiju.estateagents.statistic.service.impl;
2
+
3
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4
+import com.huiju.estateagents.statistic.entity.TsPersonFromStatistic;
5
+import com.huiju.estateagents.statistic.mapper.TsPersonFromStatisticMapper;
6
+import com.huiju.estateagents.statistic.service.ITsPersonFromStatisticService;
7
+import org.springframework.stereotype.Service;
8
+
9
+/**
10
+ * <p>
11
+ * 用户来源统计表  服务实现类
12
+ * </p>
13
+ *
14
+ * @author jobob
15
+ * @since 2020-01-04
16
+ */
17
+@Service
18
+public class TsPersonFromStatisticServiceImpl extends ServiceImpl<TsPersonFromStatisticMapper, TsPersonFromStatistic> implements ITsPersonFromStatisticService {
19
+
20
+}

+ 66
- 0
src/main/java/com/huiju/estateagents/statistic/service/impl/TsUserBehaviorStatisticServiceImpl.java ファイルの表示

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

src/main/resources/application-test.yml → src/main/resources/application-blue.yml ファイルの表示

@@ -4,9 +4,9 @@ spring:
4 4
   application:
5 5
     name: estateagents
6 6
   datasource:
7
-    username: estateagents
8
-    password: estateagents
9
-    url: jdbc:mysql://47.101.36.130:3306/estateagents_3.5.1_test?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true&zeroDateTimeBehavior=convertToNull
7
+    username: root
8
+    password: LUfZGvh7j1^qA*2c
9
+    url: jdbc:mysql://123.57.65.31:3306/estateagents_test?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true&zeroDateTimeBehavior=convertToNull
10 10
     driver-class-name: com.mysql.cj.jdbc.Driver
11 11
     initial-size: 10 # 初始化连接数
12 12
     max-active: 20 # 最大连接数
@@ -41,12 +41,12 @@ wx:
41 41
     id: WiBYjqkE9KvwDv1WSq5vniGU4P0gvwlat-5ENYKpfxg
42 42
     keywords: 6
43 43
 ali:
44
-  accessKeyId: LTAIkc75dpkJw8Lb
45
-  accessKeySecret: v4bvXCaix6vSDTCFfwSAdqV53iFEQw
44
+  accessKeyId: LTAI4FdMQNh1xUoiqqbKJ15J
45
+  accessKeySecret: F7vmuXBu8IrhouQYYhFMLRhIRivIzb
46 46
   oss:
47 47
     endpoint: oss-cn-shanghai.aliyuncs.com
48
-    bucketName: estateagents
49
-    bucketURL: https://estateagents.oss-cn-shanghai.aliyuncs.com
48
+    bucketName: njcj
49
+    bucketURL: https://njcj.oss-cn-shanghai.aliyuncs.com
50 50
 
51 51
 # 手机短信服务
52 52
 sms:

+ 5
- 5
src/main/resources/application-dev.yml ファイルの表示

@@ -6,7 +6,7 @@ spring:
6 6
   datasource:
7 7
     username: estateagents
8 8
     password: estateagents
9
-    url: jdbc:mysql://47.101.36.130:3306/estateagents?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true&zeroDateTimeBehavior=convertToNull
9
+    url: jdbc:mysql://47.101.36.130:3306/estateagents_3.5.1_test?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true&zeroDateTimeBehavior=convertToNull
10 10
     driver-class-name: com.mysql.cj.jdbc.Driver
11 11
     initial-size: 10 # 初始化连接数
12 12
     max-active: 20 # 最大连接数
@@ -41,12 +41,12 @@ wx:
41 41
       id: WiBYjqkE9KvwDv1WSq5vniGU4P0gvwlat-5ENYKpfxg
42 42
       keywords: 6
43 43
 ali:
44
-  accessKeyId: LTAIkc75dpkJw8Lb
45
-  accessKeySecret: v4bvXCaix6vSDTCFfwSAdqV53iFEQw
44
+  accessKeyId: LTAI4FdMQNh1xUoiqqbKJ15J
45
+  accessKeySecret: F7vmuXBu8IrhouQYYhFMLRhIRivIzb
46 46
   oss:
47 47
     endpoint: oss-cn-shanghai.aliyuncs.com
48
-    bucketName: estateagents
49
-    bucketURL: https://estateagents.oss-cn-shanghai.aliyuncs.com
48
+    bucketName: njcj
49
+    bucketURL: https://njcj.oss-cn-shanghai.aliyuncs.com
50 50
 
51 51
 # 手机短信服务
52 52
 sms:

+ 74
- 0
src/main/resources/application-green.yml ファイルの表示

@@ -0,0 +1,74 @@
1
+server:
2
+  port: 9090
3
+spring:
4
+  application:
5
+    name: estateagents
6
+  datasource:
7
+    username: root
8
+    password: LUfZGvh7j1^qA*2c
9
+    url: jdbc:mysql://123.57.65.31:3306/estateagents_test?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true&zeroDateTimeBehavior=convertToNull
10
+    driver-class-name: com.mysql.cj.jdbc.Driver
11
+    initial-size: 10 # 初始化连接数
12
+    max-active: 20 # 最大连接数
13
+    min-idle: 8 # 最小空闲数
14
+    max-idle: 8 # 最大空闲数
15
+  servlet:
16
+    multipart:
17
+      max-file-size: 10MB
18
+      max-request-size: 50MB
19
+
20
+##mybatis-plus
21
+mybatis-plus:
22
+  configuration:
23
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
24
+    call-setters-on-nulls: true
25
+  mapper-locations: classpath:mapper/**/*.xml
26
+wx:
27
+  miniapp:
28
+    appid: wxd6f47a9bb3052175
29
+    secret: 28f33b6bbc0f778c11a0bb234a7d6d4e
30
+    token:
31
+    aesKey:
32
+    msgDataFormat: JSON
33
+  tpls:
34
+  - name: notice
35
+    id: 6hWKexNlaVpAOvrcWxHHQ_Duz1gRIkg2-Clsktp2-Os
36
+    keywords: 4
37
+  - name: newCustomer
38
+    id: WiBYjqkE9KvwDv1WSq5vnuv5A6FSaOB8ETFcrVmtCEI
39
+    keywords: 4
40
+  - name: mainbiz
41
+    id: WiBYjqkE9KvwDv1WSq5vniGU4P0gvwlat-5ENYKpfxg
42
+    keywords: 6
43
+ali:
44
+  accessKeyId: LTAI4FdMQNh1xUoiqqbKJ15J
45
+  accessKeySecret: F7vmuXBu8IrhouQYYhFMLRhIRivIzb
46
+  oss:
47
+    endpoint: oss-cn-shanghai.aliyuncs.com
48
+    bucketName: njcj
49
+    bucketURL: https://njcj.oss-cn-shanghai.aliyuncs.com
50
+
51
+# 手机短信服务
52
+sms:
53
+  url: http://101.200.84.17:8081/sms
54
+  method: POST
55
+  contentType: "application/json;charset=UTF-8"
56
+  template:
57
+    code:
58
+    tel:
59
+    params:
60
+
61
+  # 以下为各模板 code
62
+  # 验证码
63
+  captcha:
64
+    # 模板 code
65
+    code: "0301"
66
+    # 有效时间 秒
67
+    expire: 120
68
+    # 验证码长度
69
+    size: 4
70
+    # 短信签名
71
+    sign: 营销云
72
+
73
+  visitor:
74
+    code: "0501"

+ 4
- 4
src/main/resources/application-gzysd.yml ファイルの表示

@@ -118,12 +118,12 @@ wx:
118 118
 
119 119
       keywords: 6
120 120
 ali:
121
-  accessKeyId: LTAIkc75dpkJw8Lb
122
-  accessKeySecret: v4bvXCaix6vSDTCFfwSAdqV53iFEQw
121
+  accessKeyId: LTAI4FdMQNh1xUoiqqbKJ15J
122
+  accessKeySecret: F7vmuXBu8IrhouQYYhFMLRhIRivIzb
123 123
   oss:
124 124
     endpoint: oss-cn-shanghai.aliyuncs.com
125
-    bucketName: estateagents
126
-    bucketURL: https://estateagents.oss-cn-shanghai.aliyuncs.com
125
+    bucketName: njcj
126
+    bucketURL: https://njcj.oss-cn-shanghai.aliyuncs.com
127 127
 
128 128
 
129 129
 >>>>>>> ac499f2ddc4d4469098e59fff8bbe310779f7be3

+ 4
- 4
src/main/resources/application-hj.yml ファイルの表示

@@ -42,11 +42,11 @@ wx:
42 42
 
43 43
       keywords: 6
44 44
 ali:
45
-  accessKeyId: LTAIkc75dpkJw8Lb
46
-  accessKeySecret: v4bvXCaix6vSDTCFfwSAdqV53iFEQw
45
+  accessKeyId: LTAI4FdMQNh1xUoiqqbKJ15J
46
+  accessKeySecret: F7vmuXBu8IrhouQYYhFMLRhIRivIzb
47 47
   oss:
48 48
     endpoint: oss-cn-shanghai.aliyuncs.com
49
-    bucketName: estateagents
50
-    bucketURL: https://estateagents.oss-cn-shanghai.aliyuncs.com
49
+    bucketName: njcj
50
+    bucketURL: https://njcj.oss-cn-shanghai.aliyuncs.com
51 51
 
52 52
 

+ 4
- 4
src/main/resources/application-jj.yml ファイルの表示

@@ -42,11 +42,11 @@ wx:
42 42
 
43 43
       keywords: 6
44 44
 ali:
45
-  accessKeyId: LTAIkc75dpkJw8Lb
46
-  accessKeySecret: v4bvXCaix6vSDTCFfwSAdqV53iFEQw
45
+  accessKeyId: LTAI4FdMQNh1xUoiqqbKJ15J
46
+  accessKeySecret: F7vmuXBu8IrhouQYYhFMLRhIRivIzb
47 47
   oss:
48 48
     endpoint: oss-cn-shanghai.aliyuncs.com
49
-    bucketName: estateagents
50
-    bucketURL: https://estateagents.oss-cn-shanghai.aliyuncs.com
49
+    bucketName: njcj
50
+    bucketURL: https://njcj.oss-cn-shanghai.aliyuncs.com
51 51
 
52 52
 

+ 4
- 4
src/main/resources/application-nj.yml ファイルの表示

@@ -42,12 +42,12 @@ wx:
42 42
 
43 43
       keywords: 6
44 44
 ali:
45
-  accessKeyId: LTAIkc75dpkJw8Lb
46
-  accessKeySecret: v4bvXCaix6vSDTCFfwSAdqV53iFEQw
45
+  accessKeyId: LTAI4FdMQNh1xUoiqqbKJ15J
46
+  accessKeySecret: F7vmuXBu8IrhouQYYhFMLRhIRivIzb
47 47
   oss:
48 48
     endpoint: oss-cn-shanghai.aliyuncs.com
49
-    bucketName: estateagents
50
-    bucketURL: https://estateagents.oss-cn-shanghai.aliyuncs.com
49
+    bucketName: njcj
50
+    bucketURL: https://njcj.oss-cn-shanghai.aliyuncs.com
51 51
 
52 52
 # 手机短信服务
53 53
 sms:

src/main/resources/application-prod.yml → src/main/resources/application-prod-blue.yml ファイルの表示

@@ -4,9 +4,9 @@ spring:
4 4
   application:
5 5
     name: estateagents
6 6
   datasource:
7
-    username: estateagents
8
-    password: DQ@0lW##kBb2+-jPZ
9
-    url: jdbc:mysql://rm-uf6z3z6jq11x653d77o.mysql.rds.aliyuncs.com:3306/estateagents3.5?useUnicode=true&serverTimezone=CTT&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true&zeroDateTimeBehavior=convertToNull
7
+    username: root
8
+    password: HZjVK5O%zTdP0#8AhGcF@03!eZsGbqdO
9
+    url: jdbc:mysql://rm-2zez52se79qgg9649po.mysql.rds.aliyuncs.com:3306/estateagents?useUnicode=true&serverTimezone=CTT&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true&zeroDateTimeBehavior=convertToNull
10 10
     driver-class-name: com.mysql.cj.jdbc.Driver
11 11
     initial-size: 10 # 初始化连接数
12 12
     max-active: 20 # 最大连接数
@@ -40,12 +40,12 @@ wx:
40 40
       id: WiBYjqkE9KvwDv1WSq5vniGU4P0gvwlat-5ENYKpfxg
41 41
       keywords: 6
42 42
 ali:
43
-  accessKeyId: LTAIkc75dpkJw8Lb
44
-  accessKeySecret: v4bvXCaix6vSDTCFfwSAdqV53iFEQw
43
+  accessKeyId: LTAI4FdMQNh1xUoiqqbKJ15J
44
+  accessKeySecret: F7vmuXBu8IrhouQYYhFMLRhIRivIzb
45 45
   oss:
46 46
     endpoint: oss-cn-shanghai.aliyuncs.com
47
-    bucketName: estateagents
48
-    bucketURL: https://estateagents.oss-cn-shanghai.aliyuncs.com
47
+    bucketName: njcj
48
+    bucketURL: https://njcj.oss-cn-shanghai.aliyuncs.com
49 49
 
50 50
 # 手机短信服务
51 51
 sms:

+ 79
- 0
src/main/resources/application-prod-green.yml ファイルの表示

@@ -0,0 +1,79 @@
1
+server:
2
+  port: 9567
3
+spring:
4
+  application:
5
+    name: estateagents
6
+  datasource:
7
+    username: root
8
+    password: HZjVK5O%zTdP0#8AhGcF@03!eZsGbqdO
9
+    url: jdbc:mysql://rm-2zez52se79qgg9649po.mysql.rds.aliyuncs.com:3306/estateagents?useUnicode=true&serverTimezone=CTT&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true&zeroDateTimeBehavior=convertToNull
10
+    driver-class-name: com.mysql.cj.jdbc.Driver
11
+    initial-size: 10 # 初始化连接数
12
+    max-active: 20 # 最大连接数
13
+    min-idle: 8 # 最小空闲数
14
+    max-idle: 8 # 最大空闲数
15
+  servlet:
16
+    multipart:
17
+      max-file-size: 10MB
18
+      max-request-size: 50MB
19
+
20
+##mybatis-plus
21
+mybatis-plus:
22
+  configuration:
23
+    call-setters-on-nulls: true
24
+  mapper-locations: classpath:mapper/**/*.xml
25
+wx:
26
+  miniapp:
27
+    appid: wxd6f47a9bb3052175
28
+    secret: 28f33b6bbc0f778c11a0bb234a7d6d4e
29
+    token:
30
+    aesKey:
31
+    msgDataFormat: JSON
32
+  tpls:
33
+    - name: notice
34
+      id: 6hWKexNlaVpAOvrcWxHHQ_Duz1gRIkg2-Clsktp2-Os
35
+      keywords: 4
36
+    - name: newCustomer
37
+      id: WiBYjqkE9KvwDv1WSq5vnuv5A6FSaOB8ETFcrVmtCEI
38
+      keywords: 4
39
+    - name: mainbiz
40
+      id: WiBYjqkE9KvwDv1WSq5vniGU4P0gvwlat-5ENYKpfxg
41
+      keywords: 6
42
+ali:
43
+  accessKeyId: LTAI4FdMQNh1xUoiqqbKJ15J
44
+  accessKeySecret: F7vmuXBu8IrhouQYYhFMLRhIRivIzb
45
+  oss:
46
+    endpoint: oss-cn-shanghai.aliyuncs.com
47
+    bucketName: njcj
48
+    bucketURL: https://njcj.oss-cn-shanghai.aliyuncs.com
49
+
50
+# 手机短信服务
51
+sms:
52
+  # 先使用外网地址, 后期使用内网地址
53
+  url: http://101.200.84.17:8081/sms
54
+  method: POST
55
+  contentType: "application/json;charset=UTF-8"
56
+  template:
57
+    code:
58
+    tel:
59
+    params:
60
+
61
+  # 以下为各模板 code
62
+  # 验证码
63
+  captcha:
64
+    # 模板 code
65
+    code: "0301"
66
+    # 有效时间 秒
67
+    expire: 120
68
+    # 验证码长度
69
+    size: 4
70
+    # 短信签名
71
+    sign: AI智慧案场
72
+
73
+  visitor:
74
+    code: "0501"
75
+
76
+#日志配置
77
+logging:
78
+  config: classpath:log/logback-spring.xml
79
+  debug: true

+ 0
- 0
src/main/resources/application-rc.yml ファイルの表示


多くのファイルが変更されたため、一部のファイルはこの差分に表示されません