CREATE TABLE `user_likes` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '点赞信息ID',
`info_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '点赞对象id',
`create_time` datetime DEFAULT NULL COMMENT '时间',
`like_user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '点赞人ID',
`update_time` datetime DEFAULT NULL,
`status` int DEFAULT '0' COMMENT '0 取消 1 点赞',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `agdkey` (`like_user_id`,`info_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='点赞记录表';
点赞的内容表
CREATE TABLE `video` (
`id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`likes_number` int DEFAULT NULL COMMENT '点赞数',
`comments_number` int DEFAULT NULL COMMENT '评论数',
`share_number` int DEFAULT NULL COMMENT '分享数',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_user` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '创建者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`update_user` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '更新者',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;
2.2 工具类及枚举类
RedisKeyUtils
public class RedisKeyUtils {
public static final String MAP_KEY_USER_LIKED = "MAP_USER_LIKED";
public static final String MAP_KEY_USER_LIKED_COUNT = "MAP_USER_LIKED_COUNT";
public static String getLikedKey(String likedUserId, String likedPostId){
return likedUserId +
"::" +
likedPostId;
}
RedisConfig
@Configuration
public class RedisConfig {
@Bean
@ConditionalOnMissingBean(name = "redisTemplate")
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
Jackson2JsonRedisSerializer
UserLikesDto
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserLikesDto {
private String infoId;
private String likeUserId;
private Integer status;
}
UserLikCountDTO
@Data
public class UserLikCountDTO implements Serializable {
private String infoId;
private Integer value;
public UserLikCountDTO(String infoId, Integer value) {
this.infoId = infoId;
this.value = value;
}
}