You've already forked FrameTour-BE
- 集成 PuzzleEdgeWorkerIpInterceptor 拦截器进行 IP 校验 - 添加 PuzzleEdgeWorkerSecurityProperties 配置类 - 创建 PuzzleEdgeRenderTaskController 提供边缘渲染接口 - 添加多种 DTO 类用于边缘渲染任务数据传输 - 创建 PuzzleEdgeRenderTaskEntity 实体和 Mapper 接口 - 实现 PuzzleEdgeRenderTaskService 核心服务逻辑 - 重构 PuzzleGenerateServiceImpl 使用边缘渲染服务 - 移除原有的线程池执行器和同步渲染逻辑 - 添加定时任务处理渲染超时和重试机制 - 实现自动打印队列添加功能
109 lines
4.3 KiB
XML
109 lines
4.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.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>
|