diff --git a/maibu-admin/src/main/java/com/maibu/web/controller/system/SysLoginController.java b/maibu-admin/src/main/java/com/maibu/web/controller/system/SysLoginController.java index 56554ec..c0c82dd 100644 --- a/maibu-admin/src/main/java/com/maibu/web/controller/system/SysLoginController.java +++ b/maibu-admin/src/main/java/com/maibu/web/controller/system/SysLoginController.java @@ -170,6 +170,7 @@ public class SysLoginController { ajax.put("avatar",avatar); if (sysUser != null) { ajax.put("roleId",sysUser.getRoleId()); + ajax.put("roleKey",sysUser.getRoleKey()); ajax.put("siteId",sysUser.getSiteId()); ajax.put("orgId",sysUser.getOrgId()); aiChatNum = sysUser.getAiChatNum(); diff --git a/maibu-common/src/main/java/com/maibu/constant/CacheConstants.java b/maibu-common/src/main/java/com/maibu/constant/CacheConstants.java index 2928ff2..b4543db 100644 --- a/maibu-common/src/main/java/com/maibu/constant/CacheConstants.java +++ b/maibu-common/src/main/java/com/maibu/constant/CacheConstants.java @@ -85,6 +85,10 @@ public class CacheConstants /**设备OTA升级实时数据*/ public static final String DEVICE_OTA_DATA = "device:ota:"; + + /**设备OTA升级实时数据*/ + public static final String DEVICE_PARAM_AUTH = "device:param_auth:"; + } diff --git a/maibu-common/src/main/java/com/maibu/core/domain/entity/SysUser.java b/maibu-common/src/main/java/com/maibu/core/domain/entity/SysUser.java index a8cf426..6cbc7fc 100644 --- a/maibu-common/src/main/java/com/maibu/core/domain/entity/SysUser.java +++ b/maibu-common/src/main/java/com/maibu/core/domain/entity/SysUser.java @@ -1,6 +1,7 @@ package com.maibu.core.domain.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.maibu.annotation.Excel; @@ -162,6 +163,10 @@ public class SysUser extends BaseDO { private Long roleId; + @TableField(exist = false) + private String roleKey; + + @ApiModelProperty("sessionId") private String sessionId; diff --git a/maibu-service/maibu-iot-service/src/main/java/com/maibu/controller/DeviceController.java b/maibu-service/maibu-iot-service/src/main/java/com/maibu/controller/DeviceController.java index 046420c..cf77047 100644 --- a/maibu-service/maibu-iot-service/src/main/java/com/maibu/controller/DeviceController.java +++ b/maibu-service/maibu-iot-service/src/main/java/com/maibu/controller/DeviceController.java @@ -7,6 +7,7 @@ import com.maibu.core.business.dto.DeviceBindDTO; import com.maibu.core.controller.BaseController; import com.maibu.core.domain.AjaxResult; import com.maibu.core.page.TableDataInfo; +import com.maibu.dto.DeviceParamAuthDTO; import com.maibu.enums.BusinessType; import com.maibu.mapper.DeviceRunStatisticsMapper; import com.maibu.mybatis.LambdaQueryWrapperX; @@ -280,5 +281,21 @@ public class DeviceController extends BaseController { return getDataTable(deviceService.getDeviceList(getLoginUser(), device)); } + /** + * 设备授权修改 + */ + @PostMapping("/paramModifyAuth") + public AjaxResult paramModifyAuth(@RequestBody DeviceParamAuthDTO dto) { + return AjaxResult.success(deviceService.paramModifyAuth(dto)); + } + + /** + * 查看当前设备有没授权修改参数 + */ + @GetMapping("/hasPermission") + public AjaxResult hasPermission(@RequestParam String deviceId) { + return AjaxResult.success(deviceService.hasPermission(deviceId)); + } + } diff --git a/maibu-service/maibu-iot-service/src/main/java/com/maibu/dto/DeviceParamAuthDTO.java b/maibu-service/maibu-iot-service/src/main/java/com/maibu/dto/DeviceParamAuthDTO.java new file mode 100644 index 0000000..cddc01c --- /dev/null +++ b/maibu-service/maibu-iot-service/src/main/java/com/maibu/dto/DeviceParamAuthDTO.java @@ -0,0 +1,11 @@ +package com.maibu.dto; + +import lombok.Data; + +@Data +public class DeviceParamAuthDTO { + + private String deviceId; + + private Integer duration; +} diff --git a/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/IDeviceService.java b/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/IDeviceService.java index 71efe24..116d472 100644 --- a/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/IDeviceService.java +++ b/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/IDeviceService.java @@ -4,6 +4,7 @@ import com.maibu.core.business.Device; import com.maibu.core.business.dto.DeviceBindDTO; import com.maibu.core.domain.AjaxResult; import com.maibu.core.domain.model.LoginUser; +import com.maibu.dto.DeviceParamAuthDTO; import java.util.List; @@ -91,4 +92,8 @@ public interface IDeviceService { public List getDeviceList(LoginUser loginUser, Device device); + public boolean paramModifyAuth(DeviceParamAuthDTO dto); + + public boolean hasPermission(String deviceId); + } diff --git a/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/impl/DeviceServiceImpl.java b/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/impl/DeviceServiceImpl.java index f5e2ed3..734b3e7 100644 --- a/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/impl/DeviceServiceImpl.java +++ b/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/impl/DeviceServiceImpl.java @@ -7,10 +7,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import javax.annotation.Resource; +import com.maibu.constant.CacheConstants; +import com.maibu.dto.DeviceParamAuthDTO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -379,4 +382,24 @@ public class DeviceServiceImpl implements IDeviceService { return deviceList; } + @Override + public boolean paramModifyAuth(DeviceParamAuthDTO dto) { + if (dto != null && !StringUtils.isEmpty(dto.getDeviceId())) { + Integer duration = dto.getDuration() == null ? 10 : dto.getDuration(); + String key = CacheConstants.DEVICE_PARAM_AUTH + dto.getDeviceId(); + redisCache.setCacheObject(key, System.currentTimeMillis(), duration, TimeUnit.MINUTES); + return true; + } + return false; + } + + @Override + public boolean hasPermission(String deviceId) { + if (!StringUtils.isEmpty(deviceId)) { + String key = CacheConstants.DEVICE_PARAM_AUTH + deviceId; + return redisCache.hasKey(key); + } + return false; + } + }