我正在寻求关于上下投票系统的帮助。
目前我有一个投票表,其中引用了投票的用户、被投票的用户和被投票的信息(停车位)
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_spot 上投票了怎么办
我如何检查用户是否已经投票,如果他还没有然后插入,但如果他已经没有投票了。
我如何更新用户(uploaded_by_user_id)分数。加一表示赞成票,减一表示反对票。
所以一般流程是
用户按下投票,服务器检查是否已经被投票,如果是则不能再次投票。如果不是,则 vote_casted_user_id = 当前用户,parking_spot_id = 当前信息,upload_by_user_id = 上传信息的人,然后根据投票类型更新 upload_by_user 分数。
我正在使用带有 JDBC 连接到 MYSQL 数据库的 java servlet。
对我有什么想法吗?