123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- package com.fdkankan.scene.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.io.FileUtil;
- import cn.hutool.core.util.StrUtil;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.fdkankan.common.constant.CommonStatus;
- import com.fdkankan.common.constant.ErrorCode;
- import com.fdkankan.common.exception.BusinessException;
- import com.fdkankan.fyun.face.FYunFileServiceInterface;
- import com.fdkankan.model.constants.UploadFilePath;
- import com.fdkankan.scene.entity.SceneDynamicPanel;
- import com.fdkankan.scene.entity.SceneEditInfo;
- import com.fdkankan.scene.entity.ScenePlus;
- import com.fdkankan.scene.mapper.ISceneDynamicPanelMapper;
- import com.fdkankan.scene.service.ISceneDynamicPanelService;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.fdkankan.scene.service.ISceneEditInfoService;
- import com.fdkankan.scene.service.IScenePlusService;
- import com.fdkankan.scene.vo.BaseJsonDataParamVO;
- import com.fdkankan.scene.vo.SceneDynamicPanelVO;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.nio.charset.StandardCharsets;
- import java.util.*;
- import java.util.stream.Collectors;
- /**
- * <p>
- * 场景动态面板 服务实现类
- * </p>
- *
- * @author
- * @since 2024-05-21
- */
- @Service
- public class SceneDynamicPanelServiceImpl extends ServiceImpl<ISceneDynamicPanelMapper, SceneDynamicPanel> implements ISceneDynamicPanelService {
- @Resource
- private FYunFileServiceInterface fileServiceInterface;
- @Autowired
- private ISceneEditInfoService sceneEditInfoService;
- @Autowired
- private IScenePlusService scenePlusService;
- @Override
- public List<SceneDynamicPanelVO> list(String num) {
- List<SceneDynamicPanel> list = this.list(new LambdaQueryWrapper<SceneDynamicPanel>().eq(SceneDynamicPanel::getNum, num));
- return BeanUtil.copyToList(list, SceneDynamicPanelVO.class);
- }
- @Override
- public void update(BaseJsonDataParamVO param) {
- JSONObject data = param.getData();
- String sid = data.getString("sid");
- if(StrUtil.isEmpty(sid)){
- throw new BusinessException(ErrorCode.FAILURE_CODE_3001, "sid can not be null");
- }
- ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
- SceneDynamicPanel one = this.getOne(new LambdaQueryWrapper<SceneDynamicPanel>().eq(SceneDynamicPanel::getNum, param.getNum()).eq(SceneDynamicPanel::getSid, sid));
- if(Objects.isNull(one)){
- throw new BusinessException(ErrorCode.FAILURE_CODE_3001, "sid error");
- }
- //上传文件
- String editPath = String.format(UploadFilePath.USER_EDIT_PATH, param.getNum()) + "dynamicPanel.json";
- String viewPath = String.format(UploadFilePath.USER_VIEW_PATH, param.getNum()) + "dynamicPanel.json";
- String fileContent = fileServiceInterface.getFileContent(editPath);
- JSONArray jsonArray = JSON.parseArray(fileContent);
- Map<String, JSONObject> map = new HashMap<>();
- jsonArray.stream().forEach(v->{
- JSONObject obj = (JSONObject) v;
- map.put(obj.getString("sid"), obj);
- });
- JSONObject oldObj = map.get(sid);
- if(Objects.nonNull(oldObj)){
- data.put("text", oldObj.get("text"));
- }
- map.put(sid, data);
- Collection<JSONObject> values = map.values();
- fileServiceInterface.uploadFile(JSON.toJSONString(values).getBytes(StandardCharsets.UTF_8), editPath);
- fileServiceInterface.uploadFile(JSON.toJSONString(values).getBytes(StandardCharsets.UTF_8), viewPath);
- //更新版本号
- SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
- sceneEditInfoService.upgradeVersionById(sceneEditInfo.getId());
- }
- @Override
- public Byte checkDynamicPanel(String num) {
- Long count = this.count(new LambdaQueryWrapper<SceneDynamicPanel>().eq(SceneDynamicPanel::getNum, num));
- return count > 0 ? CommonStatus.YES.code() : CommonStatus.NO.code();
- }
- }
|