diff --git a/src/main/java/com/mobvista/apptag/mapper/TagDao.java b/src/main/java/com/mobvista/apptag/mapper/TagDao.java
index f80e051..5cd7acb 100644
--- a/src/main/java/com/mobvista/apptag/mapper/TagDao.java
+++ b/src/main/java/com/mobvista/apptag/mapper/TagDao.java
@@ -34,12 +34,15 @@ public interface TagDao {
             @Result(property = "install", column = "install"), @Result(property = "tag", column = "tag"),
             @Result(property = "userId", column = "user_id"),
             @Result(property = "updateTime", column = "update_time")})
-    List<Tag> list(String search, int tag);
+    List<Tag> list(String search, int tag, String userId);
 
     class ListMapperProvider {
-        public String list(String search, int tag) {
+        public String list(String search, int tag, String userId) {
             String sql = "SELECT * FROM tag_list WHERE tag < " + tag;
 
+            if (StringUtils.isNotBlank(userId)) {
+                sql += " AND user_id NOT LIKE '%" + userId + "%'";
+            }
             if (StringUtils.isNotBlank(search)) {
                 sql += " AND LOWER(package_name) LIKE '%" + search + "%'";
             }
@@ -83,11 +86,14 @@ public interface TagDao {
      */
 
     @SelectProvider(type = CountMapperProvider.class, method = "count")
-    int count(String search, int tag);
+    int count(String search, int tag, String userId);
 
     class CountMapperProvider {
-        public String count(String search, int tag) {
+        public String count(String search, int tag, String userId) {
             String sql = "SELECT COUNT(1) FROM tag_list WHERE tag < " + tag;
+            if (StringUtils.isNotBlank(userId)) {
+                sql += " AND user_id NOT LIKE '%" + userId + "%'";
+            }
             if (StringUtils.isNotBlank(search)) {
                 sql += " AND LOWER(package_name) LIKE '%" + search + "%'";
             }
diff --git a/src/main/java/com/mobvista/apptag/service/impl/TagServiceImpl.java b/src/main/java/com/mobvista/apptag/service/impl/TagServiceImpl.java
index 8c5c279..b801d2f 100644
--- a/src/main/java/com/mobvista/apptag/service/impl/TagServiceImpl.java
+++ b/src/main/java/com/mobvista/apptag/service/impl/TagServiceImpl.java
@@ -65,47 +65,15 @@ public class TagServiceImpl implements TagService {
         User user = userDao.find(userId);
         List<Tag> results;
         PageHelper.startPage(query.getOffset() / query.getLimit() + 1, query.getLimit());
-        results = tagDao.list(query.getSearch().toLowerCase(), 3);
-        List<Tag> results2 = new ArrayList<>();
-        for (Tag tag : results) {
-            if (StringUtils.isBlank(tag.getUserId())) {
-                results2.add(tag);
-            } else {
-                String[] userIds = tag.getUserId().split(",");
-                Set<String> userSet = new HashSet<>(Arrays.asList(userIds));
-                if (!userSet.contains(user.getUserId())) {
-                    results2.add(tag);
-                }
-            }
-        }
-        return results2;
+        results = tagDao.list(query.getSearch().toLowerCase(), 3, user.getUserId());
+
+        return results;
     }
 
     @Override
     public int count(String userId, Query query) {
         User user = userDao.find(userId);
-        List<Tag> results;
-        results = tagDao.list(query.getSearch().toLowerCase(), 3);
-        int count = 0;
-        for (Tag tag : results) {
-            if (StringUtils.isBlank(tag.getUserId())) {
-                count += 1;
-            } else {
-                String[] userIds = tag.getUserId().split(",");
-                Set<String> userSet = new HashSet<>(Arrays.asList(userIds));
-                if (!userSet.contains(user.getUserId())) {
-                    count += 1;
-                }
-            }
-        }
-        return count;
-    }
 
-    /*
-    @Override
-    public List<Tag> list(int pageNum, int pageSize) {
-        PageHelper.startPage(pageNum, pageSize);
-        return tagDao.list(1);
+        return tagDao.count(query.getSearch().toLowerCase(), 3, user.getUserId());
     }
-     */
 }
\ No newline at end of file