我正在寻求有关投票系统的帮助。
目前我有一个投票表,其中引用了投票的用户、被投票的用户和被投票的信息( parking 位)
CREATE TABLE parking_spots_votes(
vote_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
parking_spot_id INTEGER DEFAULT NULL,
key parking_spot_id_fk (parking_spot_id),
FOREIGN KEY (parking_spot_id) REFERENCES parking_spots(id),
uploaded_by_user_id INTEGER DEFAULT NULL,
key user_id_fk (uploaded_by_user_id),
FOREIGN KEY (uploaded_by_user_id) REFERENCES parking_angel_users(id),
vote_casted_user_id INTEGER DEFAULT NULL,
key vote_cast_user_id_fk (vote_casted_user_id),
FOREIGN KEY (vote_casted_user_id) REFERENCES parking_angel_users(id),
vote_type INTEGER NOT NULL
)
投票类型可以是0表示不投票,1表示赞成票,2表示反对票
现在我遇到了一点逻辑问题。
例如
- 如果用户已经对 parking 位投票怎么办
我如何检查用户是否已经投票,如果他还没有投票则插入但如果他已经投票则不返回已投票。
如何更新用户(uploaded_by_user_id)分数。赞成票加一票,反对票减一票。
所以一般的流程是,
用户按下投票,服务器检查是否已经投票,如果已经投票则不能再次投票。 如果不是,则 vote_casted_user_id = 当前用户,parking_spot_id = 当前信息,uploaded_by_user_id = 上传信息的人, 然后 uploaded_by_user 分数将根据投票类型更新。
我正在使用带有 JDBC 连接到 MYSQL 数据库的 java servlet。
对我有什么想法吗?
最佳答案
- what if the user has already voted on a parking_spot?
- How do i check if a user has already voted and if he has not then insert but if he has then do not a return voted already.
这些基本上是同一个问题:如何测试用户是否已经在 parking 位上投票?那么,只需运行一个查询来获取 parking_spot_id 和 vote_casted_user_id 匹配的记录。
How do i update a user(uploaded_by_user_id) score. plus one for an up vote and minus one for a down vote?
如果不太麻烦,我会将 vote_type 的值更改为 +1 表示赞成票,-1 表示反对票。然后这只是 SELECT SUM(vote_type) FROM table WHERE uploaded_by_user_id=...
希望对你有帮助
关于java - 投票系统存在逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6763101/