阅读有感重庆rcgl

news2025/1/15 12:55:45
1.json转为对应的泛型集合
List<String> resourceList = JSON.parseArray(JSON.toJSONString(obj), String.class);

2.集合转换为数组

String[] roles = (String[])resourceList.toArray(new String[0]);

3.json转换为对应的javabean

SLoginRule loginRule = (SLoginRule)JSONUtil.parseObj(this.cacheCommonDateService.getLoginRule()).toBean(SLoginRule.class);

4.校验注解

 

 

 

   * @return
     */
    @PostMapping("/login")
    public JsonObject<Object> login(@Valid LoginUserInfo userInfo, BindingResult results, HttpServletRequest request) {
        if (results.hasErrors()) {
            return new JsonErrorObject(((FieldError) Objects.requireNonNull(results.getFieldError())).getDefaultMessage());
        } else {
            SLoginRule loginRule = (SLoginRule)JSONUtil.parseObj(this.cacheDataService.getLoginRule()).toBean(SLoginRule.class);
            if (loginRule == null) {
                loginRule = this.loginRuleService.cacheData();
            }

            if (loginRule.getShowcaptcha() == 1) {
                if (StrUtil.isBlank(userInfo.getVerifyCode())) {
                    return new JsonErrorObject("验证码不能为空");
                }

                if (!this.verificationCodeService.checkCaptcha(userInfo.getVerifyCodeKey(), userInfo.getVerifyCode())) {
                    return new JsonErrorObject(this.verificationCodeService.getCaptcha(userInfo.getVerifyCodeKey()), APPEnums.CAPTCHA_ERR.getCode(), "验证码输入错误");
                }
            }

            SAuUser user = this.isAuUserService.getUserByName(userInfo.getUserName());
            if (user == null) {
                LoginStrategyService strategyService = LoginFactory.getStrategyService(this.authorUrlProperties.getLoginExtension());
                if (strategyService != null) {
                    user = strategyService.getUserInfoByUserName(userInfo.getUserName());
                }
            }

            if (user == null) {
                return new JsonErrorObject(APPEnums.ERROR.getCode(), "用户名或密码错误");
            } else {
                String originPassword;
                if ((StringUtility.isNullOrEmpty(loginRule.getFirstchange()) || loginRule.getFirstchange() == 1) && StringUtility.isNullOrEmpty(user.getLastUpdatePasswordTime())) {
                    originPassword = IdUtil.fastSimpleUUID();
                    this.cacheDataService.saveInfoToCache(this.cacheProperties.getFirstLoginAccountPrefix() + ":" + originPassword, user.getId(), this.cacheProperties.getTempCacheExpirationTime());
                    return new JsonErrorObject(originPassword, APPEnums.CHANGE_PASSWORD.getCode(), APPEnums.CHANGE_PASSWORD.getMessage());
                } else {
                    long betweenDay;
                    if (!StringUtility.isNullOrEmpty(loginRule.getChangepassword()) && loginRule.getChangepassword() > 0 && (userInfo.getIgnoreExpValid() == null || userInfo.getIgnoreExpValid() != 1)) {
                        Date lastUpdatePasswordTime = user.getLastUpdatePasswordTime();
                        if (lastUpdatePasswordTime == null) {
                            lastUpdatePasswordTime = user.getCreateTime();
                        }

                        betweenDay = DateUtil.between(lastUpdatePasswordTime, new Date(), DateUnit.DAY);
                        if (betweenDay >= (long)loginRule.getChangepassword()) {
                            String uuid = IdUtil.fastSimpleUUID();
                            SConfigSystem sConfigSystemValidity = this.sConfigSystemService.getConfigSystemByCode("com.bdsoft.rcgl.password.isLogin",null);
                            this.cacheDataService.saveInfoToCache(this.cacheProperties.getFirstLoginAccountPrefix() + ":" + uuid, user.getId(), this.cacheProperties.getTempCacheExpirationTime());
                            return new JsonErrorObjectVo(uuid,APPEnums.PWD_BE_OVERDUE.getCode(), StrUtil.format("您的密码已超过{}天未进行修改密码,请及时修改密码", new Object[]{betweenDay}),sConfigSystemValidity.getConfigValue());
                        }
                    }

                    if (loginRule.getLogintype() != null && loginRule.getLogintype() == 1) {
                        List<String> tokenIds = this.cacheDataService.getTokenIdByUseId(user.getId());
                        if (CollectionUtil.isNotEmpty(tokenIds)) {
                            boolean loginRecord = this.cacheDataService.judgeLoginAccount(userInfo.getUserName());
                            if (StringUtility.isNullOrEmpty(userInfo.getIsLogout())) {
                                if (!loginRecord) {
                                    this.cacheDataService.setLoginAccount(userInfo.getUserName(), this.cacheProperties.getTempCacheExpirationTime());
                                }

                                return new JsonErrorObject(APPEnums.FORCE_LOGIN.getCode(), userInfo.getUserName() + "用户已在线,是否强制下线");
                            }

                            if (!StringUtility.isNullOrEmpty(userInfo.getIsLogout()) && userInfo.getIsLogout() == 1) {
                                if (tokenIds != null && tokenIds.size() > 0) {
                                    this.cacheDataService.removeUserTokenByUserId(user.getId());
                                }
                            } else if (!StringUtility.isNullOrEmpty(userInfo.getIsLogout()) && userInfo.getIsLogout() == 2) {
                                return new JsonErrorObject(APPEnums.FORCE_LOGIN_NO.getCode(), "你已取消了登录操作");
                            }
                        }
                    }

                    if ((this.nodeProperties.getOpenVerification() || this.nodeProperties.getFailureTimeVerification()) && StrUtil.isNotBlank(user.getNodeId())) {
                        STreeNode treeNode = (STreeNode)this.treeNodeService.getById(user.getNodeId());
                        if (Objects.isNull(treeNode) && user.getUserType() != 4) {
                            return new JsonErrorObject("您的账号所在节点不存在,请联系管理员进行查看");
                        }

                        if (treeNode != null) {
                            if (this.nodeProperties.getOpenVerification() && treeNode.getPrivateClound() != 1) {
                                return new JsonErrorObject(StrUtil.isNotBlank(this.nodeProperties.getOpenVerificationMessage()) ? this.nodeProperties.getOpenVerificationMessage() : "您所在的节点未开通或已停用,请联系管理员进行开通!");
                            }

                            if (this.nodeProperties.getFailureTimeVerification() && user.getUserType() == 5 && treeNode.getFailureTime() != null) {
                                betweenDay = DateUtil.between(DateUtil.beginOfDay(new Date()), treeNode.getFailureTime(), DateUnit.DAY, false);
                                if (betweenDay <= 0L) {
                                    return new JsonErrorObject(StrUtil.isNotBlank(this.nodeProperties.getFailureTimeVerificationMessage()) ? this.nodeProperties.getFailureTimeVerificationMessage() : "您的账号已失效!");
                                }
                            }
                        }
                    }

                    if (this.systemConfigProperties.getFailureTimeVerification() && user.getFailureDate() != null) {
                        betweenDay = DateUtil.between(DateUtil.beginOfDay(new Date()), user.getFailureDate(), DateUnit.DAY, false);
                        if (betweenDay <= 0L) {
                            return new JsonErrorObject(StrUtil.isNotBlank(this.systemConfigProperties.getFailureTimeVerificationMessage()) ? this.systemConfigProperties.getFailureTimeVerificationMessage() : "您的账号已失效!");
                        }
                    }

                    originPassword = this.userService.getOriginPwd(userInfo.getPassWord());
                    UsernamePasswordToken token = new UsernamePasswordToken(userInfo.getUserName(), originPassword);
                    Subject currentUser = SecurityUtils.getSubject();
                    currentUser.getSession().setTimeout(-1000L);

                    try {
                        currentUser.login(token);
                    } catch (IncorrectCredentialsException var10) {
                        log.info("登录密码{}错误", userInfo.getPassWord());
                        this.userService.pwdErrorHandler(userInfo.getUserName(), loginRule);
                        if (loginRule.getShowcaptcha() == 1) {
                            return new JsonErrorObject(this.verificationCodeService.getCaptcha(userInfo.getVerifyCodeKey()), APPEnums.CAPTCHA_ERR.getCode(), "用户名或密码错误");
                        }

                        return new JsonErrorObject("用户名或密码错误");
                    }

                    this.cacheDataService.removeLoginAccount(userInfo.getUserName());
                    Map<String, Object> dataMap = this.userService.onLoginSuccess(request, currentUser);
                    return new JsonSuccessObject(dataMap, "登录成功");
                }
            }
        }
    }

