Pārlūkot izejas kodu

2.3.0增加修改场景访问密码/密码有效期接口

dengsixing 2 dienas atpakaļ
vecāks
revīzija
5ecf9d88c2

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

@@ -26,7 +26,7 @@ public class GaSceneController {
     @ValidateApi(method = "gaScene:saveSceneViewPassword")
     @ValidateIp
     @PostMapping("saveSceneViewPassword")
-    public ResultData saveSceneViewPassword(@Valid @RequestBody SaveScenePasswordDto dto){
+    public ResultData saveSceneViewPassword(@Valid @RequestBody SaveScenePasswordDto dto) {
         gaSceneService.saveSceneViewPassword(dto);
         return ResultData.ok();
     }

+ 6 - 0
src/main/java/com/fdkankan/openApi/entity/www/SceneEditInfo.java

@@ -74,6 +74,12 @@ public class SceneEditInfo implements Serializable {
     private String scenePassword;
 
     /**
+     * 浏览密码
+     */
+    @TableField("password_expir_time")
+    private String passwordExpirTime;
+
+    /**
      * 场景标题
      */
     @TableField("title")

+ 34 - 3
src/main/java/com/fdkankan/openApi/service/www/impl/GaSceneServiceImpl.java

@@ -1,16 +1,22 @@
 package com.fdkankan.openApi.service.www.impl;
 
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fdkankan.common.constant.CommonStatus;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.util.DateExtUtil;
 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.SceneEditControls;
 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.ISceneEditControlsService;
 import com.fdkankan.openApi.service.www.ISceneEditInfoService;
 import com.fdkankan.openApi.service.www.IScenePlusService;
 import com.fdkankan.openApi.vo.www.SaveScenePasswordDto;
@@ -21,6 +27,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.nio.charset.StandardCharsets;
+import java.util.Date;
 import java.util.regex.Pattern;
 
 @DS("www")
@@ -38,28 +45,52 @@ public class GaSceneServiceImpl implements GaSceneService {
     private FYunFileServiceInterface fYunFileService;
     @Resource
     private RedisUtil redisUtil;
+    @Autowired
+    private ISceneEditControlsService sceneEditControlsService;
 
     @Override
     public void saveSceneViewPassword(SaveScenePasswordDto dto) {
         String num = dto.getSceneCode();
-        //校验密码格式是否正确
-        if(!this.validateScenePassword(dto.getPassword())){
-            throw new BusinessException(ErrorCode.FAILURE_CODE_3011.code(), "请设置4位数字或英文密码");
+        Integer showLock = null;
+        String expireTimeStr = null;//为空时,代表不改变过期时间
+        if(StrUtil.isEmpty(dto.getPassword())){//密码为空,代表场景设置为公开
+            showLock = CommonStatus.NO.code().intValue();
+        }else{
+            showLock = CommonStatus.YES.code().intValue();
+            //校验密码格式是否正确
+            if(!this.validateScenePassword(dto.getPassword())){
+                throw new BusinessException(ErrorCode.FAILURE_CODE_3011.code(), "请设置4位数字或英文密码");
+            }
+            if(dto.getExpireTime() == null){//如果过期时间为空,则为取消过期时间设置
+                expireTimeStr = "";
+            }else{
+                expireTimeStr = DateUtil.format(dto.getExpireTime(), DateExtUtil.dateStyle);
+            }
         }
+
         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.setPasswordExpirTime(expireTimeStr);
         sceneEditInfo.setUpdateTime(null);
         sceneEditInfoService.updateById(sceneEditInfo);
 
+        sceneEditControlsService.lambdaUpdate()
+                .eq(SceneEditControls::getEditInfoId, sceneEditInfo.getScenePlusId())
+                .set(SceneEditControls::getShowLock, showLock)
+                .update();
+
         //发布 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());
+        jsonObject.put("passwordExpirTime", sceneEditInfo.getPasswordExpirTime());
+        JSONObject controls = jsonObject.getJSONObject("controls");
+        controls.put("showLock", showLock);
         fYunFileService.uploadFile(jsonObject.toJSONString().getBytes(StandardCharsets.UTF_8), sceneJsonPath);
         //删除redis缓存
         redisUtil.del(String.format(RedisKey.SCENE_JSON, num));

+ 7 - 2
src/main/java/com/fdkankan/openApi/vo/www/SaveScenePasswordDto.java

@@ -1,14 +1,19 @@
 package com.fdkankan.openApi.vo.www;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fdkankan.openApi.vo.BaseSceneParamVo;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
+import java.util.Date;
 
 @Data
 public class SaveScenePasswordDto extends BaseSceneParamVo {
 
-    @NotBlank(message = "密码不能为空")
     private String password;
 
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date expireTime;
+
 }