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; /** *

* 场景动态面板 服务实现类 *

* * @author * @since 2024-05-21 */ @Service public class SceneDynamicPanelServiceImpl extends ServiceImpl implements ISceneDynamicPanelService { @Resource private FYunFileServiceInterface fileServiceInterface; @Autowired private ISceneEditInfoService sceneEditInfoService; @Autowired private IScenePlusService scenePlusService; @Override public List list(String num) { List list = this.list(new LambdaQueryWrapper().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().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 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 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().eq(SceneDynamicPanel::getNum, num)); return count > 0 ? CommonStatus.YES.code() : CommonStatus.NO.code(); } }