5.不写泛型的操作(有空要试一试)

/**
     * 单点登录所有配置,前端通过获取参数实现跳转,前端不写死
     * @return
     */
    @ApiOperation(value = "获取单点登录相关配置")
    @PostMapping(Urls.SConfigSystem.GET_SSO_CONFIG)
    public JsonObject getSsoConfig() {
        QueryWrapper queryWrapper = new QueryWrapper();
        queryWrapper.eq("CONFIGGROUP", "singleLogin");
        List<SConfigSystem> sConfigSystemList = configSystemService.list(queryWrapper);
        Map map = new HashMap();
        for (SConfigSystem sConfigSystem : sConfigSystemList) {
            map.put(sConfigSystem.getConfigCode(), sConfigSystem);
        }
        return new JsonSuccessObject(map, "查询配置成功");
    }

66.迭代器操作可以试一试

 

 @Override
    public List<String> getRoleFunctionUrlsByRoleID(String roleID) {
        List<SAuRoleFunction> sAuRoleFunctionList = this.getRoleFunctionsByRoleID(roleID);
        List<String> stringList = new ArrayList();
        Iterator var4 = sAuRoleFunctionList.iterator();

        while(var4.hasNext()) {
            SAuRoleFunction sAuRoleFunction = (SAuRoleFunction)var4.next();
            SAuFunction sAuFunction = this.isAuFunctionService.getFunctionByID(sAuRoleFunction.getFunctionId());
            stringList.add(sAuFunction.getUrl());
        }

        return stringList;
    }

 67.可变参数,配合断言

   @Override
    public JsonObject<Object> assignFunction(String userId, String roleId, String... functionIds) {
        List<SLogDetail> sLogDetailList = new ArrayList();
        Assert.notNull(roleId, "角色ID不能为空");
        Assert.notNull(functionIds, "功能ID不能为空");
        SAuRole sAuRole = (SAuRole)this.roleService.getById(roleId);
        Assert.notNull(sAuRole, "角色不存在!");
        Set<String> newFunIdSet = new HashSet(ListUtil.toList(functionIds));
        Set<String> topFunIds = new HashSet();
        this.getTopFunId(newFunIdSet, topFunIds);
        String[] menuIds = this.getMenuIds(roleId);
        Set<String> disableFunctionIds = new HashSet();
        String menuId;
        if (menuIds != null && menuIds.length > 0) {
            String[] var10 = menuIds;
            int var11 = menuIds.length;

            for(int var12 = 0; var12 < var11; ++var12) {
                menuId = var10[var12];
                if (newFunIdSet.contains(menuId)) {
                    newFunIdSet.remove(menuId);
                } else if (!topFunIds.contains(menuId)) {
                    disableFunctionIds.add(menuId);
                }
            }
        }

        RoleFunctionStrategyService roleFunctionStrategyService = RoleFunctionFactory.getStrategyService();
        if (roleFunctionStrategyService != null && CollectionUtil.isNotEmpty(disableFunctionIds)) {
            LambdaUpdateWrapper<SAuRoleFunction> queryWrapper = new LambdaUpdateWrapper();
            queryWrapper.eq(SAuRoleFunction::getRoleId, roleId);
            queryWrapper.in(SAuRoleFunction::getFunctionId, disableFunctionIds);
            List<SAuRoleFunction> brforeDataList = this.list(queryWrapper);
            boolean remove = this.remove(queryWrapper);
            if (remove) {
                brforeDataList.forEach((sAuRoleFunction) -> {
                    List<SLogDetail> logList = LogUtil.deleteLog(sAuRoleFunction, sAuRoleFunction.getId());
                    sLogDetailList.addAll(logList);
                });
            }

            roleFunctionStrategyService.calculateFunAuthForRemove(roleId, disableFunctionIds);
            roleFunctionStrategyService.deleteFormSchemeForRole(roleId, disableFunctionIds);
            roleFunctionStrategyService.deleteFormViewForRole(roleId, disableFunctionIds);
            roleFunctionStrategyService.deleteFormExportForRole(roleId, disableFunctionIds);
        }

        if (newFunIdSet.size() == 0) {
            return new JsonSuccessObject("", sLogDetailList);
        } else {
            List<SAuRoleFunction> roleFunctionList = new ArrayList();
            Iterator var19 = newFunIdSet.iterator();

            while(var19.hasNext()) {
                menuId = (String)var19.next();
                SAuRoleFunction roleFunction = new SAuRoleFunction();
                roleFunction.setRoleId(roleId);
                roleFunction.setId(IdUtil.simpleUUID());
                roleFunction.setFunctionId(menuId);
                roleFunctionList.add(roleFunction);
            }

            boolean b = this.saveBatch(roleFunctionList);
            if (b) {
                roleFunctionList.forEach((sAuRoleFunction) -> {
                    List<SLogDetail> logList = LogUtil.saveLog(sAuRoleFunction, sAuRoleFunction.getId());
                    sLogDetailList.addAll(logList);
                });
            }

            if (roleFunctionStrategyService != null && b) {
                roleFunctionStrategyService.calculateFunAuthForSave(roleId, newFunIdSet);
//                roleFunctionStrategyService.initRolepeopleTemplateByDefault(roleId);
                List<String> nodeDefaultSchemeIds = this.dcSchemeMapper.queryNodeAuthSchemeIds(sAuRole.getNodeId(), newFunIdSet);
                if (CollectionUtil.isNotEmpty(newFunIdSet) && CollectionUtil.isNotEmpty(nodeDefaultSchemeIds)) {
                    roleFunctionStrategyService.saveDefaultFormSchemeForRole(roleId, newFunIdSet, nodeDefaultSchemeIds);
                    roleFunctionStrategyService.saveDefaultViewSchemeForRole(roleId, newFunIdSet, nodeDefaultSchemeIds);
                    roleFunctionStrategyService.saveDefaultExportSchemeForRole(roleId, newFunIdSet, nodeDefaultSchemeIds);
                }
            }

            return (JsonObject)(b ? new JsonSuccessObject("", sLogDetailList) : JsonErrorObject.ERROR);
        }
    }

 68.

 private void getTopFunId(Set<String> newFunIdSet, Set<String> topFunIds) {
        if (!CollectionUtils.isEmpty(newFunIdSet)) {
            List<SAuFunction> functions = this.isAuFunctionService.listByIds(newFunIdSet);
            if (!CollectionUtils.isEmpty(functions)) {
                Set<String> parentIds = (Set)functions.stream().filter((sAuFunction) -> {
                    String parentId = sAuFunction.getParentId();
                    boolean isTop = parentId == null || parentId.equals("-1");
                    if (isTop) {
                        topFunIds.add(sAuFunction.getId());
                    }

                    return !isTop;
                }).map(SAuFunction::getParentId).collect(Collectors.toSet());
                this.getTopFunId(parentIds, topFunIds);
            }

        }
    }

 78.可变参数

