Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
elleai
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tech
E
ellehuis-group
backend
elleai
Commits
5fcbcd61
Commit
5fcbcd61
authored
Oct 23, 2024
by
陈立彬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
后管系统用户登录
parent
b5b2c7ad
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
391 additions
and
3 deletions
+391
-3
AuthController.java
...ava/cn/breeze/elleai/controller/admin/AuthController.java
+22
-1
SysUserResponseModel.java
.../domain/sparring/model/response/SysUserResponseModel.java
+67
-0
SysUserService.java
...n/breeze/elleai/domain/system/service/SysUserService.java
+17
-0
SysUserServiceImpl.java
...eeze/elleai/domain/system/service/SysUserServiceImpl.java
+32
-0
SysUserEntity.java
...ain/java/cn/breeze/elleai/infra/entity/SysUserEntity.java
+88
-0
SysUserTableDef.java
.../cn/breeze/elleai/infra/entity/table/SysUserTableDef.java
+106
-0
SysUserMapper.java
...ain/java/cn/breeze/elleai/infra/mapper/SysUserMapper.java
+16
-0
IkMD5Utils.java
src/main/java/cn/breeze/elleai/util/IkMD5Utils.java
+41
-0
JwtUtil.java
src/main/java/cn/breeze/elleai/util/JwtUtil.java
+2
-2
No files found.
src/main/java/cn/breeze/elleai/controller/admin/AuthController.java
View file @
5fcbcd61
...
@@ -6,8 +6,14 @@ import cn.breeze.elleai.application.dto.request.PageRequest;
...
@@ -6,8 +6,14 @@ import cn.breeze.elleai.application.dto.request.PageRequest;
import
cn.breeze.elleai.application.dto.request.UserLoginRequest
;
import
cn.breeze.elleai.application.dto.request.UserLoginRequest
;
import
cn.breeze.elleai.application.dto.response.PagePermissionResult
;
import
cn.breeze.elleai.application.dto.response.PagePermissionResult
;
import
cn.breeze.elleai.application.dto.response.UserLoginResult
;
import
cn.breeze.elleai.application.dto.response.UserLoginResult
;
import
cn.breeze.elleai.domain.sparring.model.response.SysUserResponseModel
;
import
cn.breeze.elleai.domain.system.service.SysUserService
;
import
cn.breeze.elleai.exception.InternalException
;
import
cn.breeze.elleai.util.IkMD5Utils
;
import
cn.breeze.elleai.util.JwtUtil
;
import
cn.breeze.elleai.util.JwtUtil
;
import
cn.breeze.elleai.util.UserPrincipal
;
import
cn.breeze.elleai.util.UserPrincipal
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.alibaba.fastjson2.JSONObject
;
import
io.swagger.v3.oas.annotations.Operation
;
import
io.swagger.v3.oas.annotations.Operation
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
...
@@ -27,14 +33,29 @@ import org.springframework.web.bind.annotation.*;
...
@@ -27,14 +33,29 @@ import org.springframework.web.bind.annotation.*;
@RequiredArgsConstructor
@RequiredArgsConstructor
public
class
AuthController
{
public
class
AuthController
{
private
final
SysUserService
sysUserService
;
@Operation
(
summary
=
"用户登录"
)
@Operation
(
summary
=
"用户登录"
)
@PostMapping
(
value
=
"/oauth/login"
)
@PostMapping
(
value
=
"/oauth/login"
)
public
ApiResponse
<
UserLoginResult
>
login
(
@RequestBody
UserLoginRequest
request
)
{
public
ApiResponse
<
UserLoginResult
>
login
(
@RequestBody
UserLoginRequest
request
)
{
UserLoginResult
result
=
new
UserLoginResult
();
UserLoginResult
result
=
new
UserLoginResult
();
String
token
=
JwtUtil
.
generateToken
(
request
.
getUserName
(),
request
.
getPassword
());
SysUserResponseModel
user
=
sysUserService
.
findByUsername
(
request
.
getUserName
());
if
(
ObjectUtil
.
isNull
(
user
))
{
log
.
error
(
"账号:{},不存在!"
,
request
.
getUserName
());
throw
new
InternalException
(
1000
,
"用户不存在"
);
}
if
(!
StrUtil
.
equals
(
user
.
getPassword
(),
IkMD5Utils
.
md5
(
request
.
getPassword
())))
{
throw
new
InternalException
(
1000
,
"账号或密码错误"
);
}
String
token
=
JwtUtil
.
generateToken
(
request
.
getUserName
(),
request
.
getPassword
(),
user
.
getId
());
result
.
setToken
(
token
);
result
.
setToken
(
token
);
result
.
setUserName
(
request
.
getUserName
());
result
.
setUserName
(
request
.
getUserName
());
result
.
setNickName
(
user
.
getNickName
());
result
.
setAvatar
(
user
.
getAvatar
());
result
.
setUserId
(
String
.
valueOf
(
user
.
getId
()));
return
ApiResponse
.
ok
(
result
);
return
ApiResponse
.
ok
(
result
);
}
}
...
...
src/main/java/cn/breeze/elleai/domain/sparring/model/response/SysUserResponseModel.java
0 → 100644
View file @
5fcbcd61
package
cn
.
breeze
.
elleai
.
domain
.
sparring
.
model
.
response
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.Date
;
@Data
public
class
SysUserResponseModel
implements
Serializable
{
private
Long
id
;
/**
* 系统用户账号
*/
private
String
username
;
/**
* 昵称
*/
private
String
mobile
;
/**
* 昵称
*/
private
String
email
;
/**
* 系统用户密码(加密的)
*/
private
String
password
;
/**
* 昵称
*/
private
String
nickName
;
/**
* 头像
*/
private
String
avatar
;
/**
* 系统用户salt
*/
private
String
salt
;
/**
* 系统用户状态 1启用,0禁用
*/
private
Integer
status
;
/**
* 是否删除
*/
private
Integer
deleted
;
/**
* 创建时间
*/
private
Date
createAt
;
/**
* 更新时间
*/
private
Date
updateAt
;
}
src/main/java/cn/breeze/elleai/domain/system/service/SysUserService.java
0 → 100644
View file @
5fcbcd61
package
cn
.
breeze
.
elleai
.
domain
.
system
.
service
;
import
cn.breeze.elleai.domain.sparring.model.response.SysUserResponseModel
;
import
cn.breeze.elleai.infra.entity.KbEntity
;
import
cn.breeze.elleai.infra.entity.SysUserEntity
;
import
com.mybatisflex.core.service.IService
;
/**
* 服务层。
*
* @author breeze
* @since 2024-10-21
*/
public
interface
SysUserService
extends
IService
<
SysUserEntity
>
{
SysUserResponseModel
findByUsername
(
String
username
);
}
src/main/java/cn/breeze/elleai/domain/system/service/SysUserServiceImpl.java
0 → 100644
View file @
5fcbcd61
package
cn
.
breeze
.
elleai
.
domain
.
system
.
service
;
import
cn.breeze.elleai.domain.sparring.model.response.KbVectorResponseModel
;
import
cn.breeze.elleai.domain.sparring.model.response.SysUserResponseModel
;
import
cn.breeze.elleai.infra.entity.SysUserEntity
;
import
cn.breeze.elleai.infra.mapper.SysUserMapper
;
import
com.mybatisflex.core.query.QueryWrapper
;
import
com.mybatisflex.spring.service.impl.ServiceImpl
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
static
cn
.
breeze
.
elleai
.
infra
.
entity
.
table
.
SysUserTableDef
.
SYS_USER_ENTITY
;
/**
* 服务层实现。
*
* @author breeze
* @since 2024-10-21
*/
@Service
@RequiredArgsConstructor
public
class
SysUserServiceImpl
extends
ServiceImpl
<
SysUserMapper
,
SysUserEntity
>
implements
SysUserService
{
private
final
SysUserMapper
sysUserMapper
;
@Override
public
SysUserResponseModel
findByUsername
(
String
username
)
{
QueryWrapper
queryWrapper
=
QueryWrapper
.
create
()
.
where
(
SYS_USER_ENTITY
.
USERNAME
.
eq
(
username
));
return
sysUserMapper
.
selectOneByQueryAs
(
queryWrapper
,
SysUserResponseModel
.
class
);
}
}
src/main/java/cn/breeze/elleai/infra/entity/SysUserEntity.java
0 → 100644
View file @
5fcbcd61
package
cn
.
breeze
.
elleai
.
infra
.
entity
;
import
com.mybatisflex.annotation.Id
;
import
com.mybatisflex.annotation.KeyType
;
import
com.mybatisflex.annotation.Table
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 实体类。
*
* @author breeze
* @since 2024-09-18
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table
(
"sys_user"
)
public
class
SysUserEntity
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
@Id
(
keyType
=
KeyType
.
Auto
)
private
Long
id
;
/**
* 系统用户账号
*/
private
String
username
;
/**
* 昵称
*/
private
String
mobile
;
/**
* 昵称
*/
private
String
email
;
/**
* 系统用户密码(加密的)
*/
private
String
password
;
/**
* 昵称
*/
private
String
nickName
;
/**
* 头像
*/
private
String
avatar
;
/**
* 系统用户salt
*/
private
String
salt
;
/**
* 系统用户状态 1启用,0禁用
*/
private
Integer
status
;
/**
* 是否删除
*/
private
Integer
deleted
;
/**
* 创建时间
*/
private
Date
createAt
;
/**
* 更新时间
*/
private
Date
updateAt
;
}
src/main/java/cn/breeze/elleai/infra/entity/table/SysUserTableDef.java
0 → 100644
View file @
5fcbcd61
package
cn
.
breeze
.
elleai
.
infra
.
entity
.
table
;
import
com.mybatisflex.core.query.QueryColumn
;
import
com.mybatisflex.core.table.TableDef
;
import
java.io.Serial
;
/**
* 表定义层。
*
* @author breeze
* @since 2024-09-18
*/
public
class
SysUserTableDef
extends
TableDef
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
*
*/
public
static
final
SysUserTableDef
SYS_USER_ENTITY
=
new
SysUserTableDef
();
public
final
QueryColumn
ID
=
new
QueryColumn
(
this
,
"id"
);
/**
* 系统用户编号
*/
public
final
QueryColumn
USERNAME
=
new
QueryColumn
(
this
,
"username"
);
/**
* 手机号
*/
public
final
QueryColumn
MOBILE
=
new
QueryColumn
(
this
,
"mobile"
);
/**
* 邮箱
*/
public
final
QueryColumn
EMAIL
=
new
QueryColumn
(
this
,
"email"
);
/**
* 手机号
*/
public
final
QueryColumn
PASSWORD
=
new
QueryColumn
(
this
,
"password"
);
/**
* 昵称
*/
public
final
QueryColumn
NICKNAME
=
new
QueryColumn
(
this
,
"nick_name"
);
/**
* 头像
*/
public
final
QueryColumn
AVATAR
=
new
QueryColumn
(
this
,
"avatar"
);
/**
*
*/
public
final
QueryColumn
SALT
=
new
QueryColumn
(
this
,
"salt"
);
/**
* 状态(0禁用 1启用)
*/
public
final
QueryColumn
STATUS
=
new
QueryColumn
(
this
,
"status"
);
/**
* 是否删除(0否 1是)
*/
public
final
QueryColumn
DELETED
=
new
QueryColumn
(
this
,
"deleted"
);
/**
* 创建时间
*/
public
final
QueryColumn
CREATE_AT
=
new
QueryColumn
(
this
,
"create_at"
);
/**
* 更新时间
*/
public
final
QueryColumn
UPDATE_AT
=
new
QueryColumn
(
this
,
"update_at"
);
/**
* 所有字段。
*/
public
final
QueryColumn
ALL_COLUMNS
=
new
QueryColumn
(
this
,
"*"
);
/**
* 默认字段,不包含逻辑删除或者 large 等字段。
*/
public
final
QueryColumn
[]
DEFAULT_COLUMNS
=
new
QueryColumn
[]{
ID
,
USERNAME
,
MOBILE
,
EMAIL
,
PASSWORD
,
NICKNAME
,
AVATAR
,
SALT
,
STATUS
,
DELETED
,
CREATE_AT
,
UPDATE_AT
};
public
SysUserTableDef
()
{
super
(
""
,
"sys_user"
);
}
private
SysUserTableDef
(
String
schema
,
String
name
,
String
alisa
)
{
super
(
schema
,
name
,
alisa
);
}
public
SysUserTableDef
as
(
String
alias
)
{
String
key
=
getNameWithSchema
()
+
"."
+
alias
;
return
getCache
(
key
,
k
->
new
SysUserTableDef
(
""
,
"sys_user"
,
alias
));
}
}
src/main/java/cn/breeze/elleai/infra/mapper/SysUserMapper.java
0 → 100644
View file @
5fcbcd61
package
cn
.
breeze
.
elleai
.
infra
.
mapper
;
import
cn.breeze.elleai.infra.entity.SysUserEntity
;
import
com.mybatisflex.core.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 映射层。
*
* @author breeze
* @since 2024-10-21
*/
@Mapper
public
interface
SysUserMapper
extends
BaseMapper
<
SysUserEntity
>
{
}
src/main/java/cn/breeze/elleai/util/IkMD5Utils.java
0 → 100644
View file @
5fcbcd61
package
cn
.
breeze
.
elleai
.
util
;
import
cn.breeze.elleai.exception.InternalException
;
import
java.math.BigInteger
;
import
java.nio.charset.StandardCharsets
;
import
java.security.MessageDigest
;
import
java.security.NoSuchAlgorithmException
;
public
class
IkMD5Utils
{
public
static
String
stringToMD5
(
String
plainText
)
{
byte
[]
secretBytes
;
try
{
secretBytes
=
MessageDigest
.
getInstance
(
"md5"
).
digest
(
plainText
.
getBytes
(
StandardCharsets
.
UTF_8
));
}
catch
(
Exception
e
)
{
throw
new
InternalException
(
2000
,
"转MD5失败,明文={"
+
plainText
+
"}错误={"
+
e
+
"}"
);
}
StringBuilder
md5code
=
new
StringBuilder
(
new
BigInteger
(
1
,
secretBytes
).
toString
(
16
));
while
(
md5code
.
length
()
<
32
)
{
md5code
.
insert
(
0
,
"0"
);
}
return
md5code
.
toString
().
toUpperCase
();
}
public
static
String
md5
(
String
password
)
{
StringBuilder
sb
=
null
;
try
{
MessageDigest
md
=
MessageDigest
.
getInstance
(
"MD5"
);
md
.
update
(
password
.
getBytes
());
byte
[]
bytes
=
md
.
digest
();
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
bytes
.
length
;
i
++)
{
sb
.
append
(
Integer
.
toString
((
bytes
[
i
]
&
0xff
)
+
0x100
,
16
).
substring
(
1
));
}
}
catch
(
NoSuchAlgorithmException
e
)
{
throw
new
InternalException
(
2000
,
"密码MD5失败"
);
}
return
sb
.
toString
();
}
}
src/main/java/cn/breeze/elleai/util/JwtUtil.java
View file @
5fcbcd61
...
@@ -80,13 +80,13 @@ public class JwtUtil {
...
@@ -80,13 +80,13 @@ public class JwtUtil {
}));
}));
}
}
public
static
String
generateToken
(
String
userName
,
String
password
)
{
public
static
String
generateToken
(
String
userName
,
String
password
,
Long
userId
)
{
String
token
=
null
;
String
token
=
null
;
Long
expireTime
=
1000
*
24
*
60
*
60
*
1000L
;
Long
expireTime
=
1000
*
24
*
60
*
60
*
1000L
;
Date
expiresAt
=
new
Date
(
System
.
currentTimeMillis
()+
expireTime
);
Date
expiresAt
=
new
Date
(
System
.
currentTimeMillis
()+
expireTime
);
token
=
JWT
.
create
()
token
=
JWT
.
create
()
.
withIssuer
(
"oss"
)
.
withIssuer
(
"oss"
)
.
withClaim
(
"userId"
,
UUID
.
randomUUID
().
toString
(
true
))
.
withClaim
(
"userId"
,
String
.
valueOf
(
userId
))
.
withClaim
(
"userName"
,
userName
)
.
withClaim
(
"userName"
,
userName
)
.
withClaim
(
"position"
,
""
)
.
withClaim
(
"position"
,
""
)
.
withClaim
(
"jobTitle"
,
""
)
.
withClaim
(
"jobTitle"
,
""
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment