summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshizhendong <[email protected]>2023-08-09 16:50:57 +0800
committershizhendong <[email protected]>2023-08-09 16:50:57 +0800
commitd414de73db02ab44669f562aa46bd57233696d3e (patch)
tree2df79c5e7871a36354ac4a382f994fe39a1588fb
parent515d1308046e2d0ceb157049125b77c44492d9c0 (diff)
feat: NEZ-3042 新增用户偏好接口
-rw-r--r--nz-admin/src/main/java/com/nis/modules/sys/controller/SysUserPrefController.java63
-rw-r--r--nz-admin/src/main/java/com/nis/modules/sys/dao/SysUserPrefDao.java16
-rw-r--r--nz-admin/src/main/java/com/nis/modules/sys/entity/SysUserPreference.java44
-rw-r--r--nz-admin/src/main/java/com/nis/modules/sys/service/SysUserPrefService.java21
-rw-r--r--nz-admin/src/main/java/com/nis/modules/sys/service/impl/SysUserPrefServiceImpl.java77
-rw-r--r--nz-admin/src/main/java/com/nis/modules/sys/service/impl/SysUserServiceImpl.java21
-rw-r--r--nz-admin/src/main/resources/db/V2023.08.09.1__create table sys_user_preference.sql21
-rw-r--r--nz-common/src/main/java/com/nis/common/utils/TypeEnum.java2
8 files changed, 256 insertions, 9 deletions
diff --git a/nz-admin/src/main/java/com/nis/modules/sys/controller/SysUserPrefController.java b/nz-admin/src/main/java/com/nis/modules/sys/controller/SysUserPrefController.java
new file mode 100644
index 00000000..6ff0914a
--- /dev/null
+++ b/nz-admin/src/main/java/com/nis/modules/sys/controller/SysUserPrefController.java
@@ -0,0 +1,63 @@
+package com.nis.modules.sys.controller;
+
+import com.nis.common.annotation.SysLog;
+import com.nis.common.smartvalidate.ValidateUtils;
+import com.nis.common.utils.OperationEnum;
+import com.nis.common.utils.R;
+import com.nis.common.utils.TypeEnum;
+import com.nis.modules.sys.service.SysUserPrefService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * System User Preference Controller
+ *
+ * @author shizhendong
+ * @date 2023-08-09
+ */
+@RestController
+@RequestMapping
+public class SysUserPrefController {
+
+
+ @Autowired
+ private SysUserPrefService sysUserPrefService;
+
+ /**
+ * query current user preference list
+ */
+ @GetMapping("/sys/user/preference")
+ @SysLog(operation = OperationEnum.QUERY, type = TypeEnum.SYS_USER_PREFERENCE)
+ public R queryCurrentUserPrefList(@RequestParam(required = false) String key) {
+ return R.ok(sysUserPrefService.queryCurrentUserPrefList(key));
+ }
+
+
+ /**
+ * update current user preference
+ *
+ * @param updateKeyValueMap
+ * @return
+ */
+ @PutMapping("/sys/user/preference")
+ @SysLog(operation = OperationEnum.UPDATE, type = TypeEnum.SYS_USER_PREFERENCE)
+ public R updateCurrentUserPref(@RequestBody(required = false) Map<String, String> updateKeyValueMap) {
+ ValidateUtils.is(updateKeyValueMap).notNull();
+
+ sysUserPrefService.updateCurrentUserPref(updateKeyValueMap);
+ return R.ok();
+ }
+
+ /**
+ * delete current user preference
+ */
+ @DeleteMapping("/sys/user/preference")
+ @SysLog(operation = OperationEnum.DELETE, type = TypeEnum.SYS_USER_PREFERENCE)
+ public R deleteCurrentUserPref(@RequestParam(required = false) String key) {
+ sysUserPrefService.deleteCurrentUserPref(key);
+ return R.ok();
+ }
+
+}
diff --git a/nz-admin/src/main/java/com/nis/modules/sys/dao/SysUserPrefDao.java b/nz-admin/src/main/java/com/nis/modules/sys/dao/SysUserPrefDao.java
new file mode 100644
index 00000000..0430fd89
--- /dev/null
+++ b/nz-admin/src/main/java/com/nis/modules/sys/dao/SysUserPrefDao.java
@@ -0,0 +1,16 @@
+package com.nis.modules.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.nis.modules.sys.entity.SysUserPreference;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * System User Preference Dao
+ *
+ * @author shizhendong
+ * @date 2023-08-09
+ */
+@Mapper
+public interface SysUserPrefDao extends BaseMapper<SysUserPreference> {
+
+}
diff --git a/nz-admin/src/main/java/com/nis/modules/sys/entity/SysUserPreference.java b/nz-admin/src/main/java/com/nis/modules/sys/entity/SysUserPreference.java
new file mode 100644
index 00000000..75263c0e
--- /dev/null
+++ b/nz-admin/src/main/java/com/nis/modules/sys/entity/SysUserPreference.java
@@ -0,0 +1,44 @@
+package com.nis.modules.sys.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * System User Preference Entity
+ *
+ * @author shizhendong
+ * @date 2023-08-09
+ */
+@Data
+@TableName("sys_user_preference")
+public class SysUserPreference implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId
+ private Long id;
+
+ /**
+ * 用户ID
+ */
+ private Integer uid;
+
+ /**
+ * 偏好配置项
+ */
+ private String prefKey;
+
+ /**
+ * 偏好配置值
+ */
+ private String prefValue;
+
+ /**
+ * 更新时间戳
+ */
+ private Long uts;
+
+}
diff --git a/nz-admin/src/main/java/com/nis/modules/sys/service/SysUserPrefService.java b/nz-admin/src/main/java/com/nis/modules/sys/service/SysUserPrefService.java
new file mode 100644
index 00000000..82161a3f
--- /dev/null
+++ b/nz-admin/src/main/java/com/nis/modules/sys/service/SysUserPrefService.java
@@ -0,0 +1,21 @@
+package com.nis.modules.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.nis.modules.sys.entity.SysUserPreference;
+
+import java.util.Map;
+
+/**
+ * System User Preference Service
+ *
+ * @author shizhendong
+ * @date 2023-08-09
+ */
+public interface SysUserPrefService extends IService<SysUserPreference> {
+
+ Map<String, String> queryCurrentUserPrefList(String key);
+
+ void updateCurrentUserPref(Map<String, String> updateKeyValueMap);
+
+ void deleteCurrentUserPref(String key);
+}
diff --git a/nz-admin/src/main/java/com/nis/modules/sys/service/impl/SysUserPrefServiceImpl.java b/nz-admin/src/main/java/com/nis/modules/sys/service/impl/SysUserPrefServiceImpl.java
new file mode 100644
index 00000000..a39b940b
--- /dev/null
+++ b/nz-admin/src/main/java/com/nis/modules/sys/service/impl/SysUserPrefServiceImpl.java
@@ -0,0 +1,77 @@
+package com.nis.modules.sys.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.nis.common.utils.Tool;
+import com.nis.modules.sys.dao.SysUserPrefDao;
+import com.nis.modules.sys.entity.SysUserPreference;
+import com.nis.modules.sys.service.SysUserPrefService;
+import com.nis.modules.sys.shiro.ShiroUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * System User Preference Service Implement
+ *
+ * @author shizhendong
+ * @date 2023-08-09
+ */
+@Service
+public class SysUserPrefServiceImpl extends ServiceImpl<SysUserPrefDao, SysUserPreference> implements SysUserPrefService {
+
+ @Override
+ public Map<String, String> queryCurrentUserPrefList(String key) {
+ // current login user
+ LambdaQueryWrapper<SysUserPreference> queryWrapper = new LambdaQueryWrapper<SysUserPreference>()
+ .eq(SysUserPreference::getUid, ShiroUtils.getUserId().intValue());
+
+ if (Tool.StrUtil.isNotEmpty(key)) {
+ queryWrapper.in(SysUserPreference::getPrefKey, Tool.StrUtil.split(key, ","));
+ }
+
+ // query list
+ List<SysUserPreference> userPrefList = this.list(queryWrapper);
+
+ // return Map format
+ Map<String, String> userPrefMap = userPrefList.stream()
+ .collect(Collectors.toMap(SysUserPreference::getPrefKey, SysUserPreference::getPrefValue));
+ return userPrefMap;
+ }
+
+ @Override
+ public void updateCurrentUserPref(Map<String, String> updateKeyValueMap) {
+ // remove
+ this.remove(new LambdaQueryWrapper<SysUserPreference>()
+ .eq(SysUserPreference::getUid, ShiroUtils.getUserId().intValue())
+ .in(SysUserPreference::getPrefKey, updateKeyValueMap.keySet()));
+
+ // insert
+ List<SysUserPreference> saveBatchList = Tool.ListUtil.list(true);
+ for (Map.Entry<String, String> entry : updateKeyValueMap.entrySet()) {
+ SysUserPreference sysUserPreference = new SysUserPreference();
+ sysUserPreference.setUid(ShiroUtils.getUserId().intValue());
+ sysUserPreference.setPrefKey(entry.getKey());
+ sysUserPreference.setPrefValue(entry.getValue());
+ sysUserPreference.setUts(System.currentTimeMillis());
+ saveBatchList.add(sysUserPreference);
+ }
+ this.saveBatch(saveBatchList);
+ }
+
+ @Override
+ public void deleteCurrentUserPref(String key) {
+ // current login user
+ LambdaQueryWrapper<SysUserPreference> queryWrapper = new LambdaQueryWrapper<SysUserPreference>()
+ .eq(SysUserPreference::getUid, ShiroUtils.getUserId().intValue());
+
+ if (Tool.StrUtil.isNotEmpty(key)) {
+ queryWrapper.in(SysUserPreference::getPrefKey, Tool.StrUtil.split(key, ","));
+ }
+
+ // remove
+ this.remove(queryWrapper);
+ }
+}
diff --git a/nz-admin/src/main/java/com/nis/modules/sys/service/impl/SysUserServiceImpl.java b/nz-admin/src/main/java/com/nis/modules/sys/service/impl/SysUserServiceImpl.java
index 8266be9c..391aad0f 100644
--- a/nz-admin/src/main/java/com/nis/modules/sys/service/impl/SysUserServiceImpl.java
+++ b/nz-admin/src/main/java/com/nis/modules/sys/service/impl/SysUserServiceImpl.java
@@ -23,10 +23,7 @@ import com.nis.modules.dashboard.entity.VisualDashboard;
import com.nis.modules.dashboard.service.VisualDashboardService;
import com.nis.modules.sys.dao.SysRoleDao;
import com.nis.modules.sys.dao.SysUserDao;
-import com.nis.modules.sys.entity.SysApiKey;
-import com.nis.modules.sys.entity.SysRoleEntity;
-import com.nis.modules.sys.entity.SysUserEntity;
-import com.nis.modules.sys.entity.SysUserRoleEntity;
+import com.nis.modules.sys.entity.*;
import com.nis.modules.sys.service.*;
import com.nis.modules.sys.shiro.ShiroUtils;
import org.apache.commons.collections.CollectionUtils;
@@ -38,7 +35,6 @@ import org.apache.shiro.session.Session;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.support.DefaultSubjectContext;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
@@ -70,9 +66,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserDao, SysUserEntity> i
private RedisTemplate redisTemplate;
@Autowired
- private RedisConnectionFactory factory;
-
- @Autowired
private SysConfigService sysConfigService;
@Autowired
@@ -93,6 +86,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserDao, SysUserEntity> i
@Autowired
private AlertRuleService alertRuleService;
+ @Autowired
+ private SysUserPrefService sysUserPrefService;
+
+ @Autowired
+ private SysUserStarredService sysUserStarredService;
+
@Override
public PageUtils queryPage(Map<String, Object> params) {
String ids = (String) params.get("ids");
@@ -366,6 +365,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserDao, SysUserEntity> i
// 删除相关 sys_api_key
sysApiKeyService.remove(new LambdaUpdateWrapper<SysApiKey>().in(SysApiKey::getCreateBy, idList));
+ // sys user starred
+ sysUserStarredService.remove(new LambdaQueryWrapper<SysUserStarredEntity>().in(SysUserStarredEntity::getUid, idList));
+
+ // sys user preference
+ sysUserPrefService.remove(new LambdaQueryWrapper<SysUserPreference>().in(SysUserPreference::getUid, idList));
+
// 删除 redis 中 用户token 信息
List<String> removeKeys = new ArrayList<>();
List<Long> userIdList = new ArrayList<>(split.length);
diff --git a/nz-admin/src/main/resources/db/V2023.08.09.1__create table sys_user_preference.sql b/nz-admin/src/main/resources/db/V2023.08.09.1__create table sys_user_preference.sql
new file mode 100644
index 00000000..5277bb71
--- /dev/null
+++ b/nz-admin/src/main/resources/db/V2023.08.09.1__create table sys_user_preference.sql
@@ -0,0 +1,21 @@
+/**
+ * create table sys_user_preference
+ */
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for sys_user_preference
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_user_preference`;
+CREATE TABLE `sys_user_preference` (
+ `id` int(10) NOT NULL AUTO_INCREMENT,
+ `uid` int(10) NOT NULL COMMENT '用户ID',
+ `pref_key` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '偏好配置项',
+ `pref_value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '偏好配置值',
+ `uts` bigint(20) NOT NULL COMMENT '时间戳',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+
+SET FOREIGN_KEY_CHECKS = 1;
diff --git a/nz-common/src/main/java/com/nis/common/utils/TypeEnum.java b/nz-common/src/main/java/com/nis/common/utils/TypeEnum.java
index 883e3863..4df05e48 100644
--- a/nz-common/src/main/java/com/nis/common/utils/TypeEnum.java
+++ b/nz-common/src/main/java/com/nis/common/utils/TypeEnum.java
@@ -15,7 +15,7 @@ public enum TypeEnum {
ASSETTYPECONF("asset type conf"), EXPRESSIONTMPL("expression tmpl"), ASSETBRAND("asset brand"),
SNMPCREDENTIAL("snmp credential"), LICENSE("license"), SYSTEMAPIKEY("sys api key"),I18N("i18n"),CTL("ctl"),IPAMSUBNET("ipam subnet"),
IPAMIP("ipam ip"),RECORD_RULE("record rule"), ISSUERECORD("issue record"), ISSUEACTIVITY("issue activity"), SYSFILE("sys file"), ASSETCOMMENT("asset comment"),
- VSYS("vsys"), TERMINAL("terminal"),INTEGRATION("integration");
+ VSYS("vsys"), TERMINAL("terminal"), INTEGRATION("integration"), SYS_USER_PREFERENCE("sys user preference");
private String value;