@Override
    public boolean removeRoleFunction(String roleId, String... functionIds) {
        Assert.notNull(roleId, "角色ID不可为空!");
        Assert.notNull(functionIds, "功能名称不能为空!");
        LambdaUpdateWrapper<SAuRoleFunction> queryWrapper = new LambdaUpdateWrapper();
        queryWrapper.eq(SAuRoleFunction::getRoleId, roleId);
        queryWrapper.in(SAuRoleFunction::getFunctionId, functionIds);
        return this.remove(queryWrapper);
    }

 

 68.返回一个对象

 69.转化为泛型数组

 

70.

Assert.hasText(configCode, "配置编码不能为空");

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/491561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Web项目实战】从零开始学习Web自动化测试:用Python和Selenium实现网站登录功能

B站首推&#xff01;2023最详细自动化测试合集&#xff0c;小白皆可掌握&#xff0c;让测试变得简单、快捷、可靠https://www.bilibili.com/video/BV1ua4y1V7Db 目录 1.环境搭建 2.编写测试用例 3.运行测试用例 3.1 命令行方式 3.2 集成到CI/CD流程中 4.结论 Web自动化测…

Windows安装配置Tomcat服务器教程 ——外网远程访问

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 转载自cpolar文章&#xff1a;外网访问本地Tomcat服务器【cpolar内网穿透】…

ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org‘, port=443)

