ScenePlusVoidServiceImpl.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package com.fdkankan.ucenter.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.fdkankan.common.constant.ErrorCode;
  4. import com.fdkankan.common.exception.BusinessException;
  5. import com.fdkankan.common.response.PageInfo;
  6. import com.fdkankan.fyun.oss.UploadToOssUtil;
  7. import com.fdkankan.ucenter.common.OssPath;
  8. import com.fdkankan.ucenter.entity.ScenePlus;
  9. import com.fdkankan.ucenter.entity.ScenePlusVoid;
  10. import com.fdkankan.ucenter.entity.User;
  11. import com.fdkankan.ucenter.mapper.IScenePlusVoidMapper;
  12. import com.fdkankan.ucenter.service.IFusionService;
  13. import com.fdkankan.ucenter.service.IScenePlusService;
  14. import com.fdkankan.ucenter.service.IScenePlusVoidService;
  15. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  16. import com.fdkankan.ucenter.service.IUserService;
  17. import com.fdkankan.ucenter.vo.request.SceneParam;
  18. import com.fdkankan.ucenter.vo.response.ScenePlusVo;
  19. import org.apache.commons.lang3.StringUtils;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.stereotype.Service;
  22. import java.util.ArrayList;
  23. import java.util.HashMap;
  24. import java.util.List;
  25. import java.util.stream.Collectors;
  26. /**
  27. * <p>
  28. * 服务实现类
  29. * </p>
  30. *
  31. * @author
  32. * @since 2022-08-08
  33. */
  34. @Service
  35. public class ScenePlusVoidServiceImpl extends ServiceImpl<IScenePlusVoidMapper, ScenePlusVoid> implements IScenePlusVoidService {
  36. @Autowired
  37. IFusionService fusionService;
  38. @Autowired
  39. IUserService userService;
  40. @Autowired
  41. IScenePlusService scenePlusService;
  42. @Autowired
  43. UploadToOssUtil uploadToOssUtil;
  44. @Override
  45. public void setStatus(String num, Integer type,String token) {
  46. if(StringUtils.isEmpty(num) || type == null){
  47. throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
  48. }
  49. ScenePlus scenePlus = scenePlusService.getByNum(num);
  50. if(scenePlus == null){
  51. throw new BusinessException(-1,"场景不存在");
  52. }
  53. User user = userService.getByToken(token);
  54. ScenePlusVoid plusVoid = this.getByPlusId(scenePlus.getId());
  55. if(plusVoid == null){
  56. plusVoid = new ScenePlusVoid();
  57. plusVoid.setUserId(user.getId());
  58. plusVoid.setStatus(type);
  59. plusVoid.setPlusId(scenePlus.getId());
  60. this.save(plusVoid);
  61. }else {
  62. plusVoid.setStatus(type);
  63. plusVoid.setUpdateTime(null);
  64. this.updateById(plusVoid);
  65. }
  66. }
  67. private ScenePlusVoid getByPlusId(Long plusId) {
  68. LambdaQueryWrapper<ScenePlusVoid> wrapper = new LambdaQueryWrapper<>();
  69. wrapper.eq(ScenePlusVoid::getPlusId,plusId);
  70. return this.getOne(wrapper);
  71. }
  72. @Override
  73. public List<ScenePlusVo> scenePageList(SceneParam param, String token) {
  74. if(param.getHaveVoid()!=null){
  75. User user = userService.getByToken(token);
  76. LambdaQueryWrapper<ScenePlusVoid> wrapper = new LambdaQueryWrapper<>();
  77. wrapper.eq(ScenePlusVoid::getStatus,1)
  78. .eq(ScenePlusVoid::getUserId,user.getId());
  79. List<ScenePlusVoid> list = this.list(wrapper);
  80. if(list.size() <=0 && param.getHaveVoid() == 0){
  81. return new ArrayList<>();
  82. }
  83. if(list.size() >0){
  84. List<Long> plusIds = list.parallelStream().map(ScenePlusVoid::getPlusId).collect(Collectors.toList());
  85. List<ScenePlus> plusList = scenePlusService.getByIds(plusIds);
  86. if(plusList.size() >0){
  87. List<String> numList = plusList.parallelStream().map(ScenePlus::getNum).collect(Collectors.toList());
  88. param.setNumList(numList);
  89. }
  90. }
  91. }
  92. param.setStatus(2); //计算成功的数据
  93. param.setPageSize(Integer.MAX_VALUE);
  94. PageInfo pageInfo = fusionService.scenePageList(param, token);
  95. List<ScenePlusVo> list = (List<ScenePlusVo>) pageInfo.getList();
  96. List<ScenePlusVo> newList = new ArrayList<>();
  97. for (ScenePlusVo scenePlusVo : list) { //检测oss 是否存在houseType
  98. String key = String.format(OssPath.houseTypePath,scenePlusVo.getNum());
  99. if(uploadToOssUtil.existKey(key)){
  100. newList.add(scenePlusVo);
  101. }
  102. }
  103. return newList;
  104. }
  105. @Override
  106. public HashMap<Long, ScenePlusVoid> getByPlusIds(List<Long> plusIds) {
  107. LambdaQueryWrapper<ScenePlusVoid> wrapper = new LambdaQueryWrapper<>();
  108. wrapper.in(ScenePlusVoid::getPlusId,plusIds);
  109. List<ScenePlusVoid> list = this.list(wrapper);
  110. HashMap<Long,ScenePlusVoid> map = new HashMap<>();
  111. list.forEach(entity -> map.put(entity.getPlusId(),entity));
  112. return map;
  113. }
  114. }