feat(order): 添加AI相机照片集商品类型支持

- 在OrderServiceImpl中增加对商品类型13(AI相机照片集)的处理逻辑
- 新增listAiCamImageByFaceRelation方法用于查询AI相机图片数据
- 扩展订单详情展示逻辑,支持AI相机照片集的封面和拍摄时间显示
- 更新OrderMapper.xml,新增member_source_aicam_data查询片段
- 修改SQL映射,增加对goods_type=13情况的字段匹配规则
- 完善商品名称和订单类型的设置逻辑,区分AI相机照片集与其他类型
This commit is contained in:
2025-12-06 14:41:42 +08:00
parent c42b055d5f
commit 7749faf807
4 changed files with 51 additions and 2 deletions

View File

@@ -82,6 +82,7 @@ public interface SourceMapper {
List<SourceEntity> listVideoByFaceRelation(Long faceId); List<SourceEntity> listVideoByFaceRelation(Long faceId);
List<SourceEntity> listImageByFaceRelation(Long faceId); List<SourceEntity> listImageByFaceRelation(Long faceId);
List<SourceEntity> listAiCamImageByFaceRelation(Long faceId);
List<MemberSourceEntity> listByFaceRelation(Long faceId, Integer type); List<MemberSourceEntity> listByFaceRelation(Long faceId, Integer type);
SourceEntity getEntity(Long id); SourceEntity getEntity(Long id);

View File

@@ -177,7 +177,7 @@ public class OrderServiceImpl implements OrderService {
} else if (Integer.valueOf(2).equals(orderItemList.getFirst().getGoodsType())) { } else if (Integer.valueOf(2).equals(orderItemList.getFirst().getGoodsType())) {
item.setGoodsName("照片集"); item.setGoodsName("照片集");
item.setOrderType("照片集"); item.setOrderType("照片集");
} else if (Integer.valueOf(3).equals(orderItemList.getFirst().getGoodsType())) { } else if (Integer.valueOf(13).equals(orderItemList.getFirst().getGoodsType())) {
item.setGoodsName("AI微单"); item.setGoodsName("AI微单");
item.setOrderType("AI微单"); item.setOrderType("AI微单");
} else if (Integer.valueOf(0).equals(orderItemList.getFirst().getGoodsType())) { } else if (Integer.valueOf(0).equals(orderItemList.getFirst().getGoodsType())) {
@@ -240,7 +240,7 @@ public class OrderServiceImpl implements OrderService {
} else if (Integer.valueOf(2).equals(orderItemList.getFirst().getGoodsType())) { } else if (Integer.valueOf(2).equals(orderItemList.getFirst().getGoodsType())) {
item.setGoodsName("照片集"); item.setGoodsName("照片集");
item.setOrderType("照片集"); item.setOrderType("照片集");
} else if (Integer.valueOf(3).equals(orderItemList.getFirst().getGoodsType())) { } else if (Integer.valueOf(13).equals(orderItemList.getFirst().getGoodsType())) {
item.setGoodsName("AI微单"); item.setGoodsName("AI微单");
item.setOrderType("AI微单"); item.setOrderType("AI微单");
} else if (Integer.valueOf(0).equals(orderItemList.getFirst().getGoodsType())) { } else if (Integer.valueOf(0).equals(orderItemList.getFirst().getGoodsType())) {
@@ -350,6 +350,26 @@ public class OrderServiceImpl implements OrderService {
item.setShootingTime(memberVideoEntityList.getFirst().getCreateTime()); item.setShootingTime(memberVideoEntityList.getFirst().getCreateTime());
} }
} }
} else if (Integer.valueOf(13).equals(item.getGoodsType())) { // AI相机照片 goodsId就是人脸ID
List<SourceEntity> aiCamImageList = sourceMapper.listAiCamImageByFaceRelation(item.getGoodsId());
item.setCoverList(aiCamImageList.stream().map(SourceEntity::getUrl).collect(Collectors.toList()));
if (!_f.contains(13)) {
_f.add(13);
if (!aiCamImageList.isEmpty()) {
for (SourceEntity sourceEntity : aiCamImageList) {
GoodsDetailVO goods = new GoodsDetailVO();
goods.setGoodsId(sourceEntity.getId());
goods.setGoodsName("AI相机照片");
goods.setUrl(sourceEntity.getUrl());
goods.setGoodsType(sourceEntity.getType());
goods.setScenicId(sourceEntity.getScenicId());
goods.setTemplateCoverUrl(sourceEntity.getUrl());
goods.setCreateTime(sourceEntity.getCreateTime());
goodsList.add(goods);
}
item.setShootingTime(aiCamImageList.getFirst().getCreateTime());
}
}
} else if (Integer.valueOf(3).equals(item.getGoodsType())) { // 打印照片 goodsId就是memberPrintId } else if (Integer.valueOf(3).equals(item.getGoodsType())) { // 打印照片 goodsId就是memberPrintId
List<MemberPrintResp> list = printerMapper.getUserPhotoByIds(orderItemList.stream().map(OrderItemVO::getGoodsId).collect(Collectors.toList())); List<MemberPrintResp> list = printerMapper.getUserPhotoByIds(orderItemList.stream().map(OrderItemVO::getGoodsId).collect(Collectors.toList()));
item.setCoverList(orderItemList.stream().map(OrderItemVO::getCoverUrl).collect(Collectors.toList())); item.setCoverList(orderItemList.stream().map(OrderItemVO::getCoverUrl).collect(Collectors.toList()));
@@ -552,6 +572,13 @@ public class OrderServiceImpl implements OrderService {
item.setShootingTime(memberVideoEntityList.getFirst().getCreateTime()); item.setShootingTime(memberVideoEntityList.getFirst().getCreateTime());
item.setCount(1); item.setCount(1);
} }
} else if (Integer.valueOf(13).equals(item.getGoodsType())) {
List<SourceEntity> aiCamImageList = sourceMapper.listAiCamImageByFaceRelation(item.getFaceId());
item.setCoverList(aiCamImageList.stream().map(SourceEntity::getUrl).collect(Collectors.toList()));
if (!aiCamImageList.isEmpty()) {
item.setShootingTime(aiCamImageList.getFirst().getCreateTime());
item.setCount(1);
}
} else if (Integer.valueOf(0).equals(item.getGoodsType())) { } else if (Integer.valueOf(0).equals(item.getGoodsType())) {
item.setCoverList(Collections.singletonList(item.getCoverUrl())); item.setCoverList(Collections.singletonList(item.getCoverUrl()));
VideoEntity video = videoRepository.getVideo(item.getGoodsId()); VideoEntity video = videoRepository.getVideo(item.getGoodsId());
@@ -688,6 +715,9 @@ public class OrderServiceImpl implements OrderService {
} else if (Integer.valueOf(2).equals(orderItemList.getFirst().getGoodsType())) { } else if (Integer.valueOf(2).equals(orderItemList.getFirst().getGoodsType())) {
item.setGoodsName("照片集"); item.setGoodsName("照片集");
item.setOrderType("照片集"); item.setOrderType("照片集");
} else if (Integer.valueOf(13).equals(orderItemList.getFirst().getGoodsType())) {
item.setGoodsName("AI相机照片集");
item.setOrderType("AI相机照片集");
} else if (Integer.valueOf(0).equals(orderItemList.getFirst().getGoodsType())) { } else if (Integer.valueOf(0).equals(orderItemList.getFirst().getGoodsType())) {
item.setOrderType("旅行Vlog"); item.setOrderType("旅行Vlog");
item.setGoodsName(orderItemList.getFirst().getGoodsName()); item.setGoodsName(orderItemList.getFirst().getGoodsName());

View File

@@ -95,6 +95,13 @@
LEFT JOIN face f ON ms.face_id = f.id LEFT JOIN face f ON ms.face_id = f.id
LEFT JOIN source s ON ms.source_id = s.id LEFT JOIN source s ON ms.source_id = s.id
WHERE s.id IS NOT NULL WHERE s.id IS NOT NULL
),
member_source_aicam_data AS (
SELECT ms.member_id, ms.source_id, ms.face_id, f.face_url, s.url
FROM member_source ms
LEFT JOIN face f ON ms.face_id = f.id
LEFT JOIN source s ON ms.source_id = s.id
WHERE s.id IS NOT NULL AND ms.type = 3
), ),
member_photo_data AS ( member_photo_data AS (
SELECT mp.member_id, 3 as type, mp.id, mp.crop_url as url, mp.quantity, mp.status, mp.create_time SELECT mp.member_id, 3 as type, mp.id, mp.crop_url as url, mp.quantity, mp.status, mp.create_time
@@ -127,17 +134,20 @@
WHEN '3' THEN '照片打印' WHEN '3' THEN '照片打印'
WHEN '4' THEN '一体机照片打印' WHEN '4' THEN '一体机照片打印'
WHEN '5' THEN 'pLog' WHEN '5' THEN 'pLog'
WHEN '13' THEN 'AI相机照片集'
ELSE '其他' ELSE '其他'
END AS goods_name, END AS goods_name,
CASE oi.goods_type CASE oi.goods_type
WHEN '0' THEN mvd.face_id WHEN '0' THEN mvd.face_id
WHEN '1' THEN oi.goods_id WHEN '1' THEN oi.goods_id
WHEN '2' THEN oi.goods_id WHEN '2' THEN oi.goods_id
WHEN '13' THEN oi.goods_id
END AS face_id, END AS face_id,
CASE oi.goods_type CASE oi.goods_type
WHEN '0' THEN mvd.face_url WHEN '0' THEN mvd.face_url
WHEN '1' THEN msd.face_url WHEN '1' THEN msd.face_url
WHEN '2' THEN msd.face_url WHEN '2' THEN msd.face_url
WHEN '13' THEN msac.face_url
END AS face_url, END AS face_url,
CASE oi.goods_type CASE oi.goods_type
WHEN '0' THEN mvd.video_url WHEN '0' THEN mvd.video_url
@@ -149,11 +159,13 @@
WHEN '3' THEN mpd.url WHEN '3' THEN mpd.url
WHEN '4' THEN mpa.url WHEN '4' THEN mpa.url
WHEN '5' THEN mpl.url WHEN '5' THEN mpl.url
WHEN '13' THEN msac.url
END AS imgUrl END AS imgUrl
FROM order_item oi FROM order_item oi
LEFT JOIN `order` o ON oi.order_id = o.id LEFT JOIN `order` o ON oi.order_id = o.id
LEFT JOIN member_video_data mvd ON o.face_id = mvd.face_id AND oi.goods_id = mvd.video_id LEFT JOIN member_video_data mvd ON o.face_id = mvd.face_id AND oi.goods_id = mvd.video_id
LEFT JOIN member_source_data msd ON o.face_id = msd.face_id AND oi.goods_id = msd.face_id AND msd.type = oi.goods_type LEFT JOIN member_source_data msd ON o.face_id = msd.face_id AND oi.goods_id = msd.face_id AND msd.type = oi.goods_type
LEFT JOIN member_source_aicam_data msac ON o.face_id = msac.face_id AND oi.goods_id = msac.face_id AND oi.goods_type = 13
LEFT JOIN member_photo_data mpd ON oi.goods_id = mpd.id AND mpd.type = oi.goods_type LEFT JOIN member_photo_data mpd ON oi.goods_id = mpd.id AND mpd.type = oi.goods_type
LEFT JOIN member_aio_photo_data mpa ON oi.goods_id = mpa.id AND mpa.type = oi.goods_type LEFT JOIN member_aio_photo_data mpa ON oi.goods_id = mpa.id AND mpa.type = oi.goods_type
LEFT JOIN member_plog_data mpl ON oi.goods_id = mpl.id AND mpl.type = oi.goods_type AND o.face_id = mpl.face_id LEFT JOIN member_plog_data mpl ON oi.goods_id = mpl.id AND mpl.type = oi.goods_type AND o.face_id = mpl.face_id

View File

@@ -348,6 +348,12 @@
left join source s on ms.source_id = s.id left join source s on ms.source_id = s.id
where ms.face_id = #{faceId} and ms.type = 2 where ms.face_id = #{faceId} and ms.type = 2
</select> </select>
<select id="listAiCamImageByFaceRelation" resultType="com.ycwl.basic.model.pc.source.entity.SourceEntity">
select s.*, ms.is_buy
from member_source ms
left join source s on ms.source_id = s.id
where ms.face_id = #{faceId} and ms.type = 3
</select>
<select id="getEntity" resultType="com.ycwl.basic.model.pc.source.entity.SourceEntity"> <select id="getEntity" resultType="com.ycwl.basic.model.pc.source.entity.SourceEntity">
select * select *
from source from source