Просмотр исходного кода

2.3.0增加修改场景访问密码接口

dengsixing недель назад: 2
Родитель
Сommit
cc1e95b1b7

+ 33 - 0
src/main/java/com/fdkankan/openApi/controller/www/GaSceneController.java

@@ -0,0 +1,33 @@
+package com.fdkankan.openApi.controller.www;
+
+import cn.dev33.satoken.annotation.SaIgnore;
+import com.fdkankan.openApi.aop.ValidateApi;
+import com.fdkankan.openApi.aop.ValidateIp;
+import com.fdkankan.openApi.service.www.GaSceneService;
+import com.fdkankan.openApi.vo.BaseSceneParamVo;
+import com.fdkankan.openApi.vo.www.SaveScenePasswordDto;
+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.RestController;
+
+import javax.validation.Valid;
+
+@RestController("/gaScene")
+public class GaSceneController {
+
+    @Autowired
+    private GaSceneService gaSceneService;
+
+    @SaIgnore
+    @ValidateApi(method = "gaScene:saveSceneViewPassword")
+    @ValidateIp
+    @PostMapping("saveSceneViewPassword")
+    public ResultData saveSceneViewPassword(@Valid @RequestBody SaveScenePasswordDto dto){
+        gaSceneService.saveSceneViewPassword(dto);
+        return ResultData.ok();
+    }
+
+
+}

+ 9 - 0
src/main/java/com/fdkankan/openApi/service/www/GaSceneService.java

@@ -0,0 +1,9 @@
+package com.fdkankan.openApi.service.www;
+
+import com.fdkankan.openApi.vo.www.SaveScenePasswordDto;
+
+import javax.validation.Valid;
+
+public interface GaSceneService {
+    void saveSceneViewPassword(@Valid SaveScenePasswordDto dto);
+}

+ 77 - 0
src/main/java/com/fdkankan/openApi/service/www/impl/GaSceneServiceImpl.java

@@ -0,0 +1,77 @@
+package com.fdkankan.openApi.service.www.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DS;
+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.bean.www.SceneJsonBean;
+import com.fdkankan.openApi.entity.www.SceneEditInfo;
+import com.fdkankan.openApi.entity.www.ScenePlus;
+import com.fdkankan.openApi.service.www.GaSceneService;
+import com.fdkankan.openApi.service.www.ISceneEditInfoService;
+import com.fdkankan.openApi.service.www.IScenePlusService;
+import com.fdkankan.openApi.vo.www.SaveScenePasswordDto;
+import com.fdkankan.redis.constant.RedisKey;
+import com.fdkankan.redis.util.RedisUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.nio.charset.StandardCharsets;
+import java.util.regex.Pattern;
+
+@DS("www")
+@Service
+public class GaSceneServiceImpl implements GaSceneService {
+
+    private static final String VALID_PATTERN = "^[a-zA-Z0-9]{4}$";
+    private static final Pattern PATTERN = Pattern.compile(VALID_PATTERN);
+
+    @Autowired
+    private ISceneEditInfoService sceneEditInfoService;
+    @Autowired
+    private IScenePlusService scenePlusService;
+    @Resource
+    private FYunFileServiceInterface fYunFileService;
+    @Resource
+    private RedisUtil redisUtil;
+
+    @Override
+    public void saveSceneViewPassword(SaveScenePasswordDto dto) {
+        String num = dto.getSceneCode();
+        //校验密码格式是否正确
+        if(this.validateScenePassword(dto.getPassword())){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_3011.code(), "请设置4位数字或英文密码");
+        }
+        ScenePlus scenePlus = scenePlusService.getByNum(num);
+        if(scenePlus == null){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
+        SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
+        sceneEditInfo.setScenePassword(dto.getPassword());
+        sceneEditInfo.setUpdateTime(null);
+        sceneEditInfoService.updateById(sceneEditInfo);
+
+        //发布 scenePassword
+        String sceneJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH, num) + "scene.json";
+        String sceneJson = fYunFileService.getFileContent(sceneJsonPath);
+        JSONObject jsonObject = JSON.parseObject(sceneJson);
+        jsonObject.put("scenePassword", dto.getPassword());
+        fYunFileService.uploadFile(jsonObject.toJSONString().getBytes(StandardCharsets.UTF_8), sceneJsonPath);
+        //删除redis缓存
+        redisUtil.del(String.format(RedisKey.SCENE_JSON, num));
+    }
+
+    public boolean validateScenePassword(String password) {
+        // 先判空,再用正则匹配
+        if (password == null) {
+            return false;
+        }
+        // 匹配正则表达式
+        return PATTERN.matcher(password).matches();
+    }
+
+}

+ 14 - 0
src/main/java/com/fdkankan/openApi/vo/www/SaveScenePasswordDto.java

@@ -0,0 +1,14 @@
+package com.fdkankan.openApi.vo.www;
+
+import com.fdkankan.openApi.vo.BaseSceneParamVo;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+public class SaveScenePasswordDto extends BaseSceneParamVo {
+
+    @NotBlank(message = "密码不能为空")
+    private String password;
+
+}