This commit is contained in:
2025-02-14 18:18:21 +08:00
parent b4b6d93e2f
commit cfb9392068
26 changed files with 404 additions and 88 deletions

View File

@ -0,0 +1,201 @@
package com.ycwl.basic.controller.extern;
import com.ycwl.basic.mapper.FaceMapper;
import com.ycwl.basic.mapper.MemberMapper;
import com.ycwl.basic.mapper.VideoMapper;
import com.ycwl.basic.model.mobile.face.FaceRecognizeResp;
import com.ycwl.basic.model.mobile.goods.GoodsDetailVO;
import com.ycwl.basic.model.mobile.goods.GoodsReqQuery;
import com.ycwl.basic.model.mobile.goods.VideoTaskStatusVO;
import com.ycwl.basic.model.mobile.scenic.content.ContentPageVO;
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
import com.ycwl.basic.model.pc.member.entity.MemberEntity;
import com.ycwl.basic.model.pc.member.resp.MemberRespVO;
import com.ycwl.basic.model.pc.video.entity.VideoEntity;
import com.ycwl.basic.model.pc.video.resp.VideoRespVO;
import com.ycwl.basic.repository.VideoRepository;
import com.ycwl.basic.repository.VideoTaskRepository;
import com.ycwl.basic.service.mobile.AppScenicService;
import com.ycwl.basic.service.mobile.GoodsService;
import com.ycwl.basic.service.pc.FaceService;
import com.ycwl.basic.service.task.impl.TaskTaskServiceImpl;
import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.SnowFlakeUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@RestController("/ly")
public class LyCompatibleController {
@Autowired
private FaceService faceService;
@Autowired
private MemberMapper memberMapper;
@Autowired
private GoodsService goodsService;
@Autowired
private FaceMapper faceMapper;
@Autowired
private AppScenicService appScenicService;
@Autowired
private VideoRepository videoRepository;
@Autowired
private VideoMapper videoMapper;
@Autowired
private TaskTaskServiceImpl taskTaskServiceImpl;
@PostMapping("sendPhoto")
public R sendPhoto(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request) {
Map<String, String> headersMap = new HashMap<String, String>();
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String key = (String) headerNames.nextElement();
String value = request.getHeader(key);
headersMap.put(key, value);
}
if (!headersMap.containsKey("client")) {
return R.error("请在Header中传入clientclient:用户OpenId");
}
if (!headersMap.containsKey("secret")) {
return R.error("请传入秘钥!");
}
String scid = request.getParameter("scid");
Long scenicId = 0L;
if (StringUtils.isBlank(scid)) {
return R.error("景区ID为空");
}
if (StringUtils.equals("288",scid)) {
// 正式景区
}
String openId = headersMap.get("client");
MemberRespVO member = memberMapper.getByOpenId(openId);
if (member == null) {
member = new MemberRespVO();
MemberEntity memberEntity = new MemberEntity();
memberEntity.setOpenId(openId);
memberEntity.setScenicId(scenicId);
memberEntity.setCreateDate(new Date());
memberEntity.setId(SnowFlakeUtil.getLongId());
memberEntity.setNickname("用户");
memberMapper.add(memberEntity);
member.setId(memberEntity.getId());
}
FaceRecognizeResp resp;
try {
resp = faceService.faceUpload(file, scenicId, member.getId());
} catch (Exception e) {
return R.error("上传失败!报错:"+e.getMessage());
}
if (resp.getFaceId() == null) {
return R.error("上传失败!");
}
return R.ok().put("data", resp);
}
@PostMapping("getIsVideo")
public R getIsVideo(HttpServletRequest request) {
Map<String, String> headersMap = new HashMap<String, String>();
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String key = (String) headerNames.nextElement();
String value = request.getHeader(key);
headersMap.put(key, value);
}
if (!headersMap.containsKey("client")) {
return R.error("请在Header中传入clientclient:用户OpenId");
}
if (!headersMap.containsKey("secret")) {
return R.error("请传入秘钥!");
}
String openId = headersMap.get("client");
MemberRespVO member = memberMapper.getByOpenId(openId);
if (member == null) {
return R.error("用户不存在!");
}
VideoTaskStatusVO taskStatusVO = goodsService.getTaskStatusByScenicId(member.getId(), member.getScenicId());
if (taskStatusVO == null) {
return R.ok().put("hasVideo", 0);
}
switch (taskStatusVO.getStatus()) {
case 1:
return R.ok().put("hasVideo", 1);
case 2:
return R.ok().put("hasVideo", 3);
case 0:
case 3:
default:
return R.ok().put("hasVideo", 0);
}
}
@PostMapping("getNewVideo")
public R getNewVideo(HttpServletRequest request) {
Map<String, String> headersMap = new HashMap<String, String>();
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String key = (String) headerNames.nextElement();
String value = request.getHeader(key);
headersMap.put(key, value);
}
if (!headersMap.containsKey("client")) {
return R.error("请在Header中传入clientclient:用户OpenId");
}
if (!headersMap.containsKey("secret")) {
return R.error("请传入秘钥!");
}
String openId = headersMap.get("client");
MemberRespVO member = memberMapper.getByOpenId(openId);
if (member == null) {
return R.error("用户不存在!");
}
FaceRespVO faceVO = faceMapper.getLatestByMemberId(member.getId(), member.getScenicId());
if (faceVO == null) {
return R.error("用户没有上传过照片!");
}
VideoTaskStatusVO taskStatusVO = goodsService.getTaskStatusByScenicId(member.getId(), member.getScenicId());
List<ContentPageVO> listApiResponse = appScenicService.faceContentList(member.getId(), faceVO.getId());
Map<Integer, List<ContentPageVO>> collect = listApiResponse.stream()
.filter(contentPageVO -> contentPageVO.getLockType() < 0)
.collect(Collectors.groupingBy(ContentPageVO::getGoodsType));
List<Map<String, Object>> videoList = collect.get(0).stream().map(contentPageVO -> {
Map<String, Object> map = new HashMap<>();
VideoEntity videoRespVO = videoRepository.getVideo(contentPageVO.getContentId());
map.put("template_cover_image", contentPageVO.getTemplateCoverUrl());
Date taskShotDate = taskTaskServiceImpl.getTaskShotDate(videoRespVO.getTaskId());
map.put("shoottime", taskShotDate);
map.put("openid", openId);
map.put("scenicname", contentPageVO.getScenicName());
map.put("title", contentPageVO.getName());
map.put("ossurldm", videoRespVO.getVideoUrl());
return map;
}).collect(Collectors.toList());
GoodsReqQuery goodsReqQuery = new GoodsReqQuery();
goodsReqQuery.setSourceType(1);
List<GoodsDetailVO> sourceGoodsList = goodsService.sourceGoodsList(member.getId(), goodsReqQuery);
List<Map<String, Object>> userVideoList = sourceGoodsList.stream().map(goodsDetailVO -> {
Map<String, Object> map = new HashMap<>();
map.put("openid", openId);
map.put("template_cover_image", goodsDetailVO.getUrl());
map.put("scenicname", goodsDetailVO.getScenicName());
map.put("shoottime", goodsDetailVO.getCreateTime());
map.put("ossurldm", goodsDetailVO.getVideoUrl());
return map;
}).collect(Collectors.toList());
return R.ok()
.put("isgen", taskStatusVO.getStatus() == 1 ? 0 : 1)
.put("newvideo", videoList)
.put("newuservideo", userVideoList);
}
}