问题&#xff1a; 今天在遇到了安装pytorch中的torchvision包的时候一直超时失败报错如下 ReadTimeoutError: HTTPSConnectionPool(hostfiles.pythonhosted.org, port443): Read timed out. 之前的安装的方式是&#xff1a; pip install --no-deps torchvision 解决办法&…

uni——模拟购物车(全选、全不选、步进器、结算等)

案例演示 案例代码 <template><pageBox ref="pagebox"><view class=

Java程序设计入门教程--案例:自由落体

程序模拟物体从10000米高空掉落后的反弹行为。 球体每落地一次&#xff0c;就会反弹至原高度的一半。按用户输入的弹跳次数&#xff0c;计算球体每次弹跳的高度。 实现过程&#xff1a; 1. 新建项目&#xff1b; 2. 接收 用户输入的弹跳次数&#xff1a; &#xff08;1&#…

通过Robotstudio修改机器人程序的具体方法和步骤

通过Robotstudio修改机器人程序的具体方法和步骤 基本步骤可参考以下内容: 用网线连接机器人和电脑,机器人一侧要插入LAN2口;机器人和电脑的IP地址要在同一个网段内;请求写入权限;修改程序—编译—应用;加载修改后的程序到机器人;保存Robotstudio程序到电脑端;只能修改…

