今日指数day8实战补充用户管理模块(下)

ps : 由于前端将userId封装为BigInt类型 , 导致有精度损失, 传入的userId不正确 , 部分功能无法正确实现 , 但是代码已经完善

1.4 更新用户角色信息接口说明

1)原型效果

在这里插入图片描述

2)接口说明
功能描述:更新用户角色信息
服务路径:/user/roles
服务方法:Put

请求参数格式:

{"userId": 1247078461865070592,"roleIds": [1237258113002901515,1245949043784421376]
}

响应数据格式:

{"code": 1,"msg": "操作成功"
}

代码实现

1. 表现层
    /*** 更新用户角色信息* @param putRoleReqVo* @return*/@PutMapping("/user/roles")public R<String> putRoles(@RequestBody PutRoleReqVo putRoleReqVo , HttpServletRequest request){return UserService.putRoleReqVo(putRoleReqVo,request);}
2. 服务层
    R<String> putRoleReqVo(PutRoleReqVo putRoleReqVo, HttpServletRequest request);
    @Overridepublic R<String> putRoleReqVo(PutRoleReqVo putRoleReqVo, HttpServletRequest request) {// 获取该用户数据Long userId = Long.valueOf(putRoleReqVo.getUserId());List<Long> roleIds = putRoleReqVo.getRoleIds();// 查询该用户所拥有的角色信息List<Long> userRoleList =  sysUserRoleMapper.getRole(userId);//        // 获取所有要删除的和要添加的
//        for (Long roleId : roleIds) {
//            // 如果数据存在
//            if (userRoleList.contains(roleId)){
//                continue;
//            }else {
//                delIDs.add(roleId);
//            }
//        }
//
//        for (Long roleID : userRoleList) {
//            if (roleIds.contains(roleID)){
//                continue;
//            }else {
//                addIDs.add(roleID);
//            }
//        }List<Long> delIDs = roleIds.stream().filter(item -> !userRoleList.contains(item)).collect(Collectors.toList());List<Long> addIDs = userRoleList.stream().filter(item -> !roleIds.contains(item)).collect(Collectors.toList());if (delIDs != null){// 执行删除操作for (Long delID : delIDs) {sysUserRoleMapper.deleteByRoleId(userId,delID);}}ArrayList<HashMap<String, Object>> data = new ArrayList<>();if (addIDs != null){// 执行添加操作for (Long addID : addIDs) {// 通过雪花算法创建idlong id = idWorker.nextId();HashMap<String, Object> map = new HashMap<>();map.put("id",id);map.put("user_id" , userId);map.put("role_id",addID);data.add(map);}int res = sysUserRoleMapper.addByRoleId(data);}return null;}
3. Dao层
List<Long> getRole(@Param("id") Long id);
    <select id="getRole" resultType="java.lang.Long">select role_id from sys_user_role where user_id = #{id};</select>

1.5 批量删除用户信息接口说明

1)原型效果

在这里插入图片描述

2)接口说明
功能描述: 批量删除用户信息,delete请求可通过请求体携带数据
服务路径:/user
服务方法:Delete

请求数据格式:

 [1473296822679244800,1473296022544453632]

接口提示:请求参数:@RequestBody List userIds

响应数据格式:

{"code": 1,"msg": "操作成功"
}

代码实现

1. 表现层
    /*** 删除用户*/@DeleteMapping("/user")public R<String> delRoles(@PathVariable ArrayList rolesList){return UserService.delRoles(rolesList);}
2. 服务层
R<String> delRoles(ArrayList rolesList);
    @Overridepublic R<String> delRoles(ArrayList rolesList) {// 执行删除操作int res = sysRoleMapper.delUser(rolesList);if (res > 0){log.info("删除成功");}else {log.error("删除失败");return R.error(ResponseCode.ERROR.getMessage());}return R.ok("操作成功");}
3. Dao层
int delUser(@Param("rolesList") ArrayList rolesList);
    <delete id="delUser">update sys_userset deleted = 0where sys_user.id =<foreach collection="rolesList" item="role" open="(" separator="," close=")">#{role}</foreach></delete>

1.6 根据用户id查询用户信息

1)原型效果

在这里插入图片描述

2)接口说明
功能描述: 根据用户id查询用户信息
服务路径:/api/user/info/{userId}
服务方法:Get
请求参数:String id

响应数据格式:

{"code": 1,"data": {"id": "1247515643591397376","username": "admin123","phone": "13699999999","nickName": "admin测试","realName": "admin测试","sex": 1,"status": 1,"email": "admin123@qq.com"}
}

代码实现

1. 表现层
    /*** 根据用户id查询用户信息* @param userId* @return*/@GetMapping("/user/info/{userId}")public R<HashMap<String,Object>> getUserMsg(@PathVariable String userId){return UserService.getUserMsg(userId);}
