diff options
| author | shizhendong <[email protected]> | 2023-08-09 16:50:57 +0800 |
|---|---|---|
| committer | shizhendong <[email protected]> | 2023-08-09 16:50:57 +0800 |
| commit | d414de73db02ab44669f562aa46bd57233696d3e (patch) | |
| tree | 2df79c5e7871a36354ac4a382f994fe39a1588fb | |
| parent | 515d1308046e2d0ceb157049125b77c44492d9c0 (diff) | |
feat: NEZ-3042 新增用户偏好接口
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; |