超大规模视觉通用感知模型

超大规模视觉通用感知模型 通用感知模型简介与发展超大规模图像、文本主干网络多任务兼容解码网络 参考文献 通用感知模型简介与发展 通用感知模型是指一个模型解决不同的感知任务&#xff0c;应用于各种模态数据。 通用感知模型的发展脉络图如下&#xff0c;它由NLP发源&…

Visual Studio Code 和 GitHub Copilot

翻译自 Chris Dias 的博客 AI 这个话题&#xff0c;近期我们看到它被大家广泛地谈论&#xff0c;有些人很兴奋&#xff0c;也有些人表达了担忧。进步几乎每天都在发生&#xff0c;速度前所未有。每天有超过一百万的 Copilot 用户&#xff0c;如果你有机会尝试&#xff0c;你可…

简易英文统计和加密系统的设计实现(纯C语言实现,包含文件操作、注释多、易理解)

❤️作者主页&#xff1a;微凉秋意 &#x1f525;系列专栏&#xff1a;数据结构与课程设计 ✅作者简介&#xff1a;后端领域优质创作者&#x1f3c6;&#xff0c;CSDN内容合伙人&#x1f3c6;&#xff0c;阿里云专家博主&#x1f3c6; 文章目录 前言部分功能、开发环境与项目结…

十二、模块化开发

一、什么是模块化&#xff1f; 到底什么是模块化、模块化开发呢&#xff1f; 事实上模块化开发最终的目的是将程序划分成一个个小的结构&#xff1b;这个结构中编写属于自己的逻辑代码&#xff0c;有自己的作用域&#xff0c;定义变量名词时不会影响到其他的结构&#xff1b;…

上海车展:油电反转,新能源车竞争白热化

还记得2009年的上海车展&#xff0c;新能源车初来乍到&#xff0c;一共才展出47辆&#xff0c;占所有展出车辆5.12%&#xff0c;今年参展车型中&#xff0c;传统燃油车型有58款&#xff0c;新能源车有76款&#xff0c;新能源车第一次超过燃油车&#xff0c;实现油电反转。 电动…

