Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wecloud_im_server
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hewei
wecloud_im_server
Commits
1ac4cb82
Commit
1ac4cb82
authored
Oct 09, 2020
by
testdl
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://119.28.51.83/hewei/Jumeirah
into dev/lanpingxiong
parents
68996601
b6c0aea8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
40 changed files
with
708 additions
and
181 deletions
+708
-181
README-zh.md
+0
-0
README.md
+0
-0
api-app/src/main/java/com/jumeirah/api/app/controller/AppSmsController.java
+46
-0
api-app/src/main/java/com/jumeirah/api/app/controller/AppUserController.java
+36
-24
api-app/src/main/java/com/jumeirah/api/app/service/AppRegisterService.java
+0
-6
api-app/src/main/java/com/jumeirah/api/app/service/AppSmsService.java
+39
-0
api-app/src/main/java/com/jumeirah/api/app/service/AppUserApiService.java
+28
-0
api-app/src/main/java/com/jumeirah/api/app/service/impl/AppRegisterServiceImpl.java
+0
-13
api-app/src/main/java/com/jumeirah/api/app/service/impl/AppSmsServiceImpl.java
+120
-0
api-app/src/main/java/com/jumeirah/api/app/service/impl/AppUserApiServiceImpl.java
+73
-0
api-app/src/main/java/com/jumeirah/api/app/vo/SmsCode.java
+11
-0
common/src/main/java/com/jumeirah/common/convert/SysUserConvert.java
+3
-3
common/src/main/java/com/jumeirah/common/entity/AppUser.java
+15
-0
common/src/main/java/com/jumeirah/common/param/app/AppLoginParam.java
+42
-0
common/src/main/java/com/jumeirah/common/param/app/AppSmsRegisterParam.java
+46
-0
common/src/main/java/com/jumeirah/common/param/app/AppUserInfoParam.java
+46
-0
common/src/main/java/com/jumeirah/common/service/AppUserService.java
+25
-6
common/src/main/java/com/jumeirah/common/service/impl/AppUserServiceImpl.java
+30
-42
common/src/main/java/com/jumeirah/common/service/impl/MerchantUserServiceImpl.java
+3
-3
common/src/main/java/com/jumeirah/common/service/impl/SysLoginServiceImpl.java
+3
-18
common/src/main/java/com/jumeirah/common/vo/LoginSysUserTokenVo.java
+2
-2
common/src/main/java/com/jumeirah/common/vo/app/LoginAppUserTokenVo.java
+50
-0
config/src/main/resources/config/application.yml
+4
-1
framework/src/main/java/io/geekidea/springbootplus/framework/config/il8n/LanguageEnum.java
+4
-3
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/cache/AppLoginRedisService.java
+5
-5
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/cache/MerchantLoginRedisService.java
+5
-5
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/cache/SysLoginRedisService.java
+5
-5
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/cache/impl/AppLoginRedisServiceImpl.java
+10
-9
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/cache/impl/MerchantLoginRedisServiceImpl.java
+10
-9
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/cache/impl/SysLoginRedisServiceImpl.java
+10
-9
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/convert/LoginSysUserVoConvert.java
+3
-3
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/jwt/JwtFilter.java
+8
-2
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/jwt/JwtToken.java
+8
-1
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/jwt/realm/JwtRealmMerchant.java
+2
-2
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/jwt/realm/JwtRealmSystem.java
+2
-2
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/service/impl/ShiroLoginServiceImpl.java
+1
-1
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/vo/JwtTokenRedisVo.java
+6
-0
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/vo/LoginUserRedisVo.java
+1
-1
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/vo/LoginUserVo.java
+1
-1
framework/src/main/java/io/geekidea/springbootplus/framework/util/LoginUtil.java
+5
-5
No files found.
README-zh.md
View file @
1ac4cb82
This diff is collapsed.
Click to expand it.
README.md
View file @
1ac4cb82
This diff is collapsed.
Click to expand it.
api-app/src/main/java/com/jumeirah/api/app/controller/AppSmsController.java
0 → 100644
View file @
1ac4cb82
package
com
.
jumeirah
.
api
.
app
.
controller
;
import
com.jumeirah.api.app.service.AppSmsService
;
import
com.jumeirah.api.app.vo.SmsCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
import
io.geekidea.springbootplus.framework.log.annotation.OperationLog
;
import
io.geekidea.springbootplus.framework.log.enums.OperationLogType
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* APP用户 控制器
*
* @author wei
* @since 2020-09-23
*/
@Slf4j
@RestController
//@Module("api-app")
@Api
(
value
=
"短信验证码"
,
tags
=
{
"APP短信验证码相关"
})
@RequestMapping
(
"/app/sms/"
)
public
class
AppSmsController
extends
BaseController
{
@Autowired
private
AppSmsService
appSmsService
;
/**
* 获取注册验证码
*/
@GetMapping
(
"/registerOrLoginCode"
)
@OperationLog
(
name
=
"获取注册或登陆的验证码"
,
type
=
OperationLogType
.
INFO
)
@ApiOperation
(
value
=
"获取注册或登陆的验证码"
,
response
=
SmsCode
.
class
,
notes
=
"本地环境默认666666"
)
public
ApiResult
<
Object
>
register
(
@RequestParam
String
phoneArea
,
@RequestParam
String
phone
)
throws
Exception
{
return
appSmsService
.
registerType
(
phoneArea
,
phone
);
}
}
api-app/src/main/java/com/jumeirah/api/app/controller/AppUserController.java
View file @
1ac4cb82
package
com
.
jumeirah
.
api
.
app
.
controller
;
package
com
.
jumeirah
.
api
.
app
.
controller
;
import
com.jumeirah.api.app.service.AppUserApiService
;
import
com.jumeirah.common.entity.AppUser
;
import
com.jumeirah.common.entity.AppUser
;
import
com.jumeirah.common.param.AppUserPageParam
;
import
com.jumeirah.common.param.AppUserPageParam
;
import
com.jumeirah.common.param.
Login
Param
;
import
com.jumeirah.common.param.
app.AppSmsRegister
Param
;
import
com.jumeirah.common.param.
Register
Param
;
import
com.jumeirah.common.param.
app.AppUserInfo
Param
;
import
com.jumeirah.common.service.AppUserService
;
import
com.jumeirah.common.service.AppUserService
;
import
com.jumeirah.common.vo.AppUserQueryVo
;
import
com.jumeirah.common.vo.AppUserQueryVo
;
import
com.jumeirah.common.vo.LoginSysUserTokenVo
;
import
com.jumeirah.common.vo.LoginSysUserTokenVo
;
import
com.jumeirah.common.vo.app.LoginAppUserTokenVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.core.validator.groups.Add
;
import
io.geekidea.springbootplus.framework.core.validator.groups.Add
;
import
io.geekidea.springbootplus.framework.core.validator.groups.Update
;
import
io.geekidea.springbootplus.framework.core.validator.groups.Update
;
import
io.geekidea.springbootplus.framework.log.annotation.Module
;
import
io.geekidea.springbootplus.framework.log.annotation.OperationLog
;
import
io.geekidea.springbootplus.framework.log.annotation.OperationLog
;
import
io.geekidea.springbootplus.framework.log.annotation.OperationLogIgnore
;
import
io.geekidea.springbootplus.framework.log.enums.OperationLogType
;
import
io.geekidea.springbootplus.framework.log.enums.OperationLogType
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.shiro.authz.annotation.RequiresRoles
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
...
@@ -28,8 +31,6 @@ import org.springframework.web.bind.annotation.RequestHeader;
...
@@ -28,8 +31,6 @@ import org.springframework.web.bind.annotation.RequestHeader;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletResponse
;
/**
/**
* APP用户 控制器
* APP用户 控制器
*
*
...
@@ -38,7 +39,7 @@ import javax.servlet.http.HttpServletResponse;
...
@@ -38,7 +39,7 @@ import javax.servlet.http.HttpServletResponse;
*/
*/
@Slf4j
@Slf4j
@RestController
@RestController
//
@Module("api-app")
@Module
(
"api-app"
)
@Api
(
value
=
"用户API"
,
tags
=
{
"APP用户相关"
})
@Api
(
value
=
"用户API"
,
tags
=
{
"APP用户相关"
})
@RequestMapping
(
"/app/user/"
)
@RequestMapping
(
"/app/user/"
)
public
class
AppUserController
extends
BaseController
{
public
class
AppUserController
extends
BaseController
{
...
@@ -46,12 +47,27 @@ public class AppUserController extends BaseController {
...
@@ -46,12 +47,27 @@ public class AppUserController extends BaseController {
@Autowired
@Autowired
private
AppUserService
appUserService
;
private
AppUserService
appUserService
;
@Autowired
private
AppUserApiService
appUserApiService
;
/**
* 添加APP用户
*/
@PostMapping
(
"/updateAppUserInfo"
)
// @OperationLog(name = "补充或修改APP用户信息", type = OperationLogType.ADD)
@ApiOperation
(
value
=
"补充或修改APP用户信息"
,
notes
=
"不需要修改的字段传入null"
,
response
=
ApiResult
.
class
)
public
ApiResult
<
Boolean
>
updateAppUserInfo
(
@RequestBody
AppUserInfoParam
appUserInfoParam
)
throws
Exception
{
boolean
flag
=
appUserApiService
.
updateAppUser
(
appUserInfoParam
);
return
ApiResult
.
result
(
flag
);
}
/**
/**
* 添加APP用户
* 添加APP用户
*/
*/
@PostMapping
(
"/add"
)
@PostMapping
(
"/add"
)
@OperationLog
(
name
=
"添加APP用户"
,
type
=
OperationLogType
.
ADD
)
@OperationLog
(
name
=
"添加APP用户"
,
type
=
OperationLogType
.
ADD
)
@ApiOperation
(
value
=
"添加APP用户"
,
response
=
ApiResult
.
class
)
@ApiOperation
(
value
=
"添加APP用户"
,
response
=
ApiResult
.
class
)
@RequiresRoles
(
"sys:admin"
)
public
ApiResult
<
Boolean
>
addAppUser
(
@Validated
(
Add
.
class
)
@RequestBody
AppUser
appUser
)
throws
Exception
{
public
ApiResult
<
Boolean
>
addAppUser
(
@Validated
(
Add
.
class
)
@RequestBody
AppUser
appUser
)
throws
Exception
{
boolean
flag
=
appUserService
.
saveAppUser
(
appUser
);
boolean
flag
=
appUserService
.
saveAppUser
(
appUser
);
return
ApiResult
.
result
(
flag
);
return
ApiResult
.
result
(
flag
);
...
@@ -63,6 +79,7 @@ public class AppUserController extends BaseController {
...
@@ -63,6 +79,7 @@ public class AppUserController extends BaseController {
@PostMapping
(
"/update"
)
@PostMapping
(
"/update"
)
@OperationLog
(
name
=
"修改APP用户"
,
type
=
OperationLogType
.
UPDATE
)
@OperationLog
(
name
=
"修改APP用户"
,
type
=
OperationLogType
.
UPDATE
)
@ApiOperation
(
value
=
"修改APP用户"
,
response
=
ApiResult
.
class
)
@ApiOperation
(
value
=
"修改APP用户"
,
response
=
ApiResult
.
class
)
@RequiresRoles
(
"sys:admin"
)
public
ApiResult
<
Boolean
>
updateAppUser
(
@Validated
(
Update
.
class
)
@RequestBody
AppUser
appUser
)
throws
Exception
{
public
ApiResult
<
Boolean
>
updateAppUser
(
@Validated
(
Update
.
class
)
@RequestBody
AppUser
appUser
)
throws
Exception
{
boolean
flag
=
appUserService
.
updateAppUser
(
appUser
);
boolean
flag
=
appUserService
.
updateAppUser
(
appUser
);
return
ApiResult
.
result
(
flag
);
return
ApiResult
.
result
(
flag
);
...
@@ -74,6 +91,7 @@ public class AppUserController extends BaseController {
...
@@ -74,6 +91,7 @@ public class AppUserController extends BaseController {
@PostMapping
(
"/delete/{id}"
)
@PostMapping
(
"/delete/{id}"
)
@OperationLog
(
name
=
"删除APP用户"
,
type
=
OperationLogType
.
DELETE
)
@OperationLog
(
name
=
"删除APP用户"
,
type
=
OperationLogType
.
DELETE
)
@ApiOperation
(
value
=
"删除APP用户"
,
response
=
ApiResult
.
class
)
@ApiOperation
(
value
=
"删除APP用户"
,
response
=
ApiResult
.
class
)
@RequiresRoles
(
"sys:admin"
)
public
ApiResult
<
Boolean
>
deleteAppUser
(
@PathVariable
(
"id"
)
Long
id
)
throws
Exception
{
public
ApiResult
<
Boolean
>
deleteAppUser
(
@PathVariable
(
"id"
)
Long
id
)
throws
Exception
{
boolean
flag
=
appUserService
.
deleteAppUser
(
id
);
boolean
flag
=
appUserService
.
deleteAppUser
(
id
);
return
ApiResult
.
result
(
flag
);
return
ApiResult
.
result
(
flag
);
...
@@ -85,6 +103,7 @@ public class AppUserController extends BaseController {
...
@@ -85,6 +103,7 @@ public class AppUserController extends BaseController {
@GetMapping
(
"/info/{id}"
)
@GetMapping
(
"/info/{id}"
)
@OperationLog
(
name
=
"APP用户详情"
,
type
=
OperationLogType
.
INFO
)
@OperationLog
(
name
=
"APP用户详情"
,
type
=
OperationLogType
.
INFO
)
@ApiOperation
(
value
=
"APP用户详情"
,
response
=
AppUserQueryVo
.
class
)
@ApiOperation
(
value
=
"APP用户详情"
,
response
=
AppUserQueryVo
.
class
)
@RequiresRoles
(
"sys:admin"
)
public
ApiResult
<
AppUserQueryVo
>
getAppUser
(
@PathVariable
(
"id"
)
Long
id
)
throws
Exception
{
public
ApiResult
<
AppUserQueryVo
>
getAppUser
(
@PathVariable
(
"id"
)
Long
id
)
throws
Exception
{
AppUserQueryVo
appUserQueryVo
=
appUserService
.
getAppUserById
(
id
);
AppUserQueryVo
appUserQueryVo
=
appUserService
.
getAppUserById
(
id
);
return
ApiResult
.
ok
(
appUserQueryVo
);
return
ApiResult
.
ok
(
appUserQueryVo
);
...
@@ -96,31 +115,24 @@ public class AppUserController extends BaseController {
...
@@ -96,31 +115,24 @@ public class AppUserController extends BaseController {
@PostMapping
(
"/getPageList"
)
@PostMapping
(
"/getPageList"
)
@OperationLog
(
name
=
"APP用户分页列表"
,
type
=
OperationLogType
.
PAGE
)
@OperationLog
(
name
=
"APP用户分页列表"
,
type
=
OperationLogType
.
PAGE
)
@ApiOperation
(
value
=
"APP用户分页列表"
,
response
=
AppUserQueryVo
.
class
)
@ApiOperation
(
value
=
"APP用户分页列表"
,
response
=
AppUserQueryVo
.
class
)
@RequiresRoles
(
"sys:admin"
)
public
ApiResult
<
Paging
<
AppUserQueryVo
>>
getAppUserPageList
(
@Validated
@RequestBody
AppUserPageParam
appUserPageParam
)
throws
Exception
{
public
ApiResult
<
Paging
<
AppUserQueryVo
>>
getAppUserPageList
(
@Validated
@RequestBody
AppUserPageParam
appUserPageParam
)
throws
Exception
{
Paging
<
AppUserQueryVo
>
paging
=
appUserService
.
getAppUserPageList
(
appUserPageParam
);
Paging
<
AppUserQueryVo
>
paging
=
appUserService
.
getAppUserPageList
(
appUserPageParam
);
return
ApiResult
.
ok
(
paging
);
return
ApiResult
.
ok
(
paging
);
}
}
@PostMapping
(
"/registerOrLogin"
)
@PostMapping
(
"/register"
)
@ApiOperation
(
value
=
"手机号注册+登陆"
,
notes
=
"app用户注册+登陆"
,
response
=
LoginSysUserTokenVo
.
class
)
@OperationLogIgnore
public
ApiResult
<
LoginAppUserTokenVo
>
registerOrLogin
(
@Validated
@RequestBody
AppSmsRegisterParam
appSmsRegisterParam
,
@RequestHeader
(
required
=
false
)
String
language
)
throws
Exception
{
@ApiOperation
(
value
=
"注册"
,
notes
=
"web用户注册"
,
response
=
LoginSysUserTokenVo
.
class
)
return
appUserApiService
.
register
(
appSmsRegisterParam
,
language
);
public
ApiResult
<
LoginSysUserTokenVo
>
register
(
@Validated
@RequestBody
RegisterParam
registerParam
,
HttpServletResponse
response
,
@RequestHeader
(
required
=
false
)
String
language
)
throws
Exception
{
return
appUserService
.
register
(
registerParam
,
language
);
}
@PostMapping
(
"/login"
)
@OperationLogIgnore
@ApiOperation
(
value
=
"登录"
,
notes
=
"系统用户登录"
,
response
=
LoginSysUserTokenVo
.
class
)
public
ApiResult
<
LoginSysUserTokenVo
>
login
(
@Validated
@RequestBody
LoginParam
loginParam
,
HttpServletResponse
response
,
@RequestHeader
(
required
=
false
)
String
language
)
throws
Exception
{
return
appUserService
.
login
(
loginParam
,
language
);
}
}
// @PostMapping("/
phoneL
ogin")
// @PostMapping("/
l
ogin")
// @
OperationLogIgnore
// @
ApiOperation(value = "手机号登陆", notes = "app用户登录", response = LoginSysUserTokenVo.class)
//
@ApiOperation(value = "手机号登陆", notes = "手机号登陆", response = LoginSysUserTokenVo.class)
//
public ApiResult<LoginAppUserTokenVo> login(@Validated @RequestBody AppSmsRegisterParam loginParam, @RequestHeader(required = false) String language) throws Exception {
//
public ApiResult<LoginSysUserTokenVo> phoneLogin(@Validated @RequestBody RegisterParam registerParam, HttpServletResponse response, @RequestHeader(required = false) String language) throws Exception {
//
// return appRegisterService.login(loginParam, language);
// return
appUserService.register(registerParam, language)
;
// return
null
;
// }
// }
}
}
api-app/src/main/java/com/jumeirah/api/app/service/AppRegisterService.java
deleted
100644 → 0
View file @
68996601
package
com
.
jumeirah
.
api
.
app
.
service
;
public
interface
AppRegisterService
{
void
regiest
();
}
api-app/src/main/java/com/jumeirah/api/app/service/AppSmsService.java
0 → 100644
View file @
1ac4cb82
package
com
.
jumeirah
.
api
.
app
.
service
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
public
interface
AppSmsService
{
void
deleteRegisterCode
(
String
area
,
String
number
);
/**
* 获取注册验证码
*/
ApiResult
<
Object
>
registerType
(
String
phoneArea
,
String
phone
);
/**
* 获取注册验证码
*/
ApiResult
LoginType
(
String
area
,
String
number
);
/**
* 校验注册验证码
*
* @param area
* @param number
* @param code
* @return
*/
boolean
equalsRegisterCode
(
String
area
,
String
number
,
String
code
);
/**
* 校验验登陆证码
*
* @param area
* @param number
* @param code
* @return
*/
boolean
equalsLoginCode
(
String
area
,
String
number
,
String
code
);
}
api-app/src/main/java/com/jumeirah/api/app/service/AppUserApiService.java
0 → 100644
View file @
1ac4cb82
package
com
.
jumeirah
.
api
.
app
.
service
;
import
com.jumeirah.common.param.app.AppSmsRegisterParam
;
import
com.jumeirah.common.param.app.AppUserInfoParam
;
import
com.jumeirah.common.vo.app.LoginAppUserTokenVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
public
interface
AppUserApiService
{
/**
* 注册
* @param loginParam
* @param language
* @return
* @throws Exception
*/
ApiResult
<
LoginAppUserTokenVo
>
register
(
AppSmsRegisterParam
loginParam
,
String
language
)
throws
Exception
;
ApiResult
<
LoginAppUserTokenVo
>
login
(
AppSmsRegisterParam
loginParam
,
String
language
)
throws
Exception
;
/**
* 修改或补充用户信息
* @param appUserInfoParam
* @return
* @throws Exception
*/
boolean
updateAppUser
(
AppUserInfoParam
appUserInfoParam
)
throws
Exception
;
}
api-app/src/main/java/com/jumeirah/api/app/service/impl/AppRegisterServiceImpl.java
deleted
100644 → 0
View file @
68996601
package
com
.
jumeirah
.
api
.
app
.
service
.
impl
;
import
com.jumeirah.api.app.service.AppRegisterService
;
import
org.springframework.stereotype.Service
;
@Service
public
class
AppRegisterServiceImpl
implements
AppRegisterService
{
@Override
public
void
regiest
()
{
}
}
api-app/src/main/java/com/jumeirah/api/app/service/impl/AppSmsServiceImpl.java
0 → 100644
View file @
1ac4cb82
package
com
.
jumeirah
.
api
.
app
.
service
.
impl
;
import
cn.hutool.core.util.RandomUtil
;
import
com.jumeirah.api.app.service.AppSmsService
;
import
com.jumeirah.api.app.vo.SmsCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
java.time.Duration
;
import
java.util.Arrays
;
@Service
@Slf4j
public
class
AppSmsServiceImpl
implements
AppSmsService
{
/**
* 获取当前环境
*/
@Value
(
"${spring.profiles.active}"
)
private
String
profiles
;
@Autowired
private
RedisTemplate
redisTemplate
;
/**
* 测试环境
*/
private
static
final
String
DEV_PROFILE
=
"dev"
;
/**
* 测试环境默认短信验证码
*/
private
static
final
String
DEFAULT_DEV_SMS_CODE
=
"666666"
;
/**
* 短信验证码redis的key值
*/
private
static
final
String
SMS_REGIEST
=
"sms:register:%s_%s"
;
/**
* 短信验证码redis的key值
*/
private
static
final
String
SMS_LOGIN
=
"sms:login:%s_%s"
;
@Override
public
void
deleteRegisterCode
(
String
area
,
String
number
)
{
redisTemplate
.
delete
(
String
.
format
(
SMS_REGIEST
,
area
,
number
));
}
@Override
public
ApiResult
<
Object
>
registerType
(
String
area
,
String
number
)
{
return
getSmsCodeApiResult
(
String
.
format
(
SMS_REGIEST
,
area
,
number
),
area
,
number
);
}
private
ApiResult
<
Object
>
getSmsCodeApiResult
(
String
key
,
String
area
,
String
number
)
{
String
randomCode
=
getRandomCode
();
// 过期时间(秒)
long
expire
=
120L
;
Duration
expireDuration
=
Duration
.
ofSeconds
(
expire
);
redisTemplate
.
opsForValue
().
set
(
key
,
randomCode
,
expireDuration
);
SmsCode
smsCode
=
new
SmsCode
();
smsCode
.
setSmsCode
(
randomCode
);
log
.
info
(
area
+
","
+
number
+
":"
+
randomCode
);
// TODO 需要补充调用短信平台发送短信代码 2020年09月30日09:48:42
return
ApiResult
.
ok
(
null
);
}
@Override
public
ApiResult
LoginType
(
String
area
,
String
number
)
{
return
getSmsCodeApiResult
(
String
.
format
(
SMS_LOGIN
,
area
,
number
),
area
,
number
);
}
@Override
public
boolean
equalsRegisterCode
(
String
area
,
String
number
,
String
code
)
{
return
equalsSms
(
SMS_REGIEST
,
area
,
number
,
code
);
}
private
boolean
equalsSms
(
String
type
,
String
area
,
String
number
,
String
code
)
{
String
formatKey
=
String
.
format
(
type
,
area
,
number
);
Object
key
=
redisTemplate
.
opsForValue
().
get
(
formatKey
);
if
(
key
==
null
)
{
return
false
;
}
return
String
.
valueOf
(
key
).
equals
(
code
);
}
@Override
public
boolean
equalsLoginCode
(
String
area
,
String
number
,
String
code
)
{
return
equalsSms
(
SMS_LOGIN
,
area
,
number
,
code
);
}
/**
* 生成验证码code
*
* @return
*/
String
getRandomCode
()
{
// 如果为测试环境则生成默认
if
(
profiles
.
equals
(
DEV_PROFILE
))
{
return
DEFAULT_DEV_SMS_CODE
;
}
else
{
return
Arrays
.
toString
(
RandomUtil
.
randomInts
(
6
));
}
}
}
api-app/src/main/java/com/jumeirah/api/app/service/impl/AppUserApiServiceImpl.java
0 → 100644
View file @
1ac4cb82
package
com
.
jumeirah
.
api
.
app
.
service
.
impl
;
import
com.jumeirah.api.app.service.AppSmsService
;
import
com.jumeirah.api.app.service.AppUserApiService
;
import
com.jumeirah.common.entity.AppUser
;
import
com.jumeirah.common.param.app.AppSmsRegisterParam
;
import
com.jumeirah.common.param.app.AppUserInfoParam
;
import
com.jumeirah.common.service.AppUserService
;
import
com.jumeirah.common.vo.app.LoginAppUserTokenVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
org.apache.shiro.SecurityUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
@Service
public
class
AppUserApiServiceImpl
implements
AppUserApiService
{
@Autowired
private
AppSmsService
appSmsService
;
@Autowired
private
AppUserService
appUserService
;
@Override
public
ApiResult
<
LoginAppUserTokenVo
>
register
(
AppSmsRegisterParam
loginParam
,
String
language
)
throws
Exception
{
// 校验验证码
boolean
equalsRegisterCode
=
appSmsService
.
equalsRegisterCode
(
loginParam
.
getPhoneArea
(),
loginParam
.
getPhone
(),
loginParam
.
getSmsCode
());
if
(!
equalsRegisterCode
)
{
return
ApiResult
.
fail
(
ApiCode
.
FAIL
,
new
LoginAppUserTokenVo
());
}
// 删除已使用的验证码
appSmsService
.
deleteRegisterCode
(
loginParam
.
getPhoneArea
(),
loginParam
.
getPhone
());
// 判断是否已经注册
if
(
appUserService
.
hasUserByPhoneNumer
(
loginParam
.
getPhoneArea
(),
loginParam
.
getPhone
()))
{
// 如果已经注册直接走登陆的代码
return
appUserService
.
login
(
loginParam
,
language
);
}
// 没注册则先保存到数据库
AppUser
appUser
=
new
AppUser
();
appUser
.
setPhoneArea
(
loginParam
.
getPhoneArea
());
appUser
.
setPhone
(
loginParam
.
getPhone
());
boolean
isDbOk
=
appUserService
.
saveAppUser
(
appUser
);
if
(!
isDbOk
)
{
return
ApiResult
.
fail
(
ApiCode
.
FAIL
,
new
LoginAppUserTokenVo
());
}
// 走登陆的代码
return
appUserService
.
login
(
loginParam
,
language
);
}
@Override
public
ApiResult
<
LoginAppUserTokenVo
>
login
(
AppSmsRegisterParam
loginParam
,
String
language
)
throws
Exception
{
return
null
;
}
@Override
public
boolean
updateAppUser
(
AppUserInfoParam
appUserInfoParam
)
throws
Exception
{
AppUser
appUser
=
new
AppUser
();
BeanUtils
.
copyProperties
(
appUserInfoParam
,
appUser
);
JwtToken
jwtToken
=
(
JwtToken
)
SecurityUtils
.
getSubject
().
getPrincipal
();
appUser
.
setId
(
jwtToken
.
getUserId
());
return
appUserService
.
updateAppUser
(
appUser
);
}
}
api-app/src/main/java/com/jumeirah/api/app/vo/SmsCode.java
0 → 100644
View file @
1ac4cb82
package
com
.
jumeirah
.
api
.
app
.
vo
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
public
class
SmsCode
implements
Serializable
{
private
String
smsCode
;
}
common/src/main/java/com/jumeirah/common/convert/SysUserConvert.java
View file @
1ac4cb82
...
@@ -18,7 +18,7 @@ package com.jumeirah.common.convert;
...
@@ -18,7 +18,7 @@ package com.jumeirah.common.convert;
import
com.jumeirah.common.entity.MerchantUser
;
import
com.jumeirah.common.entity.MerchantUser
;
import
com.jumeirah.common.entity.SysUser
;
import
com.jumeirah.common.entity.SysUser
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
import
org.mapstruct.factory.Mappers
;
...
@@ -39,9 +39,9 @@ public interface SysUserConvert {
...
@@ -39,9 +39,9 @@ public interface SysUserConvert {
* @param sysUser
* @param sysUser
* @return
* @return
*/
*/
Login
Sys
UserVo
sysUserToLoginSysUserVo
(
SysUser
sysUser
);
LoginUserVo
sysUserToLoginSysUserVo
(
SysUser
sysUser
);
Login
Sys
UserVo
merchantUserToLoginSysUserVo
(
MerchantUser
sysUser
);
LoginUserVo
merchantUserToLoginSysUserVo
(
MerchantUser
sysUser
);
}
}
common/src/main/java/com/jumeirah/common/entity/AppUser.java
View file @
1ac4cb82
...
@@ -37,6 +37,21 @@ public class AppUser extends BaseEntity {
...
@@ -37,6 +37,21 @@ public class AppUser extends BaseEntity {
@ApiModelProperty
(
"用户名"
)
@ApiModelProperty
(
"用户名"
)
private
String
username
;
private
String
username
;
@ApiModelProperty
(
"姓"
)
private
String
surname
;
@ApiModelProperty
(
"名"
)
private
String
name
;
@ApiModelProperty
(
"公司名"
)
private
String
companyName
;
@ApiModelProperty
(
"微信号"
)
private
String
wechat
;
@ApiModelProperty
(
"出生日期"
)
private
String
dateOfBirth
;
@ApiModelProperty
(
"昵称"
)
@ApiModelProperty
(
"昵称"
)
private
String
nickname
;
private
String
nickname
;
...
...
common/src/main/java/com/jumeirah/common/param/app/AppLoginParam.java
0 → 100755
View file @
1ac4cb82
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
jumeirah
.
common
.
param
.
app
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* 登录参数
*
* @author geekidea
* @date 2019-05-15
**/
@Data
@ApiModel
(
"登录参数"
)
public
class
AppLoginParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
2854217576695117356L
;
private
String
area
;
private
String
number
;
@ApiModelProperty
(
"验证码"
)
private
String
code
;
}
common/src/main/java/com/jumeirah/common/param/app/AppSmsRegisterParam.java
0 → 100755
View file @
1ac4cb82
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
jumeirah
.
common
.
param
.
app
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.io.Serializable
;
/**
* 注册参数
*
* @author geekidea
* @date 2019-05-15
**/
@Data
@ApiModel
(
"app手机验证码注册参数"
)
public
class
AppSmsRegisterParam
implements
Serializable
{
@NotBlank
(
message
=
"请输入手机区号"
)
@ApiModelProperty
(
value
=
"手机区号"
,
example
=
"855"
)
private
String
phoneArea
;
@NotBlank
(
message
=
"请输入手机号"
)
@ApiModelProperty
(
value
=
"手机号"
,
example
=
"081611122"
)
private
String
phone
;
@ApiModelProperty
(
value
=
"短信验证码"
,
example
=
"666666"
)
private
String
smsCode
;
}
common/src/main/java/com/jumeirah/common/param/app/AppUserInfoParam.java
0 → 100644
View file @
1ac4cb82
package
com
.
jumeirah
.
common
.
param
.
app
;
import
io.geekidea.springbootplus.framework.common.entity.BaseEntity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* APP用户
*
* @author wei
* @since 2020-09-23
*/
@Data
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
value
=
"AppUserInfoParam对象"
)
public
class
AppUserInfoParam
extends
BaseEntity
{
@ApiModelProperty
(
"姓"
)
private
String
surname
;
@ApiModelProperty
(
"名"
)
private
String
name
;
@ApiModelProperty
(
"公司名"
)
private
String
companyName
;
@ApiModelProperty
(
"微信号"
)
private
String
wechat
;
@ApiModelProperty
(
"出生日期"
)
private
String
dateOfBirth
;
@ApiModelProperty
(
"昵称"
)
private
String
nickname
;
@ApiModelProperty
(
"性别,0:女,1:男,默认1"
)
private
Integer
gender
;
@ApiModelProperty
(
"头像"
)
private
String
head
;
}
common/src/main/java/com/jumeirah/common/service/AppUserService.java
View file @
1ac4cb82
...
@@ -2,10 +2,9 @@ package com.jumeirah.common.service;
...
@@ -2,10 +2,9 @@ package com.jumeirah.common.service;
import
com.jumeirah.common.entity.AppUser
;
import
com.jumeirah.common.entity.AppUser
;
import
com.jumeirah.common.param.AppUserPageParam
;
import
com.jumeirah.common.param.AppUserPageParam
;
import
com.jumeirah.common.param.LoginParam
;
import
com.jumeirah.common.param.app.AppSmsRegisterParam
;
import
com.jumeirah.common.param.RegisterParam
;
import
com.jumeirah.common.vo.AppUserQueryVo
;
import
com.jumeirah.common.vo.AppUserQueryVo
;
import
com.jumeirah.common.vo.
LoginSys
UserTokenVo
;
import
com.jumeirah.common.vo.
app.LoginApp
UserTokenVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
...
@@ -18,12 +17,32 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
...
@@ -18,12 +17,32 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
*/
*/
public
interface
AppUserService
extends
BaseService
<
AppUser
>
{
public
interface
AppUserService
extends
BaseService
<
AppUser
>
{
ApiResult
<
LoginSysUserTokenVo
>
register
(
RegisterParam
registerParam
,
String
language
);
/**
* 根据手机号判断用户是否存在
* @param phoneArea
* @param phone
* @return
*/
boolean
hasUserByPhoneNumer
(
String
phoneArea
,
String
phone
);
ApiResult
<
LoginSysUserTokenVo
>
login
(
LoginParam
loginParam
,
String
language
);
// /**
// * 注册
// *
// * @param appSmsRegisterParam
// * @param language
// * @return
// */
// ApiResult<LoginAppUserTokenVo> register(AppSmsRegisterParam appSmsRegisterParam, String language);
/**
* 登陆
*
* @param loginParam
* @param language
* @return
*/
ApiResult
<
LoginAppUserTokenVo
>
login
(
AppSmsRegisterParam
loginParam
,
String
language
);
ApiResult
<
LoginSysUserTokenVo
>
phoneLogin
(
RegisterParam
registerParam
,
String
language
);
/**
/**
* 保存
* 保存
...
...
common/src/main/java/com/jumeirah/common/service/impl/AppUserServiceImpl.java
View file @
1ac4cb82
...
@@ -8,11 +8,10 @@ import com.jumeirah.common.entity.AppUser;
...
@@ -8,11 +8,10 @@ import com.jumeirah.common.entity.AppUser;
import
com.jumeirah.common.enums.StateEnum
;
import
com.jumeirah.common.enums.StateEnum
;
import
com.jumeirah.common.mapper.AppUserMapper
;
import
com.jumeirah.common.mapper.AppUserMapper
;
import
com.jumeirah.common.param.AppUserPageParam
;
import
com.jumeirah.common.param.AppUserPageParam
;
import
com.jumeirah.common.param.LoginParam
;
import
com.jumeirah.common.param.app.AppSmsRegisterParam
;
import
com.jumeirah.common.param.RegisterParam
;
import
com.jumeirah.common.service.AppUserService
;
import
com.jumeirah.common.service.AppUserService
;
import
com.jumeirah.common.vo.AppUserQueryVo
;
import
com.jumeirah.common.vo.AppUserQueryVo
;
import
com.jumeirah.common.vo.
LoginSys
UserTokenVo
;
import
com.jumeirah.common.vo.
app.LoginApp
UserTokenVo
;
import
io.geekidea.springbootplus.config.properties.JwtProperties
;
import
io.geekidea.springbootplus.config.properties.JwtProperties
;
import
io.geekidea.springbootplus.config.properties.SpringBootPlusProperties
;
import
io.geekidea.springbootplus.config.properties.SpringBootPlusProperties
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
...
@@ -24,8 +23,7 @@ import io.geekidea.springbootplus.framework.shiro.cache.AppLoginRedisService;
...
@@ -24,8 +23,7 @@ import io.geekidea.springbootplus.framework.shiro.cache.AppLoginRedisService;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.SaltUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.SaltUtil
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginSysUserVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo
;
import
io.geekidea.springbootplus.framework.util.PasswordUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.apache.shiro.SecurityUtils
;
import
org.apache.shiro.SecurityUtils
;
...
@@ -68,56 +66,54 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserMapper, AppUser>
...
@@ -68,56 +66,54 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserMapper, AppUser>
private
AppUserMapper
appUserMapper
;
private
AppUserMapper
appUserMapper
;
@Override
@Override
public
ApiResult
<
LoginSysUserTokenVo
>
register
(
RegisterParam
registerParam
,
String
language
)
{
public
boolean
hasUserByPhoneNumer
(
String
phoneArea
,
String
phone
)
{
return
null
;
Integer
selectCount
=
appUserMapper
.
selectCount
(
new
QueryWrapper
<
AppUser
>(
new
AppUser
().
setPhoneArea
(
phoneArea
).
setPhone
(
phone
)
));
return
selectCount
>
0
;
}
}
@Override
// @Override
public
ApiResult
<
LoginSysUserTokenVo
>
login
(
LoginParam
loginParam
,
String
language
)
{
// public ApiResult<LoginAppUserTokenVo> register(AppSmsRegisterParam appSmsRegisterParam, String language) {
//// JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
//
// 校验验证码
// // 校验短信验证码是否正确
// checkVerifyCode(loginParam.getVerifyToken(), loginParam.getCode());
//
// return null;
// }
String
username
=
loginParam
.
getUsername
();
@Override
public
ApiResult
<
LoginAppUserTokenVo
>
login
(
AppSmsRegisterParam
loginParam
,
String
language
)
{
// 从数据库中获取登录用户信息
// 从数据库中获取登录用户信息
AppUser
appUser
=
appUserMapper
.
selectOne
(
new
QueryWrapper
<
AppUser
>(
new
AppUser
().
setUsername
(
username
)));
AppUser
appUser
=
appUserMapper
.
selectOne
(
new
QueryWrapper
<>(
new
AppUser
().
setPhoneArea
(
loginParam
.
getPhoneArea
()).
setPhone
(
loginParam
.
getPhone
()))
);
if
(
appUser
==
null
)
{
if
(
appUser
==
null
)
{
log
.
error
(
"登录失败,用户名或密码错误 loginParam:{}"
,
loginParam
);
log
.
error
(
"登录失败,loginParam:{}"
,
loginParam
);
// throw new AuthenticationException("用户名或密码错误");
return
ApiResult
.
fail
(
ApiCode
.
PWD_OR_USERNAME_ERROR
,
language
);
return
ApiResult
.
fail
(
ApiCode
.
PWD_OR_USERNAME_ERROR
,
language
);
}
}
if
(
StateEnum
.
DISABLE
.
getCode
().
equals
(
appUser
.
getState
()))
{
if
(
StateEnum
.
DISABLE
.
getCode
().
equals
(
appUser
.
getState
()))
{
throw
new
AuthenticationException
(
"账号已禁用"
);
throw
new
AuthenticationException
(
"账号已禁用"
);
}
}
// 实际项目中,前端传过来的密码应先加密
// 原始密码明文:123456
// 原始密码前端加密:sha256(123456)
// 后台加密规则:sha256(sha256(123456) + salt)
String
encryptPassword
=
PasswordUtil
.
encrypt
(
loginParam
.
getPassword
(),
appUser
.
getSalt
());
if
(!
encryptPassword
.
equals
(
appUser
.
getPassword
()))
{
return
ApiResult
.
fail
(
ApiCode
.
PWD_OR_USERNAME_ERROR
,
language
);
}
// 将系统用户对象转换成登录用户对象
// 将系统用户对象转换成登录用户对象
LoginSysUserVo
loginSysUserVo
=
new
LoginSysUserVo
();
LoginUserVo
loginSysUserVo
=
new
LoginUserVo
();
loginSysUserVo
.
setUsername
(
username
);
loginSysUserVo
.
setId
(
appUser
.
getId
());
loginSysUserVo
.
setUsername
(
appUser
.
getId
().
toString
());
// 获取数据库中保存的盐值
// 获取数据库中保存的盐值
String
newSalt
=
SaltUtil
.
getSalt
(
appUser
.
getSalt
(),
jwtProperties
);
String
newSalt
=
SaltUtil
.
getSalt
(
appUser
.
getSalt
(),
jwtProperties
);
// 生成token字符串并返回
// 生成token字符串并返回
Long
expireSecond
=
jwtProperties
.
getExpireSecond
();
Long
expireSecond
=
jwtProperties
.
getExpireSecond
();
String
token
=
JwtUtil
.
generateToken
(
username
,
newSalt
,
Duration
.
ofSeconds
(
expireSecond
));
String
token
=
JwtUtil
.
generateToken
(
appUser
.
getId
().
toString
()
,
newSalt
,
Duration
.
ofSeconds
(
expireSecond
));
log
.
debug
(
"token:{}"
,
token
);
log
.
debug
(
"token:{}"
,
token
);
// 创建AuthenticationToken
// 创建AuthenticationToken
JwtToken
jwtToken
=
JwtToken
.
build
(
token
,
username
,
newSalt
,
expireSecond
,
"app"
);
JwtToken
jwtToken
=
JwtToken
.
build
(
token
,
appUser
.
getId
().
toString
(),
appUser
.
getId
()
,
newSalt
,
expireSecond
,
"app"
);
boolean
enableShiro
=
springBootPlusProperties
.
getShiro
().
isEnable
();
boolean
enableShiro
=
springBootPlusProperties
.
getShiro
().
isEnable
();
if
(
enableShiro
)
{
if
(
enableShiro
)
{
...
@@ -131,28 +127,20 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserMapper, AppUser>
...
@@ -131,28 +127,20 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserMapper, AppUser>
// 缓存登录信息到Redis
// 缓存登录信息到Redis
appLoginRedisService
.
cacheLoginInfo
(
jwtToken
,
loginSysUserVo
);
appLoginRedisService
.
cacheLoginInfo
(
jwtToken
,
loginSysUserVo
);
log
.
debug
(
"登录成功,
username:{}"
,
username
);
log
.
debug
(
"登录成功,
id:{}"
,
appUser
.
getId
().
toString
()
);
// 缓存登录信息到redis
// 缓存登录信息到redis
String
tokenSha256
=
DigestUtils
.
sha256Hex
(
token
);
String
tokenSha256
=
DigestUtils
.
sha256Hex
(
token
);
redisTemplate
.
opsForValue
().
set
(
tokenSha256
,
loginSysUserVo
,
1
,
TimeUnit
.
DAYS
);
redisTemplate
.
opsForValue
().
set
(
tokenSha256
,
loginSysUserVo
,
1
,
TimeUnit
.
DAYS
);
// 返回token和登录用户信息对象
// 返回token和登录用户信息对象
Login
SysUserTokenVo
loginSysUserTokenVo
=
new
LoginSys
UserTokenVo
();
Login
AppUserTokenVo
loginSysUserTokenVo
=
new
LoginApp
UserTokenVo
();
loginSysUserTokenVo
.
setToken
(
token
);
loginSysUserTokenVo
.
setToken
(
token
);
loginSysUserTokenVo
.
setLoginSysUserVo
(
loginSysUserVo
);
loginSysUserTokenVo
.
setUserId
(
appUser
.
getId
());
// 设置token响应头
// response.setHeader(JwtTokenUtil.getTokenName(), loginSysUserTokenVo.getToken());
return
ApiResult
.
ok
(
loginSysUserTokenVo
,
language
);
return
ApiResult
.
ok
(
loginSysUserTokenVo
,
language
);
}
}
@Override
public
ApiResult
<
LoginSysUserTokenVo
>
phoneLogin
(
RegisterParam
registerParam
,
String
language
)
{
return
null
;
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
@Override
...
...
common/src/main/java/com/jumeirah/common/service/impl/MerchantUserServiceImpl.java
View file @
1ac4cb82
...
@@ -28,7 +28,7 @@ import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
...
@@ -28,7 +28,7 @@ import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import
io.geekidea.springbootplus.framework.shiro.util.JwtTokenUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtTokenUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.SaltUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.SaltUtil
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo
;
import
io.geekidea.springbootplus.framework.util.PasswordUtil
;
import
io.geekidea.springbootplus.framework.util.PasswordUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.shiro.SecurityUtils
;
import
org.apache.shiro.SecurityUtils
;
...
@@ -114,7 +114,7 @@ public class MerchantUserServiceImpl extends BaseServiceImpl<MerchantUserMapper,
...
@@ -114,7 +114,7 @@ public class MerchantUserServiceImpl extends BaseServiceImpl<MerchantUserMapper,
}
}
// 将系统用户对象转换成登录用户对象
// 将系统用户对象转换成登录用户对象
Login
Sys
UserVo
loginSysUserVo
=
SysUserConvert
.
INSTANCE
.
merchantUserToLoginSysUserVo
(
merchantUser
);
LoginUserVo
loginSysUserVo
=
SysUserConvert
.
INSTANCE
.
merchantUserToLoginSysUserVo
(
merchantUser
);
// // 获取部门
// // 获取部门
// SysDepartment sysDepartment = sysDepartmentService.getById(merchantUser.getDepartmentId());
// SysDepartment sysDepartment = sysDepartmentService.getById(merchantUser.getDepartmentId());
...
@@ -156,7 +156,7 @@ public class MerchantUserServiceImpl extends BaseServiceImpl<MerchantUserMapper,
...
@@ -156,7 +156,7 @@ public class MerchantUserServiceImpl extends BaseServiceImpl<MerchantUserMapper,
log
.
debug
(
"token:{}"
,
token
);
log
.
debug
(
"token:{}"
,
token
);
// 创建AuthenticationToken
// 创建AuthenticationToken
JwtToken
jwtToken
=
JwtToken
.
build
(
token
,
username
,
newSalt
,
expireSecond
,
"mer"
);
JwtToken
jwtToken
=
JwtToken
.
build
(
token
,
username
,
merchantUser
.
getId
(),
newSalt
,
expireSecond
,
"mer"
);
boolean
enableShiro
=
springBootPlusProperties
.
getShiro
().
isEnable
();
boolean
enableShiro
=
springBootPlusProperties
.
getShiro
().
isEnable
();
if
(
enableShiro
)
{
if
(
enableShiro
)
{
...
...
common/src/main/java/com/jumeirah/common/service/impl/SysLoginServiceImpl.java
View file @
1ac4cb82
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
jumeirah
.
common
.
service
.
impl
;
package
com
.
jumeirah
.
common
.
service
.
impl
;
...
@@ -40,7 +25,7 @@ import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
...
@@ -40,7 +25,7 @@ import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import
io.geekidea.springbootplus.framework.shiro.util.JwtTokenUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtTokenUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.SaltUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.SaltUtil
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo
;
import
io.geekidea.springbootplus.framework.util.PasswordUtil
;
import
io.geekidea.springbootplus.framework.util.PasswordUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -134,7 +119,7 @@ public class SysLoginServiceImpl implements SysLoginService {
...
@@ -134,7 +119,7 @@ public class SysLoginServiceImpl implements SysLoginService {
}
}
// 将系统用户对象转换成登录用户对象
// 将系统用户对象转换成登录用户对象
Login
Sys
UserVo
loginSysUserVo
=
SysUserConvert
.
INSTANCE
.
sysUserToLoginSysUserVo
(
sysUser
);
LoginUserVo
loginSysUserVo
=
SysUserConvert
.
INSTANCE
.
sysUserToLoginSysUserVo
(
sysUser
);
// 获取部门
// 获取部门
SysDepartment
sysDepartment
=
sysDepartmentService
.
getById
(
sysUser
.
getDepartmentId
());
SysDepartment
sysDepartment
=
sysDepartmentService
.
getById
(
sysUser
.
getDepartmentId
());
...
@@ -176,7 +161,7 @@ public class SysLoginServiceImpl implements SysLoginService {
...
@@ -176,7 +161,7 @@ public class SysLoginServiceImpl implements SysLoginService {
log
.
debug
(
"token:{}"
,
token
);
log
.
debug
(
"token:{}"
,
token
);
// 创建AuthenticationToken
// 创建AuthenticationToken
JwtToken
jwtToken
=
JwtToken
.
build
(
token
,
username
,
newSalt
,
expireSecond
,
"sys"
);
JwtToken
jwtToken
=
JwtToken
.
build
(
token
,
username
,
sysUser
.
getId
(),
newSalt
,
expireSecond
,
"sys"
);
boolean
enableShiro
=
springBootPlusProperties
.
getShiro
().
isEnable
();
boolean
enableShiro
=
springBootPlusProperties
.
getShiro
().
isEnable
();
if
(
enableShiro
)
{
if
(
enableShiro
)
{
...
...
common/src/main/java/com/jumeirah/common/vo/LoginSysUserTokenVo.java
View file @
1ac4cb82
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
package
com
.
jumeirah
.
common
.
vo
;
package
com
.
jumeirah
.
common
.
vo
;
import
io.geekidea.springbootplus.framework.shiro.service.LoginToken
;
import
io.geekidea.springbootplus.framework.shiro.service.LoginToken
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -40,5 +40,5 @@ public class LoginSysUserTokenVo implements LoginToken {
...
@@ -40,5 +40,5 @@ public class LoginSysUserTokenVo implements LoginToken {
/**
/**
* 登录用户对象
* 登录用户对象
*/
*/
private
Login
Sys
UserVo
loginSysUserVo
;
private
LoginUserVo
loginSysUserVo
;
}
}
common/src/main/java/com/jumeirah/common/vo/app/LoginAppUserTokenVo.java
0 → 100755
View file @
1ac4cb82
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
jumeirah
.
common
.
vo
.
app
;
import
io.geekidea.springbootplus.framework.shiro.service.LoginToken
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* @author geekidea
* @date 2019-10-26
**/
@Data
@Accessors
(
chain
=
true
)
@ApiModel
(
"登录用户信息TokenVO"
)
public
class
LoginAppUserTokenVo
implements
LoginToken
{
@ApiModelProperty
(
"token"
)
private
String
token
;
@ApiModelProperty
(
"主键"
)
private
Long
userId
;
@ApiModelProperty
(
"用户名"
)
private
String
username
;
// @ApiModelProperty("昵称")
// private String nickname;
// /**
// * 登录用户对象
// */
// private LoginUserVo loginSysUserVo;
}
config/src/main/resources/config/application.yml
View file @
1ac4cb82
...
@@ -183,7 +183,10 @@ spring-boot-plus:
...
@@ -183,7 +183,10 @@ spring-boot-plus:
# 权限配置
# 权限配置
anon
:
anon
:
# 排除登录 注册 登出
# 排除登录 注册 登出
-
/app/user/register,/app/user/phoneLogin,/app/user/login,/sys/login,/sys/logout,/sys/register,/merchantUser/login
-
/app/user/registerOrLogin,/app/user/login
-
/sys/login,/sys/logout,/sys/register
-
/merchantUser/login
-
/app/sms/registerOrLoginCode
# 排除静态资源
# 排除静态资源
-
/static/**,/templates/**
-
/static/**,/templates/**
# 排除Swagger
# 排除Swagger
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/config/il8n/LanguageEnum.java
View file @
1ac4cb82
...
@@ -34,21 +34,22 @@ public enum LanguageEnum {
...
@@ -34,21 +34,22 @@ public enum LanguageEnum {
/**
/**
* 获取指定语言类型(如果没有对应的语言类型,则返回
英
文)
* 获取指定语言类型(如果没有对应的语言类型,则返回
中
文)
*
*
* @param language 语言类型
* @param language 语言类型
* @return
* @return
*/
*/
public
static
String
getLanguageType
(
String
language
)
{
public
static
String
getLanguageType
(
String
language
)
{
// 设置默认为中文
if
(
StringUtils
.
isEmpty
(
language
))
{
if
(
StringUtils
.
isEmpty
(
language
))
{
return
LANGUAGE_
EN_US
.
language
;
return
LANGUAGE_
ZH_CN
.
language
;
}
}
for
(
LanguageEnum
languageEnum
:
LanguageEnum
.
values
())
{
for
(
LanguageEnum
languageEnum
:
LanguageEnum
.
values
())
{
if
(
languageEnum
.
language
.
equalsIgnoreCase
(
language
))
{
if
(
languageEnum
.
language
.
equalsIgnoreCase
(
language
))
{
return
languageEnum
.
language
;
return
languageEnum
.
language
;
}
}
}
}
return
LANGUAGE_
EN_US
.
language
;
return
LANGUAGE_
ZH_CN
.
language
;
}
}
}
}
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/cache/AppLoginRedisService.java
View file @
1ac4cb82
...
@@ -18,8 +18,8 @@ package io.geekidea.springbootplus.framework.shiro.cache;
...
@@ -18,8 +18,8 @@ package io.geekidea.springbootplus.framework.shiro.cache;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo
;
/**
/**
* 登录信息Redis缓存操作服务
* 登录信息Redis缓存操作服务
...
@@ -36,7 +36,7 @@ public interface AppLoginRedisService {
...
@@ -36,7 +36,7 @@ public interface AppLoginRedisService {
* @param jwtToken
* @param jwtToken
* @param loginSysUserVo
* @param loginSysUserVo
*/
*/
void
cacheLoginInfo
(
JwtToken
jwtToken
,
Login
Sys
UserVo
loginSysUserVo
);
void
cacheLoginInfo
(
JwtToken
jwtToken
,
LoginUserVo
loginSysUserVo
);
/**
/**
...
@@ -54,7 +54,7 @@ public interface AppLoginRedisService {
...
@@ -54,7 +54,7 @@ public interface AppLoginRedisService {
* @param username
* @param username
* @return
* @return
*/
*/
Login
Sys
UserRedisVo
getLoginSysUserRedisVo
(
String
username
);
LoginUserRedisVo
getLoginSysUserRedisVo
(
String
username
);
/**
/**
* 获取登录用户对象
* 获取登录用户对象
...
@@ -62,7 +62,7 @@ public interface AppLoginRedisService {
...
@@ -62,7 +62,7 @@ public interface AppLoginRedisService {
* @param username
* @param username
* @return
* @return
*/
*/
Login
Sys
UserVo
getLoginSysUserVo
(
String
username
);
LoginUserVo
getLoginSysUserVo
(
String
username
);
/**
/**
* 通过用户名称获取盐值
* 通过用户名称获取盐值
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/cache/MerchantLoginRedisService.java
View file @
1ac4cb82
...
@@ -18,8 +18,8 @@ package io.geekidea.springbootplus.framework.shiro.cache;
...
@@ -18,8 +18,8 @@ package io.geekidea.springbootplus.framework.shiro.cache;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo
;
/**
/**
* 登录信息Redis缓存操作服务
* 登录信息Redis缓存操作服务
...
@@ -36,7 +36,7 @@ public interface MerchantLoginRedisService {
...
@@ -36,7 +36,7 @@ public interface MerchantLoginRedisService {
* @param jwtToken
* @param jwtToken
* @param loginSysUserVo
* @param loginSysUserVo
*/
*/
void
cacheLoginInfo
(
JwtToken
jwtToken
,
Login
Sys
UserVo
loginSysUserVo
);
void
cacheLoginInfo
(
JwtToken
jwtToken
,
LoginUserVo
loginSysUserVo
);
/**
/**
...
@@ -54,7 +54,7 @@ public interface MerchantLoginRedisService {
...
@@ -54,7 +54,7 @@ public interface MerchantLoginRedisService {
* @param username
* @param username
* @return
* @return
*/
*/
Login
Sys
UserRedisVo
getLoginSysUserRedisVo
(
String
username
);
LoginUserRedisVo
getLoginSysUserRedisVo
(
String
username
);
/**
/**
* 获取登录用户对象
* 获取登录用户对象
...
@@ -62,7 +62,7 @@ public interface MerchantLoginRedisService {
...
@@ -62,7 +62,7 @@ public interface MerchantLoginRedisService {
* @param username
* @param username
* @return
* @return
*/
*/
Login
Sys
UserVo
getLoginSysUserVo
(
String
username
);
LoginUserVo
getLoginSysUserVo
(
String
username
);
/**
/**
* 通过用户名称获取盐值
* 通过用户名称获取盐值
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/cache/SysLoginRedisService.java
View file @
1ac4cb82
...
@@ -18,8 +18,8 @@ package io.geekidea.springbootplus.framework.shiro.cache;
...
@@ -18,8 +18,8 @@ package io.geekidea.springbootplus.framework.shiro.cache;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo
;
/**
/**
* 登录信息Redis缓存操作服务
* 登录信息Redis缓存操作服务
...
@@ -36,7 +36,7 @@ public interface SysLoginRedisService {
...
@@ -36,7 +36,7 @@ public interface SysLoginRedisService {
* @param jwtToken
* @param jwtToken
* @param loginSysUserVo
* @param loginSysUserVo
*/
*/
void
cacheLoginInfo
(
JwtToken
jwtToken
,
Login
Sys
UserVo
loginSysUserVo
);
void
cacheLoginInfo
(
JwtToken
jwtToken
,
LoginUserVo
loginSysUserVo
);
/**
/**
...
@@ -54,7 +54,7 @@ public interface SysLoginRedisService {
...
@@ -54,7 +54,7 @@ public interface SysLoginRedisService {
* @param username
* @param username
* @return
* @return
*/
*/
Login
Sys
UserRedisVo
getLoginSysUserRedisVo
(
String
username
);
LoginUserRedisVo
getLoginSysUserRedisVo
(
String
username
);
/**
/**
* 获取登录用户对象
* 获取登录用户对象
...
@@ -62,7 +62,7 @@ public interface SysLoginRedisService {
...
@@ -62,7 +62,7 @@ public interface SysLoginRedisService {
* @param username
* @param username
* @return
* @return
*/
*/
Login
Sys
UserVo
getLoginSysUserVo
(
String
username
);
LoginUserVo
getLoginSysUserVo
(
String
username
);
/**
/**
* 通过用户名称获取盐值
* 通过用户名称获取盐值
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/cache/impl/AppLoginRedisServiceImpl.java
View file @
1ac4cb82
...
@@ -9,8 +9,8 @@ import io.geekidea.springbootplus.framework.shiro.convert.LoginSysUserVoConvert;
...
@@ -9,8 +9,8 @@ import io.geekidea.springbootplus.framework.shiro.convert.LoginSysUserVoConvert;
import
io.geekidea.springbootplus.framework.shiro.convert.ShiroMapstructConvert
;
import
io.geekidea.springbootplus.framework.shiro.convert.ShiroMapstructConvert
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.vo.JwtTokenRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.JwtTokenRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo
;
import
io.geekidea.springbootplus.framework.util.ClientInfoUtil
;
import
io.geekidea.springbootplus.framework.util.ClientInfoUtil
;
import
io.geekidea.springbootplus.framework.util.HttpServletRequestUtil
;
import
io.geekidea.springbootplus.framework.util.HttpServletRequestUtil
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.apache.commons.codec.digest.DigestUtils
;
...
@@ -42,7 +42,7 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService {
...
@@ -42,7 +42,7 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService {
* username:num
* username:num
*/
*/
@Override
@Override
public
void
cacheLoginInfo
(
JwtToken
jwtToken
,
Login
Sys
UserVo
loginSysUserVo
)
{
public
void
cacheLoginInfo
(
JwtToken
jwtToken
,
LoginUserVo
loginSysUserVo
)
{
if
(
jwtToken
==
null
)
{
if
(
jwtToken
==
null
)
{
throw
new
IllegalArgumentException
(
"jwtToken不能为空"
);
throw
new
IllegalArgumentException
(
"jwtToken不能为空"
);
}
}
...
@@ -61,13 +61,14 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService {
...
@@ -61,13 +61,14 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService {
// Redis缓存JWT Token信息
// Redis缓存JWT Token信息
JwtTokenRedisVo
jwtTokenRedisVo
=
ShiroMapstructConvert
.
INSTANCE
.
jwtTokenToJwtTokenRedisVo
(
jwtToken
);
JwtTokenRedisVo
jwtTokenRedisVo
=
ShiroMapstructConvert
.
INSTANCE
.
jwtTokenToJwtTokenRedisVo
(
jwtToken
);
jwtTokenRedisVo
.
setUserId
(
loginSysUserVo
.
getId
());
// 用户客户端信息
// 用户客户端信息
ClientInfo
clientInfo
=
ClientInfoUtil
.
get
(
HttpServletRequestUtil
.
getRequest
());
ClientInfo
clientInfo
=
ClientInfoUtil
.
get
(
HttpServletRequestUtil
.
getRequest
());
// Redis缓存登录用户信息
// Redis缓存登录用户信息
// 将LoginSysUserVo对象复制到LoginSysUserRedisVo,使用mapstruct进行对象属性复制
// 将LoginSysUserVo对象复制到LoginSysUserRedisVo,使用mapstruct进行对象属性复制
Login
Sys
UserRedisVo
loginSysUserRedisVo
=
LoginSysUserVoConvert
.
INSTANCE
.
voToRedisVo
(
loginSysUserVo
);
LoginUserRedisVo
loginSysUserRedisVo
=
LoginSysUserVoConvert
.
INSTANCE
.
voToRedisVo
(
loginSysUserVo
);
loginSysUserRedisVo
.
setSalt
(
salt
);
loginSysUserRedisVo
.
setSalt
(
salt
);
loginSysUserRedisVo
.
setClientInfo
(
clientInfo
);
loginSysUserRedisVo
.
setClientInfo
(
clientInfo
);
...
@@ -94,7 +95,7 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService {
...
@@ -94,7 +95,7 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService {
@Override
@Override
public
void
refreshLoginInfo
(
String
oldToken
,
String
username
,
JwtToken
newJwtToken
)
{
public
void
refreshLoginInfo
(
String
oldToken
,
String
username
,
JwtToken
newJwtToken
)
{
// 获取缓存的登录用户信息
// 获取缓存的登录用户信息
Login
Sys
UserRedisVo
loginSysUserRedisVo
=
getLoginSysUserRedisVo
(
username
);
LoginUserRedisVo
loginSysUserRedisVo
=
getLoginSysUserRedisVo
(
username
);
// 删除之前的token信息
// 删除之前的token信息
deleteLoginInfo
(
oldToken
,
username
);
deleteLoginInfo
(
oldToken
,
username
);
// 缓存登录信息
// 缓存登录信息
...
@@ -102,19 +103,19 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService {
...
@@ -102,19 +103,19 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService {
}
}
@Override
@Override
public
Login
Sys
UserRedisVo
getLoginSysUserRedisVo
(
String
username
)
{
public
LoginUserRedisVo
getLoginSysUserRedisVo
(
String
username
)
{
if
(
StringUtils
.
isBlank
(
username
))
{
if
(
StringUtils
.
isBlank
(
username
))
{
throw
new
IllegalArgumentException
(
"username不能为空"
);
throw
new
IllegalArgumentException
(
"username不能为空"
);
}
}
return
(
Login
Sys
UserRedisVo
)
redisTemplate
.
opsForValue
().
get
(
String
.
format
(
AppLoginRedisKey
.
LOGIN_USER
,
username
));
return
(
LoginUserRedisVo
)
redisTemplate
.
opsForValue
().
get
(
String
.
format
(
AppLoginRedisKey
.
LOGIN_USER
,
username
));
}
}
@Override
@Override
public
Login
Sys
UserVo
getLoginSysUserVo
(
String
username
)
{
public
LoginUserVo
getLoginSysUserVo
(
String
username
)
{
if
(
StringUtils
.
isBlank
(
username
))
{
if
(
StringUtils
.
isBlank
(
username
))
{
throw
new
IllegalArgumentException
(
"username不能为空"
);
throw
new
IllegalArgumentException
(
"username不能为空"
);
}
}
Login
Sys
UserRedisVo
userRedisVo
=
getLoginSysUserRedisVo
(
username
);
LoginUserRedisVo
userRedisVo
=
getLoginSysUserRedisVo
(
username
);
return
userRedisVo
;
return
userRedisVo
;
}
}
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/cache/impl/MerchantLoginRedisServiceImpl.java
View file @
1ac4cb82
...
@@ -9,8 +9,8 @@ import io.geekidea.springbootplus.framework.shiro.convert.LoginSysUserVoConvert;
...
@@ -9,8 +9,8 @@ import io.geekidea.springbootplus.framework.shiro.convert.LoginSysUserVoConvert;
import
io.geekidea.springbootplus.framework.shiro.convert.ShiroMapstructConvert
;
import
io.geekidea.springbootplus.framework.shiro.convert.ShiroMapstructConvert
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.vo.JwtTokenRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.JwtTokenRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo
;
import
io.geekidea.springbootplus.framework.util.ClientInfoUtil
;
import
io.geekidea.springbootplus.framework.util.ClientInfoUtil
;
import
io.geekidea.springbootplus.framework.util.HttpServletRequestUtil
;
import
io.geekidea.springbootplus.framework.util.HttpServletRequestUtil
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.apache.commons.codec.digest.DigestUtils
;
...
@@ -42,7 +42,7 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService
...
@@ -42,7 +42,7 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService
* username:num
* username:num
*/
*/
@Override
@Override
public
void
cacheLoginInfo
(
JwtToken
jwtToken
,
Login
Sys
UserVo
loginSysUserVo
)
{
public
void
cacheLoginInfo
(
JwtToken
jwtToken
,
LoginUserVo
loginSysUserVo
)
{
if
(
jwtToken
==
null
)
{
if
(
jwtToken
==
null
)
{
throw
new
IllegalArgumentException
(
"jwtToken不能为空"
);
throw
new
IllegalArgumentException
(
"jwtToken不能为空"
);
}
}
...
@@ -60,13 +60,14 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService
...
@@ -60,13 +60,14 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService
// Redis缓存JWT Token信息
// Redis缓存JWT Token信息
JwtTokenRedisVo
jwtTokenRedisVo
=
ShiroMapstructConvert
.
INSTANCE
.
jwtTokenToJwtTokenRedisVo
(
jwtToken
);
JwtTokenRedisVo
jwtTokenRedisVo
=
ShiroMapstructConvert
.
INSTANCE
.
jwtTokenToJwtTokenRedisVo
(
jwtToken
);
jwtTokenRedisVo
.
setUserId
(
loginSysUserVo
.
getId
());
// 用户客户端信息
// 用户客户端信息
ClientInfo
clientInfo
=
ClientInfoUtil
.
get
(
HttpServletRequestUtil
.
getRequest
());
ClientInfo
clientInfo
=
ClientInfoUtil
.
get
(
HttpServletRequestUtil
.
getRequest
());
// Redis缓存登录用户信息
// Redis缓存登录用户信息
// 将LoginSysUserVo对象复制到LoginSysUserRedisVo,使用mapstruct进行对象属性复制
// 将LoginSysUserVo对象复制到LoginSysUserRedisVo,使用mapstruct进行对象属性复制
Login
Sys
UserRedisVo
loginSysUserRedisVo
=
LoginSysUserVoConvert
.
INSTANCE
.
voToRedisVo
(
loginSysUserVo
);
LoginUserRedisVo
loginSysUserRedisVo
=
LoginSysUserVoConvert
.
INSTANCE
.
voToRedisVo
(
loginSysUserVo
);
loginSysUserRedisVo
.
setSalt
(
salt
);
loginSysUserRedisVo
.
setSalt
(
salt
);
loginSysUserRedisVo
.
setClientInfo
(
clientInfo
);
loginSysUserRedisVo
.
setClientInfo
(
clientInfo
);
...
@@ -93,7 +94,7 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService
...
@@ -93,7 +94,7 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService
@Override
@Override
public
void
refreshLoginInfo
(
String
oldToken
,
String
username
,
JwtToken
newJwtToken
)
{
public
void
refreshLoginInfo
(
String
oldToken
,
String
username
,
JwtToken
newJwtToken
)
{
// 获取缓存的登录用户信息
// 获取缓存的登录用户信息
Login
Sys
UserRedisVo
loginSysUserRedisVo
=
getLoginSysUserRedisVo
(
username
);
LoginUserRedisVo
loginSysUserRedisVo
=
getLoginSysUserRedisVo
(
username
);
// 删除之前的token信息
// 删除之前的token信息
deleteLoginInfo
(
oldToken
,
username
);
deleteLoginInfo
(
oldToken
,
username
);
// 缓存登录信息
// 缓存登录信息
...
@@ -101,19 +102,19 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService
...
@@ -101,19 +102,19 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService
}
}
@Override
@Override
public
Login
Sys
UserRedisVo
getLoginSysUserRedisVo
(
String
username
)
{
public
LoginUserRedisVo
getLoginSysUserRedisVo
(
String
username
)
{
if
(
StringUtils
.
isBlank
(
username
))
{
if
(
StringUtils
.
isBlank
(
username
))
{
throw
new
IllegalArgumentException
(
"username不能为空"
);
throw
new
IllegalArgumentException
(
"username不能为空"
);
}
}
return
(
Login
Sys
UserRedisVo
)
redisTemplate
.
opsForValue
().
get
(
String
.
format
(
MerchantLoginRedisKey
.
LOGIN_USER
,
username
));
return
(
LoginUserRedisVo
)
redisTemplate
.
opsForValue
().
get
(
String
.
format
(
MerchantLoginRedisKey
.
LOGIN_USER
,
username
));
}
}
@Override
@Override
public
Login
Sys
UserVo
getLoginSysUserVo
(
String
username
)
{
public
LoginUserVo
getLoginSysUserVo
(
String
username
)
{
if
(
StringUtils
.
isBlank
(
username
))
{
if
(
StringUtils
.
isBlank
(
username
))
{
throw
new
IllegalArgumentException
(
"username不能为空"
);
throw
new
IllegalArgumentException
(
"username不能为空"
);
}
}
Login
Sys
UserRedisVo
userRedisVo
=
getLoginSysUserRedisVo
(
username
);
LoginUserRedisVo
userRedisVo
=
getLoginSysUserRedisVo
(
username
);
return
userRedisVo
;
return
userRedisVo
;
}
}
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/cache/impl/SysLoginRedisServiceImpl.java
View file @
1ac4cb82
...
@@ -25,8 +25,8 @@ import io.geekidea.springbootplus.framework.shiro.convert.LoginSysUserVoConvert;
...
@@ -25,8 +25,8 @@ import io.geekidea.springbootplus.framework.shiro.convert.LoginSysUserVoConvert;
import
io.geekidea.springbootplus.framework.shiro.convert.ShiroMapstructConvert
;
import
io.geekidea.springbootplus.framework.shiro.convert.ShiroMapstructConvert
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.vo.JwtTokenRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.JwtTokenRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo
;
import
io.geekidea.springbootplus.framework.util.ClientInfoUtil
;
import
io.geekidea.springbootplus.framework.util.ClientInfoUtil
;
import
io.geekidea.springbootplus.framework.util.HttpServletRequestUtil
;
import
io.geekidea.springbootplus.framework.util.HttpServletRequestUtil
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.apache.commons.codec.digest.DigestUtils
;
...
@@ -65,7 +65,7 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService {
...
@@ -65,7 +65,7 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService {
* username:num
* username:num
*/
*/
@Override
@Override
public
void
cacheLoginInfo
(
JwtToken
jwtToken
,
Login
Sys
UserVo
loginSysUserVo
)
{
public
void
cacheLoginInfo
(
JwtToken
jwtToken
,
LoginUserVo
loginSysUserVo
)
{
if
(
jwtToken
==
null
)
{
if
(
jwtToken
==
null
)
{
throw
new
IllegalArgumentException
(
"jwtToken不能为空"
);
throw
new
IllegalArgumentException
(
"jwtToken不能为空"
);
}
}
...
@@ -84,12 +84,13 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService {
...
@@ -84,12 +84,13 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService {
// Redis缓存JWT Token信息
// Redis缓存JWT Token信息
JwtTokenRedisVo
jwtTokenRedisVo
=
ShiroMapstructConvert
.
INSTANCE
.
jwtTokenToJwtTokenRedisVo
(
jwtToken
);
JwtTokenRedisVo
jwtTokenRedisVo
=
ShiroMapstructConvert
.
INSTANCE
.
jwtTokenToJwtTokenRedisVo
(
jwtToken
);
jwtTokenRedisVo
.
setUserId
(
loginSysUserVo
.
getId
());
// 用户客户端信息
// 用户客户端信息
ClientInfo
clientInfo
=
ClientInfoUtil
.
get
(
HttpServletRequestUtil
.
getRequest
());
ClientInfo
clientInfo
=
ClientInfoUtil
.
get
(
HttpServletRequestUtil
.
getRequest
());
// Redis缓存登录用户信息
// Redis缓存登录用户信息
// 将LoginSysUserVo对象复制到LoginSysUserRedisVo,使用mapstruct进行对象属性复制
// 将LoginSysUserVo对象复制到LoginSysUserRedisVo,使用mapstruct进行对象属性复制
Login
Sys
UserRedisVo
loginSysUserRedisVo
=
LoginSysUserVoConvert
.
INSTANCE
.
voToRedisVo
(
loginSysUserVo
);
LoginUserRedisVo
loginSysUserRedisVo
=
LoginSysUserVoConvert
.
INSTANCE
.
voToRedisVo
(
loginSysUserVo
);
loginSysUserRedisVo
.
setSalt
(
salt
);
loginSysUserRedisVo
.
setSalt
(
salt
);
loginSysUserRedisVo
.
setClientInfo
(
clientInfo
);
loginSysUserRedisVo
.
setClientInfo
(
clientInfo
);
...
@@ -116,7 +117,7 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService {
...
@@ -116,7 +117,7 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService {
@Override
@Override
public
void
refreshLoginInfo
(
String
oldToken
,
String
username
,
JwtToken
newJwtToken
)
{
public
void
refreshLoginInfo
(
String
oldToken
,
String
username
,
JwtToken
newJwtToken
)
{
// 获取缓存的登录用户信息
// 获取缓存的登录用户信息
Login
Sys
UserRedisVo
loginSysUserRedisVo
=
getLoginSysUserRedisVo
(
username
);
LoginUserRedisVo
loginSysUserRedisVo
=
getLoginSysUserRedisVo
(
username
);
// 删除之前的token信息
// 删除之前的token信息
deleteLoginInfo
(
oldToken
,
username
);
deleteLoginInfo
(
oldToken
,
username
);
// 缓存登录信息
// 缓存登录信息
...
@@ -124,19 +125,19 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService {
...
@@ -124,19 +125,19 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService {
}
}
@Override
@Override
public
Login
Sys
UserRedisVo
getLoginSysUserRedisVo
(
String
username
)
{
public
LoginUserRedisVo
getLoginSysUserRedisVo
(
String
username
)
{
if
(
StringUtils
.
isBlank
(
username
))
{
if
(
StringUtils
.
isBlank
(
username
))
{
throw
new
IllegalArgumentException
(
"username不能为空"
);
throw
new
IllegalArgumentException
(
"username不能为空"
);
}
}
return
(
Login
Sys
UserRedisVo
)
redisTemplate
.
opsForValue
().
get
(
String
.
format
(
SysLoginRedisKey
.
LOGIN_USER
,
username
));
return
(
LoginUserRedisVo
)
redisTemplate
.
opsForValue
().
get
(
String
.
format
(
SysLoginRedisKey
.
LOGIN_USER
,
username
));
}
}
@Override
@Override
public
Login
Sys
UserVo
getLoginSysUserVo
(
String
username
)
{
public
LoginUserVo
getLoginSysUserVo
(
String
username
)
{
if
(
StringUtils
.
isBlank
(
username
))
{
if
(
StringUtils
.
isBlank
(
username
))
{
throw
new
IllegalArgumentException
(
"username不能为空"
);
throw
new
IllegalArgumentException
(
"username不能为空"
);
}
}
Login
Sys
UserRedisVo
userRedisVo
=
getLoginSysUserRedisVo
(
username
);
LoginUserRedisVo
userRedisVo
=
getLoginSysUserRedisVo
(
username
);
return
userRedisVo
;
return
userRedisVo
;
}
}
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/convert/LoginSysUserVoConvert.java
View file @
1ac4cb82
...
@@ -16,8 +16,8 @@
...
@@ -16,8 +16,8 @@
package
io
.
geekidea
.
springbootplus
.
framework
.
shiro
.
convert
;
package
io
.
geekidea
.
springbootplus
.
framework
.
shiro
.
convert
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
import
org.mapstruct.factory.Mappers
;
...
@@ -38,6 +38,6 @@ public interface LoginSysUserVoConvert {
...
@@ -38,6 +38,6 @@ public interface LoginSysUserVoConvert {
* @param loginSysUserVo
* @param loginSysUserVo
* @return
* @return
*/
*/
Login
SysUserRedisVo
voToRedisVo
(
LoginSys
UserVo
loginSysUserVo
);
Login
UserRedisVo
voToRedisVo
(
Login
UserVo
loginSysUserVo
);
}
}
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/jwt/JwtFilter.java
View file @
1ac4cb82
...
@@ -95,6 +95,12 @@ public class JwtFilter extends AuthenticatingFilter {
...
@@ -95,6 +95,12 @@ public class JwtFilter extends AuthenticatingFilter {
}
}
}
}
JwtTokenRedisVo
jwt
=
(
JwtTokenRedisVo
)
jwtTokenRedisVo
;
if
(
jwt
==
null
)
{
throw
new
AuthenticationException
(
"Redis Token不存在,token:"
+
token
);
}
String
username
=
JwtUtil
.
getUsername
(
token
);
String
username
=
JwtUtil
.
getUsername
(
token
);
String
salt
;
String
salt
;
...
@@ -103,8 +109,8 @@ public class JwtFilter extends AuthenticatingFilter {
...
@@ -103,8 +109,8 @@ public class JwtFilter extends AuthenticatingFilter {
}
else
{
}
else
{
salt
=
jwtProperties
.
getSecret
();
salt
=
jwtProperties
.
getSecret
();
}
}
JwtTokenRedisVo
jwt
=
(
JwtTokenRedisVo
)
jwtTokenRedisVo
;
return
JwtToken
.
build
(
token
,
username
,
salt
,
jwtProperties
.
getExpireSecond
(),
jwt
.
getType
());
return
JwtToken
.
build
(
token
,
username
,
jwt
.
getUserId
(),
salt
,
jwtProperties
.
getExpireSecond
(),
jwt
.
getType
());
}
}
/**
/**
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/jwt/JwtToken.java
View file @
1ac4cb82
...
@@ -43,6 +43,12 @@ public class JwtToken implements HostAuthenticationToken {
...
@@ -43,6 +43,12 @@ public class JwtToken implements HostAuthenticationToken {
* 登录ip
* 登录ip
*/
*/
private
String
host
;
private
String
host
;
/**
* 登录用户ID
*/
private
Long
userId
;
/**
/**
* 登录用户名称
* 登录用户名称
*/
*/
...
@@ -72,12 +78,13 @@ public class JwtToken implements HostAuthenticationToken {
...
@@ -72,12 +78,13 @@ public class JwtToken implements HostAuthenticationToken {
private
String
credentials
;
private
String
credentials
;
public
static
JwtToken
build
(
String
token
,
String
username
,
String
salt
,
long
expireSecond
,
String
type
)
{
public
static
JwtToken
build
(
String
token
,
String
username
,
Long
userId
,
String
salt
,
long
expireSecond
,
String
type
)
{
DecodedJWT
decodedJwt
=
JwtUtil
.
getJwtInfo
(
token
);
DecodedJWT
decodedJwt
=
JwtUtil
.
getJwtInfo
(
token
);
Date
createDate
=
decodedJwt
.
getIssuedAt
();
Date
createDate
=
decodedJwt
.
getIssuedAt
();
Date
expireDate
=
decodedJwt
.
getExpiresAt
();
Date
expireDate
=
decodedJwt
.
getExpiresAt
();
return
new
JwtToken
()
return
new
JwtToken
()
.
setUsername
(
username
)
.
setUsername
(
username
)
.
setUserId
(
userId
)
.
setToken
(
token
)
.
setToken
(
token
)
.
setHost
(
IpUtil
.
getRequestIp
())
.
setHost
(
IpUtil
.
getRequestIp
())
.
setSalt
(
salt
)
.
setSalt
(
salt
)
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/jwt/realm/JwtRealmMerchant.java
View file @
1ac4cb82
...
@@ -18,7 +18,7 @@ package io.geekidea.springbootplus.framework.shiro.jwt.realm;
...
@@ -18,7 +18,7 @@ package io.geekidea.springbootplus.framework.shiro.jwt.realm;
import
io.geekidea.springbootplus.framework.shiro.cache.MerchantLoginRedisService
;
import
io.geekidea.springbootplus.framework.shiro.cache.MerchantLoginRedisService
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserRedisVo
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.SetUtils
;
import
org.apache.commons.collections4.SetUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
@@ -73,7 +73,7 @@ public class JwtRealmMerchant extends AuthorizingRealm {
...
@@ -73,7 +73,7 @@ public class JwtRealmMerchant extends AuthorizingRealm {
// 获取username
// 获取username
String
username
=
jwtToken
.
getUsername
();
String
username
=
jwtToken
.
getUsername
();
// 获取登录用户角色权限信息
// 获取登录用户角色权限信息
Login
Sys
UserRedisVo
loginSysUserRedisVo
=
merchantLoginRedisService
.
getLoginSysUserRedisVo
(
username
);
LoginUserRedisVo
loginSysUserRedisVo
=
merchantLoginRedisService
.
getLoginSysUserRedisVo
(
username
);
SimpleAuthorizationInfo
authorizationInfo
=
new
SimpleAuthorizationInfo
();
SimpleAuthorizationInfo
authorizationInfo
=
new
SimpleAuthorizationInfo
();
// 设置角色
// 设置角色
authorizationInfo
.
setRoles
(
SetUtils
.
hashSet
(
loginSysUserRedisVo
.
getRoleCode
()));
authorizationInfo
.
setRoles
(
SetUtils
.
hashSet
(
loginSysUserRedisVo
.
getRoleCode
()));
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/jwt/realm/JwtRealmSystem.java
View file @
1ac4cb82
...
@@ -18,7 +18,7 @@ package io.geekidea.springbootplus.framework.shiro.jwt.realm;
...
@@ -18,7 +18,7 @@ package io.geekidea.springbootplus.framework.shiro.jwt.realm;
import
io.geekidea.springbootplus.framework.shiro.cache.SysLoginRedisService
;
import
io.geekidea.springbootplus.framework.shiro.cache.SysLoginRedisService
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserRedisVo
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.SetUtils
;
import
org.apache.commons.collections4.SetUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
@@ -69,7 +69,7 @@ public class JwtRealmSystem extends AuthorizingRealm {
...
@@ -69,7 +69,7 @@ public class JwtRealmSystem extends AuthorizingRealm {
// 获取username
// 获取username
String
username
=
jwtToken
.
getUsername
();
String
username
=
jwtToken
.
getUsername
();
// 获取登录用户角色权限信息
// 获取登录用户角色权限信息
Login
Sys
UserRedisVo
loginSysUserRedisVo
=
sysLoginRedisService
.
getLoginSysUserRedisVo
(
username
);
LoginUserRedisVo
loginSysUserRedisVo
=
sysLoginRedisService
.
getLoginSysUserRedisVo
(
username
);
SimpleAuthorizationInfo
authorizationInfo
=
new
SimpleAuthorizationInfo
();
SimpleAuthorizationInfo
authorizationInfo
=
new
SimpleAuthorizationInfo
();
// 设置角色
// 设置角色
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/service/impl/ShiroLoginServiceImpl.java
View file @
1ac4cb82
...
@@ -103,7 +103,7 @@ public class ShiroLoginServiceImpl implements ShiroLoginService {
...
@@ -103,7 +103,7 @@ public class ShiroLoginServiceImpl implements ShiroLoginService {
// 生成新token字符串
// 生成新token字符串
String
newToken
=
JwtUtil
.
generateToken
(
username
,
salt
,
Duration
.
ofSeconds
(
expireSecond
));
String
newToken
=
JwtUtil
.
generateToken
(
username
,
salt
,
Duration
.
ofSeconds
(
expireSecond
));
// 生成新JwtToken对象
// 生成新JwtToken对象
JwtToken
newJwtToken
=
JwtToken
.
build
(
newToken
,
username
,
salt
,
expireSecond
,
jwtToken
.
getType
());
JwtToken
newJwtToken
=
JwtToken
.
build
(
newToken
,
username
,
jwtToken
.
getUserId
(),
salt
,
expireSecond
,
jwtToken
.
getType
());
// 更新redis缓存
// 更新redis缓存
sysLoginRedisService
.
refreshLoginInfo
(
token
,
username
,
newJwtToken
);
sysLoginRedisService
.
refreshLoginInfo
(
token
,
username
,
newJwtToken
);
log
.
debug
(
"刷新token成功,原token:{},新token:{}"
,
token
,
newToken
);
log
.
debug
(
"刷新token成功,原token:{},新token:{}"
,
token
,
newToken
);
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/vo/JwtTokenRedisVo.java
View file @
1ac4cb82
...
@@ -39,6 +39,12 @@ public class JwtTokenRedisVo implements Serializable {
...
@@ -39,6 +39,12 @@ public class JwtTokenRedisVo implements Serializable {
* 登录ip
* 登录ip
*/
*/
private
String
host
;
private
String
host
;
/**
* 登录用户ID
*/
private
Long
userId
;
/**
/**
* 登录用户名称
* 登录用户名称
*/
*/
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/vo/Login
Sys
UserRedisVo.java
→
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/vo/LoginUserRedisVo.java
View file @
1ac4cb82
...
@@ -30,7 +30,7 @@ import lombok.experimental.Accessors;
...
@@ -30,7 +30,7 @@ import lombok.experimental.Accessors;
@Data
@Data
@Accessors
(
chain
=
true
)
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
false
)
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
Login
SysUserRedisVo
extends
LoginSys
UserVo
{
public
class
Login
UserRedisVo
extends
Login
UserVo
{
private
static
final
long
serialVersionUID
=
-
3858850188055605806L
;
private
static
final
long
serialVersionUID
=
-
3858850188055605806L
;
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/vo/Login
Sys
UserVo.java
→
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/vo/LoginUserVo.java
View file @
1ac4cb82
...
@@ -33,7 +33,7 @@ import java.util.Set;
...
@@ -33,7 +33,7 @@ import java.util.Set;
**/
**/
@Data
@Data
@Accessors
(
chain
=
true
)
@Accessors
(
chain
=
true
)
public
class
Login
Sys
UserVo
implements
Serializable
{
public
class
LoginUserVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
1758338570596088158L
;
private
static
final
long
serialVersionUID
=
-
1758338570596088158L
;
...
...
framework/src/main/java/io/geekidea/springbootplus/framework/util/LoginUtil.java
View file @
1ac4cb82
...
@@ -18,7 +18,7 @@ package io.geekidea.springbootplus.framework.util;
...
@@ -18,7 +18,7 @@ package io.geekidea.springbootplus.framework.util;
import
io.geekidea.springbootplus.framework.shiro.util.JwtTokenUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtTokenUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtUtil
;
import
io.geekidea.springbootplus.framework.shiro.vo.Login
Sys
UserRedisVo
;
import
io.geekidea.springbootplus.framework.shiro.vo.LoginUserRedisVo
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.RedisTemplate
;
...
@@ -47,7 +47,7 @@ public class LoginUtil {
...
@@ -47,7 +47,7 @@ public class LoginUtil {
*
*
* @return
* @return
*/
*/
public
static
Login
Sys
UserRedisVo
getLoginSysUserRedisVo
()
{
public
static
LoginUserRedisVo
getLoginSysUserRedisVo
()
{
// 获取当前登录用户
// 获取当前登录用户
String
token
=
JwtTokenUtil
.
getToken
();
String
token
=
JwtTokenUtil
.
getToken
();
String
username
=
JwtUtil
.
getUsername
(
token
);
String
username
=
JwtUtil
.
getUsername
(
token
);
...
@@ -56,7 +56,7 @@ public class LoginUtil {
...
@@ -56,7 +56,7 @@ public class LoginUtil {
}
}
// return (LoginSysUserRedisVo) redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_USER, username));
// return (LoginSysUserRedisVo) redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_USER, username));
Login
SysUserRedisVo
loginSysUserRedisVo
=
new
LoginSys
UserRedisVo
();
Login
UserRedisVo
loginSysUserRedisVo
=
new
Login
UserRedisVo
();
loginSysUserRedisVo
.
setUsername
(
username
);
loginSysUserRedisVo
.
setUsername
(
username
);
return
loginSysUserRedisVo
;
return
loginSysUserRedisVo
;
}
}
...
@@ -67,7 +67,7 @@ public class LoginUtil {
...
@@ -67,7 +67,7 @@ public class LoginUtil {
* @return
* @return
*/
*/
public
static
Long
getUserId
()
{
public
static
Long
getUserId
()
{
Login
Sys
UserRedisVo
loginSysUserRedisVo
=
getLoginSysUserRedisVo
();
LoginUserRedisVo
loginSysUserRedisVo
=
getLoginSysUserRedisVo
();
if
(
loginSysUserRedisVo
==
null
)
{
if
(
loginSysUserRedisVo
==
null
)
{
return
null
;
return
null
;
}
}
...
@@ -80,7 +80,7 @@ public class LoginUtil {
...
@@ -80,7 +80,7 @@ public class LoginUtil {
* @return
* @return
*/
*/
public
static
String
getUsername
()
{
public
static
String
getUsername
()
{
Login
Sys
UserRedisVo
loginSysUserRedisVo
=
getLoginSysUserRedisVo
();
LoginUserRedisVo
loginSysUserRedisVo
=
getLoginSysUserRedisVo
();
if
(
loginSysUserRedisVo
==
null
)
{
if
(
loginSysUserRedisVo
==
null
)
{
return
null
;
return
null
;
}
}
...
...
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