yb课堂之用户注册登陆模块《六》
用户注册功能接口开发
- 注册接口开发
- MD5加密工具类封装
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.ybclass.online_ybclass.mapper.UserMapper">
<!--根据手机号查询用户信息-->
<select id="findByPhone" resultType="User">
SELECT * FROM user WHERE phone=#{phone}
</select>
<insert id="save" parameterType="User">
INSERT INTO user (name,pwd,head_img,phone,create_time)
values (#{name,jdbcType=VARCHAR},#{pwd,jdbcType=VARCHAR},#{headImg,jdbcType=VARCHAR},
#{phone,jdbcType=VARCHAR},#{createTime,jdbcType=TIMESTAMP})
</insert>
</mapper>
UserMapper.java
package net.ybclass.online_ybclass.mapper; import net.ybclass.online_ybclass.domain.User;
import org.apache.ibatis.annotations.Param; public interface UserMapper {
int save(User user);
User findByPhone(@Param("phone") String phone);
}
UserService.java
package net.ybclass.online_ybclass.service; import net.ybclass.online_ybclass.domain.User;
import java.util.Map; public interface UserService {
/**
* 新增用户
* @param userInfo
* @return
*/
int save(Map<String,String> userInfo); /**
* 根据手机号查询用户
* @param phone
* @return
*/
User findByPhone(String phone);
}
UserServiceImpl.java
package net.ybclass.online_ybclass.service.impl; import net.ybclass.online_ybclass.domain.User;
import net.ybclass.online_ybclass.mapper.UserMapper;
import net.ybclass.online_ybclass.service.UserService;
import net.ybclass.online_ybclass.utils.CommonUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.Map;
import java.util.Random; @Service
public class UserServiceImpl implements UserService {
@Autowired(required = false)
private UserMapper userMapper;
@Override
public int save(Map<String, String> userInfo) {
User user=parseToUser(userInfo);
if (user!=null){
return userMapper.save(user);
}else {
return -1;
}
} /**
* 解析map中的User对象
* @param userInfo
* @return
*/
private User parseToUser(Map<String, String> userInfo) {
if (userInfo.containsKey("phone")&&userInfo.containsKey("pwd")&&userInfo.containsKey("name")){
User user =new User();
user.setName(userInfo.get("name"));
user.setHeadImg(getRandomImg());
user.setPhone(userInfo.get("phone"));
user.setCreateTime(new Date());
String pwd=userInfo.get("pwd");
//MD5加密
user.setPwd(CommonUtils.MD5(pwd));
return user;
}
return null;
} /**
* 放在CDN上的随机头像
*/
private static final String [] headImg = {
"https://xd-video-pc-img.oss-cn-beijing.aliyuncs.com/xdclass_pro/default/head_img/12.jpeg",
"https://xd-video-pc-img.oss-cn-beijing.aliyuncs.com/xdclass_pro/default/head_img/11.jpeg",
"https://xd-video-pc-img.oss-cn-beijing.aliyuncs.com/xdclass_pro/default/head_img/13.jpeg",
"https://xd-video-pc-img.oss-cn-beijing.aliyuncs.com/xdclass_pro/default/head_img/14.jpeg",
"https://xd-video-pc-img.oss-cn-beijing.aliyuncs.com/xdclass_pro/default/head_img/15.jpeg"
}; /**
* 获取随机头像
* @return
*/
private String getRandomImg(){
int size=headImg.length;
Random random=new Random();
int index=random.nextInt(size);
return headImg[index];
}
@Override
public User findByPhone(String phone) {
return userMapper.findByPhone(phone);
}
}
CommonUtils.java
package net.ybclass.online_ybclass.utils;
public class CommonUtils {
/**
* MD5加密工具类
* @param data
* @return
*/
public static String MD5(String data) {
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
byte[] array = md.digest(data.getBytes("UTF-8"));
StringBuilder sb = new StringBuilder();
for (byte bt : array) {
sb.append(Integer.toHexString((bt & 0xFF) | 0x100).substring(1, 3));
}
return sb.toString().toUpperCase();
} catch (Exception ex) {
}
return null;
}
}
UserController.java
package net.ybclass.online_ybclass.controller; import net.ybclass.online_ybclass.service.UserService;
import net.ybclass.online_ybclass.utils.JsonData;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.Map; @RestController
@RequestMapping("/api/v1/pri/user")
public class UserController {
@Autowired(required = false)
private UserService userService;
@PostMapping("register")
public JsonData register(@RequestBody Map<String,String> userInfo){
return userService.save(userInfo)==1?JsonData.buildSuccess():JsonData.buildError("注册失败,请重试");
}
@PostMapping("find_phone")
public JsonData findByPhone(@Param("phone") String phone){
return JsonData.buildSuccess(userService.findByPhone(phone));
}
}
yb课堂之用户注册登陆模块《六》的更多相关文章
- Django之第三方登陆模块
Django之第三方登陆模块 前期准备 安装 django-allauth pip install django-allauth 注意,django-allauth 需要在 Django1.10以上版 ...
- Spring py登陆模块(包含 记录登陆时间,记录ip,增加积分)
嘛基于最近的复习准备写个关于spring登陆模块的小程序 虽然小但是五脏俱全呐 话不多说让我来介绍一下今天的登陆程序. 这些是 基于Spring JDBC 的持久层实现 基于Spring 声明事物的业 ...
- ASP.NET -- WebForm -- Cookie的使用 应用程序权限设计 权限设计文章汇总 asp.net后台管理系统-登陆模块-是否自动登陆 C# 读写文件摘要
ASP.NET -- WebForm -- Cookie的使用 ASP.NET -- WebForm -- Cookie的使用 Cookie是存在浏览器内存或磁盘上. 1. Test3.aspx文件 ...
- 登陆模块,这个是很重要的模块,有shiro和spring security专门的权限认证框架
登陆模块,这个是很重要的模块,有shiro和spring security专门的权限认证框架
- 微信小程序_(校园视)开发用户注册登陆
微信小程序_(校园视) 开发用户注册登陆 传送门 微信小程序_(校园视) 开发上传视频业务 传送门 微信小程序_(校园视) 开发视频的展示页-上 传送门 微信小程序_(校园视) 开发视频的展示页-下 ...
- Android APP 登陆模块
首先我想强调一点.这个登陆的模块最好是放在另外一个线程里面来实现.否则有可能会爆出一系列的问题, 然后再与主UI 交互.这样就不会爆ANR异常 1.对于登陆模块的.首先大体的逻辑肯定是要清晰的. ...
- java 用户注册登陆Demo
一个用户注册登陆的系统,用到了MD5加密处理密码,实现了一个简单的数据库连接池connectionPool, 实现了注册,登陆,登陆之后修改用户信息等功能,非常适合初学者 一.准备工作 数据库:MyS ...
- 微信小程序 人脸识别登陆模块
微信小程序---人脸识别登陆的实现 关键词:微信小程序 人脸识别 百度云接口 前言 这是一篇关于一个原创微信小程序开发过程的原创文章.涉及到的核心技术是微信小程序开发方法和百度云人脸识别接口.小程序的 ...
- 以用户注册功能模块为例浅谈MVC架构下的JavaWeb开发流程
JavaWeb应用开发,撇开分布式不谈,只讨论一个功能服务应用的开发,无论是使用原生的Servlet/JSP方案,还是时下的SSM架构,都有一套经过工程实践考验的最佳实践,这综合考虑了团队协作.项目管 ...
- EasyUI - 后台管理系统 - 登陆模块
效果: --- --- Html代码: <div id="login"> <p>账户:<input type="text" id= ...
随机推荐
- SR-IOV 网卡虚拟化技术
目录 文章目录 目录 PCI 与 PCIe 设备 SR-IOV 在 KVM 中启用 SR-IOV 网卡 手动挂载 VF 到虚拟机 指令方式挂载 SR-IOV 的数据包分发机制 PCI 与 PCIe 设 ...
- ❤️🔥 Solon Cloud Event 新的事务特性与应用
1.Solon Cloud Event? 是 Solon 分布式事件总线的解决方案.也是 Solon "最终一致性"分布式事务的解决方案之一 2.事务特性 事务?就是要求 Even ...
- MySQL日志文件简记
日志文件 binlog binlog主要记录了MySQL数据库执行了更改的所有操作,主要用来做主从复制,数据恢复 记录模式: Statement模式:每一条回修改数据的sql都会被记录在日志中 Row ...
- 现代农业|AIRIOT智慧农业管理解决方案
智慧农业是现代化技术在农业领域的应用和成果,其中物联网技术在促生产.保产量和降本增效方面起到了至关重要的作用.运用传感技术和软件平台系统对农业生产进行智能化平台化管理,解决掉传统农业问题的诸多痛点 ...
- docker安装MySQL8.0.35主从复制(实战保姆级)
很久没有记录了,今天有时间就记录一下最近安装遇到的问题 liunx安装docker这个是前提,就不多过述 1 准备两台服务器 10.104.13.139 10.104.13.140 2 确保liunx ...
- go 交叉编译遇到的错误, 有路由方法却找不到。
panic: 'OrderCancel' method doesn't exist in the controller Controller今天线下能正常编译,到线上却panic了.发现是自己导入了i ...
- 分享5款.NET开源免费的Redis客户端组件库
前言 今天大姚给大家分享5款.NET开源.免费的Redis客户端组件库,希望可以帮助到有需要的同学. StackExchange.Redis StackExchange.Redis是一个基于.NET的 ...
- 瑞数456vmp逆向分析
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6 ...
- knife4j/swagger救援第一现场
1.前方来报,测试环境springboot项目无法启动,现场如下: Error starting ApplicationContext. To display the auto-configurati ...
- DP Record
从 2024/5/4 往后开始记录捏. T1. 给你一棵树,定义一个集合的权值为 \(\dfrac{\sum_{x\in S}V_x}{\sum_{x\in S}C_x}\).若一个点 \(\in S ...