均值滤波 附带简易code

1.概念介绍  均值滤波是典型的 线性滤波算法&#xff0c;是指用当前像素点周围nxn个像素值的均值来代替当前像素值。使用该方法遍历处理图像内的每一个像素点&#xff0c;可完成整幅图像的均值滤波。 2.基本原理  如图2-1&#xff0c;我们对第5行第5列的像素点进行均值滤波时…

D. Labyrinth(双端队列BFS)

Problem - D - Codeforces 你正在玩一款电脑游戏。其中一个关卡将你置于一个迷宫中&#xff0c;它由n行构成&#xff0c;每行包含m个单元格。每个单元格要么是空闲的&#xff0c;要么被障碍物占据。起始单元格位于第r行和第c列。在一步中&#xff0c;如果目标单元格没有被障碍物…

Codeforces-Round-826-Div-3-E-Sending-a-Sequence-Over-the-Network

title: Codeforces Round 826 (Div. 3) E. Sending a Sequence Over the Network date: 2023-04-18 20:04:57 categories: AlgorithmCodeforces tags:codeforces动态规划1600 E. Sending a Sequence Over the Network ​ 题目大意 给你一个长度为n的数组&#xff0c;问整个…

【Java 8 Time】Java8时区时间运用详解,2万字助你通关java.time包

目录 前言一、时区与时间1. 世界标准时&#xff1a;UTC、GMT、UT2. 地区时&#xff1a;Asia/Shanghai、UTC83. 时区&#xff1a;ZoneId、TimeZone4. 时间偏移量&#xff1a;ZoneOffset5. 时区简称&#xff1a;CTT、PRC 二、主要时间类1. 重要时间接口&#xff1a;Temporal2. 时…

测试用例覆盖不全面的解决方法

测试用例覆盖不全面的解决方法 问题分析 在测试用例设计过程中&#xff0c;容易出现思维受限或者需求盲区&#xff0c;我们不可能完全覆盖用户使用的所有场景&#xff0c;编写测试用例的时不可能把所有的场景都能想周全&#xff0c;把所有的场景下的情况都写成测试用例去模拟、…

SLAM论文速递:SLAM—— (2023)Amos-SLAM:一种基于视觉和几何的抗动态双阶段SLAM方法—5.05(1)

论文信息 题目&#xff1a; Amos-SLAM:An Anti-Dynamics Two-stage SLAM Approach Amos-SLAM:一种基于视觉和几何的抗动态双阶段SLAM方法论文地址&#xff1a; https://arxiv.org/pdf/2302.11747.pdf发表期刊&#xff1a; Computer Science > Robotics标签 xxxx 摘要 传统…

图神经网络:在KarateClub数据集上动手实现图神经网络

文章说明&#xff1a; 1)参考资料&#xff1a;PYG官方文档。超链。 2)博主水平不高&#xff0c;如有错误还望批评指正。 3)我在百度网盘上传了这篇文章的jupyter notebook。超链。提取码8888。 文章目录 文献阅读&#xff1a;代码实操&#xff1a; 文献阅读&#xff1a; 参考文…

基于ArkUI框架开发——图片模糊处理的实现

原文&#xff1a;基于ArkUI框架开发——图片模糊处理的实现&#xff0c;点击链接查看更多技术内容。 现在市面上有很多APP&#xff0c;都或多或少对图片有模糊上的设计&#xff0c;所以&#xff0c;图片模糊效果到底怎么实现的呢&#xff1f; 首先&#xff0c;我们来了解下模糊…

面向万物智联的应用框架的思考和探索(中)

原文&#xff1a;面向万物智联的应用框架的思考和探索&#xff08;中&#xff09;&#xff0c;点击链接查看更多技术内容。 应用框架&#xff0c;是操作系统连接开发者生态&#xff0c;实现用户体验的关键基础设施。其中&#xff0c;开发效率和运行体验是永恒的诉求&#xff0c…