You've already forked FrameTour-BE
refactor(puzzle): 重构元素DTO及新增元素基类
- 将ElementCreateRequest和PuzzleElementDTO中的elementType从Integer改为String - 删除所有类型特定字段,新增config和configMap支持JSON配置 - 新增BaseElement抽象基类定义元素通用行为 - 添加ElementConfig接口和具体实现类ImageConfig、TextConfig - 创建ElementFactory工厂类和ElementRegistrar注册器 - 新增ElementType枚举和ElementValidationException异常类 - 实现ImageElement和TextElement具体元素类 - 添加Position位置信息封装类
This commit is contained in:
@@ -3,13 +3,15 @@
|
||||
"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"/>
|
||||
@@ -17,32 +19,17 @@
|
||||
<result column="z_index" property="zIndex"/>
|
||||
<result column="rotation" property="rotation"/>
|
||||
<result column="opacity" property="opacity"/>
|
||||
<result column="default_image_url" property="defaultImageUrl"/>
|
||||
<result column="image_fit_mode" property="imageFitMode"/>
|
||||
<result column="border_radius" property="borderRadius"/>
|
||||
<result column="default_text" property="defaultText"/>
|
||||
<result column="font_family" property="fontFamily"/>
|
||||
<result column="font_size" property="fontSize"/>
|
||||
<result column="font_color" property="fontColor"/>
|
||||
<result column="font_weight" property="fontWeight"/>
|
||||
<result column="font_style" property="fontStyle"/>
|
||||
<result column="text_align" property="textAlign"/>
|
||||
<result column="line_height" property="lineHeight"/>
|
||||
<result column="max_lines" property="maxLines"/>
|
||||
<result column="text_decoration" property="textDecoration"/>
|
||||
<!-- 元数据 -->
|
||||
<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,
|
||||
id, template_id, element_type, element_key, element_name, config,
|
||||
x_position, y_position, width, height, z_index, rotation, opacity,
|
||||
default_image_url, image_fit_mode, border_radius,
|
||||
default_text, font_family, font_size, font_color, font_weight, font_style,
|
||||
text_align, line_height, max_lines, text_decoration,
|
||||
create_time, update_time, deleted, deleted_at
|
||||
</sql>
|
||||
|
||||
@@ -62,55 +49,44 @@
|
||||
ORDER BY z_index ASC, id ASC
|
||||
</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,
|
||||
template_id, element_type, element_key, element_name, config,
|
||||
x_position, y_position, width, height, z_index, rotation, opacity,
|
||||
default_image_url, image_fit_mode, border_radius,
|
||||
default_text, font_family, font_size, font_color, font_weight, font_style,
|
||||
text_align, line_height, max_lines, text_decoration,
|
||||
create_time, update_time, deleted
|
||||
) VALUES (
|
||||
#{templateId}, #{elementType}, #{elementKey}, #{elementName},
|
||||
#{templateId}, #{elementType}, #{elementKey}, #{elementName}, #{config},
|
||||
#{xPosition}, #{yPosition}, #{width}, #{height}, #{zIndex}, #{rotation}, #{opacity},
|
||||
#{defaultImageUrl}, #{imageFitMode}, #{borderRadius},
|
||||
#{defaultText}, #{fontFamily}, #{fontSize}, #{fontColor}, #{fontWeight}, #{fontStyle},
|
||||
#{textAlign}, #{lineHeight}, #{maxLines}, #{textDecoration},
|
||||
NOW(), NOW(), 0
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 批量插入 -->
|
||||
<!-- 批量插入(重构版) -->
|
||||
<insert id="batchInsert">
|
||||
INSERT INTO puzzle_element (
|
||||
template_id, element_type, element_key, element_name,
|
||||
template_id, element_type, element_key, element_name, config,
|
||||
x_position, y_position, width, height, z_index, rotation, opacity,
|
||||
default_image_url, image_fit_mode, border_radius,
|
||||
default_text, font_family, font_size, font_color, font_weight, font_style,
|
||||
text_align, line_height, max_lines, text_decoration,
|
||||
create_time, update_time, deleted
|
||||
) VALUES
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(
|
||||
#{item.templateId}, #{item.elementType}, #{item.elementKey}, #{item.elementName},
|
||||
#{item.templateId}, #{item.elementType}, #{item.elementKey}, #{item.elementName}, #{item.config},
|
||||
#{item.xPosition}, #{item.yPosition}, #{item.width}, #{item.height}, #{item.zIndex}, #{item.rotation}, #{item.opacity},
|
||||
#{item.defaultImageUrl}, #{item.imageFitMode}, #{item.borderRadius},
|
||||
#{item.defaultText}, #{item.fontFamily}, #{item.fontSize}, #{item.fontColor}, #{item.fontWeight}, #{item.fontStyle},
|
||||
#{item.textAlign}, #{item.lineHeight}, #{item.maxLines}, #{item.textDecoration},
|
||||
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>
|
||||
@@ -118,19 +94,6 @@
|
||||
<if test="zIndex != null">z_index = #{zIndex},</if>
|
||||
<if test="rotation != null">rotation = #{rotation},</if>
|
||||
<if test="opacity != null">opacity = #{opacity},</if>
|
||||
<if test="defaultImageUrl != null">default_image_url = #{defaultImageUrl},</if>
|
||||
<if test="imageFitMode != null">image_fit_mode = #{imageFitMode},</if>
|
||||
<if test="borderRadius != null">border_radius = #{borderRadius},</if>
|
||||
<if test="defaultText != null">default_text = #{defaultText},</if>
|
||||
<if test="fontFamily != null">font_family = #{fontFamily},</if>
|
||||
<if test="fontSize != null">font_size = #{fontSize},</if>
|
||||
<if test="fontColor != null">font_color = #{fontColor},</if>
|
||||
<if test="fontWeight != null">font_weight = #{fontWeight},</if>
|
||||
<if test="fontStyle != null">font_style = #{fontStyle},</if>
|
||||
<if test="textAlign != null">text_align = #{textAlign},</if>
|
||||
<if test="lineHeight != null">line_height = #{lineHeight},</if>
|
||||
<if test="maxLines != null">max_lines = #{maxLines},</if>
|
||||
<if test="textDecoration != null">text_decoration = #{textDecoration},</if>
|
||||
update_time = NOW()
|
||||
</set>
|
||||
WHERE id = #{id} AND deleted = 0
|
||||
|
||||
Reference in New Issue
Block a user