feat(character): 添加用户人设接口及排序管理
新增 /character/addUserCharacter 端点,支持用户将人设加入个人列表并自动维护排序数组。引入 KeyboardUserCharacterAddDTO、KeyboardUserSortMapper 及相关错误码,实现事务级插入与排序更新。
This commit is contained in:
@@ -2,39 +2,35 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.yolo.keyborad.mapper.KeyboardUserCharacterMapper">
|
||||
|
||||
<resultMap id="KeyboardUserCharacterVOMap"
|
||||
type="com.yolo.keyborad.model.vo.character.KeyboardUserCharacterVO">
|
||||
|
||||
<id column="id" property="id"/>
|
||||
|
||||
<!-- keyboard_character 表的列名,根据你的实际字段调整 -->
|
||||
<result column="character_name" property="characterName"/>
|
||||
|
||||
<!-- 关键:ARRAY 字段明确指定 jdbcType + typeHandler -->
|
||||
<result column="sort"
|
||||
jdbcType="ARRAY"
|
||||
typeHandler="org.apache.ibatis.type.ArrayTypeHandler"/>
|
||||
<result column="emoji" property="emoji"/>
|
||||
</resultMap>
|
||||
|
||||
<update id="updateSortByIdAndUserId">
|
||||
UPDATE keyboard_user_character
|
||||
SET sort = #{sort,jdbcType=ARRAY}
|
||||
where user_id = #{userId}
|
||||
AND deleted = FALSE
|
||||
</update>
|
||||
|
||||
|
||||
<select id="selectByUserId"
|
||||
resultMap="KeyboardUserCharacterVOMap">
|
||||
resultType="com.yolo.keyborad.model.vo.character.KeyboardUserCharacterVO">
|
||||
SELECT
|
||||
kuc.id,
|
||||
kuc.character_id,
|
||||
kc.character_name,
|
||||
kuc.sort,
|
||||
kuc.emoji
|
||||
FROM keyboard_user_character AS kuc
|
||||
LEFT JOIN keyboard_character AS kc ON kuc.character_id = kc.id
|
||||
FROM keyboard_user_character kuc
|
||||
JOIN keyboard_user_sort kus
|
||||
ON kus.user_id = kuc.user_id
|
||||
LEFT JOIN keyboard_character kc
|
||||
ON kuc.character_id = kc.id
|
||||
WHERE kuc.user_id = #{loginId}
|
||||
AND kuc.deleted = FALSE
|
||||
ORDER BY array_position(kus.user_characteu_id_sort, kuc.id) NULLS LAST;
|
||||
</select>
|
||||
|
||||
<update id="updateSortByIdAndUserId">
|
||||
UPDATE keyboard_user_sort
|
||||
SET user_characteu_id_sort = #{sort,jdbcType=ARRAY}
|
||||
where user_id = #{userId}
|
||||
</update>
|
||||
|
||||
|
||||
<select id="selectSortByUserId" resultType="java.lang.Long">
|
||||
SELECT unnest(user_characteu_id_sort)
|
||||
FROM keyboard_user_sort
|
||||
WHERE user_id = #{userId}
|
||||
</select>
|
||||
</mapper>
|
||||
22
src/main/resources/mapper/KeyboardUserSortMapper.xml
Normal file
22
src/main/resources/mapper/KeyboardUserSortMapper.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?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.yolo.keyborad.mapper.KeyboardUserSortMapper">
|
||||
<!-- 展开数组为多行:返回 List<Long> -->
|
||||
<select id="selectSortByUserId" resultType="java.lang.Long">
|
||||
SELECT unnest(user_characteu_id_sort)
|
||||
FROM keyboard_user_sort
|
||||
WHERE user_id = #{userId}
|
||||
</select>
|
||||
|
||||
<update id="updateSortByUserId">
|
||||
UPDATE keyboard_user_sort
|
||||
SET user_characteu_id_sort = #{sort, jdbcType=ARRAY}
|
||||
WHERE user_id = #{userId}
|
||||
</update>
|
||||
|
||||
<insert id="insertUserSort">
|
||||
INSERT INTO keyboard_user_sort (user_id, user_characteu_id_sort)
|
||||
VALUES (#{userId}, #{sort, jdbcType=ARRAY})
|
||||
</insert>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user