Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
map-parent
Overview
Overview
Details
Activity
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
常超
map-parent
Commits
0bf1e1ad
Commit
0bf1e1ad
authored
Mar 11, 2021
by
Guojunfeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
迁移登录接口
parent
576788f0
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
688 additions
and
27 deletions
+688
-27
common/common_utils/pom.xml
+13
-0
common/common_utils/src/main/java/com/founder/commonutils/Exception/BaseException.java
+20
-0
common/common_utils/src/main/java/com/founder/commonutils/Exception/TokenException.java
+17
-0
common/common_utils/src/main/java/com/founder/commonutils/publicEntity/SysUsers.java
+40
-0
common/common_utils/src/main/java/com/founder/commonutils/util/AesEncryptUtil.java
+130
-0
common/common_utils/src/main/java/com/founder/commonutils/util/Base64Util.java
+59
-0
common/common_utils/src/main/java/com/founder/commonutils/util/JwtUser.java
+175
-0
service/publicapi/src/main/java/com/founder/publicapi/config/EduConfig.java
+29
-0
service/publicapi/src/main/java/com/founder/publicapi/controller/SysUsersController.java
+69
-0
service/publicapi/src/main/java/com/founder/publicapi/mapper/SysUsersMapper.java
+23
-0
service/publicapi/src/main/java/com/founder/publicapi/mapper/xml/SysDictitemMapper.xml
+0
-0
service/publicapi/src/main/java/com/founder/publicapi/mapper/xml/SysUsersMapper.xml
+15
-0
service/publicapi/src/main/java/com/founder/publicapi/service/SysUsersService.java
+15
-0
service/publicapi/src/main/java/com/founder/publicapi/service/serviceimpl/SysUsersServiceImpl.java
+61
-0
service/publicapi/src/main/resources/application-dev.properties
+10
-5
service/publicapi/src/main/resources/application-prod.properties
+1
-1
service/publicapi/src/main/resources/application.properties
+11
-10
service/publicapi/src/main/resources/mybatis/mybatis-config.xml
+0
-11
No files found.
common/common_utils/pom.xml
View file @
0bf1e1ad
...
...
@@ -9,4 +9,16 @@
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
common_utils
</artifactId>
<dependencies>
<dependency>
<groupId>
io.jsonwebtoken
</groupId>
<artifactId>
jjwt
</artifactId>
<version>
0.7.0
</version>
</dependency>
<dependency>
<groupId>
commons-codec
</groupId>
<artifactId>
commons-codec
</artifactId>
<version>
1.6
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
common/common_utils/src/main/java/com/founder/commonutils/Exception/BaseException.java
0 → 100644
View file @
0bf1e1ad
package
com
.
founder
.
commonutils
.
Exception
;
/**
* 描述:
* <p>
*
* @author: changchao
* @date: 2018/4/11 23:06
*/
public
class
BaseException
extends
RuntimeException
{
public
BaseException
(
String
message
)
{
super
(
message
);
}
public
BaseException
(
String
message
,
Throwable
cause
)
{
super
(
message
,
cause
);
}
}
common/common_utils/src/main/java/com/founder/commonutils/Exception/TokenException.java
0 → 100644
View file @
0bf1e1ad
package
com
.
founder
.
commonutils
.
Exception
;
/**
* 描述:
* <p>
*
* @author: changchao
* @date: 2018/4/11 10:24
*/
public
class
TokenException
extends
BaseException
{
private
static
final
long
serialVersionUID
=
1L
;
public
TokenException
(
String
message
)
{
super
(
message
);
}
}
common/common_utils/src/main/java/com/founder/commonutils/publicEntity/SysUsers.java
0 → 100644
View file @
0bf1e1ad
package
com
.
founder
.
commonutils
.
publicEntity
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModel
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
import
java.util.List
;
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@ApiModel
@TableName
(
"SYS_USERS"
)
public
class
SysUsers
{
private
String
xxzjbh
;
private
String
policemanid
;
private
String
truename
;
private
String
telephone
;
private
String
identitycard
;
private
String
unitcode
;
private
String
unitname
;
private
String
username
;
private
String
password
;
private
String
jurisdiction
;
private
Date
gxsj
;
private
String
xxlyms
;
private
String
jobname
;
private
String
lrr
;
private
String
lrdwdm
;
private
String
lrdwmc
;
private
String
gxr
;
private
String
gxdwdm
;
private
String
gxdwmc
;
private
String
role_id
;
private
List
<
String
>
permission_id
;
//登录返回用户所有权限集合
}
common/common_utils/src/main/java/com/founder/commonutils/util/AesEncryptUtil.java
0 → 100644
View file @
0bf1e1ad
package
com
.
founder
.
commonutils
.
util
;
import
org.apache.commons.codec.binary.Base64
;
import
javax.crypto.Cipher
;
import
javax.crypto.spec.IvParameterSpec
;
import
javax.crypto.spec.SecretKeySpec
;
/**
* AES 128bit 加密解密工具类
*
* @author dufy
*/
public
class
AesEncryptUtil
{
//使用AES-128-CBC加密模式,key需要为16位,key和iv可以相同!
private
static
String
KEY
=
"maplogin20200416"
;
private
static
String
IV
=
"map_vues20200416"
;
/**
* 加密方法
* @param data 要加密的数据
* @param key 加密key
* @param iv 加密iv
* @return 加密的结果
* @throws Exception
*/
public
static
String
encrypt
(
String
data
,
String
key
,
String
iv
)
throws
Exception
{
try
{
Cipher
cipher
=
Cipher
.
getInstance
(
"AES/CBC/NoPadding"
);
//"算法/模式/补码方式"NoPadding PkcsPadding
int
blockSize
=
cipher
.
getBlockSize
();
byte
[]
dataBytes
=
data
.
getBytes
();
int
plaintextLength
=
dataBytes
.
length
;
if
(
plaintextLength
%
blockSize
!=
0
)
{
plaintextLength
=
plaintextLength
+
(
blockSize
-
(
plaintextLength
%
blockSize
));
}
byte
[]
plaintext
=
new
byte
[
plaintextLength
];
System
.
arraycopy
(
dataBytes
,
0
,
plaintext
,
0
,
dataBytes
.
length
);
SecretKeySpec
keyspec
=
new
SecretKeySpec
(
key
.
getBytes
(),
"AES"
);
IvParameterSpec
ivspec
=
new
IvParameterSpec
(
iv
.
getBytes
());
cipher
.
init
(
Cipher
.
ENCRYPT_MODE
,
keyspec
,
ivspec
);
byte
[]
encrypted
=
cipher
.
doFinal
(
plaintext
);
return
new
Base64
().
encodeToString
(
encrypted
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 解密方法
* @param data 要解密的数据
* @param key 解密key
* @param iv 解密iv
* @return 解密的结果
* @throws Exception
*/
public
static
String
desEncrypt
(
String
data
,
String
key
,
String
iv
)
throws
Exception
{
try
{
byte
[]
encrypted1
=
new
Base64
().
decode
(
data
);
Cipher
cipher
=
Cipher
.
getInstance
(
"AES/CBC/NoPadding"
);
SecretKeySpec
keyspec
=
new
SecretKeySpec
(
key
.
getBytes
(),
"AES"
);
IvParameterSpec
ivspec
=
new
IvParameterSpec
(
iv
.
getBytes
());
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
keyspec
,
ivspec
);
byte
[]
original
=
cipher
.
doFinal
(
encrypted1
);
String
originalString
=
new
String
(
original
);
return
originalString
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 使用默认的key和iv加密
* @param data
* @return
* @throws Exception
*/
public
static
String
encrypt
(
String
data
)
throws
Exception
{
return
encrypt
(
data
,
KEY
,
IV
);
}
/**
* 使用默认的key和iv解密
* @param data
* @return
* @throws Exception
*/
public
static
String
desEncrypt
(
String
data
)
throws
Exception
{
return
desEncrypt
(
data
,
KEY
,
IV
);
}
/**
* 测试
*/
public
static
void
main
(
String
args
[])
throws
Exception
{
String
test1
=
"1111111111000000"
;
String
test
=
new
String
(
test1
.
getBytes
(),
"UTF-8"
);
String
data
=
null
;
String
key
=
KEY
;
String
iv
=
IV
;
// /g2wzfqvMOeazgtsUVbq1kmJawROa6mcRAzwG1/GeJ4=
data
=
encrypt
(
test
,
key
,
iv
);
System
.
out
.
println
(
"数据:"
+
test
);
System
.
out
.
println
(
"加密:"
+
data
);
String
jiemi
=
desEncrypt
(
data
,
key
,
iv
).
trim
();
System
.
out
.
println
(
"解密:"
+
jiemi
);
}
}
\ No newline at end of file
common/common_utils/src/main/java/com/founder/commonutils/util/Base64Util.java
0 → 100644
View file @
0bf1e1ad
package
com
.
founder
.
commonutils
.
util
;
import
sun.misc.BASE64Decoder
;
import
java.io.UnsupportedEncodingException
;
/**
* Base64加密,解密
*/
public
class
Base64Util
{
/**
* 将 s 进行 BASE64 编码
*
* @return String
* @author lifq
* @date 2015-3-4 上午09:24:02
*/
public
static
String
encode
(
String
s
)
{
if
(
s
==
null
)
return
null
;
String
res
=
""
;
try
{
res
=
new
sun
.
misc
.
BASE64Encoder
().
encode
(
s
.
getBytes
(
"utf-8"
));
}
catch
(
UnsupportedEncodingException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
return
res
;
}
/**
* 将 BASE64 编码的字符串 s 进行解码
*
* @return String
* @author lifq
* @date 2015-3-4 上午09:24:26
*/
public
static
String
decode
(
String
s
)
{
if
(
s
==
null
)
return
null
;
BASE64Decoder
decoder
=
new
BASE64Decoder
();
try
{
byte
[]
b
=
decoder
.
decodeBuffer
(
s
);
return
new
String
(
b
,
"utf-8"
);
}
catch
(
Exception
e
)
{
return
null
;
}
}
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
Base64Util
.
encode
(
"0"
));
System
.
out
.
println
(
Base64Util
.
decode
(
"MA=="
));
}
}
\ No newline at end of file
common/common_utils/src/main/java/com/founder/commonutils/util/JwtUser.java
0 → 100644
View file @
0bf1e1ad
package
com
.
founder
.
commonutils
.
util
;
import
com.alibaba.fastjson.JSONObject
;
import
com.founder.commonutils.Exception.TokenException
;
import
com.founder.commonutils.publicEntity.SysUsers
;
import
io.jsonwebtoken.*
;
import
org.apache.tomcat.util.http.MimeHeaders
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.crypto.spec.SecretKeySpec
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.xml.bind.DatatypeConverter
;
import
java.lang.reflect.Field
;
import
java.security.Key
;
import
java.security.SignatureException
;
import
java.util.Date
;
import
java.util.Enumeration
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @FileName: JwtUser
* @Author: changchao
* @Date: 2019/11/06 19:39
* @Description: 实现Jwt
* JWT由三部分组成,它们之间用圆点(.)连接。这三部分分别是:Header/Payload/Signature
*/
public
class
JwtUser
{
// @Value("${jwt.secret}")
public
String
base64Security
=
"bWFwLXBsYXRmb3JtLWRvbmdndWFuLTIwMTktMTEtNg=="
;
final
static
long
ttlMillis
=
1000
*
60
*
60
;
//过期时间,30分钟
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
JwtUser
.
class
);
/**
* 创建jwt
* @param sysuser 用户信息
* @return
* @throws Exception
*/
public
String
createJWT
(
String
sysuser
)
throws
Exception
{
SignatureAlgorithm
signatureAlgorithm
=
SignatureAlgorithm
.
HS256
;
//指定签名的时候使用的签名算法,也就是header那部分,jjwt已经将这部分内容封装好了。
long
nowMillis
=
System
.
currentTimeMillis
();
//生成JWT的时间
Date
now
=
new
Date
(
nowMillis
);
Map
<
String
,
Object
>
claims
=
new
HashMap
<
String
,
Object
>();
//创建payload的私有声明(根据特定的业务需要添加,如果要拿这个做验证,一般是需要和jwt的接收方提前沟通好验证方式的)
claims
.
put
(
"uid"
,
"DSSFAWDWADAS..."
);
claims
.
put
(
"user_name"
,
"admin"
);
claims
.
put
(
"nick_name"
,
"DASDA121"
);
// 生成签名密钥
byte
[]
apiKeySecretBytes
=
DatatypeConverter
.
parseBase64Binary
(
base64Security
);
//生成签名的时候使用的秘钥secret,这个方法本地封装了的,一般可以从本地配置文件中读取,
// 切记这个秘钥不能外露哦。它就是你服务端的私钥,在任何场景都不应该流露出去。
// 一旦客户端得知这个secret, 那就意味着客户端是可以自我签发jwt了。
Key
SecretKey
=
new
SecretKeySpec
(
apiKeySecretBytes
,
signatureAlgorithm
.
getJcaName
());
//下面就是在为payload添加各种标准声明和私有声明了
JwtBuilder
builder
=
Jwts
.
builder
()
//这里其实就是new一个JwtBuilder,设置jwt的body
.
setClaims
(
claims
)
//如果有私有声明,一定要先设置这个自己创建的私有的声明,这个是给builder的claim赋值,一旦写在标准的声明赋值之后,就是覆盖了那些标准的声明的
// .setId(id) //设置jti(JWT ID):是JWT的唯一标识,根据业务需要,这个可以设置为一个不重复的值,主要用来作为一次性token,从而回避重放攻击。
.
setIssuedAt
(
now
)
//iat: jwt的签发时间
.
setSubject
(
sysuser
)
//sub(Subject):代表这个JWT的主体,即它的所有人,这个是一个json格式的字符串,可以存放什么userid,roldid之类的,作为什么用户的唯一标志。
.
signWith
(
signatureAlgorithm
,
SecretKey
);
//设置签名使用的签名算法和签名使用的秘钥
if
(
ttlMillis
>=
0
)
{
long
expMillis
=
nowMillis
+
ttlMillis
;
Date
exp
=
new
Date
(
expMillis
);
builder
.
setExpiration
(
exp
);
//设置过期时间
}
return
builder
.
compact
();
//就开始压缩为xxxxxxxxxxxxxx.xxxxxxxxxxxxxxx.xxxxxxxxxxxxx这样的jwt
//打印
//eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJEU1NGQVdEV0FEQVMuLi4iLCJzdWIiOiIiLCJ1c2VyX25hbWUiOiJhZG1pbiIsIm5pY2tfbmFtZSI6IkRBU0RBMTIxIiwiZXhwIjoxNTE3ODI4MDE4LCJpYXQiOjE1MTc4Mjc5NTgsImp0aSI6Imp3dCJ9.xjIvBbdPbEMBMurmwW6IzBkS3MPwicbqQa2Y5hjHSyo
}
/**
* 解密jwt
* @param jwt
* @return
* @throws Exception
*/
public
Claims
parseJWT
(
String
jwt
){
SignatureAlgorithm
signatureAlgorithm
=
SignatureAlgorithm
.
HS256
;
// 生成签名密钥
byte
[]
apiKeySecretBytes
=
DatatypeConverter
.
parseBase64Binary
(
base64Security
);
Key
SecretKey
=
new
SecretKeySpec
(
apiKeySecretBytes
,
signatureAlgorithm
.
getJcaName
());
//签名秘钥,和生成的签名的秘钥一模一样
try
{
Claims
claims
=
Jwts
.
parser
()
//得到DefaultJwtParser
.
setSigningKey
(
SecretKey
)
//设置签名的秘钥
.
parseClaimsJws
(
jwt
).
getBody
();
//设置需要解析的jwt
return
claims
;
}
catch
(
ExpiredJwtException
e
)
{
logger
.
error
(
"Token已过期: {} "
+
e
);
throw
new
TokenException
(
"Token已过期"
);
}
catch
(
UnsupportedJwtException
e
)
{
logger
.
error
(
"Token格式错误: {} "
+
e
);
throw
new
TokenException
(
"Token格式错误"
);
}
catch
(
MalformedJwtException
e
)
{
logger
.
error
(
"Token没有被正确构造: {} "
+
e
);
throw
new
TokenException
(
"Token没有被正确构造"
);
}
catch
(
IllegalArgumentException
e
)
{
logger
.
error
(
"非法参数异常: {} "
+
e
);
throw
new
TokenException
(
"非法参数异常"
);
}
}
/**
* 解密jwt
* @param request
* @return
* @throws Exception
*/
public
static
SysUsers
getUser
(
HttpServletRequest
request
){
//通过拦截器后获取sysuser
SysUsers
user
=
new
SysUsers
();
//登录失效
if
(
request
.
getAttribute
(
"sysuser"
).
toString
().
equals
(
"error"
)){
user
.
setUsername
(
"error"
);
}
else
{
user
=
JSONObject
.
parseObject
(
request
.
getAttribute
(
"sysuser"
).
toString
(),
SysUsers
.
class
);
}
//System.out.println(user.getUsername());
return
user
;
}
public
static
String
getHeadToken
(
ServletRequestAttributes
attributes
,
String
key
)
{
/**
*
* 功能描述: 得到头部保存的信息,通过key得到value
*
* @param: [attributes, key] attribute 固定(ServletRequestAttributes) RequestContextHolder.getRequestAttributes() key:为头部保存信息的键子key
* @return: java.lang.String
*/
HttpServletRequest
request
=
attributes
.
getRequest
();
Map
<
String
,
String
>
map
=
new
HashMap
<
String
,
String
>();
Enumeration
headerNames
=
request
.
getHeaderNames
();
while
(
headerNames
.
hasMoreElements
())
{
String
key1
=
(
String
)
headerNames
.
nextElement
();
String
value
=
request
.
getHeader
(
key1
);
map
.
put
(
key1
,
value
);
}
return
map
.
get
(
key
);
}
//把自己想要的信息设置到header头部,就相当于是在request的请求头部添加一个键值对,保存自己的数据
public
static
void
reflectSetHeader
(
HttpServletRequest
request
,
String
key
,
String
value
){
Class
<?
extends
HttpServletRequest
>
requestClass
=
request
.
getClass
();
try
{
Field
request1
=
requestClass
.
getDeclaredField
(
"request"
);
request1
.
setAccessible
(
true
);
Object
o
=
request1
.
get
(
request
);
Field
coyoteRequest
=
o
.
getClass
().
getDeclaredField
(
"coyoteRequest"
);
coyoteRequest
.
setAccessible
(
true
);
Object
o1
=
coyoteRequest
.
get
(
o
);
Field
headers
=
o1
.
getClass
().
getDeclaredField
(
"headers"
);
headers
.
setAccessible
(
true
);
MimeHeaders
o2
=
(
MimeHeaders
)
headers
.
get
(
o1
);
o2
.
removeHeader
(
key
);
o2
.
addValue
(
key
).
setString
(
value
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
JwtUser
util
=
new
JwtUser
();
String
ab
=
util
.
createJWT
(
"222"
);
//System.out.println(ab);
//eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJEU1NGQVdEV0FEQVMuLi4iLCJzdWIiOiJ7aWQ6MTAwLG5hbWU6eGlhb2hvbmd9IiwidXNlcl9uYW1lIjoiYWRtaW4iLCJuaWNrX25hbWUiOiJEQVNEQTEyMSIsImV4cCI6MTUxNzgzNTE0NiwiaWF0IjoxNTE3ODM1MDg2LCJqdGkiOiJqd3QifQ.ncVrqdXeiCfrB9v6BulDRWUDDdROB7f-_Hg5N0po980
String
jwt
=
"eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJEU1NGQVdEV0FEQVMuLi4iLCJzdWIiOiJ7aXA6MTkyLjE2OC4xLjEsbmFtZTrlpKfmlbDmja7kuK3lv4N9IiwidXNlcl9uYW1lIjoiYWRtaW4iLCJuaWNrX25hbWUiOiJEQVNEQTEyMSIsImV4cCI6MTU3MzA0MDI4MywiaWF0IjoxNTczMDQwMjIzLCJqdGkiOiJqd3QifQ.hPPG6RxGDmnQTjNjY61iFEE-JGoBhtJFDqyEtaJayyA"
;
Claims
c
=
util
.
parseJWT
(
jwt
);
//注意:如果jwt已经过期了,这里会抛出jwt过期异常。
System
.
out
.
println
(
c
.
getId
());
//jwt
System
.
out
.
println
(
c
.
getIssuedAt
());
//Mon Feb 05 20:50:49 CST 2018
System
.
out
.
println
(
c
.
getSubject
());
//{id:100,name:xiaohong}
System
.
out
.
println
(
c
.
getIssuer
());
//null
System
.
out
.
println
(
c
.
get
(
"uid"
,
String
.
class
));
//DSSFAWDWADAS...*/
}
}
service/publicapi/src/main/java/com/founder/publicapi/config/EduConfig.java
0 → 100644
View file @
0bf1e1ad
package
com
.
founder
.
publicapi
.
config
;
import
com.baomidou.mybatisplus.core.injector.ISqlInjector
;
import
com.baomidou.mybatisplus.extension.injector.LogicSqlInjector
;
import
com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
@MapperScan
(
"com.founder.publicapi.mapper"
)
public
class
EduConfig
{
/**
* 逻辑删除插件
*/
@Bean
public
ISqlInjector
sqlInjector
()
{
return
new
LogicSqlInjector
();
}
/**
* 分页插件
*/
@Bean
public
PaginationInterceptor
paginationInterceptor
()
{
return
new
PaginationInterceptor
();
}
}
service/publicapi/src/main/java/com/founder/publicapi/controller/SysUsersController.java
0 → 100644
View file @
0bf1e1ad
package
com
.
founder
.
publicapi
.
controller
;
import
com.alibaba.fastjson.JSONObject
;
import
com.founder.commonutils.publicEntity.MapRestResult
;
import
com.founder.commonutils.publicEntity.SysUsers
;
import
com.founder.commonutils.util.Base64Util
;
import
com.founder.commonutils.util.JwtUser
;
import
com.founder.publicapi.service.SysUsersService
;
import
com.founder.servicebase.logs.OperLog
;
import
com.founder.servicebase.logs.OperationType
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
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
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.List
;
import
static
com
.
founder
.
commonutils
.
util
.
AesEncryptUtil
.
desEncrypt
;
@Api
(
description
=
"全国人员常口接口"
)
@RestController
@RequestMapping
(
value
=
"/users"
)
public
class
SysUsersController
{
@Autowired
private
SysUsersService
sysUsersService
;
//-----------新版jwt login登录
@ApiOperation
(
value
=
"登录"
)
// @OperLog(message = "登录",operation = OperationType.LOGIN)
@PostMapping
(
"/login"
)
public
MapRestResult
login
(
@RequestBody
SysUsers
sysUsers
,
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
Exception
{
//使用AES-128-CBC加密模式,key需要为16位,key和iv可以相同!
String
KEY
=
"maplogin20200416"
;
String
IV
=
"map_vues20200416"
;
String
Password
=
""
;
String
Username
=
""
;
if
(!
sysUsers
.
getPassword
().
equals
(
""
)
||
!
sysUsers
.
getUsername
().
equals
(
""
))
{
Password
=
desEncrypt
(
sysUsers
.
getPassword
(),
KEY
,
IV
).
trim
();
Username
=
desEncrypt
(
sysUsers
.
getUsername
(),
KEY
,
IV
).
trim
();
//获取到密码之后,base64 加密去库里进行查询,
sysUsers
.
setPassword
(
Base64Util
.
encode
(
Password
));
sysUsers
.
setUsername
(
Username
);
MapRestResult
mapRestResult
=
sysUsersService
.
getUsersByNamePassword
(
sysUsers
,
request
);
if
(
mapRestResult
.
getStatus
().
equals
(
200
)
&&
mapRestResult
.
getData
()
!=
null
)
{
List
<
SysUsers
>
sysUsersList
=
(
List
<
SysUsers
>)
mapRestResult
.
getData
();
if
(
sysUsersList
.
size
()
>
0
)
{
JSONObject
jsonObject1
=
(
JSONObject
)
JSONObject
.
toJSON
(
sysUsersList
.
get
(
0
));
JwtUser
util
=
new
JwtUser
();
//用户JWT生成token
String
token
=
util
.
createJWT
(
jsonObject1
.
toString
());
// return MapRestResult.build(200,"登陆成功",token);
mapRestResult
.
setMsg
(
token
);
return
mapRestResult
;
}
else
{
mapRestResult
.
setMsg
(
"用户不存在"
);
return
mapRestResult
;
}
}
}
else
{
return
MapRestResult
.
build
(
500
,
"传入参数为空"
,
null
);
}
return
MapRestResult
.
build
(
500
,
"登录失败"
,
null
);
}
}
service/publicapi/src/main/java/com/founder/publicapi/mapper/SysUsersMapper.java
0 → 100644
View file @
0bf1e1ad
package
com
.
founder
.
publicapi
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.founder.commonutils.publicEntity.SysUsers
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* <p>
* 用户登录 Mapper 接口
* </p>
*
* @author Guojunfeng
* @since 2021-03-11
*/
@Mapper
public
interface
SysUsersMapper
extends
BaseMapper
<
SysUsers
>
{
List
<
SysUsers
>
getUsersByNamePassword
(
@Param
(
"username"
)
String
username
,
@Param
(
"password"
)
String
password
);
}
service/publicapi/src/main/
resources/mybatis/mapper/oracle
/SysDictitemMapper.xml
→
service/publicapi/src/main/
java/com/founder/publicapi/mapper/xml
/SysDictitemMapper.xml
View file @
0bf1e1ad
File moved
service/publicapi/src/main/java/com/founder/publicapi/mapper/xml/SysUsersMapper.xml
0 → 100644
View file @
0bf1e1ad
<?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=
"com.founder.publicapi.mapper.SysUsersMapper"
>
<select
id=
"getUsersByNamePassword"
resultType=
"com.founder.commonutils.publicEntity.SysUsers"
>
select * from sys_user
where 1=1
<if
test=
"username!=null and username!=''"
>
and username = #{username}
</if>
<if
test=
"password!=null and password!=''"
>
and password = #{password}
</if>
</select>
</mapper>
service/publicapi/src/main/java/com/founder/publicapi/service/SysUsersService.java
0 → 100644
View file @
0bf1e1ad
package
com
.
founder
.
publicapi
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.founder.commonutils.publicEntity.MapRestResult
;
import
com.founder.commonutils.publicEntity.SysUsers
;
import
javax.servlet.http.HttpServletRequest
;
public
interface
SysUsersService
extends
IService
<
SysUsers
>
{
public
MapRestResult
getUsersByNamePassword
(
SysUsers
sysUsers
,
HttpServletRequest
request
);
}
service/publicapi/src/main/java/com/founder/publicapi/service/serviceimpl/SysUsersServiceImpl.java
0 → 100644
View file @
0bf1e1ad
package
com
.
founder
.
publicapi
.
service
.
serviceimpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.founder.commonutils.publicEntity.MapRestResult
;
import
com.founder.commonutils.publicEntity.SysUsers
;
import
com.founder.publicapi.mapper.SysUsersMapper
;
import
com.founder.publicapi.service.SysUsersService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
@Service
public
class
SysUsersServiceImpl
extends
ServiceImpl
<
SysUsersMapper
,
SysUsers
>
implements
SysUsersService
{
@Autowired
private
SysUsersMapper
sysUsersMapper
;
@Override
public
MapRestResult
getUsersByNamePassword
(
SysUsers
sysUsers
,
HttpServletRequest
request
)
{
List
<
SysUsers
>
list
=
sysUsersMapper
.
getUsersByNamePassword
(
sysUsers
.
getUsername
(),
sysUsers
.
getPassword
());
//获取当前用户的多个角色,然后获取这些角色的权限,合并这些权限去重复返回。begin
//1.根据username获取角色
/* SysUsersRoles sysUsersRoles=new SysUsersRoles();
sysUsersRoles.setUser_id(sysUsers.getUsername());
List<SysUsersRoles> sysUsersRolesList=sysUsersRolesRepository.selectUserRoleList(sysUsersRoles);
String roleIdStrs="";
List<String> permissionList=new ArrayList<>();
for(int i=0;i<sysUsersRolesList.size();i++){
SysUsersRoles sysUsersRoles1=sysUsersRolesList.get(i);
//2.根据角色获取权限,
String[] roleIds=sysUsersRoles1.getRole_id().split(",");
for(int j=0;j<roleIds.length;j++){
SysRolesPermissions sysRolesPermissions=new SysRolesPermissions();
sysRolesPermissions.setRole_id(roleIds[j]);
List<SysRolesPermissions> sysRolesPermissionsList=sysRolesPermissionsRepository.selectRolePermissionList(sysRolesPermissions);
for(int k=0;k<sysRolesPermissionsList.size();k++){
SysRolesPermissions sysRolesPermissions1=sysRolesPermissionsList.get(k);
if("".equals(roleIdStrs)){
roleIdStrs=sysRolesPermissions1.getPermission_id();
}else{
roleIdStrs=roleIdStrs+","+sysRolesPermissions1.getPermission_id();
}
}
}
}
List<String> split= Arrays.asList(roleIdStrs.split(","));//逗号分隔的字符串转list
List lists = split.stream().distinct().collect(Collectors.toList());//list去重复
Iterator<SysUsers> resultIterator = list.iterator();
while (resultIterator.hasNext()){//循环修改newlist里的值
SysUsers obj = resultIterator.next();
obj.setPermission_id(lists);
}*/
//获取当前用户的多个角色,然后获取这些角色的权限,合并这些权限去重复返回。end
return
MapRestResult
.
build
(
200
,
"根据用户名密码查询用户信息"
,
list
);
}
}
service/publicapi/src/main/resources/application-dev.properties
View file @
0bf1e1ad
# oracleݿ
# oracle\uFFFD\uFFFD\uFFFD\u077F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
#spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
#spring.datasource.url=jdbc:oracle:thin:@68.174.69.94:1521:XZXT
#spring.datasource.username=MAPZY
#spring.datasource.password=MapZy#44
spring.datasource.driver-class-name
=
oracle.jdbc.driver.OracleDriver
spring.datasource.url
=
jdbc:oracle:thin:@68.174.69.94:1521:XZXT
spring.datasource.username
=
MAPZY
spring.datasource.password
=
MapZy#44
\ No newline at end of file
spring.datasource.url
=
jdbc:oracle:thin:@47.92.129.99:1600:orcl
spring.datasource.username
=
XZXT
spring.datasource.password
=
XZXT
\ No newline at end of file
service/publicapi/src/main/resources/application-prod.properties
View file @
0bf1e1ad
# oracle
ݿ
# oracle
\uFFFD\uFFFD\uFFFD\u077F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
spring.datasource.driver-class-name
=
oracle.jdbc.driver.OracleDriver
spring.datasource.url
=
jdbc:oracle:thin:@10.100.17.120:1521:XZXT
spring.datasource.username
=
XZXT
...
...
service/publicapi/src/main/resources/application.properties
View file @
0bf1e1ad
#
服务端口
#
\uFFFD\uFFFD\uFFFD\uFFFD\u02FF\uFFFD
server.port
=
8001
#
服务名
spring.application.name
=
asj
#
\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
spring.application.name
=
publicapi
#
环境设置:dev、test、
prod
spring.profiles.active
=
dev
#
\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00E3\uFFFDdev\uFFFD\uFFFDtest\uFFFD\uFFFD
prod
spring.profiles.active
=
prod
#
返回json的全局时间格式
#
\uFFFD\uFFFD\uFFFD\uFFFDjson\uFFFD\uFFFD\u022B\uFFFD\uFFFD\u02B1\uFFFD\uFFFD\uFFFD\u02BD
spring.jackson.date-format
=
yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone
=
GMT+8
#
配置mapper xml文件的路径
mybatis-plus.mapper-locations
=
classpath:
mybatis/mapper/oracle
/*.xml
#
\uFFFD\uFFFD\uFFFD\uFFFDmapper xml\uFFFD\u013C\uFFFD\uFFFD\uFFFD\u00B7\uFFFD\uFFFD
mybatis-plus.mapper-locations
=
classpath:
com/founder/publicapi/mapper/xml
/*.xml
#
设置日志级别
#
\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05BE\uFFFD\uFFFD\uFFFD\uFFFD
logging.level.root
=
INFO
#mybatis
日志
#mybatis
\uFFFD\uFFFD\u05BE
mybatis-plus.configuration.log-impl
=
org.apache.ibatis.logging.stdout.StdOutImpl
\ No newline at end of file
service/publicapi/src/main/resources/mybatis/mybatis-config.xml
deleted
100644 → 0
View file @
576788f0
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting
name=
"mapUnderscoreToCamelCase"
value=
"true"
/>
</settings>
</configuration>
\ No newline at end of file
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