| 
					
				 | 
			
			
				@@ -4,14 +4,19 @@ import com.alibaba.fastjson.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.wecom.dao.mapper.UserMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.wecom.model.po.User; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.tzld.piaoquan.wecom.model.po.UserExample; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.wecom.utils.HttpClientUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.wecom.utils.HttpPoolClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.commons.lang3.ObjectUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.BeanUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.context.annotation.Bean; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.util.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Collections; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Component 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -19,9 +24,13 @@ public class WeComUserDataJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     String GET_USER_URL = "https://open.weibanzhushou.com/open-api/external_user/list"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    String UPDATE_USER_URL = "https://open.weibanzhushou.com/open-api/external_user/update/list"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    String ACCESS_TOKEN = "38969e430219e6b18f88792184a37b11"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private static final HttpPoolClient httpPoolClientDefault = HttpClientUtil.create(30000, 30000, 2000, 5000, 5, 30000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    final int size = 30; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    final int size = 100; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private UserMapper userMapper; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -29,11 +38,11 @@ public class WeComUserDataJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void insertAllUser() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Long endTime = System.currentTimeMillis() / 1000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         int sum = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (int i = 0; i < 5; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int i = 0; i < 1000; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             String res = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //TODO accessToken 暂时写死 后续增加接口刷新和存储 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                res = getUser("12c11f5504cecdc89210070ccfd72461", size, i * size, 1720540800L, endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res = getUser(ACCESS_TOKEN, size, i * size, 1720540800L, endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //TODO 记录查询数据 info日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //TODO 记录异常日志 记录起止时间和页数 startTime endTime i 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -51,10 +60,14 @@ public class WeComUserDataJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 User user = jsonArray.getJSONObject(j).toJavaObject(User.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 user.setExternalUserId3rdParty(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //TODO 记录对象数据  info日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                int insert = userMapper.insert(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (insert <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //TODO  异常日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int insert = userMapper.insert(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (insert <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //TODO  异常日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //TODO 打印异常日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 sum++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -66,8 +79,6 @@ public class WeComUserDataJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public String getUser(String accessToken, Integer limit, Integer offset, Long startTime, Long endTime) throws IOException { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -78,4 +89,68 @@ public class WeComUserDataJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void updateUser() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long endTime = System.currentTimeMillis() / 1000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int sum = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int i = 0; i < 1000; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String res = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //TODO accessToken 暂时写死 后续增加接口刷新和存储 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res = getUpdateUser(ACCESS_TOKEN, size, i * size, 1726821389L, endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //TODO 记录查询数据 info日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //TODO 记录异常日志 记录起止时间和页数 startTime endTime i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (ObjectUtils.isEmpty(res)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            JSONObject jsonObject = JSONObject.parseObject(res); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Integer total = (Integer) jsonObject.get("total"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            JSONArray jsonArray = jsonObject.getJSONArray("external_user_list"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (int j = 0; j < jsonArray.size(); j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String id = (String) jsonArray.getJSONObject(j).get("id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                jsonArray.getJSONObject(j).put("id", null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                User user = jsonArray.getJSONObject(j).toJavaObject(User.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                user.setExternalUserId3rdParty(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                UserExample example = new UserExample(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                example.createCriteria().andExternalUserId3rdPartyEqualTo(user.getExternalUserId3rdParty()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<User> list = userMapper.selectByExample(example); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (CollectionUtils.isEmpty(list)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //没有用户,走插入逻辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int insert = userMapper.insert(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (insert <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //TODO  异常日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    User oldUser = list.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    user.setId(oldUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int update = userMapper.updateByPrimaryKeySelective(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (update < 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //TODO  异常日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sum++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (jsonArray.size() < size) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (total != null && total > sum) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //TODO 输出异常  插入数量不足 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        System.out.println("插入数量不足"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public String getUpdateUser(String accessToken, Integer limit, Integer offset, Long startTime, Long endTime) throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String url = UPDATE_USER_URL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                + "?access_token=" + accessToken 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                + "&limit=" + limit + "&offset=" + offset + "&start_update_time=" + startTime + "&end_update_time=" + endTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                + "&source=external_user"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return httpPoolClientDefault.get(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |