| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| <mapper namespace="com.pt5.pthouduan.mapper.UserMapper"> |
| |
| <!-- 通用查询映射结果 --> |
| <resultMap id="BaseResultMap" type="com.pt5.pthouduan.entity.User"> |
| <id column="userid" property="userid" /> |
| <result column="username" property="username" /> |
| <result column="password" property="password" /> |
| <result column="user_upload" property="userUpload" /> |
| <result column="user_download" property="userDownload" /> |
| <result column="credit" property="credit" /> |
| <result column="image" property="image" /> |
| <result column="sex" property="sex" /> |
| <result column="grade_id" property="gradeId" /> |
| <result column="passkey" property="passkey" /> |
| <result column="user_created_time" property="userCreatedTime" /> |
| <result column="ratio" property="ratio" /> |
| <result column="age" property="age" /> |
| <result column="privacy" property="privacy" /> |
| </resultMap> |
| |
| <!-- 通用查询结果列 --> |
| <sql id="Base_Column_List"> |
| username, password, user_upload, user_download, credit, image, sex, userid, grade_id, passkey, user_created_time, ratio, age, privacy |
| </sql> |
| <!-- 根据 passkey 查询用户名 --> |
| <select id="getUsernameByPasskey" parameterType="java.lang.String" resultType="java.lang.String"> |
| SELECT username |
| FROM user |
| WHERE passkey = #{passkey} |
| </select> |
| |
| <select id="findSeedersByInfoHash" resultType="com.pt5.pthouduan.entity.PeerInfo"> |
| SELECT |
| ps.ip, |
| ps.port, |
| ps.peer_id, |
| ps.uploaded, |
| ps.upload_speed, |
| ps.downloaded, |
| ps.download_speed, |
| ps.last_event, |
| ps.last_updated, |
| ps.created_at, |
| ps.client, |
| ps.username, |
| ps.created_at, |
| ps.completed_time, |
| ps.port |
| FROM peer_stats ps |
| WHERE ps.info_hash = #{infoHash} |
| </select> |
| |
| |
| |
| <!-- 根据 passkey 检查用户是否存在 --> |
| <select id="existsByPasskey" resultType="boolean"> |
| SELECT COUNT(*) > 0 |
| FROM user |
| WHERE passkey = #{passkey} |
| </select> |
| |
| <!-- <update id="incrementUserTraffic">--> |
| <!-- UPDATE user--> |
| <!-- SET user_upload = user_upload + #{user_upload},--> |
| <!-- user_download = user_download + #{user_download}--> |
| <!-- WHERE passkey = #{passkey}--> |
| <!-- </update>--> |
| <update id="incrementUserTraffic"> |
| UPDATE user u |
| JOIN torrent t ON t.info_hash = #{info_hash} AND u.passkey = #{passkey} |
| SET |
| u.user_upload = u.user_upload + ( |
| CASE |
| WHEN t.promotionid = 1 THEN #{user_upload} * 2 -- 上传加倍 |
| ELSE #{user_upload} |
| END |
| ), |
| u.user_download = u.user_download + ( |
| CASE |
| WHEN t.promotionid = 2 THEN #{user_download} / 2 -- 下载减半 |
| WHEN t.promotionid = 3 THEN 0 -- 免费下载 |
| ELSE #{user_download} |
| END |
| ) |
| </update> |
| |
| |
| |
| </mapper> |