1.发布帖子
发布帖子需要传入的参数包括帖子的内容,发帖用户的id,以及帖子图片的url。
在数据库中加入帖子的数据,包括帖子的id(自增),发帖用户的id,帖子的内容,图片的url(用json格式存储多个图片url),帖子的发布时间。
在数据库中,一条帖子的所有图片会以url的方式存到json格式的字符串里,真实的图片存储在七牛云上,方便图片的传输。一条帖子的所有点赞用户id、所有评论的信息也会存到json格式的字符串里。
关键代码:
sql = "INSERT INTO moment (uid,text,imgs,date) VALUES (?,?,?,?)";
statement = conn.prepareStatement(sql);
statement.setInt(1, Integer.parseInt(userId));
statement.setString(2, text);
statement.setString(3, imgs);
statement.setString(4, dateStr);
statement.executeUpdate();
status.setStatus(BaseConsts.STATUS_SUCESSED);
2.删除帖子
删除帖子的时候,需要传入的参数包括帖子的id,发帖用户的id,在数据库中查询到帖子的id,并且对应的用户id是匹配的才会删除帖子。
关键代码:
String sql="DELETE FROM moment WHERE mid=? AND uid=?";
statement=conn.prepareStatement(sql);
statement.setInt(1,Integer.parseInt(mid));
statement.setInt(2,Integer.parseInt(uid));
statement.executeUpdate();
status.setStatus(BaseConsts.STATUS_SUCESSED);
3.获取帖子
每次请求获取帖子接口时,分页获取帖子,每次返回五个帖子。
当请求的参数mid即帖子的id为-1时,返回最新的5个帖子,逆序返回;当请求的参数mid即帖子的id大于等于0时,返回mid~mid-4的五个帖子,逆序返回。
返回的内容包括:帖子的内容、图片、评论、帖子创建时间、点赞数、该用户是否点赞。
关键代码:
if (mid < 0) {
sql = "SELECT MAX(mid) AS maxid FROM moment";
statement = conn.prepareStatement(sql);
resultSet = statement.executeQuery();
if (resultSet.next()) {
mid = resultSet.getInt("maxid");
}
}
sql = "SELECT * FROM moment WHERE mid<=? AND mid>? ORDER BY mid DESC ";
statement = conn.prepareStatement(sql);
statement.setInt(1, mid);
statement.setInt(2, mid - 5);
resultSet = statement.executeQuery();
while (resultSet.next()) {
String comments = resultSet.getString("comments");
String likes = resultSet.getString("likes");
momentBean.moments.add(new MomentBean()
.setComments(getCommentBack(comments, conn))
.setImgs(resultSet.getString("imgs"))
.setText(resultSet.getString("text"))
.setMomentId(resultSet.getInt("mid"))
.setTime(resultSet.getString("date"))
.setUserId(Integer.parseInt(resultSet.getString("uid")))
.setLikes(getLikesNum(likes))
.setHasLike(getHasLike(likes, uid)));
}
momentBean.status = BaseConsts.STATUS_SUCESSED;