[43]用户画像--阅读时间偏好统计

在用户画像中,后端需要根据用户历史浏览记录记录的时间推算出用户最喜欢的阅读时间

Service

/**
     * 获取用户的阅读时间
     *
     * @param userId
     * @return
     */
    public String getUserReadTime(int userId) {
        List readTimes = userPortraitDao.selectUserReadTime(userId);

        int[] st = new int[4];
        for (int i = 0; i < 4; i++) {
            st[i] = 0;
        }

        for (Date date : readTimes) {
            int hour = date.getHours();
            if (hour > 6 && hour < 12) {
                st[0]++;
            } else if (hour > 12 && hour < 18) {
                st[1]++;
            } else if (hour > 18 && hour < 22) {
                st[2]++;
            } else {
                st[3]++;
            }
        }

        int max = 0;
        for (int i = 1; i < 4; i++) {
            if (st[i] > st[max]) {
                max = i;
            }
        }
        switch (max) {
            case 1:
                return "上午";
            case 2:
                return "下午";
            case 3:
                return "晚上";
            default:
                return "半夜";
        }
    }

Dao

    @Select("SELECT browse_time " +
            "FROM user_browsing_history " +
            "WHERE user_id = #{userId}")
    List selectUserReadTime(@Param("userId") int userId);

你可能感兴趣的:(创新实践)