feat(printer): 添加素材打印状态查询功能

- 在PrinterMapper中新增countFacePhoto方法用于统计用户打印素材数量
- 创建GoodsDetailPrintSceneVO类继承GoodsDetailVO并添加inList字段
- 修改GoodsReqQuery类添加scene字段用于标识打印场景
- 在GoodsServiceImpl中注入PrinterMapper并实现打印状态判断逻辑
- 在PrinterMapper.xml中添加对应的SQL查询语句
- 移除BaseContextHandler引入,优化代码依赖关系
This commit is contained in:
2025-11-19 15:08:39 +08:00
parent 778afaaa83
commit 625ad910c9
5 changed files with 23 additions and 3 deletions

View File

@@ -35,7 +35,7 @@ public interface PrinterMapper {
PrintTaskEntity getTaskById(Integer id);
List<PrinterResp> listByScenicId(@Param("scenicId") Long scenicId);
int countFacePhoto(Long scenicId, Long faceId, Long sourceId);
List<MemberPrintResp> listRelation(@Param("memberId") Long memberId, @Param("scenicId") Long scenicId);
List<MemberPrintResp> listRelationByFaceId(Long memberId, Long scenicId, Long faceId);

View File

@@ -0,0 +1,10 @@
package com.ycwl.basic.model.mobile.goods;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
public class GoodsDetailPrintSceneVO extends GoodsDetailVO{
private Boolean inList;
}

View File

@@ -17,4 +17,5 @@ public class GoodsReqQuery {
private Long scenicId;
// 源素材商品类型 1视频 2图像
private Integer sourceType;
private String scene;
}

View File

@@ -10,7 +10,6 @@ import com.ycwl.basic.utils.JacksonUtil;
import com.ycwl.basic.biz.CouponBiz;
import com.ycwl.basic.biz.OrderBiz;
import com.ycwl.basic.biz.TaskStatusBiz;
import com.ycwl.basic.constant.BaseContextHandler;
import com.ycwl.basic.constant.StorageConstant;
import com.ycwl.basic.image.watermark.ImageWatermarkFactory;
import com.ycwl.basic.image.watermark.entity.WatermarkInfo;
@@ -56,6 +55,7 @@ import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.WxMpUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -109,6 +109,8 @@ public class GoodsServiceImpl implements GoodsService {
private VideoUpdateConfig videoUpdateConfig;
@Autowired
private MemberRelationRepository memberRelationRepository;
@Autowired
private PrinterMapper printerMapper;
public ApiResponse<List<GoodsPageVO>> goodsList(GoodsReqQuery query) {
Long scenicId = query.getScenicId();
@@ -218,7 +220,7 @@ public class GoodsServiceImpl implements GoodsService {
//图片编号
int i=1;
for (SourceRespVO sourceRespVO : list) {
GoodsDetailVO goodsDetailVO = new GoodsDetailVO();
GoodsDetailPrintSceneVO goodsDetailVO = new GoodsDetailPrintSceneVO();
goodsDetailVO.setFaceId(sourceRespVO.getFaceId());
goodsDetailVO.setGoodsId(sourceRespVO.getId());
String shootingTime = DateUtil.format(sourceRespVO.getCreateTime(), "yyyy.MM.dd HH:mm:ss");
@@ -261,6 +263,10 @@ public class GoodsServiceImpl implements GoodsService {
goodsDetailVO.setUrl(sourceRespVO.getUrl());
goodsDetailVO.setCreateTime(sourceRespVO.getCreateTime());
goodsDetailVO.setIsFree(sourceRespVO.getIsFree());
if (Strings.CI.equals("print", query.getScene())) {
// 查询该素材是否在用户打印列表中
goodsDetailVO.setInList(printerMapper.countFacePhoto(sourceRespVO.getScenicId(), face.getId(), sourceRespVO.getId()) > 0);
}
goodsDetailVOList.add(goodsDetailVO);
i++;
}

View File

@@ -68,6 +68,9 @@
<select id="queryTaskByMpId" resultType="com.ycwl.basic.model.printer.resp.PrintTaskResp">
SELECT t.*, p.name as printerName FROM print_task t left join printer p on p.id = t.printer_id WHERE mp_id = #{orderId} order by t.create_time desc limit 1
</select>
<select id="countFacePhoto" resultType="java.lang.Integer">
SELECT count(*) FROM member_print WHERE face_id = #{faceId} AND scenic_id = #{scenicId} AND source_id = #{sourceId}
</select>
<!-- 新增 -->
<insert id="add">