You've already forked FrameTour-BE
feat(puzzle): 添加拼图边缘渲染功能
- 集成 PuzzleEdgeWorkerIpInterceptor 拦截器进行 IP 校验 - 添加 PuzzleEdgeWorkerSecurityProperties 配置类 - 创建 PuzzleEdgeRenderTaskController 提供边缘渲染接口 - 添加多种 DTO 类用于边缘渲染任务数据传输 - 创建 PuzzleEdgeRenderTaskEntity 实体和 Mapper 接口 - 实现 PuzzleEdgeRenderTaskService 核心服务逻辑 - 重构 PuzzleGenerateServiceImpl 使用边缘渲染服务 - 移除原有的线程池执行器和同步渲染逻辑 - 添加定时任务处理渲染超时和重试机制 - 实现自动打印队列添加功能
This commit is contained in:
108
src/main/resources/mapper/PuzzleEdgeRenderTaskMapper.xml
Normal file
108
src/main/resources/mapper/PuzzleEdgeRenderTaskMapper.xml
Normal file
@@ -0,0 +1,108 @@
|
||||
<?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.edge.mapper.PuzzleEdgeRenderTaskMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="com.ycwl.basic.puzzle.edge.entity.PuzzleEdgeRenderTaskEntity">
|
||||
<id column="id" property="id"/>
|
||||
<result column="record_id" property="recordId"/>
|
||||
<result column="template_id" property="templateId"/>
|
||||
<result column="template_code" property="templateCode"/>
|
||||
<result column="scenic_id" property="scenicId"/>
|
||||
<result column="face_id" property="faceId"/>
|
||||
<result column="content_hash" property="contentHash"/>
|
||||
<result column="status" property="status"/>
|
||||
<result column="worker_id" property="workerId"/>
|
||||
<result column="lease_expire_time" property="leaseExpireTime"/>
|
||||
<result column="attempt_count" property="attemptCount"/>
|
||||
<result column="output_format" property="outputFormat"/>
|
||||
<result column="output_quality" property="outputQuality"/>
|
||||
<result column="original_object_key" property="originalObjectKey"/>
|
||||
<result column="cropped_object_key" property="croppedObjectKey"/>
|
||||
<result column="payload_json" property="payloadJson"/>
|
||||
<result column="error_message" property="errorMessage"/>
|
||||
<result column="create_time" property="createTime"/>
|
||||
<result column="update_time" property="updateTime"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
id, record_id, template_id, template_code, scenic_id, face_id, content_hash,
|
||||
status, worker_id, lease_expire_time, attempt_count,
|
||||
output_format, output_quality,
|
||||
original_object_key, cropped_object_key,
|
||||
payload_json, error_message,
|
||||
create_time, update_time
|
||||
</sql>
|
||||
|
||||
<select id="getById" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM puzzle_edge_render_task
|
||||
WHERE id = #{id}
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<insert id="insert" parameterType="com.ycwl.basic.puzzle.edge.entity.PuzzleEdgeRenderTaskEntity"
|
||||
useGeneratedKeys="true" keyProperty="id">
|
||||
INSERT INTO puzzle_edge_render_task (
|
||||
record_id, template_id, template_code, scenic_id, face_id, content_hash,
|
||||
status, worker_id, lease_expire_time, attempt_count,
|
||||
output_format, output_quality,
|
||||
original_object_key, cropped_object_key,
|
||||
payload_json, error_message,
|
||||
create_time, update_time
|
||||
) VALUES (
|
||||
#{recordId}, #{templateId}, #{templateCode}, #{scenicId}, #{faceId}, #{contentHash},
|
||||
#{status}, #{workerId}, #{leaseExpireTime}, #{attemptCount},
|
||||
#{outputFormat}, #{outputQuality},
|
||||
#{originalObjectKey}, #{croppedObjectKey},
|
||||
#{payloadJson}, #{errorMessage},
|
||||
NOW(), NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<select id="findNextClaimableTaskId" resultType="java.lang.Long">
|
||||
SELECT id
|
||||
FROM puzzle_edge_render_task
|
||||
WHERE status = 0
|
||||
OR (status = 1 AND lease_expire_time IS NOT NULL AND lease_expire_time < NOW())
|
||||
ORDER BY id ASC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<update id="claimTask">
|
||||
UPDATE puzzle_edge_render_task
|
||||
SET worker_id = #{workerId},
|
||||
status = 1,
|
||||
lease_expire_time = #{leaseExpireTime},
|
||||
attempt_count = attempt_count + 1,
|
||||
update_time = NOW()
|
||||
WHERE id = #{taskId}
|
||||
AND (
|
||||
status = 0
|
||||
OR (status = 1 AND lease_expire_time IS NOT NULL AND lease_expire_time < NOW())
|
||||
)
|
||||
</update>
|
||||
|
||||
<update id="markSuccess">
|
||||
UPDATE puzzle_edge_render_task
|
||||
SET status = 2,
|
||||
lease_expire_time = NULL,
|
||||
error_message = NULL,
|
||||
update_time = NOW()
|
||||
WHERE id = #{taskId}
|
||||
AND worker_id = #{workerId}
|
||||
AND status = 1
|
||||
</update>
|
||||
|
||||
<update id="markFail">
|
||||
UPDATE puzzle_edge_render_task
|
||||
SET status = 3,
|
||||
lease_expire_time = NULL,
|
||||
error_message = #{errorMessage},
|
||||
update_time = NOW()
|
||||
WHERE id = #{taskId}
|
||||
AND worker_id = #{workerId}
|
||||
AND status = 1
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user