View File

@ -0,0 +1,55 @@
package com.ycwl.basic.controller.extern;
import java.util.HashMap;
import java.util.Map;
/**
* 返回数据
*
* @author chenshun
* @email sunlightcs@gmail.com
* @date 2016年10月27日 下午9:59:27
*/
public class R extends HashMap<String, Object> {
private static final long serialVersionUID = 1L;
public R() {
put("code", 0);
}
public static R error() {
return error(500, "未知异常,请联系管理员");
}
public static R error(String msg) {
return error(500, msg);
}
public static R error(int code, String msg) {
R r = new R();
r.put("code", code);
r.put("msg", msg);
return r;
}
public static R ok(String msg) {
R r = new R();
r.put("msg", msg);
return r;
}
public static R ok(Map<String, Object> map) {
R r = new R();
r.putAll(map);
return r;
}
public static R ok() {
return new R();
}
public R put(String key, Object value) {
super.put(key, value);
return this;
}
}

View File

@ -1,6 +1,7 @@
package com.ycwl.basic.controller.mobile;
import com.ycwl.basic.model.jwt.JwtInfo;
import com.ycwl.basic.model.mobile.face.FaceRecognizeResp;
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
import com.ycwl.basic.service.pc.FaceService;
import com.ycwl.basic.utils.ApiResponse;
@ -38,7 +39,11 @@ AppFaceController {
@ApiOperation("人脸照片上传")
@PostMapping("/faceUPload")
public ApiResponse faceUpload(@RequestParam("file")MultipartFile file, @RequestParam("scenicId") Long scenicId) {
return faceService.faceUpload(file,scenicId);
//获取用户id
JwtInfo worker = JwtTokenUtil.getWorker();
Long userId = worker.getUserId();
FaceRecognizeResp resp = faceService.faceUpload(file, scenicId, userId);
return ApiResponse.success(resp);
}
@GetMapping("/scenic/{scenicId}/list")

View File

@ -44,7 +44,8 @@ public class AppGoodsController {
@ApiOperation("源素材(原片/照片)商品列表")
@PostMapping("/sourceGoodsList")
public ApiResponse<List<GoodsDetailVO>> sourceGoodsList(@RequestBody GoodsReqQuery query) {
return goodsService.sourceGoodsList(Long.valueOf(BaseContextHandler.getUserId()), query);
List<GoodsDetailVO> goodsDetailVOS = goodsService.sourceGoodsList(Long.valueOf(BaseContextHandler.getUserId()), query);
return ApiResponse.success(goodsDetailVOS);
}
@ApiOperation("成片vlog商品详情")

View File

@ -73,7 +73,8 @@ public class AppScenicController {
@GetMapping("/face/{faceId}/contentList")
public ApiResponse<List<ContentPageVO>> contentList(@PathVariable Long faceId) {
JwtInfo worker = JwtTokenUtil.getWorker();
return appScenicService.faceContentList(worker.getUserId(), faceId);
List<ContentPageVO> contentPageVOS = appScenicService.faceContentList(worker.getUserId(), faceId);
return ApiResponse.success(contentPageVOS);
}

View File

@ -41,20 +41,5 @@ public class VideoController {
public ApiResponse<VideoRespVO> getById(@PathVariable Long id) {
return videoService.getById(id);
}
@ApiOperation("添加成片")
@PostMapping("/add")
public ApiResponse<Boolean> add(@RequestBody VideoEntity video) {
return videoService.add(video);
}
@ApiOperation("删除成片")
@DeleteMapping("/delete/{id}")
public ApiResponse<Boolean> deleteById(@PathVariable Long id) {
return videoService.deleteById(id);
}
@ApiOperation("修改成片")
@PostMapping("/update")
public ApiResponse<Boolean> update(@RequestBody VideoEntity video) {
return videoService.update(video);
}
}