Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
软件工程实践2022年春W班
Followers
Project_Team4
提交
95d367c7
P
Project_Team4
项目概览
软件工程实践2022年春W班
/
Followers
/
Project_Team4
通知
10
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Project_Team4
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
95d367c7
编写于
4月 29, 2022
作者:
IIIllI
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
注册接口
上级
60e59882
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
129 addition
and
31 deletion
+129
-31
backend/src/main/java/com/nav/common/api/ResultCode.java
backend/src/main/java/com/nav/common/api/ResultCode.java
+1
-0
backend/src/main/java/com/nav/controller/LoginController.java
...end/src/main/java/com/nav/controller/LoginController.java
+6
-2
backend/src/main/java/com/nav/dao/UserDao.java
backend/src/main/java/com/nav/dao/UserDao.java
+25
-21
backend/src/main/java/com/nav/service/LoginService.java
backend/src/main/java/com/nav/service/LoginService.java
+9
-0
backend/src/main/java/com/nav/service/LoginServiceImp.java
backend/src/main/java/com/nav/service/LoginServiceImp.java
+44
-2
backend/src/main/java/com/nav/service/UserService.java
backend/src/main/java/com/nav/service/UserService.java
+4
-0
backend/src/main/java/com/nav/service/UserServiceImp.java
backend/src/main/java/com/nav/service/UserServiceImp.java
+13
-1
backend/src/main/java/com/nav/utils/PhoneNumUtils.java
backend/src/main/java/com/nav/utils/PhoneNumUtils.java
+19
-0
backend/src/main/resources/mapper/UserMapper.xml
backend/src/main/resources/mapper/UserMapper.xml
+8
-5
未找到文件。
backend/src/main/java/com/nav/common/api/ResultCode.java
浏览文件 @
95d367c7
...
...
@@ -12,6 +12,7 @@ public enum ResultCode implements IErrorCode {
VALIDATE_FAILED
(
404
,
"参数检验失败"
),
UNAUTHORIZED
(
401
,
"暂未登录或token已经过期"
),
FORBIDDEN
(
403
,
"没有相关权限"
);
private
long
code
;
private
String
message
;
...
...
backend/src/main/java/com/nav/controller/LoginController.java
浏览文件 @
95d367c7
...
...
@@ -16,17 +16,21 @@ import org.springframework.web.bind.annotation.*;
*/
@RestController
@RequestMapping
(
"login"
)
@CrossOrigin
(
origins
=
"*"
)
public
class
LoginController
{
@Autowired
private
LoginService
loginService
;
@
PostMapping
@
RequestMapping
(
path
=
"/login"
,
method
=
RequestMethod
.
POST
)
public
CommonResult
login
(
@RequestBody
LoginParam
loginParam
)
{
System
.
out
.
println
(
JSON
.
toJSONString
(
loginParam
));
System
.
out
.
println
(
JSON
.
toJSONString
(
loginService
.
login
(
loginParam
)));
return
loginService
.
login
(
loginParam
);
}
@RequestMapping
(
path
=
"/register"
,
method
=
RequestMethod
.
POST
)
public
CommonResult
register
(
@RequestBody
LoginParam
loginParam
)
{
return
loginService
.
register
(
loginParam
);
}
}
backend/src/main/java/com/nav/dao/UserDao.java
浏览文件 @
95d367c7
...
...
@@ -15,36 +15,40 @@ import org.springframework.stereotype.Repository;
@Mapper
public
interface
UserDao
{
/**
* 拆入新用户
*
* @param user
* @return
/* *
* @Description:插入新用户
* @Param: [user 用户实体类]
* @Return: int
* @Author: Lyc
* @Date: 2022/4/29 19:45
*/
public
int
insertUser
(
User
user
);
/**
* 根据id查找用户
*
* @param id
* @return
* @Description:根据id查找用户
* @Param: [id 用户id]
* @Return: int
* @Author: Lyc
* @Date: 2022/4/29 19:45
*/
public
User
selectUserByID
(
long
id
);
/**
* 根据手机号、密码查找用户
*
* @
param phoneNum
* @
param password
* @
return
/*
*
*
@Description:
根据手机号、密码查找用户
*
@Param: [phoneNum 手机号, password 密码]
* @
Return: com.nav.pojo.User
* @
Author: Lyc
* @
Date: 2022/4/29 19:46
*/
public
User
selectUser
(
@Param
(
"phoneNum"
)
String
phoneNum
,
@Param
(
"password"
)
String
password
);
public
User
selectUser
ByPhoneAndPwd
(
@Param
(
"phoneNum"
)
String
phoneNum
,
@Param
(
"password"
)
String
password
);
/**
* 根据id获取加密盐
*
* @param phoneNum
* @return
/* *
* @Description:根据手机号获取加密盐
* @Param: [phoneNum 手机号]
* @Return: com.nav.pojo.User
* @Author: Lyc
* @Date: 2022/4/29 19:47
*/
public
User
selectUserByPhoneNum
(
String
phoneNum
);
}
backend/src/main/java/com/nav/service/LoginService.java
浏览文件 @
95d367c7
...
...
@@ -14,8 +14,17 @@ public interface LoginService {
/**
* 登录接口
*
* @param loginParam
* @return
*/
public
CommonResult
login
(
LoginParam
loginParam
);
/**
* 出注册接口
*
* @param loginParam
* @return
*/
public
CommonResult
register
(
LoginParam
loginParam
);
}
backend/src/main/java/com/nav/service/LoginServiceImp.java
浏览文件 @
95d367c7
...
...
@@ -4,6 +4,7 @@ import com.nav.common.api.CommonResult;
import
com.nav.dao.UserDao
;
import
com.nav.pojo.User
;
import
com.nav.utils.JwtUtils
;
import
com.nav.utils.PhoneNumUtils
;
import
com.nav.vo.params.LoginParam
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -11,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -24,8 +27,10 @@ import java.util.Map;
@Service
public
class
LoginServiceImp
implements
LoginService
{
private
final
String
SALT
=
"EfO59d-lwgdZj@qkF52zm9IDDn9wd=1e"
;
@Autowired
private
User
Dao
userDao
;
private
User
Service
userService
;
@Autowired
private
RedisTemplate
redisTemplate
;
...
...
@@ -44,7 +49,7 @@ public class LoginServiceImp implements LoginService {
return
CommonResult
.
failed
();
}
User
user
=
user
Dao
.
selec
tUserByPhoneNum
(
phoneNum
);
User
user
=
user
Service
.
ge
tUserByPhoneNum
(
phoneNum
);
//用户不存在
if
(
user
==
null
)
{
return
CommonResult
.
failed
(
"用户未注册"
);
...
...
@@ -69,4 +74,41 @@ public class LoginServiceImp implements LoginService {
return
CommonResult
.
success
(
result
);
}
@Override
public
CommonResult
register
(
LoginParam
loginParam
)
{
String
phoneNum
=
loginParam
.
getPhoneNum
();
String
password
=
loginParam
.
getPassword
();
if
(
StringUtils
.
isBlank
(
phoneNum
)
||
StringUtils
.
isBlank
(
password
)
||
!
PhoneNumUtils
.
verifyPhoneNum
(
phoneNum
))
{
return
CommonResult
.
failed
(
"用户名或密码格式错误"
);
}
if
(
userService
.
getUserByPhoneNum
(
phoneNum
)
!=
null
)
{
return
CommonResult
.
failed
(
"账户已存在"
);
}
String
salt
=
DigestUtils
.
md5Hex
(
phoneNum
+
SALT
);
Date
now
=
new
Date
();
User
user
=
new
User
();
user
.
setPhoneNum
(
phoneNum
);
user
.
setNickname
(
"nickname"
);
user
.
setProfilePicture
(
"profilePictureUrl"
);
user
.
setPassword
(
DigestUtils
.
md5Hex
(
password
+
salt
));
user
.
setSalt
(
salt
);
user
.
setGmtCreate
(
now
);
user
.
setGmtModified
(
now
);
user
.
setUserState
(
1
);
userService
.
addUser
(
user
);
String
token
=
JwtUtils
.
generateToken
(
user
.
getId
());
Map
<
String
,
Object
>
result
=
new
HashMap
<>();
result
.
put
(
"userId"
,
user
.
getId
());
result
.
put
(
"token"
,
token
);
return
CommonResult
.
success
(
result
);
}
}
backend/src/main/java/com/nav/service/UserService.java
浏览文件 @
95d367c7
...
...
@@ -7,4 +7,8 @@ public interface UserService {
User
getUser
(
long
userID
);
User
getUser
(
String
phoneNum
,
String
password
);
int
addUser
(
User
user
);
User
getUserByPhoneNum
(
String
phoneNum
);
}
backend/src/main/java/com/nav/service/UserServiceImp.java
浏览文件 @
95d367c7
...
...
@@ -18,12 +18,24 @@ public class UserServiceImp implements UserService {
@Autowired
private
UserDao
userDao
;
@Override
public
User
getUser
(
long
userID
)
{
return
userDao
.
selectUserByID
(
userID
);
}
@Override
public
User
getUser
(
String
phoneNum
,
String
password
)
{
return
userDao
.
selectUser
(
phoneNum
,
password
);
return
userDao
.
selectUserByPhoneAndPwd
(
phoneNum
,
password
);
}
@Override
public
int
addUser
(
User
user
)
{
return
userDao
.
insertUser
(
user
);
}
@Override
public
User
getUserByPhoneNum
(
String
phoneNum
)
{
return
userDao
.
selectUserByPhoneNum
(
phoneNum
);
}
}
backend/src/main/java/com/nav/utils/PhoneNumUtils.java
0 → 100644
浏览文件 @
95d367c7
package
com.nav.utils
;
import
java.util.regex.Pattern
;
/**
* @ClassName PhoneNumUtils
* @Description: 手机号工具类
* @Author lyc
* @Date 2022/4/29 19:09
*/
public
class
PhoneNumUtils
{
public
static
boolean
verifyPhoneNum
(
String
phoneNum
)
{
if
(
Pattern
.
matches
(
"^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$"
,
phoneNum
))
{
return
true
;
}
return
false
;
}
}
backend/src/main/resources/mapper/UserMapper.xml
浏览文件 @
95d367c7
...
...
@@ -3,10 +3,10 @@
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.nav.dao.UserDao"
>
<insert
id=
"insertUser"
parameterType=
"com.nav.pojo.User"
>
<insert
id=
"insertUser"
parameterType=
"com.nav.pojo.User"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into `user` (`phone_num`, `nickname`, `profile_picture`, `password`, `salt`, `gmt_create`,
`gmt_modified`, `user_state`)
values (#{phoneNum},
'nickname', 'profile_picture_url'
, #{password}, #{salt}, #{gmtCreate}, #{gmtModified},
values (#{phoneNum},
#{nickname}, #{profilePicture}
, #{password}, #{salt}, #{gmtCreate}, #{gmtModified},
#{userState})
</insert>
...
...
@@ -14,18 +14,21 @@
select *
from `user`
where `user_id` = #{id}
limit 1
</select>
<select
id=
"selectUser"
resultType=
"com.nav.pojo.User"
>
<select
id=
"selectUser
ByPhoneAndPwd
"
resultType=
"com.nav.pojo.User"
>
select *
from `user`
where `phone_num` = #{phoneNum}
and `password` = #{password} limit 1
and `password` = #{password}
limit 1
</select>
<select
id=
"selectUserByPhoneNum"
parameterType=
"string"
resultType=
"com.nav.pojo.User"
>
select *
from `user`
where `phone_num` = #{phoneNum} limit 1
where `phone_num` = #{phoneNum}
limit 1
</select>
</mapper>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录