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