2. 服务层
R<HashMap<String, Object>> getUserMsg(String userId);
    @Overridepublic R<HashMap<String, Object>> getUserMsg(String userId) {Long user_id = Long.valueOf(userId);// 查询用户数据HashMap<String,Object> user_data= sysUserMapper.getUserMsg(user_id);return R.ok(user_data);}
3. Dao层
HashMap<String, Object> getUserMsg(@Param("userId") Long userId);
    <select id="getUserMsg" resultType="java.util.HashMap">select id, username,  phone, real_name as realName, nick_name as nickName, email, status, sexfrom sys_userwhere id = #{userId}</select>

1.7 更新用户信息

1)原型效果

在这里插入图片描述

2)接口说明
功能描述: 根据id更新用户基本信息
服务路径:/api/user
服务方法:PUT

请求参数格式:

{id: 123456789username: 'zhangsan'phone: '18811023034'email: '345@163.com'nickName: '老王'realName: '王五'sex: '1'createWhere: '1'status: '1'
}

响应数据格式:

 {    "code": 1,    "msg": "操作成功"}

代码实现

1. 表现层
    /*** 更新用户信息* @param userDataDomain* @return*/@PutMapping("/user")public R<String> updataUser(@RequestBody UserDataDomain userDataDomain){return UserService.updataUser(userDataDomain);}
