<?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.ruoyi.account.mapper.UserPointMapper">
|
|
<!-- 通用查询映射结果 -->
|
<resultMap id="BaseResultMap" type="com.ruoyi.account.api.model.UserPoint">
|
<id column="id" property="id" />
|
<result column="type" property="type" />
|
<result column="historical_point" property="historicalPoint" />
|
<result column="variable_point" property="variablePoint" />
|
<result column="create_time" property="createTime" />
|
<result column="app_user_id" property="appUserId" />
|
<result column="object_id" property="objectId" />
|
</resultMap>
|
|
<!-- 通用查询结果列 -->
|
<sql id="Base_Column_List">
|
id, type, historical_point, variable_point, create_time, app_user_id, object_id
|
</sql>
|
<select id="findLatestUserPointByTypeForUser" resultType="com.ruoyi.account.api.model.UserPoint">
|
SELECT
|
t1.*
|
FROM
|
t_user_point t1
|
INNER JOIN ( SELECT type, MAX( create_time ) AS max_create_time FROM t_user_point WHERE app_user_id = #{userId} GROUP BY type ) t2 ON t1.type = t2.type
|
AND t1.create_time = t2.max_create_time
|
WHERE
|
t1.app_user_id = #{userId}
|
</select>
|
<select id="findLatestChangeByType" resultType="com.ruoyi.account.api.model.UserPoint">
|
SELECT
|
id,
|
type,
|
historical_point,
|
variable_point,
|
balance,
|
create_time,
|
app_user_id,
|
object_id
|
FROM (
|
SELECT
|
id,
|
type,
|
historical_point,
|
variable_point,
|
balance,
|
create_time,
|
app_user_id,
|
object_id,
|
ROW_NUMBER() OVER (PARTITION BY type ORDER BY create_time DESC) AS rn
|
FROM
|
t_user_point
|
) AS subquery
|
WHERE
|
rn = 1
|
<if test="type != null">
|
AND type = #{type}
|
</if>
|
<if test="appUserId != null">
|
AND app_user_id = #{appUserId}
|
</if>
|
</select>
|
|
</mapper>
|