You've already forked FrameTour-BE
- 在 PuzzleTemplateController 中新增 replaceElements 接口 - 在 PuzzleElementMapper 中新增 getByTemplateIdAndKey 查询方法 - 在 PuzzleTemplateServiceImpl 中实现 replaceElements 业务逻辑 - 在 IPuzzleTemplateService 接口中定义 replaceElements 方法 - 在 PuzzleElementMapper.xml 中添加对应 SQL 查询语句
125 lines
5.3 KiB
XML
125 lines
5.3 KiB
XML
<?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.ycwl.basic.puzzle.mapper.PuzzleElementMapper">
|
|
|
|
<!-- 结果映射(重构版) -->
|
|
<resultMap id="BaseResultMap" type="com.ycwl.basic.puzzle.entity.PuzzleElementEntity">
|
|
<id column="id" property="id"/>
|
|
<result column="template_id" property="templateId"/>
|
|
<result column="element_type" property="elementType"/>
|
|
<result column="element_key" property="elementKey"/>
|
|
<result column="element_name" property="elementName"/>
|
|
<result column="config" property="config"/>
|
|
<!-- 位置和布局属性 -->
|
|
<result column="x_position" property="xPosition"/>
|
|
<result column="y_position" property="yPosition"/>
|
|
<result column="width" property="width"/>
|
|
<result column="height" property="height"/>
|
|
<result column="z_index" property="zIndex"/>
|
|
<result column="rotation" property="rotation"/>
|
|
<result column="opacity" property="opacity"/>
|
|
<!-- 元数据 -->
|
|
<result column="create_time" property="createTime"/>
|
|
<result column="update_time" property="updateTime"/>
|
|
<result column="deleted" property="deleted"/>
|
|
<result column="deleted_at" property="deletedAt"/>
|
|
</resultMap>
|
|
|
|
<!-- 基础列(重构版) -->
|
|
<sql id="Base_Column_List">
|
|
id, template_id, element_type, element_key, element_name, config,
|
|
x_position, y_position, width, height, z_index, rotation, opacity,
|
|
create_time, update_time, deleted, deleted_at
|
|
</sql>
|
|
|
|
<!-- 根据ID查询 -->
|
|
<select id="getById" resultMap="BaseResultMap">
|
|
SELECT <include refid="Base_Column_List"/>
|
|
FROM puzzle_element
|
|
WHERE id = #{id} AND deleted = 0
|
|
LIMIT 1
|
|
</select>
|
|
|
|
<!-- 根据模板ID查询元素列表(按z-index排序) -->
|
|
<select id="getByTemplateId" resultMap="BaseResultMap">
|
|
SELECT <include refid="Base_Column_List"/>
|
|
FROM puzzle_element
|
|
WHERE template_id = #{templateId} AND deleted = 0
|
|
ORDER BY z_index ASC, id ASC
|
|
</select>
|
|
|
|
<!-- 根据模板ID和元素Key查询元素 -->
|
|
<select id="getByTemplateIdAndKey" resultMap="BaseResultMap">
|
|
SELECT <include refid="Base_Column_List"/>
|
|
FROM puzzle_element
|
|
WHERE template_id = #{templateId} AND element_key = #{elementKey} AND deleted = 0
|
|
LIMIT 1
|
|
</select>
|
|
|
|
<!-- 插入(重构版) -->
|
|
<insert id="insert" parameterType="com.ycwl.basic.puzzle.entity.PuzzleElementEntity"
|
|
useGeneratedKeys="true" keyProperty="id">
|
|
INSERT INTO puzzle_element (
|
|
template_id, element_type, element_key, element_name, config,
|
|
x_position, y_position, width, height, z_index, rotation, opacity,
|
|
create_time, update_time, deleted
|
|
) VALUES (
|
|
#{templateId}, #{elementType}, #{elementKey}, #{elementName}, #{config},
|
|
#{xPosition}, #{yPosition}, #{width}, #{height}, #{zIndex}, #{rotation}, #{opacity},
|
|
NOW(), NOW(), 0
|
|
)
|
|
</insert>
|
|
|
|
<!-- 批量插入(重构版) -->
|
|
<insert id="batchInsert">
|
|
INSERT INTO puzzle_element (
|
|
template_id, element_type, element_key, element_name, config,
|
|
x_position, y_position, width, height, z_index, rotation, opacity,
|
|
create_time, update_time, deleted
|
|
) VALUES
|
|
<foreach collection="list" item="item" separator=",">
|
|
(
|
|
#{item.templateId}, #{item.elementType}, #{item.elementKey}, #{item.elementName}, #{item.config},
|
|
#{item.xPosition}, #{item.yPosition}, #{item.width}, #{item.height}, #{item.zIndex}, #{item.rotation}, #{item.opacity},
|
|
NOW(), NOW(), 0
|
|
)
|
|
</foreach>
|
|
</insert>
|
|
|
|
<!-- 更新(重构版) -->
|
|
<update id="update" parameterType="com.ycwl.basic.puzzle.entity.PuzzleElementEntity">
|
|
UPDATE puzzle_element
|
|
<set>
|
|
<if test="elementType != null">element_type = #{elementType},</if>
|
|
<if test="elementKey != null">element_key = #{elementKey},</if>
|
|
<if test="elementName != null">element_name = #{elementName},</if>
|
|
<if test="config != null">config = #{config},</if>
|
|
<if test="xPosition != null">x_position = #{xPosition},</if>
|
|
<if test="yPosition != null">y_position = #{yPosition},</if>
|
|
<if test="width != null">width = #{width},</if>
|
|
<if test="height != null">height = #{height},</if>
|
|
<if test="zIndex != null">z_index = #{zIndex},</if>
|
|
<if test="rotation != null">rotation = #{rotation},</if>
|
|
<if test="opacity != null">opacity = #{opacity},</if>
|
|
update_time = NOW()
|
|
</set>
|
|
WHERE id = #{id} AND deleted = 0
|
|
</update>
|
|
|
|
<!-- 逻辑删除 -->
|
|
<update id="deleteById">
|
|
UPDATE puzzle_element
|
|
SET deleted = 1, deleted_at = NOW(), update_time = NOW()
|
|
WHERE id = #{id}
|
|
</update>
|
|
|
|
<!-- 根据模板ID删除所有元素 -->
|
|
<update id="deleteByTemplateId">
|
|
UPDATE puzzle_element
|
|
SET deleted = 1, deleted_at = NOW(), update_time = NOW()
|
|
WHERE template_id = #{templateId}
|
|
</update>
|
|
|
|
</mapper>
|