2. 服务层
R<String> updataUser(UserDataDomain userDataDomain);
    @Overridepublic R<String> updataUser(UserDataDomain userDataDomain) {// 更新数据int res = sysUserMapper.updataUser(userDataDomain);if (res > 0){log.info("删除成功");}else {log.error("删除失败");return R.error(ResponseCode.ERROR.getMessage());}return R.ok("操作成功");}
3. Dao层
int updataUser(@Param("userDataDomain") UserDataDomain userDataDomain);
    <update id="updataUser">update sys_userset username = #{userDataDomain.username},phone = #{userDataDomain.phone} ,email = #{userDataDomain.email} , nick_name = #{userDataDomain.nickName},real_name = #{userDataDomain.realName}, sex = #{userDataDomain.sex},create_where = #{userDataDomain.createWhere} , status = #{userDataDomain.status}where sys_user.id = #{userDataDomain.id};</update>

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue-scrollto实现页面组件锚点定位

文章目录 前言背景操作指南安装及配置步骤vue组件中使用 参考文章 前言 博主介绍&#xff1a;✌目前全网粉丝3W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容&#xff1a;Java后端、大数据…

php获取远程https内容时提示 PHP Warning: copy(): Unable to find the wrapper “https“ 解决方法

异常信息&#xff1a; php -r "copy(https://getcomposer.org/installer, composer-setup.php);" PHP Warning: copy(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in Command line code on line 1 P…

鸿蒙harmonyos next flutter混合开发之开发plugin(获取操作系统版本号)

创建Plugin为my_plugin flutter create --org com.example --templateplugin --platformsandroid,ios,ohos my_plugin 创建Application为my_application flutter create --org com.example my_application flutter_application引用flutter_plugin&#xff0c;在pubspec.yam…

万界星空科技MES数据集成平台

制造执行系统MES作为连接企业上层ERP系统和现场控制系统的桥梁&#xff0c;承担了实时数据采集、处理、分析和传递的重要任务。MES数据集成平台是一个集成各类数据源&#xff0c;将数据进行整合和统一管理的系统&#xff0c;通过提供标准化接口和协议&#xff0c;实现数据的无缝…

图像分割恢复方法

传统的图像分割方法主要依赖于图像的灰度值、纹理、颜色等特征&#xff0c;通过不同的算法将图像分割成多个区域。这些方法通常可以分为以下几类&#xff1a; 1.基于阈值的方法 2.基于边缘的方法 3.基于区域的方法 4.基于聚类的方法 下面详细介绍这些方法及其示例代码。 1. 基…

《黑神话:悟空》像素版 v0.1b [PC+安卓]

游戏简介 《黑神话&#xff1a;悟空》像素版是一款由火山哥哥与林学学LinkLin合作开发的游戏。这款游戏采用了像素化的艺术风格&#xff0c;巧妙地简化并再现了《黑神话&#xff1a;悟空》中的核心玩法和经典场景。游戏不仅成功复刻了原作中的战斗系统和角色动画&#xff0c;还…

解锁 Python 嵌套字典的奥秘:高效操作与实战应用指南

文章目录 前言&#x1f340;一、 什么是 Python 字典&#xff1f;1.1 字典的语法 &#x1f340;二、 字典的基本操作2.1 字典的创建2.2 访问字典中的值2.3 添加或修改键值对2.4 删除字典中的键值对 &#x1f340;三、 字典的遍历操作3.1 遍历字典的键3.2 遍历字典的值3.3 同时遍…

【springboot】使用代码生成器快速开发

接上一项目&#xff0c;使用mybatis-plus-generator实现简易代码文件生成 在fast-demo-web模块中的pom.xml中添加mybatis-plus-generator、freemarker和Lombok依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator&…

劳动与科技、艺术结合更好提高劳动教育意义

在中小学教育中&#xff0c;劳动教育是培养学生基本生活技能和劳动习惯的重要环节。但当代的劳动教育不在单纯的劳动&#xff0c;而是劳动技能的提升与学习&#xff0c;通过学习劳动技能与实践活动&#xff0c;强化劳动教育与其他课程的融合&#xff0c;学生深刻理解劳动的意义…

draw.io 设置默认字体及添加常用字体

需求描述 draw.io 是一个比较好的开源免费画图软件。但是其添加容器或者文本框时默认的字体是 Helvetica&#xff0c;一般的期刊、会议论文或者学位论文要求的英文字体是 Times New Roman&#xff0c;中文字体是 宋体&#xff0c;所以一般需要在文本字体选项里的下拉列表选择 …

【2024】前端学习笔记13-JavaScript修改网页样式

学习笔记 1.修改网页样式1.1.修改内联样式(`style`属性)1.2.使用`cssText`属性:2.修改样式类(`classList`属性)2.1.添加和移除类名2.2.切换类名(`toggle`方法)1.修改网页样式 1.1.修改内联样式(style属性) 直接修改元素的style属性: 可以通过获取元素对象,然后直…

代码随想录 | Day29 | 回溯算法:电话号码的字母组合组合总和

代码随想录 | Day29 | 回溯算法&#xff1a;电话号码的字母组合&&组合总和 关于这个章节&#xff0c;大家最好是对递归函数的理解要比较到位&#xff0c;听着b站视频课可能呢才舒服点&#xff0c;可以先去搜一搜关于递归函数的讲解&#xff0c;理解&#xff0c;再开始…

CSS入门

文章目录 CSS入门一、CSS概述1、概述2、CSS的作用3、初体验4、CSS基础语法4、HTML引入CSS 二、选择器 ⭐️⭐️⭐️1、基本选择器2、扩展选择器3、超链接选择器 三、样式权重问题1、权重计算规则2、权重示例3、具体示例4、 !important 四、CSS常用样式1、字体和文本属性2、背景…

2530 电力电子技术

1.晶闸管 视频链接&#xff1a;2.3半控型器件-晶闸管_哔哩哔哩_bilibili 可参考文章链接&#xff1a;电力电子技术笔记&#xff08;3&#xff09;——晶闸管_双晶体管模型正反馈-CSDN博客 半控型器件&#xff1a;门极只有在导通时有用&#xff0c;在关闭时没有用 2.Boost升压…

【C++】二叉搜索树+变身 = 红黑树

&#x1f680;个人主页&#xff1a;小羊 &#x1f680;所属专栏&#xff1a;C 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 前言一、定义与性质二、红黑树节点的定义三、新增节点插入四、验证红黑树五、AVL树和红黑树比较 前言 本文仅适合了…

[3.4]【机器人运动学MATLAB实战分析】PUMA560机器人逆运动学MATLAB计算

PUMA560是六自由度关节型机器人,其6个关节都是转动副,属于6R型操作臂。各连杆坐标系如图1,连杆参数如表1所示。 图1 PUMA560机器人的各连杆坐标系 表1 PUMA560机器人的连杆参数 用代数法对其进行运动学反解。具体步骤如下: 1、求θ1 PMUMA56

MFC有三个选项:MFC ActiveX控件、MFC应用程序、MFC DLL,如何选择?

深耕AI&#xff1a;互联网行业 算法研发工程师 ​ 目录 MFC ActiveX 控件 控件的类型 标准控件 自定义控件 ActiveX控件 MFC ActiveX控件 标准/自定义控件 MFC ActiveX控件分类 3种MFC如何选择&#xff1f; MFC ActiveX控件 MFC 应用程序 MFC DLL 总结 举例说明…

低照度图像增强网络——EnlightenGAN

系列文章目录 GAN生成对抗网络介绍https://blog.csdn.net/m0_58941767/article/details/142704354?spm1001.2014.3001.5501 循环生成对抗网络——CycleGANhttps://blog.csdn.net/m0_58941767/article/details/142704671?spm1001.2014.3001.5501 目录 系列文章目录 前言 …

链表排序

目录 插入排序 LeetCode147 对链表进行插入排序 归并排序 LeetCode148 排序链表 插入排序 LeetCode147 对链表进行插入排序 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}…

深度学习中的优化方法(Momentum,AdaGrad,RMSProp,Adam)详解及调用

深度学习中常用的优化方法包括啦momentum(动量法),Adagrad(adaptive gradient自适应梯度法),RMSProp(root mean square propagation均方根传播算法),Adam(adaptive moment estimation自适应矩估计法) 指数加权平均算法 所谓指数加权平均算法是上述优化算法的基础,其作用是对历…