This commit is contained in:
2024-12-20 17:34:25 +08:00
parent bf5fdeb95c
commit 43ae10916c
29 changed files with 325 additions and 58 deletions

View File

@@ -21,8 +21,6 @@ import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
import com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO;
import com.ycwl.basic.model.pc.source.req.SourceReqQuery;
import com.ycwl.basic.model.pc.source.resp.SourceRespVO;
import com.ycwl.basic.model.pc.template.req.TemplateReqQuery;
import com.ycwl.basic.model.pc.template.resp.TemplateRespVO;
import com.ycwl.basic.model.pc.video.req.VideoReqQuery;
import com.ycwl.basic.model.pc.video.resp.VideoRespVO;
import com.ycwl.basic.service.mobile.AppScenicService;
@@ -36,7 +34,6 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
@@ -174,6 +171,50 @@ public class AppScenicServiceImpl implements AppScenicService {
return ApiResponse.success(contentList);
}
@Override
public ApiResponse<List<ContentPageVO>> faceContentList(Long userId, Long faceId) {
FaceRespVO faceRespVO = faceMapper.getById(faceId);
if (faceRespVO == null) {
return ApiResponse.success(new ArrayList<>());
}
if (StringUtils.isBlank(faceRespVO.getMatchSampleIds())) {
return ApiResponse.success(new ArrayList<>());
}
List<ContentPageVO> contentList = templateMapper.listFor(faceRespVO.getScenicId(), faceId);
contentList.forEach(contentPageVO -> {
if (contentPageVO.getContentType() == 1) {
VideoReqQuery videoReqQuery = new VideoReqQuery();
videoReqQuery.setScenicId(contentPageVO.getScenicId());
videoReqQuery.setTemplateId(contentPageVO.getTemplateId());
videoReqQuery.setMemberId(userId);
List<VideoRespVO> videoList = videoMapper.list(videoReqQuery);
if (!videoList.isEmpty()) {
contentPageVO.setContentId(videoList.get(0).getId());
}
}
});
SourceReqQuery sourceReqQuery = new SourceReqQuery();
sourceReqQuery.setScenicId(faceRespVO.getScenicId());
sourceReqQuery.setMemberId(userId);
//查询源素材
List<SourceRespVO> sourceList = sourceMapper.listGroupByType(sourceReqQuery);
sourceList.forEach(sourceRespVO -> {
ContentPageVO contentPageVO = new ContentPageVO();
Integer type = sourceRespVO.getType();
if(type==1){
contentPageVO.setName("原片集");
}else {
contentPageVO.setName("照片集");
}
contentPageVO.setContentType(2);
contentPageVO.setSourceType(type);
contentPageVO.setIsBuy(sourceRespVO.getIsBuy());
contentList.add(contentPageVO);
});
return ApiResponse.success(contentList);
}
@Override
public ApiResponse<ScenicLoginRespVO> login(ScenicLoginReq scenicLoginReq) throws Exception {
@@ -207,4 +248,14 @@ public class AppScenicServiceImpl implements AppScenicService {
FaceRespVO lastFaceByUserId = faceMapper.findLastFaceByUserId(BaseContextHandler.getUserId());
return contentList(lastFaceByUserId.getId());
}
@Override
public ApiResponse<ScenicRespVO> getMyScenic() {
String userId = BaseContextHandler.getUserId();
ScenicAccountEntity account = scenicAccountMapper.findAccountById(userId);
if (account == null) {
return ApiResponse.fail("用户未绑定景区");
}
return getDetails(account.getScenicId());
}
}

View File

