blob: 229f3c0166f7e637edc207678c05f87a920bc514 [file] [log] [blame]
<?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>