SceneDynamicPanelServiceImpl.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package com.fdkankan.scene.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.io.FileUtil;
  4. import cn.hutool.core.util.StrUtil;
  5. import com.alibaba.fastjson.JSON;
  6. import com.alibaba.fastjson.JSONArray;
  7. import com.alibaba.fastjson.JSONObject;
  8. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  9. import com.fdkankan.common.constant.CommonStatus;
  10. import com.fdkankan.common.constant.ErrorCode;
  11. import com.fdkankan.common.exception.BusinessException;
  12. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  13. import com.fdkankan.model.constants.UploadFilePath;
  14. import com.fdkankan.scene.entity.SceneDynamicPanel;
  15. import com.fdkankan.scene.entity.SceneEditInfo;
  16. import com.fdkankan.scene.entity.ScenePlus;
  17. import com.fdkankan.scene.mapper.ISceneDynamicPanelMapper;
  18. import com.fdkankan.scene.service.ISceneDynamicPanelService;
  19. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  20. import com.fdkankan.scene.service.ISceneEditInfoService;
  21. import com.fdkankan.scene.service.IScenePlusService;
  22. import com.fdkankan.scene.vo.BaseJsonDataParamVO;
  23. import com.fdkankan.scene.vo.SceneDynamicPanelVO;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26. import javax.annotation.Resource;
  27. import java.nio.charset.StandardCharsets;
  28. import java.util.*;
  29. import java.util.stream.Collectors;
  30. /**
  31. * <p>
  32. * 场景动态面板 服务实现类
  33. * </p>
  34. *
  35. * @author
  36. * @since 2024-05-21
  37. */
  38. @Service
  39. public class SceneDynamicPanelServiceImpl extends ServiceImpl<ISceneDynamicPanelMapper, SceneDynamicPanel> implements ISceneDynamicPanelService {
  40. @Resource
  41. private FYunFileServiceInterface fileServiceInterface;
  42. @Autowired
  43. private ISceneEditInfoService sceneEditInfoService;
  44. @Autowired
  45. private IScenePlusService scenePlusService;
  46. @Override
  47. public List<SceneDynamicPanelVO> list(String num) {
  48. List<SceneDynamicPanel> list = this.list(new LambdaQueryWrapper<SceneDynamicPanel>().eq(SceneDynamicPanel::getNum, num));
  49. return BeanUtil.copyToList(list, SceneDynamicPanelVO.class);
  50. }
  51. @Override
  52. public void update(BaseJsonDataParamVO param) {
  53. JSONObject data = param.getData();
  54. String sid = data.getString("sid");
  55. if(StrUtil.isEmpty(sid)){
  56. throw new BusinessException(ErrorCode.FAILURE_CODE_3001, "sid can not be null");
  57. }
  58. ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
  59. SceneDynamicPanel one = this.getOne(new LambdaQueryWrapper<SceneDynamicPanel>().eq(SceneDynamicPanel::getNum, param.getNum()).eq(SceneDynamicPanel::getSid, sid));
  60. if(Objects.isNull(one)){
  61. throw new BusinessException(ErrorCode.FAILURE_CODE_3001, "sid error");
  62. }
  63. //上传文件
  64. String editPath = String.format(UploadFilePath.USER_EDIT_PATH, param.getNum()) + "dynamicPanel.json";
  65. String viewPath = String.format(UploadFilePath.USER_VIEW_PATH, param.getNum()) + "dynamicPanel.json";
  66. String fileContent = fileServiceInterface.getFileContent(editPath);
  67. JSONArray jsonArray = JSON.parseArray(fileContent);
  68. Map<String, JSONObject> map = new HashMap<>();
  69. jsonArray.stream().forEach(v->{
  70. JSONObject obj = (JSONObject) v;
  71. map.put(obj.getString("sid"), obj);
  72. });
  73. JSONObject oldObj = map.get(sid);
  74. if(Objects.nonNull(oldObj)){
  75. data.put("text", oldObj.get("text"));
  76. }
  77. map.put(sid, data);
  78. Collection<JSONObject> values = map.values();
  79. fileServiceInterface.uploadFile(JSON.toJSONString(values).getBytes(StandardCharsets.UTF_8), editPath);
  80. fileServiceInterface.uploadFile(JSON.toJSONString(values).getBytes(StandardCharsets.UTF_8), viewPath);
  81. //更新版本号
  82. SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
  83. sceneEditInfoService.upgradeVersionById(sceneEditInfo.getId());
  84. }
  85. @Override
  86. public Byte checkDynamicPanel(String num) {
  87. Long count = this.count(new LambdaQueryWrapper<SceneDynamicPanel>().eq(SceneDynamicPanel::getNum, num));
  88. return count > 0 ? CommonStatus.YES.code() : CommonStatus.NO.code();
  89. }
  90. }