|
@@ -0,0 +1,92 @@
|
|
|
+package com.fdkankan.openApi.service.www.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.lang.UUID;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+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.openApi.entity.www.SceneDynamicPanel;
|
|
|
+import com.fdkankan.openApi.entity.www.ScenePlus;
|
|
|
+import com.fdkankan.openApi.mapper.www.ISceneDynamicPanelMapper;
|
|
|
+import com.fdkankan.openApi.service.www.ISceneDynamicPanelService;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fdkankan.openApi.service.www.IScenePlusService;
|
|
|
+import com.fdkankan.openApi.vo.www.SceneDynamicPanelParamVO;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
+import java.util.Collection;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 场景动态面板 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author
|
|
|
+ * @since 2024-05-21
|
|
|
+ */
|
|
|
+@DS("www")
|
|
|
+@Service
|
|
|
+public class SceneDynamicPanelServiceImpl extends ServiceImpl<ISceneDynamicPanelMapper, SceneDynamicPanel> implements ISceneDynamicPanelService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IScenePlusService scenePlusService;
|
|
|
+ @Resource
|
|
|
+ private FYunFileServiceInterface fileServiceInterface;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void save(Long userId, SceneDynamicPanelParamVO param) {
|
|
|
+
|
|
|
+ ScenePlus scenePlus = scenePlusService.getByNumAndUserId(userId, param.getNum());
|
|
|
+ if(Objects.isNull(scenePlus)){
|
|
|
+ throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
+ }
|
|
|
+ SceneDynamicPanel one = this.getOne(new LambdaQueryWrapper<SceneDynamicPanel>().eq(SceneDynamicPanel::getNum, param.getNum()));
|
|
|
+ String sid = null;
|
|
|
+ if(Objects.isNull(one)){
|
|
|
+ sid = UUID.fastUUID().toString();
|
|
|
+ one = new SceneDynamicPanel();
|
|
|
+ one.setSid(sid);
|
|
|
+ one.setNum(param.getNum());
|
|
|
+ }else{
|
|
|
+ sid = one.getSid();
|
|
|
+ }
|
|
|
+ this.saveOrUpdate(one);
|
|
|
+
|
|
|
+
|
|
|
+ //上传文件
|
|
|
+ String editPath = String.format(UploadFilePath.USER_EDIT_PATH, param.getNum()) + "dynamicPanel.json";
|
|
|
+ String viewPath = String.format(UploadFilePath.USER_VIEW_PATH, param.getNum()) + "dynamicPanel.json";
|
|
|
+
|
|
|
+ Map<String, JSONObject> map = new HashMap<>();
|
|
|
+ if(fileServiceInterface.fileExist(editPath)){
|
|
|
+ String fileContent = fileServiceInterface.getFileContent(editPath);
|
|
|
+ JSONArray jsonArray = JSON.parseArray(fileContent);
|
|
|
+ jsonArray.stream().forEach(v->{
|
|
|
+ JSONObject obj = (JSONObject) v;
|
|
|
+ map.put(obj.getString("sid"), obj);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ JSONObject jsonObject = map.get(sid);
|
|
|
+ if(Objects.isNull(jsonObject)){
|
|
|
+ jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("sid", sid);
|
|
|
+ map.put(sid, jsonObject);
|
|
|
+ }
|
|
|
+ jsonObject.put("text", param.getContent());
|
|
|
+
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+}
|