瀏覽代碼

修改获取标签方法

xueyiming 3 月之前
父節點
當前提交
a80176ae4b

+ 2 - 2
common-module/src/main/java/com/tzld/piaoquan/growth/common/service/Impl/WeComUserServiceImpl.java

@@ -121,7 +121,7 @@ public class WeComUserServiceImpl implements WeComUserService {
                     StaffWithUser staffWithUser = new StaffWithUser();
                     staffWithUser.setStaffId(staffId);
                     staffWithUser.setUserId(userId);
-                    staffWithUserMapper.insert(staffWithUser);
+                    staffWithUserMapper.insertSelective(staffWithUser);
                 }
             } else {
                 WeComUser weComUser = weComUserList.get(0);
@@ -132,7 +132,7 @@ public class WeComUserServiceImpl implements WeComUserService {
                     StaffWithUser staffWithUser = new StaffWithUser();
                     staffWithUser.setStaffId(staff.getId());
                     staffWithUser.setUserId(weComUser.getId());
-                    staffWithUserMapper.insert(staffWithUser);
+                    staffWithUserMapper.insertSelective(staffWithUser);
                 } else {
                     StaffWithUser staffWithUser = staffWithUserList.get(0);
                     if (staffWithUser.getIsDelete() == 1) {

+ 52 - 39
offline-module/src/main/java/com/tzld/piaoquan/offline/job/WeComUserDataJob.java

@@ -148,7 +148,7 @@ public class WeComUserDataJob {
                         StaffWithUser staffWithUser = new StaffWithUser();
                         staffWithUser.setStaffId(staff.getId());
                         staffWithUser.setUserId(userId);
-                        staffWithUserMapper.insert(staffWithUser);
+                        staffWithUserMapper.insertSelective(staffWithUser);
                     }
                 }
                 String nextCursor = jsonObject.getString("next_cursor");
@@ -241,7 +241,6 @@ public class WeComUserDataJob {
 
     @XxlJob("statisticsUserCountJob")
     public ReturnT<String> statisticsUserCount(String param) throws IOException {
-        refreshTag();
         StaffExample staffExample = new StaffExample();
         List<Staff> staffList = staffMapper.selectByExample(staffExample);
         String date;
@@ -303,44 +302,9 @@ public class WeComUserDataJob {
                         newCount++;
                     }
                     count++;
-                    JSONArray tagIds = followInfo.getJSONArray("tag_id");
                     Long userId = weComUserMapper.selectIdByExternalUserId(externalUserId);
                     if (userId == null) {
-                        String name = externalContact.getString("name");
-                        String unionId = externalContact.getString("unionid");
-                        String avatar = externalContact.getString("avatar");
-                        Integer type = externalContact.getInteger("type");
-                        Integer gender = externalContact.getInteger("gender");
-                        WeComUser weComUser = new WeComUser();
-                        weComUser.setExternalUserId(externalUserId);
-                        weComUser.setName(name);
-                        weComUser.setType(type);
-                        weComUser.setUnionId(unionId);
-                        weComUser.setGender(gender);
-                        weComUser.setAvatar(avatar);
-                        weComUser.setCreatedAt(createAt);
-                        weComUserMapper.insertSelective(weComUser);
-                        userId = weComUser.getId();
-                        StaffWithUser staffWithUser = new StaffWithUser();
-                        staffWithUser.setStaffId(staff.getId());
-                        staffWithUser.setUserId(userId);
-                        staffWithUserMapper.insert(staffWithUser);
-                    }
-
-                    if (!tagIds.isEmpty()) {
-                        List<String> tagIdList = tagIds.toJavaList(String.class);
-                        for (String tagId : tagIdList) {
-                            TagExample example = new TagExample();
-                            example.createCriteria().andTagIdEqualTo(tagId);
-                            List<Tag> tags = tagMapper.selectByExample(example);
-                            if (!CollectionUtils.isEmpty(tags)) {
-                                Tag tag = tags.get(0);
-                                UserWithTag userWithTag = new UserWithTag();
-                                userWithTag.setUserId(userId);
-                                userWithTag.setTagId(tag.getId());
-                                addUserWithTag(userWithTag);
-                            }
-                        }
+                        addUser(externalContact, corpId, externalUserId, createAt, staff.getId());
                     }
                 }
                 String nextCursor = jsonObject.getString("next_cursor");
@@ -360,6 +324,7 @@ public class WeComUserDataJob {
     @XxlJob("getUserTagJob")
     public ReturnT<String> getUserTag(String param) {
         try {
+            refreshTag();
             XxlJobParam xxlJobParam = new XxlJobParam();
             if (StringUtils.isNotEmpty(param)) {
                 xxlJobParam = JSONObject.parseObject(param, XxlJobParam.class);
@@ -381,7 +346,31 @@ public class WeComUserDataJob {
                 for (Staff staff : staffList) {
                     List<String> existExternalUserIds = getUserList(staff.getCarrierId(), corp.getId());
                     for (String externalUserId : existExternalUserIds) {
-                        weComUserService.getUserDetail(externalUserId, corp.getId());
+                        JSONObject userDetail = weComUserService.getUserDetail(externalUserId, corp.getId());
+                        JSONObject externalContact = userDetail.getJSONObject("external_contact");
+                        JSONObject followInfo = userDetail.getJSONObject("follow_info");
+                        Long createAt = followInfo.getLong("createtime");
+                        JSONArray tagIds = followInfo.getJSONArray("tag_id");
+                        if (!tagIds.isEmpty()) {
+                            List<String> tagIdList = tagIds.toJavaList(String.class);
+                            for (String tagId : tagIdList) {
+                                TagExample example = new TagExample();
+                                example.createCriteria().andTagIdEqualTo(tagId);
+                                List<Tag> tags = tagMapper.selectByExample(example);
+                                if (!CollectionUtils.isEmpty(tags)) {
+                                    Long userId = weComUserMapper.selectIdByExternalUserId(externalUserId);
+                                    if (userId == null) {
+                                        userId = addUser(externalContact, corp.getId(), externalUserId, createAt, staff.getId());
+                                    }
+                                    Tag tag = tags.get(0);
+                                    UserWithTag userWithTag = new UserWithTag();
+                                    userWithTag.setUserId(userId);
+                                    userWithTag.setTagId(tag.getId());
+                                    addUserWithTag(userWithTag);
+                                }
+                            }
+                        }
+
                     }
                 }
             }
@@ -449,4 +438,28 @@ public class WeComUserDataJob {
         }
     }
 
+    private Long addUser(JSONObject externalContact, Long corpId, String externalUserId, Long createAt, Long staffId) {
+        String name = externalContact.getString("name");
+        String unionId = externalContact.getString("unionid");
+        String avatar = externalContact.getString("avatar");
+        Integer type = externalContact.getInteger("type");
+        Integer gender = externalContact.getInteger("gender");
+        WeComUser weComUser = new WeComUser();
+        weComUser.setCorpId(corpId);
+        weComUser.setExternalUserId(externalUserId);
+        weComUser.setName(name);
+        weComUser.setType(type);
+        weComUser.setUnionId(unionId);
+        weComUser.setGender(gender);
+        weComUser.setAvatar(avatar);
+        weComUser.setCreatedAt(createAt);
+        weComUserMapper.insertSelective(weComUser);
+        Long userId = weComUser.getId();
+        StaffWithUser staffWithUser = new StaffWithUser();
+        staffWithUser.setStaffId(staffId);
+        staffWithUser.setUserId(userId);
+        staffWithUserMapper.insertSelective(staffWithUser);
+        return userId;
+    }
+
 }