车车 пре 3 месеци
родитељ
комит
721f62aa37

+ 5 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/workdesign/WorkflowWorkNodeServiceImpl.java

@@ -90,7 +90,11 @@ public class WorkflowWorkNodeServiceImpl extends ServiceImpl<WorkflowWorkNodeMap
 
 
         // 检测点位数据是否重新生成
-        if (!byId.getIsolationPoints().equals(updateReqVO.getIsolationPoints())) {
+        if ((StringUtils.isNotBlank(updateReqVO.getIsolationPoints()) && StringUtils.isBlank(byId.getIsolationPoints())) ||
+                (StringUtils.isBlank(updateReqVO.getIsolationPoints()) && StringUtils.isNotBlank(byId.getIsolationPoints())) ||
+                (StringUtils.isNotBlank(updateReqVO.getIsolationPoints()) && StringUtils.isNotBlank(byId.getIsolationPoints()) && !updateReqVO.getIsolationPoints().equals(byId.getIsolationPoints()))) {
+            // && StringUtils.isNotBlank(byId.getIsolationPoints())
+            // || !byId.getIsolationPoints().equals(updateReqVO.getIsolationPoints())) {
             // 开始修改点位
             analysisPointSave(updateReqVO.getNodeId(), updateReqVO.getIsolationPoints());
         }

+ 7 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java

@@ -203,4 +203,11 @@ public class UserController {
         return success(list);
     }
 
+    @PostMapping("/updateDeviceId")
+    @Operation(summary = "修改用户deviceID(新增/移除)")
+    public CommonResult<Boolean> updateDeviceId(@Valid @RequestBody DeviceIdReqVO reqVO) {
+        userService.updateDeviceId(reqVO);
+        return success(true);
+    }
+
 }

+ 18 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/DeviceIdReqVO.java

@@ -0,0 +1,18 @@
+package cn.iocoder.yudao.module.system.controller.admin.user.vo.user;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 用户创建/修改 Request VO")
+@Data
+public class DeviceIdReqVO {
+
+    @Schema(description = "操作类型(0-新增 1-移除)")
+    private Integer type;
+
+
+    @Schema(description = "app通知设备,逗号分割存储", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
+    private String deviceId;
+
+
+}

+ 4 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java

@@ -98,5 +98,9 @@ public class AdminUserDO extends TenantBaseDO {
      * 最后登录时间
      */
     private LocalDateTime loginDate;
+    /**
+     * app通知设备,逗号分割存储
+     */
+    private String deviceId;
 
 }

+ 2 - 2
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/appnotify/AppNotifySendServiceImpl.java

@@ -112,8 +112,8 @@ public class AppNotifySendServiceImpl implements AppNotifySendService {
             IAcsClient client = createAcsClient();
 
             // 4. 第四步:构建单设备推送请求(封装Android/iOS双端配置)
-            // PushRequest pushRequest = buildSingleDevicePushRequest(deviceId, "博士安全", notifyMessage.getTemplateContent());
-            PushRequest pushRequest = buildAllDevicePushRequest("博士安全", notifyMessage.getTemplateContent());
+            PushRequest pushRequest = buildSingleDevicePushRequest(deviceId, "博士安全", notifyMessage.getTemplateContent());
+            // PushRequest pushRequest = buildAllDevicePushRequest("博士安全", notifyMessage.getTemplateContent());
 
             // 5. 第五步:发送推送请求,调用阿里云Push接口
             PushResponse response = client.getAcsResponse(pushRequest);

+ 7 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java

@@ -231,5 +231,12 @@ public interface AdminUserService extends IService<AdminUserDO> {
      */
     List<AdminUserDO> getUserListByRoleIds(Collection<Long> roleIds);
 
+    /**
+     * 修改用户deviceID(登录/退出)
+     * @param reqVO
+     * @return
+     */
+    Boolean updateDeviceId(DeviceIdReqVO reqVO);
+
 
 }

+ 45 - 1
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java

@@ -31,11 +31,11 @@ import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.dept.PostService;
 import cn.iocoder.yudao.module.system.service.iscs.IscsService;
-import cn.iocoder.yudao.module.system.service.iscs.IscsServiceImpl;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import cn.iocoder.yudao.module.system.service.permission.RoleService;
 import cn.iocoder.yudao.module.system.service.tenant.TenantService;
 import cn.iocoder.yudao.module.system.service.userworkstation.UserWorkstationService;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.annotations.VisibleForTesting;
@@ -56,6 +56,7 @@ import java.util.*;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
+import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 import static cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants.OAUTH2_ACCESS_TOKEN;
 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
 import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.*;
@@ -621,4 +622,47 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
         return userMapper.selectByIds(userIds);
     }
 
+    @Override
+    public Boolean updateDeviceId(DeviceIdReqVO reqVO) {
+        // 检测一下传参
+        Assert.notNull(reqVO.getType(), "type不可为空!");
+        Assert.notBlank(reqVO.getDeviceId(), "deviceId不可为空!");
+        Long loginUserId = getLoginUserId();
+        AdminUserDO user = getUser(loginUserId);
+        // 开始执行新增
+        if (reqVO.getType().equals(0)) {
+            // 新增
+            if (StringUtils.isBlank(user.getDeviceId())) {
+                // 如果本来没数据,直接新增
+                update(Wrappers.<AdminUserDO>lambdaUpdate().eq(AdminUserDO::getId, loginUserId).set(AdminUserDO::getDeviceId, reqVO.getDeviceId()));
+            } else {
+                // 如果原先有数据,则解析原先数据,还需要检测重复
+                List<String> oldDeviceIds = new ArrayList<>(Arrays.asList(user.getDeviceId().split(",")));
+                oldDeviceIds.add(reqVO.getDeviceId());
+                // 转成set去重
+                Set<String> deviceIdSet = new TreeSet<>(oldDeviceIds);
+                String newDeviceIds = String.join(",", deviceIdSet);
+                update(Wrappers.<AdminUserDO>lambdaUpdate().eq(AdminUserDO::getId, loginUserId).set(AdminUserDO::getDeviceId, newDeviceIds));
+            }
+        }
+
+
+        // 开始执行移除
+        if (reqVO.getType().equals(1)) {
+            if (StringUtils.isBlank(user.getDeviceId())) {
+                // 如果本来没数据,直接ruturn
+                return true;
+            } else {
+                // 如果原先有数据,则解析原先数据,在移除
+                List<String> oldDeviceIds = new ArrayList<>(Arrays.asList(user.getDeviceId().split(",")));
+                oldDeviceIds.removeIf(o -> o.equals(reqVO.getDeviceId()));
+                String newDeviceIds = String.join(",", oldDeviceIds);
+                update(Wrappers.<AdminUserDO>lambdaUpdate().eq(AdminUserDO::getId, loginUserId).set(AdminUserDO::getDeviceId, newDeviceIds));
+            }
+        }
+
+
+        return true;
+    }
+
 }