今日指数day8实战补充(上)
1.用户管理
1.多条件综合查询
1.1 多条件综合查询接口说明
1)原型效果
2)接口说明
功能描述:多条件综合查询用户分页信息,条件包含:分页信息 用户创建日期范围
服务路径:/api/users
服务方法:Post
请求参数格式:
{"pageNum":"1","pageSize":"20","username":"","nickName":"","startTime":"","endTime":""
}
响应数据格式:
{"code": 1,"data": {"totalRows": 12,"totalPages": 1,"pageNum": 1,"pageSize": 20,"size": 12,"rows": [{"id": 1237361915165020161,"username": "admin","password": "$2a$10$JqoiFCw4LUj184ghgynYp.4kW5BVeAZYjKqu7xEKceTaq7X3o4I4W","phone": "13888888888","realName": "小池","nickName": "超级管理员","email": "875267425@qq.com","status": 1,"sex": 1,"deleted": 1,"createId": null,"updateId": "1237361915165020161","createWhere": 1,"createTime": "2019-09-22T11:38:05.000+00:00","updateTime": "2020-04-07T10:08:52.000+00:00","createUserName": null,"updateUserName": "admin"},//.....]}
}
代码实现
1. 表现层
/*** 多条件综合查询*/@ApiOperation(value = "多条件综合查询")@PostMapping("/users")public R<UserRespVo> userManager(@RequestBody UserReqVo userReqVo){return UserService.userManager(userReqVo);}
2. 服务层
R<UserRespVo> userManager(UserReqVo userReqVo);
@Overridepublic R<UserRespVo> userManager(UserReqVo userReqVo) {// 获取分页数据Integer pageNum = Integer.parseInt(userReqVo.getPageNum());Integer pageSize = Integer.parseInt(userReqVo.getPageSize());// 获取查询条件String username = userReqVo.getUsername();String nickName = userReqVo.getNickName();String startTimeString = userReqVo.getStartTime();String endTimeString = userReqVo.getEndTime();Date startTime = null;Date endTime = null;if (!StringUtils.isBlank(startTimeString) && !StringUtils.isBlank(endTimeString)){startTime = DateTime.parse(startTimeString, DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")).toDate();endTime = DateTime.parse(endTimeString, DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")).toDate();}// 设置分页参数PageHelper.startPage(pageNum,pageSize);// 查询获得所有数据List<SysUser> allUser = sysUserMapper.getSUserByIf(username,nickName,startTime,endTime);// 分页处理PageInfo<SysUser> userInfo = new PageInfo<>(allUser);UserRespVo userRespVo = new UserRespVo(userInfo);return R.ok(userRespVo);}
3. Dao层
List<SysUser> getSUserByIf(@Param("username") String username, @Param("nickName") String nickName, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
<select id="getSUserByIf" resultType="com.jixu.stock.pojo.entity.SysUser">SELECT *FROM sys_userWHERE 1=1<if test="username != null and username != ''">AND username like concat('%' , #{username} , '%')</if><if test="nickName != null and nickName != ''">AND nick_name like concat('%' , #{nickName} , '%')</if><if test="startTime != null">AND created_time >= #{startTime}</if><if test="endTime != null">AND created_time <= #{endTime}</if></select>
1.2 添加用户接口说明
1)原型效果
2)接口说明
功能描述:添加用户信息
服务路径:/api/user
服务方法:Post
请求参数格式:
{"username":"mike","password":"20","phone":"15367945613","email":"123@qwe.cn","nickName":"jane","realName":"kangkang","sex":"1","createWhere":"1","status":"1"
}
响应参数格式:
{"code": 1,"msg": "操作成功"
}
代码实现
1. 表现层
/*** 添加用户*/@ApiOperation(value = "添加用户")@PostMapping("/user")public R<UserRespVo> addUser(@RequestBody AddUserReqVo addUserReqVo, HttpServletRequest request){return UserService.addUser(addUserReqVo , request);}
2. 服务层
R<UserRespVo> addUser(AddUserReqVo addUserReqVo, HttpServletRequest request);
@Overridepublic R<UserRespVo> addUser(AddUserReqVo addUserReqVo, HttpServletRequest request) {// 校验用户数据是否正确if (addUserReqVo == null || StringUtils.isBlank(addUserReqVo.getUsername())|| StringUtils.isBlank(addUserReqVo.getPassword())|| StringUtils.isBlank(addUserReqVo.getPhone())|| StringUtils.isBlank(addUserReqVo.getEmail())|| StringUtils.isBlank(addUserReqVo.getNickName())){return R.error(ResponseCode.DATA_ERROR.getMessage());}// 对密码进行加密String password = addUserReqVo.getPassword();String encode = passwordEncoder.encode(password);// 获取createIDHttpSession session = request.getSession();Long userId = (Long) session.getAttribute("user_id");SysUser sysUser = new SysUser();BeanUtils.copyProperties(addUserReqVo,sysUser);sysUser.setPassword(encode);sysUser.setCreateId(userId);// 获取状态性别Integer status = Integer.valueOf(addUserReqVo.getStatus());Integer sex = Integer.valueOf(addUserReqVo.getSex());sysUser.setStatus(status);sysUser.setSex(sex);int insert = sysUserMapper.insert(sysUser);if (insert > 0){log.info("用户注册成功");}else {log.error("用户注册失败");return R.error(ResponseCode.ERROR.getMessage());}return R.ok("操作成功");}
3. Dao层
int insert(SysUser record);
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.jixu.stock.pojo.entity.SysUser" useGeneratedKeys="true">insert into sys_user( id,username,password,phone,real_name,nick_name,email,status,sex,deleted,create_id,update_id,create_where,create_time,update_time)values (#{id,jdbcType=BIGINT},#{username,jdbcType=VARCHAR},#{password,jdbcType=VARCHAR},#{phone,jdbcType=VARCHAR},#{realName,jdbcType=VARCHAR},#{nickName,jdbcType=VARCHAR},#{email,jdbcType=VARCHAR},#{status,jdbcType=TINYINT},#{sex,jdbcType=TINYINT},#{deleted,jdbcType=TINYINT},#{createId,jdbcType=BIGINT},#{updateId,jdbcType=BIGINT},#{createWhere,jdbcType=TINYINT},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP})</insert>
1.3 获取用户具有的角色信息接口说明
1)原型效果
2)接口说明
功能描述:获取用户具有的角色信息,以及所有角色信息
服务路径:/user/roles/{userId}
服务方法:Get
请求参数:String userId
响应参数格式:
{
"code": 1,
"data": {"ownRoleIds": [1237258113002901515],"allRole": [{"id": 1237258113002901512,"name": "超级管理员","description": "我是超级管理员","status": 1,"createTime": "2020-01-06T15:37:45.000+00:00","updateTime": "2021-12-09T23:08:02.000+00:00","deleted": 1},{"id": 1237258113002901513,"name": "标记用户角色测试","description": "标记用户角色测试","status": 1,"createTime": "2020-01-08T02:53:35.000+00:00","updateTime": "2021-12-28T10:16:21.000+00:00","deleted": 1},//..............]
}
}
代码实现
1. 表现层
/*** 获取用户具有的角色信息*/@ApiOperation(value = "获取用户具有的角色信息")@GetMapping("/user/roles/{userId}")public R<Map<String, Object>> getRole(@PathVariable String userId){return UserService.getRole(userId);}
2. 服务层
R<Map<String, Object>> getRole(String userId);
@Overridepublic R<Map<String, Object>> getRole(String userId) {Long id = Long.valueOf(userId);// 查询获得用户角色List<Long> userRoleList = sysUserRoleMapper.getRole(id);// 查询获得所有角色信息ArrayList<SysRole> allRoleList = sysRoleMapper.getAllRole();// 封装数据HashMap<String, Object> data = new HashMap<>();data.put("ownRoleIds" , userRoleList);data.put("allRole",allRoleList);return R.ok(data);}
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>
ArrayList<SysRole> getAllRole();
<select id="getAllRole" resultType="com.jixu.stock.pojo.entity.SysRole">select id,name,description,status,create_time,update_time,deletedfrom sys_role;</select>
相关文章:

今日指数day8实战补充(上)
1.用户管理 1.多条件综合查询 1.1 多条件综合查询接口说明 1)原型效果 2)接口说明 功能描述:多条件综合查询用户分页信息,条件包含:分页信息 用户创建日期范围 服务路径:/api/users 服务方法࿱…...
Python 之进阶语法:with...as...
1. Python with…as…是什么 Python 的 with…as… 语句,就像一个贴心的管家,负责照顾你的资源,让你不再担心忘记关闭文件、网络连接或数据库事务等。这个管家在你进入“房间”时自动打开门,离开时帮你把门关上,真的是…...

嵌入式硬件设计知识详解
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
计算机网络:物理层 —— 信道及其极限容量
文章目录 信道信道的极限容量信号失真失真类型产生信号失真的主要因素 奈式准则码元传输速率香农公式 信道 信道是指信息传输的通道或介质。在通信中,信道扮演着传输信息的媒介的角色,将发送方发送的信号传递给接收方。 信道可以是无线信道,…...

面向对象特性中 继承详解
目录 概念: 定义: 定义格式 继承关系和访问限定符 基类和派生类对象赋值转换: 继承中的作用域: 派生类的默认成员函数 继承与友元: 继承与静态成员: 复杂的菱形继承及菱形虚拟继承: 虚…...

C++ | Leetcode C++题解之第455题分发饼干
题目: 题解: class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int m g.size(), n s.size();int count 0;for (int i 0, j 0; i < …...

java版基于Spring Boot + Mybatis在线招投标|评标|竞标|单一采购|询价|邀标|在线开标|招标公告发布|评审专家|招投标采购系统源码
一、项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,…...

Anaconda的安装与环境设置
文章目录 一、Anaconda介绍二、Anaconda环境搭建1. 下载Anaconda(1)官网下载(2)清华大学镜像 2. 安装Anaconda3.配置环境变量4.检验conda是否安装成功5.更改镜像源6.若菜单栏没有conda prompt 三、虚拟环境1.创建、查看、删除虚拟环境2.激活、退出虚拟环境 四、CUDA、Pytorch、…...

使用FastAPI做人工智能后端服务器时,接口内的操作不是异步操作的解决方案
在做AI模型推理的接口时,这时候接口是非异步的,但是uvicorn运行FastAPI时就会出现阻塞所有请求。 这时候需要解决这个问题: api.py: import asyncio from fastapi import FastAPI from fastapi.responses import StreamingResp…...
Leetcode 3312. Sorted GCD Pair Queries
Leetcode 3312. Sorted GCD Pair Queries 1. 解题思路2. 代码实现 题目链接:3312. Sorted GCD Pair Queries 1. 解题思路 这一题的话坦率来说没有搞定,后来是找的大佬的代码抄了一下…… 整体来说这道题思路上还是比较暴力的,还是一个二重…...
用 Delphi 做了一个简单的 CMS
Delphi 代码上面花的时间最少。 前提是你要熟悉 Delphi 的 WebBroker 框架。不熟悉也没关系,5分钟就可以入门,10分钟就熟悉了。 CMS 就是个基于 WEB 的内容管理嘛。相当于一个简单的没有跟贴功能的 BBS。这样的东西,后边是数据库࿰…...
ASK, PSK, FSK, DPSK
ASK, PSK, FSK, DPSK详解: 这四种调制方式都是数字调制技术,用于将数字信号转换成适合在信道上传输的模拟信号。它们的主要区别在于如何用模拟信号的变化来表示数字信息。 1. ASK (Amplitude Shift Keying) 幅移键控: 原理: ASK 通过改变载波信号的幅…...

【Linux】认识Linux内核中进程级别的文件结构体【files_struct】&文件IO模型初步演示
前言 大家好吖,欢迎来到 YY 滴 系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Linux》…...

[Offsec Lab] ICMP Monitorr-RCE+hping3权限提升
信息收集 IP AddressOpening Ports192.168.52.218TCP:22,80 $ nmap -p- 192.168.52.218 --min-rate 1000 -sC -sV -Pn PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 de:b5:23:89:bb:9f:d4:1…...
Studying-多线程学习Part4 - 异步并发——async future、packaged_task、promise
异步并发——async future packaged_task promise 1.async、future 是C11引入的一个函数模版,用于异步执行一个函数,并返回一个future对象,表示异步操作的结果。使用 async 可以方便地进行异步编程,避免了手动创建线程和管理线程…...
【Java基础】用Scanner类获取控制台输入
目录 Scanner类是什么导入并创建读取一个数读取字符串读取一行读取直到空白字符为止读取多个数直到^z读取一个字符 Scanner类是什么 在Java中,Scanner 是一个非常有用的类,用于从各种输入源(如键盘、文件或其他输入流)读取数据。…...

微服务seata解析部署使用全流程
官网地址: Seata 是什么? | Apache Seata 1、Seata术语 用来管理分布式事务,由阿里巴巴出品。 【1、TC (Transaction Coordinator) - 事务协调者】 用来维护事务的,包括主事务和分支事务。 【2、TM (Transaction Manager) - …...

Linux性能调优技巧
目录 前言1. CPU性能优化1.1 调整CPU调度策略1.2 合理分配多核处理 2. 内存性能优化2.1 调整内存分配策略2.2 缓存和分页优化 3. 磁盘I/O性能优化3.1 使用合适的I/O调度器3.2 磁盘分区和文件系统优化 4. 网络性能优化4.1 优化网络参数4.2 调整网络拥塞控制算法 5. 系统监控与优…...
python 实现sha1算法
sha1算法介绍 SHA-1(Secure Hash Algorithm 1,安全散列算法1)是一种密码散列函数,由美国国家安全局(NSA)设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准…...
ejb-ref元素
ejb-ref 是用于在 Java EE (现在称为 Jakarta EE) 中引用 Enterprise JavaBeans (EJB) 的一个元素,主要用于定义和配置 SLEE (Service Logic Execution Environment) 组件中的 EJB 依赖关系。通过这个引用,SBB (Service Building Block) 可以轻松地访问和…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...