Procházet zdrojové kódy

Merge branch 'feature-v4.12.0-dsx' into test

dengsixing před 1 rokem
rodič
revize
3e44c1520b

+ 49 - 0
src/main/java/com/fdkankan/openApi/controller/www/SceneDynamicPanelController.java

@@ -0,0 +1,49 @@
+package com.fdkankan.openApi.controller.www;
+
+
+import cn.dev33.satoken.annotation.SaIgnore;
+import com.fdkankan.openApi.aop.RedisLimit;
+import com.fdkankan.openApi.aop.ValidateApi;
+import com.fdkankan.openApi.controller.BaseController;
+import com.fdkankan.openApi.service.www.ISceneDynamicPanelService;
+import com.fdkankan.openApi.vo.www.SceneDynamicPanelParamVO;
+import com.fdkankan.web.response.ResultData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+ * <p>
+ * 场景动态面板 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2024-05-21
+ */
+@RestController
+@RequestMapping("/scene/dynamicPanel")
+public class SceneDynamicPanelController extends BaseController {
+
+    @Autowired
+    private ISceneDynamicPanelService sceneDynamicPanelService;
+
+    /**
+     * 动态面板文本推送
+     * @param param
+     * @return
+     */
+    @SaIgnore
+    @PostMapping("/save")
+    @RedisLimit(name = "scene/dynamicPanel/save", limitCount = 1, period = 30)
+    @ValidateApi(method = "scene:dynamicPanel:save")
+    public ResultData save(@RequestBody @Valid SceneDynamicPanelParamVO param){
+        sceneDynamicPanelService.save(this.getUserId(), param);
+        return ResultData.ok();
+    }
+
+}
+

+ 66 - 0
src/main/java/com/fdkankan/openApi/entity/www/SceneDynamicPanel.java

@@ -0,0 +1,66 @@
+package com.fdkankan.openApi.entity.www;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 场景动态面板
+ * </p>
+ *
+ * @author
+ * @since 2024-05-21
+ */
+@Getter
+@Setter
+@TableName("t_scene_dynamic_panel")
+public class SceneDynamicPanel implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 场景码
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * sid
+     */
+    @TableField("sid")
+    private String sid;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * 删除状态(A-可用,I删除)
+     */
+    @TableField("rec_status")
+    @TableLogic(value = "A", delval = "I")
+    private String recStatus;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/openApi/generate/AutoGenerate.java

@@ -21,7 +21,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"openApi", getTables(new String[]{
-                "t_scene_cooperation",
+                "t_scene_dynamic_panel",
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 18 - 0
src/main/java/com/fdkankan/openApi/mapper/www/ISceneDynamicPanelMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.openApi.mapper.www;
+
+import com.fdkankan.openApi.entity.www.SceneDynamicPanel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 场景动态面板 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2024-05-21
+ */
+@Mapper
+public interface ISceneDynamicPanelMapper extends BaseMapper<SceneDynamicPanel> {
+
+}

+ 19 - 0
src/main/java/com/fdkankan/openApi/service/www/ISceneDynamicPanelService.java

@@ -0,0 +1,19 @@
+package com.fdkankan.openApi.service.www;
+
+import com.fdkankan.openApi.entity.www.SceneDynamicPanel;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.openApi.vo.www.SceneDynamicPanelParamVO;
+
+/**
+ * <p>
+ * 场景动态面板 服务类
+ * </p>
+ *
+ * @author
+ * @since 2024-05-21
+ */
+public interface ISceneDynamicPanelService extends IService<SceneDynamicPanel> {
+
+    void save(Long userId, SceneDynamicPanelParamVO param);
+
+}

+ 92 - 0
src/main/java/com/fdkankan/openApi/service/www/impl/SceneDynamicPanelServiceImpl.java

@@ -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);
+    }
+}

+ 16 - 0
src/main/java/com/fdkankan/openApi/vo/www/SceneDynamicPanelParamVO.java

@@ -0,0 +1,16 @@
+package com.fdkankan.openApi.vo.www;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+public class SceneDynamicPanelParamVO {
+
+    @NotBlank(message = "场景码不能为空")
+    private String num;
+
+    @NotBlank(message = "内容不能为空")
+    private String content;
+
+}

+ 5 - 0
src/main/resources/mapper/www/SceneDynamicPanelMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.openApi.mapper.www.ISceneDynamicPanelMapper">
+
+</mapper>