You've already forked FrameTour-BE
refactor(puzzle): 重构拼图功能实现会员拼图关联管理
- 移除原有的图片裁切功能和userArea字段 - 删除originalImageUrl字段,统一使用resultImageUrl - 添加MemberPuzzleEntity实体类管理会员拼图关联关系 - 创建MemberPuzzleMapper接口及XML映射文件 - 实现PuzzleRelationProcessor处理器负责关联记录创建 - 在拼图生成完成后自动创建会员拼图关联记录 - 添加景区配置中的免费拼图数量设置 - 实现免费拼图逻辑控制 - 更新拼图模板和生成记录的数据结构 - 修改AppPuzzleController中图片URL的获取方式 - 优化PuzzleEdgeRenderTaskService中的图片处理流程
This commit is contained in:
70
src/main/resources/mapper/MemberPuzzleMapper.xml
Normal file
70
src/main/resources/mapper/MemberPuzzleMapper.xml
Normal file
@@ -0,0 +1,70 @@
|
||||
<?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.MemberPuzzleMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="com.ycwl.basic.model.pc.puzzle.entity.MemberPuzzleEntity">
|
||||
<id column="id" property="id"/>
|
||||
<result column="member_id" property="memberId"/>
|
||||
<result column="scenic_id" property="scenicId"/>
|
||||
<result column="face_id" property="faceId"/>
|
||||
<result column="record_id" property="recordId"/>
|
||||
<result column="is_buy" property="isBuy"/>
|
||||
<result column="order_id" property="orderId"/>
|
||||
<result column="is_free" property="isFree"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
id, member_id, scenic_id, face_id, record_id, is_buy, order_id, is_free
|
||||
</sql>
|
||||
|
||||
<insert id="addRelation" useGeneratedKeys="true" keyProperty="id">
|
||||
INSERT IGNORE INTO member_puzzle(scenic_id, face_id, member_id, record_id, is_buy, order_id, is_free)
|
||||
VALUES (#{scenicId}, #{faceId}, #{memberId}, #{recordId}, #{isBuy}, #{orderId}, #{isFree})
|
||||
</insert>
|
||||
|
||||
<insert id="addRelations">
|
||||
INSERT IGNORE INTO member_puzzle(scenic_id, face_id, member_id, record_id, is_buy, order_id, is_free)
|
||||
VALUES
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(#{item.scenicId}, #{item.faceId}, #{item.memberId}, #{item.recordId}, #{item.isBuy}, #{item.orderId}, #{item.isFree})
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<select id="listByFaceId" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM member_puzzle
|
||||
WHERE face_id = #{faceId}
|
||||
ORDER BY id DESC
|
||||
</select>
|
||||
|
||||
<select id="countFreeByFaceId" resultType="int">
|
||||
SELECT COUNT(*) FROM member_puzzle
|
||||
WHERE face_id = #{faceId} AND is_free = 1
|
||||
</select>
|
||||
|
||||
<update id="updateRelation">
|
||||
UPDATE member_puzzle
|
||||
<set>
|
||||
<if test="isBuy != null">is_buy = #{isBuy},</if>
|
||||
<if test="orderId != null">order_id = #{orderId},</if>
|
||||
<if test="isFree != null">is_free = #{isFree},</if>
|
||||
</set>
|
||||
WHERE id = #{id}
|
||||
</update>
|
||||
|
||||
<update id="freeRelations">
|
||||
UPDATE member_puzzle SET is_free = 1
|
||||
WHERE id IN
|
||||
<foreach collection="ids" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<select id="getByFaceAndRecord" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM member_puzzle
|
||||
WHERE face_id = #{faceId} AND record_id = #{recordId}
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -14,7 +14,6 @@
|
||||
<result column="generation_params" property="generationParams"/>
|
||||
<result column="content_hash" property="contentHash"/>
|
||||
<result column="result_image_url" property="resultImageUrl"/>
|
||||
<result column="original_image_url" property="originalImageUrl"/>
|
||||
<result column="result_file_size" property="resultFileSize"/>
|
||||
<result column="result_width" property="resultWidth"/>
|
||||
<result column="result_height" property="resultHeight"/>
|
||||
@@ -33,7 +32,7 @@
|
||||
<sql id="Base_Column_List">
|
||||
id, template_id, template_code, user_id, face_id, business_type,
|
||||
generation_params, content_hash,
|
||||
result_image_url, original_image_url, result_file_size, result_width, result_height,
|
||||
result_image_url, result_file_size, result_width, result_height,
|
||||
status, error_message, generation_duration, retry_count,
|
||||
scenic_id, client_ip, user_agent, create_time, update_time
|
||||
</sql>
|
||||
@@ -78,13 +77,13 @@
|
||||
INSERT INTO puzzle_generation_record (
|
||||
template_id, template_code, user_id, face_id, business_type,
|
||||
generation_params, content_hash,
|
||||
result_image_url, original_image_url, result_file_size, result_width, result_height,
|
||||
result_image_url, result_file_size, result_width, result_height,
|
||||
status, error_message, generation_duration, retry_count,
|
||||
scenic_id, client_ip, user_agent, create_time, update_time
|
||||
) VALUES (
|
||||
#{templateId}, #{templateCode}, #{userId}, #{faceId}, #{businessType},
|
||||
#{generationParams}, #{contentHash},
|
||||
#{resultImageUrl}, #{originalImageUrl}, #{resultFileSize}, #{resultWidth}, #{resultHeight},
|
||||
#{resultImageUrl}, #{resultFileSize}, #{resultWidth}, #{resultHeight},
|
||||
#{status}, #{errorMessage}, #{generationDuration}, #{retryCount},
|
||||
#{scenicId}, #{clientIp}, #{userAgent}, NOW(), NOW()
|
||||
)
|
||||
@@ -95,7 +94,6 @@
|
||||
UPDATE puzzle_generation_record
|
||||
<set>
|
||||
<if test="resultImageUrl != null">result_image_url = #{resultImageUrl},</if>
|
||||
<if test="originalImageUrl != null">original_image_url = #{originalImageUrl},</if>
|
||||
<if test="resultFileSize != null">result_file_size = #{resultFileSize},</if>
|
||||
<if test="resultWidth != null">result_width = #{resultWidth},</if>
|
||||
<if test="resultHeight != null">result_height = #{resultHeight},</if>
|
||||
@@ -113,7 +111,6 @@
|
||||
UPDATE puzzle_generation_record
|
||||
SET status = 1,
|
||||
result_image_url = #{resultImageUrl},
|
||||
original_image_url = #{originalImageUrl},
|
||||
result_file_size = #{resultFileSize},
|
||||
result_width = #{resultWidth},
|
||||
result_height = #{resultHeight},
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
<result column="scenic_id" property="scenicId"/>
|
||||
<result column="auto_add_print" property="autoAddPrint"/>
|
||||
<result column="can_print" property="canPrint"/>
|
||||
<result column="user_area" property="userArea"/>
|
||||
<result column="create_time" property="createTime"/>
|
||||
<result column="update_time" property="updateTime"/>
|
||||
<result column="deleted" property="deleted"/>
|
||||
@@ -31,7 +30,7 @@
|
||||
<sql id="Base_Column_List">
|
||||
id, name, code, canvas_width, canvas_height, background_type, background_color,
|
||||
background_image, cover_image, description, category, status, scenic_id,
|
||||
auto_add_print, can_print, user_area, create_time, update_time, deleted, deleted_at
|
||||
auto_add_print, can_print, create_time, update_time, deleted, deleted_at
|
||||
</sql>
|
||||
|
||||
<!-- 根据ID查询 -->
|
||||
@@ -73,11 +72,11 @@
|
||||
INSERT INTO puzzle_template (
|
||||
name, code, canvas_width, canvas_height, background_type, background_color,
|
||||
background_image, cover_image, description, category, status, scenic_id,
|
||||
auto_add_print, can_print, user_area, create_time, update_time, deleted
|
||||
auto_add_print, can_print, create_time, update_time, deleted
|
||||
) VALUES (
|
||||
#{name}, #{code}, #{canvasWidth}, #{canvasHeight}, #{backgroundType}, #{backgroundColor},
|
||||
#{backgroundImage}, #{coverImage}, #{description}, #{category}, #{status}, #{scenicId},
|
||||
#{autoAddPrint}, #{canPrint}, #{userArea}, NOW(), NOW(), 0
|
||||
#{autoAddPrint}, #{canPrint}, NOW(), NOW(), 0
|
||||
)
|
||||
</insert>
|
||||
|
||||
@@ -99,7 +98,6 @@
|
||||
<if test="scenicId != null">scenic_id = #{scenicId},</if>
|
||||
<if test="autoAddPrint != null">auto_add_print = #{autoAddPrint},</if>
|
||||
<if test="canPrint != null">can_print = #{canPrint},</if>
|
||||
<if test="userArea != null">user_area = #{userArea},</if>
|
||||
update_time = NOW()
|
||||
</set>
|
||||
WHERE id = #{id} AND deleted = 0
|
||||
|
||||
Reference in New Issue
Block a user