@@ -4,9 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ycwl.basic.constant.BaseContextHandler;
import com.ycwl.basic.mapper.*;
import com.ycwl.basic.model.jwt.JwtInfo;
import com.ycwl.basic.model.mobile.goods.*;
import com.ycwl.basic.model.mobile.scenic.ScenicDeviceCountVO;
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
import com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO;
import com.ycwl.basic.model.pc.source.req.SourceReqQuery;
@@ -18,7 +16,6 @@ import com.ycwl.basic.model.pc.video.resp.VideoRespVO;
import com.ycwl.basic.service.mobile.GoodsService;
import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.DateUtils;
import com.ycwl.basic.utils.JwtTokenUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -27,8 +24,8 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
/**
* @Author:longbinbin
@@ -198,9 +195,11 @@ public class GoodsServiceImpl implements GoodsService {
goodsDetailVO.setTemplateCoverUrl(videoRespVO.getTemplateCoverUrl());
goodsDetailVO.setCreateTime(videoRespVO.getCreateTime());
BigDecimal templatePrice = videoRespVO.getTemplatePrice();
BigDecimal slashPrice = videoRespVO.getSlashPrice();
// 使用DecimalFormat格式化输出
DecimalFormat df = new DecimalFormat("0.00");
goodsDetailVO.setPrice(templatePrice==null?"":df.format(templatePrice.setScale(2, RoundingMode.HALF_UP)));
goodsDetailVO.setSlashPrice(slashPrice==null?null:df.format(slashPrice.setScale(2, RoundingMode.HALF_UP)));
goodsDetailVO.setIsBuy(videoRespVO.getIsBuy());
TaskRespVO taskRespVO = taskMapper.getById(videoRespVO.getTaskId());
JSONObject paramJson = JSON.parseObject(taskRespVO.getTaskParams());
@@ -217,32 +216,39 @@ public class GoodsServiceImpl implements GoodsService {
/**
* 查询用户当前景区的视频合成任务状态
*
* @param faceId 景区id
* @return 0没有任务 1 合成中 2 合成成功
*/
@Override
public ApiResponse<Integer> getAllTaskStatus(Long userId, Long faceId) {
public ApiResponse<VideoTaskStatusVO> getTaskStatusByFaceId(Long userId, Long faceId) {
TaskReqQuery taskReqQuery = new TaskReqQuery();
taskReqQuery.setMemberId(userId);
taskReqQuery.setFaceId(faceId);
int allCount=taskMapper.countTask(taskReqQuery);
if(allCount==0){//没有任务
return ApiResponse.success(0);
VideoTaskStatusVO response = new VideoTaskStatusVO();
List<TaskRespVO> list=taskMapper.list(taskReqQuery);
if(list.isEmpty()){//没有任务
response.setStatus(0);
return ApiResponse.success(response);
}
taskReqQuery.setStatus(2);
int count=taskMapper.countTask(taskReqQuery);
if(count>0){//有任务在进行中
return ApiResponse.success(1);
}else {//没有任务在进行中
return ApiResponse.success(2);
Optional<TaskRespVO> first = list.stream().filter(item -> item.getStatus() == 0 || item.getStatus() == 2).findFirst();
if (first.isPresent()) {
response.setStatus(1);
response.setScenicId(first.get().getScenicId());
response.setFaceId(first.get().getFaceId());
return ApiResponse.success(response);
} else {
response.setStatus(2);
response.setScenicId(list.get(0).getScenicId());
response.setFaceId(list.get(0).getFaceId());
return ApiResponse.success(response);
}
}
@Override
public ApiResponse<Integer> getAllTaskStatus(Long userId) {
public ApiResponse<VideoTaskStatusVO> getAllTaskStatus(Long userId) {
FaceRespVO lastFaceByUserId = faceMapper.findLastFaceByUserId(String.valueOf(userId));
return getAllTaskStatus(userId,lastFaceByUserId.getId());
return getTaskStatusByFaceId(userId, lastFaceByUserId.getId());
}
@Override
@@ -263,4 +269,31 @@ public class GoodsServiceImpl implements GoodsService {
}
}
@Override
public ApiResponse<VideoTaskStatusVO> getTaskStatusByScenicId(Long userId, Long scenicId) {
TaskReqQuery taskReqQuery = new TaskReqQuery();
taskReqQuery.setMemberId(userId);
taskReqQuery.setScenicId(scenicId);
int allCount=taskMapper.countTask(taskReqQuery);
VideoTaskStatusVO response = new VideoTaskStatusVO();
if(allCount==0){//没有任务
response.setStatus(0);
return ApiResponse.success(response);
}
List<TaskRespVO> list=taskMapper.list(taskReqQuery);
// 未完成是等于0或2
Optional<TaskRespVO> first = list.stream().filter(item -> item.getStatus() == 0 || item.getStatus() == 2).findFirst();
if (first.isPresent()) {
response.setStatus(1);
response.setScenicId(first.get().getScenicId());
response.setFaceId(first.get().getFaceId());
return ApiResponse.success(response);
} else {
response.setStatus(2);
response.setScenicId(list.get(0).getScenicId());
response.setFaceId(list.get(0).getFaceId());
return ApiResponse.success(response);
}
}
}