Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
head_group
xyqb-user2
Commits
5e3ec8d1
Commit
5e3ec8d1
authored
Dec 20, 2021
by
killer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加用户状态
parent
738586df
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
192 additions
and
39 deletions
+192
-39
UserStatusEnum.java
src/main/java/cn/quantgroup/user/enums/UserStatusEnum.java
+58
-0
Constants.java
src/main/java/cn/quantgroup/xyqb/Constants.java
+3
-0
UserController.java
...n/quantgroup/xyqb/controller/external/UserController.java
+5
-4
WeChatController.java
...quantgroup/xyqb/controller/external/WeChatController.java
+2
-1
AppController.java
...antgroup/xyqb/controller/internal/user/AppController.java
+5
-4
InnerController.java
...tgroup/xyqb/controller/internal/user/InnerController.java
+59
-13
LoginModule.java
...group/xyqb/controller/middleoffice/login/LoginModule.java
+4
-5
UserController.java
...oup/xyqb/controller/middleoffice/user/UserController.java
+9
-2
User.java
src/main/java/cn/quantgroup/xyqb/entity/User.java
+1
-1
DisableActiveEventListner.java
...a/cn/quantgroup/xyqb/event/DisableActiveEventListner.java
+2
-1
Tuple.java
src/main/java/cn/quantgroup/xyqb/model/Tuple.java
+3
-0
UserFullInfo.java
src/main/java/cn/quantgroup/xyqb/model/UserFullInfo.java
+2
-1
UserRegisterMqMessage.java
.../java/cn/quantgroup/xyqb/model/UserRegisterMqMessage.java
+2
-1
UserRet.java
src/main/java/cn/quantgroup/xyqb/model/UserRet.java
+2
-1
IUserRegisterService.java
...uantgroup/xyqb/service/register/IUserRegisterService.java
+8
-0
UserRegisterServiceImpl.java
...p/xyqb/service/register/impl/UserRegisterServiceImpl.java
+10
-1
UserServiceImpl.java
...cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
+4
-2
DateUtils.java
src/main/java/cn/quantgroup/xyqb/util/DateUtils.java
+13
-2
No files found.
src/main/java/cn/quantgroup/user/enums/UserStatusEnum.java
0 → 100644
View file @
5e3ec8d1
package
cn
.
quantgroup
.
user
.
enums
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.model.Tuple
;
import
lombok.Getter
;
/**
* 用户状态枚举
* <br>此枚举顺序不能更改,使用到了ordinal</>
*
* @author killer
* @date 2021年12月17日
**/
@Getter
public
enum
UserStatusEnum
{
/** 0 冻结 */
FREEZE
,
/** 1 正常启用 */
NORMAL
,
/** 2 销户 */
DELETE
;
/**
* 校验用户当前是否可用
*
* @param user user
* @return 是否可用
*/
public
static
Tuple
<
Boolean
,
JsonResult
<?>>
isDisable
(
User
user
)
{
switch
(
user
.
getEnable
())
{
case
0
:
{
return
Tuple
.
of
(
Boolean
.
TRUE
,
JsonResult
.
buildErrorStateResult
(
"用户账户已冻结"
,
null
));
}
case
2
:
{
return
Tuple
.
of
(
Boolean
.
TRUE
,
JsonResult
.
buildErrorStateResult
(
"用户账户已销户"
,
null
));
}
default
:
return
Tuple
.
of
(
Boolean
.
FALSE
,
null
);
}
}
/**
* 兼容历史接口入参为boolean值
*
* @param status 入参 true:启动;false:冻结
* @return UserStatus
*/
public
static
int
converter
(
boolean
status
)
{
if
(
status
)
{
return
NORMAL
.
ordinal
();
}
return
FREEZE
.
ordinal
();
}
}
src/main/java/cn/quantgroup/xyqb/Constants.java
View file @
5e3ec8d1
...
@@ -231,4 +231,7 @@ public interface Constants {
...
@@ -231,4 +231,7 @@ public interface Constants {
*/
*/
String
VERIFY_TYPE_QG
=
"qg"
;
String
VERIFY_TYPE_QG
=
"qg"
;
// -- End -- 验证码常量组
// -- End -- 验证码常量组
/** 注销用户后再次允许注册时间间隔-天数 */
long
DELETE_USER_AGAIN_REGISTER_INTERVAL
=
90
;
}
}
src/main/java/cn/quantgroup/xyqb/controller/external/UserController.java
View file @
5e3ec8d1
package
cn
.
quantgroup
.
xyqb
.
controller
.
external
;
package
cn
.
quantgroup
.
xyqb
.
controller
.
external
;
import
cn.quantgroup.user.enums.UserStatusEnum
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.aspect.accessable.IpValidator
;
import
cn.quantgroup.xyqb.aspect.accessable.IpValidator
;
import
cn.quantgroup.xyqb.aspect.captcha.CaptchaFiniteValidator
;
import
cn.quantgroup.xyqb.aspect.captcha.CaptchaFiniteValidator
;
...
@@ -394,8 +395,8 @@ public class UserController implements IBaseController {
...
@@ -394,8 +395,8 @@ public class UserController implements IBaseController {
log
.
info
(
"修改密码失败,该手机号尚未注册, phoneNo:{}"
,
phoneNo
);
log
.
info
(
"修改密码失败,该手机号尚未注册, phoneNo:{}"
,
phoneNo
);
return
JsonResult
.
buildErrorStateResult
(
"修改密码失败"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"修改密码失败"
,
null
);
}
}
if
(
!
user
.
getEnable
())
{
if
(
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
log
.
info
(
"修改密码失败,该用户已
禁用
, phoneNo:{}"
,
phoneNo
);
log
.
info
(
"修改密码失败,该用户已
冻结或销户
, phoneNo:{}"
,
phoneNo
);
return
JsonResult
.
buildErrorStateResult
(
"修改密码失败"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"修改密码失败"
,
null
);
}
}
// 验证密码:原密码不存在时,必须为空
// 验证密码:原密码不存在时,必须为空
...
@@ -594,7 +595,7 @@ public class UserController implements IBaseController {
...
@@ -594,7 +595,7 @@ public class UserController implements IBaseController {
String
phoneNo
=
credentialArr
[
0
];
String
phoneNo
=
credentialArr
[
0
];
String
pass
=
credentialArr
[
1
];
String
pass
=
credentialArr
[
1
];
User
user
=
userService
.
findByPhoneWithCache
(
phoneNo
);
User
user
=
userService
.
findByPhoneWithCache
(
phoneNo
);
if
(
user
==
null
||
!
user
.
getEnable
())
{
if
(
user
==
null
||
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
// 向该ipv4添加错误计数器
// 向该ipv4添加错误计数器
lockIpv4Service
.
countErrorByIpv4
(
clientIp
);
lockIpv4Service
.
countErrorByIpv4
(
clientIp
);
// 向该phoneNo添加错误计数器
// 向该phoneNo添加错误计数器
...
@@ -621,7 +622,7 @@ public class UserController implements IBaseController {
...
@@ -621,7 +622,7 @@ public class UserController implements IBaseController {
private
JsonResult
loginWithUserId
(
Long
channelId
,
String
appChannel
,
Long
createdFrom
,
String
userId
,
Merchant
merchant
,
String
dimension
,
HttpServletRequest
request
)
{
private
JsonResult
loginWithUserId
(
Long
channelId
,
String
appChannel
,
Long
createdFrom
,
String
userId
,
Merchant
merchant
,
String
dimension
,
HttpServletRequest
request
)
{
//查询用户
//查询用户
User
user
=
userService
.
findByUuidInDb
(
userId
);
User
user
=
userService
.
findByUuidInDb
(
userId
);
if
(
Objects
.
isNull
(
user
)
||
!
user
.
getEnable
())
{
if
(
Objects
.
isNull
(
user
)
||
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
log
.
error
(
"用户不存在,或者已经注销,userId:{}"
,
userId
);
log
.
error
(
"用户不存在,或者已经注销,userId:{}"
,
userId
);
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
}
else
if
(!
wechatRelateUserIfNecessary
(
user
,
request
))
{
}
else
if
(!
wechatRelateUserIfNecessary
(
user
,
request
))
{
...
...
src/main/java/cn/quantgroup/xyqb/controller/external/WeChatController.java
View file @
5e3ec8d1
package
cn
.
quantgroup
.
xyqb
.
controller
.
external
;
package
cn
.
quantgroup
.
xyqb
.
controller
.
external
;
import
cn.quantgroup.user.enums.UserStatusEnum
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
import
cn.quantgroup.xyqb.entity.Merchant
;
import
cn.quantgroup.xyqb.entity.Merchant
;
...
@@ -267,7 +268,7 @@ public class WeChatController implements IBaseController {
...
@@ -267,7 +268,7 @@ public class WeChatController implements IBaseController {
}
}
User
user
=
userService
.
findById
(
userInfoInDb
.
getUserId
());
User
user
=
userService
.
findById
(
userInfoInDb
.
getUserId
());
// 用户不存在或已注销
// 用户不存在或已注销
if
(
Objects
.
isNull
(
user
)
||
!
user
.
getEnable
())
{
if
(
Objects
.
isNull
(
user
)
||
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
// 用户已经微信登录了,但是关联信用钱包用户信息无效,跳转到注册页面
// 用户已经微信登录了,但是关联信用钱包用户信息无效,跳转到注册页面
redirectWechatLoginUrlWithoutLogin
(
response
,
merchant
,
userInfoInDb
,
registerFrom
,
domain
);
redirectWechatLoginUrlWithoutLogin
(
response
,
merchant
,
userInfoInDb
,
registerFrom
,
domain
);
return
;
return
;
...
...
src/main/java/cn/quantgroup/xyqb/controller/internal/user/AppController.java
View file @
5e3ec8d1
package
cn
.
quantgroup
.
xyqb
.
controller
.
internal
.
user
;
package
cn
.
quantgroup
.
xyqb
.
controller
.
internal
.
user
;
import
cn.quantgroup.user.enums.UserStatusEnum
;
import
cn.quantgroup.xyqb.aspect.accessable.IpValidator
;
import
cn.quantgroup.xyqb.aspect.accessable.IpValidator
;
import
cn.quantgroup.xyqb.aspect.captcha.LoginInterceptor
;
import
cn.quantgroup.xyqb.aspect.captcha.LoginInterceptor
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
...
@@ -96,7 +97,7 @@ public class AppController implements IBaseController {
...
@@ -96,7 +97,7 @@ public class AppController implements IBaseController {
if
(
user
==
null
)
{
if
(
user
==
null
)
{
result
=
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
result
=
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
}
else
if
(
!
user
.
getEnable
())
{
}
else
if
(
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
result
=
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
result
=
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
}
else
{
}
else
{
Merchant
merchant
=
merchantService
.
findMerchantByName
(
key
);
Merchant
merchant
=
merchantService
.
findMerchantByName
(
key
);
...
@@ -165,7 +166,7 @@ public class AppController implements IBaseController {
...
@@ -165,7 +166,7 @@ public class AppController implements IBaseController {
if
(
user
==
null
)
{
if
(
user
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
return
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
}
}
if
(
!
user
.
getEnable
())
{
if
(
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
}
}
Merchant
merchant
=
merchantService
.
findMerchantByName
(
key
);
Merchant
merchant
=
merchantService
.
findMerchantByName
(
key
);
...
@@ -230,7 +231,7 @@ public class AppController implements IBaseController {
...
@@ -230,7 +231,7 @@ public class AppController implements IBaseController {
if
(
user
==
null
)
{
if
(
user
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
return
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
}
}
if
(
!
user
.
getEnable
())
{
if
(
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
}
}
Merchant
merchant
=
merchantService
.
findMerchantByName
(
key
);
Merchant
merchant
=
merchantService
.
findMerchantByName
(
key
);
...
@@ -334,7 +335,7 @@ public class AppController implements IBaseController {
...
@@ -334,7 +335,7 @@ public class AppController implements IBaseController {
if
(
user
==
null
)
{
if
(
user
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
return
JsonResult
.
buildErrorStateResult
(
USER_ERROR_OR_PASSWORD_ERROR
,
null
);
}
}
if
(
!
user
.
getEnable
())
{
if
(
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
}
}
//校验租户ID tenantId
//校验租户ID tenantId
...
...
src/main/java/cn/quantgroup/xyqb/controller/internal/user/InnerController.java
View file @
5e3ec8d1
...
@@ -49,6 +49,7 @@ import org.springframework.web.bind.annotation.*;
...
@@ -49,6 +49,7 @@ import org.springframework.web.bind.annotation.*;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotNull
;
import
java.io.UnsupportedEncodingException
;
import
java.io.UnsupportedEncodingException
;
import
java.text.ParseException
;
import
java.text.ParseException
;
import
java.util.*
;
import
java.util.*
;
...
@@ -242,8 +243,8 @@ public class InnerController implements IBaseController {
...
@@ -242,8 +243,8 @@ public class InnerController implements IBaseController {
}
}
User
user
=
userService
.
findByUuidWithCache
(
uuid
);
User
user
=
userService
.
findByUuidWithCache
(
uuid
);
if
(
null
!=
user
)
{
if
(
null
!=
user
)
{
if
(
!
user
.
getEnable
())
{
if
(
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
return
JsonResult
.
buildSuccessResult
(
""
,
null
);
return
UserStatusEnum
.
isDisable
(
user
).
getValue
(
);
}
}
UserDetail
userDetail
=
userDetailService
.
findByUserId
(
user
.
getId
());
UserDetail
userDetail
=
userDetailService
.
findByUserId
(
user
.
getId
());
UserInfo
info
=
new
UserInfo
(
user
,
userDetail
);
UserInfo
info
=
new
UserInfo
(
user
,
userDetail
);
...
@@ -265,8 +266,8 @@ public class InnerController implements IBaseController {
...
@@ -265,8 +266,8 @@ public class InnerController implements IBaseController {
}
}
User
user
=
userService
.
findByPhoneInDb
(
phone
);
User
user
=
userService
.
findByPhoneInDb
(
phone
);
if
(
null
!=
user
)
{
if
(
null
!=
user
)
{
if
(
!
user
.
getEnable
())
{
if
(
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
return
JsonResult
.
buildSuccessResult
(
""
,
null
);
return
UserStatusEnum
.
isDisable
(
user
).
getValue
(
);
}
}
UserDetail
userDetail
=
userDetailService
.
findByUserId
(
user
.
getId
());
UserDetail
userDetail
=
userDetailService
.
findByUserId
(
user
.
getId
());
UserInfo
info
=
new
UserInfo
(
user
,
userDetail
);
UserInfo
info
=
new
UserInfo
(
user
,
userDetail
);
...
@@ -319,10 +320,25 @@ public class InnerController implements IBaseController {
...
@@ -319,10 +320,25 @@ public class InnerController implements IBaseController {
User
user
=
userService
.
findByPhoneWithCache
(
phoneNo
);
User
user
=
userService
.
findByPhoneWithCache
(
phoneNo
);
if
(
user
!=
null
)
{
if
(
user
!=
null
)
{
//存在已注销
if
(!
user
.
getEnable
())
{
/* 冻结用户 */
log
.
info
(
"用户已经注销,phoneNo:{}"
,
phoneNo
);
if
(
UserStatusEnum
.
FREEZE
.
ordinal
()
==
user
.
getEnable
())
{
return
JsonResult
.
buildErrorStateResult
(
"用户已经注销"
,
null
);
log
.
info
(
"用户已经冻结,phoneNo:{}"
,
phoneNo
);
return
JsonResult
.
buildErrorStateResult
(
"用户已经冻结"
,
null
);
}
/* 销户用户 */
if
(
UserStatusEnum
.
DELETE
.
ordinal
()
==
user
.
getEnable
())
{
long
deleteDays
=
DateUtils
.
diffDayByTimestamp
(
user
.
getUpdatedAt
());
/* 如果用户销户时间大于90天 用户状态修改为可用 不在执行后续业务逻辑 */
if
(
Constants
.
DELETE_USER_AGAIN_REGISTER_INTERVAL
<
deleteDays
)
{
log
.
info
(
"用户[{}]为历史销户用户, 销户时间大于90天, 直接修改状态为启用"
,
phoneNo
);
user
.
setEnable
(
UserStatusEnum
.
NORMAL
.
ordinal
());
userService
.
saveUser
(
user
);
return
JsonResult
.
buildErrorStateResult
(
null
,
new
UserRet
(
user
));
}
log
.
info
(
"用户[{}]已销户"
,
phoneNo
);
return
JsonResult
.
buildErrorStateResult
(
"用户已经销户"
,
null
);
}
}
// 插入关联数据
// 插入关联数据
...
@@ -1057,10 +1073,10 @@ public class InnerController implements IBaseController {
...
@@ -1057,10 +1073,10 @@ public class InnerController implements IBaseController {
log
.
info
(
"刷新用户激活状态失败:userId:{},enable:{},user:{}"
,
userId
,
enable
,
user
);
log
.
info
(
"刷新用户激活状态失败:userId:{},enable:{},user:{}"
,
userId
,
enable
,
user
);
return
false
;
return
false
;
}
}
user
.
setEnable
(
enable
);
user
.
setEnable
(
UserStatusEnum
.
converter
(
enable
)
);
log
.
info
(
"刷新用户激活状态失败:userId:{},enable:{},user:{}"
,
userId
,
enable
,
user
);
log
.
info
(
"刷新用户激活状态失败:userId:{},enable:{},user:{}"
,
userId
,
enable
,
user
);
user
=
userService
.
saveUser
(
user
);
user
=
userService
.
saveUser
(
user
);
if
(
!
user
.
getEnable
())
{
if
(
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
sessionService
.
deleteByUserId
(
userId
);
sessionService
.
deleteByUserId
(
userId
);
sessionService
.
deleteUserCatch
(
user
);
sessionService
.
deleteUserCatch
(
user
);
// 禁用微信
// 禁用微信
...
@@ -1304,7 +1320,7 @@ public class InnerController implements IBaseController {
...
@@ -1304,7 +1320,7 @@ public class InnerController implements IBaseController {
}
}
User
user
=
userService
.
findByPhoneWithCache
(
phoneNo
);
User
user
=
userService
.
findByPhoneWithCache
(
phoneNo
);
// 检查用户有效性
// 检查用户有效性
if
(
user
!=
null
&&
!
user
.
getEnable
())
{
if
(
user
!=
null
&&
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
log
.
error
(
"用户不存在,或者已经注销,phoneNo:{}"
,
phoneNo
);
log
.
error
(
"用户不存在,或者已经注销,phoneNo:{}"
,
phoneNo
);
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
}
}
...
@@ -1376,7 +1392,7 @@ public class InnerController implements IBaseController {
...
@@ -1376,7 +1392,7 @@ public class InnerController implements IBaseController {
Map
validMap
=
Maps
.
newHashMap
();
Map
validMap
=
Maps
.
newHashMap
();
validMap
.
put
(
"valid"
,
flag
);
validMap
.
put
(
"valid"
,
flag
);
User
user
=
userService
.
findByPhoneInDb
(
phoneNo
);
User
user
=
userService
.
findByPhoneInDb
(
phoneNo
);
if
(
user
!=
null
&&
user
.
getEnable
())
{
if
(
user
!=
null
&&
!
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
validMap
.
put
(
"valid"
,
true
);
validMap
.
put
(
"valid"
,
true
);
validMap
.
put
(
"id"
,
user
.
getId
());
validMap
.
put
(
"id"
,
user
.
getId
());
validMap
.
put
(
"uuid"
,
user
.
getUuid
());
validMap
.
put
(
"uuid"
,
user
.
getUuid
());
...
@@ -1555,7 +1571,9 @@ public class InnerController implements IBaseController {
...
@@ -1555,7 +1571,9 @@ public class InnerController implements IBaseController {
int
affectedRows
=
userService
.
forbiddenUser
(
enable
,
phoneNo
);
int
affectedRows
=
userService
.
forbiddenUser
(
enable
,
phoneNo
);
// 清除缓存,解除微信关联
// 清除缓存,解除微信关联
User
user
=
userService
.
findByPhoneInDb
(
phoneNo
);
User
user
=
userService
.
findByPhoneInDb
(
phoneNo
);
if
(
null
!=
user
&&
!
user
.
getEnable
())
{
/* 这里历史是为冻结使用的 扩展为冻结和销户 */
if
(
null
!=
user
&&
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
sessionService
.
deleteByUserId
(
user
.
getId
());
sessionService
.
deleteByUserId
(
user
.
getId
());
sessionService
.
deleteUserCatch
(
user
);
sessionService
.
deleteUserCatch
(
user
);
// 禁用微信
// 禁用微信
...
@@ -1597,4 +1615,32 @@ public class InnerController implements IBaseController {
...
@@ -1597,4 +1615,32 @@ public class InnerController implements IBaseController {
cleanDataService
.
cleanData
();
cleanDataService
.
cleanData
();
return
JsonResult
.
buildSuccessResult
(
"已经开始清洗"
);
return
JsonResult
.
buildSuccessResult
(
"已经开始清洗"
);
}
}
/**
* 注销用户
*
* @param userId 用户id
* @return 销户结果
*/
@GetMapping
(
"/user/cancellation/{userId}"
)
public
JsonResult
<?>
cancellation
(
@NotNull
@PathVariable
(
"userId"
)
Long
userId
)
{
log
.
info
(
"用户[{}], 销户开始"
,
userId
);
User
user
=
userService
.
findById
(
userId
);
if
(
Objects
.
isNull
(
user
))
{
return
JsonResult
.
buildErrorStateResult
(
"用户不存在"
,
null
);
}
/* 状态改为销户 */
user
.
setEnable
(
UserStatusEnum
.
DELETE
.
ordinal
());
userService
.
saveUser
(
user
);
/* 清空session */
sessionService
.
deleteByUserId
(
user
.
getId
());
/* 清空缓存 */
sessionService
.
deleteUserCatch
(
user
);
/* 禁用微信 */
wechatService
.
forbiddenUserWeChat
(
user
.
getId
());
return
JsonResult
.
buildSuccessResult
(
"用户销户成功"
,
null
);
}
}
}
\ No newline at end of file
src/main/java/cn/quantgroup/xyqb/controller/middleoffice/login/LoginModule.java
View file @
5e3ec8d1
package
cn
.
quantgroup
.
xyqb
.
controller
.
middleoffice
.
login
;
package
cn
.
quantgroup
.
xyqb
.
controller
.
middleoffice
.
login
;
import
cn.quantgroup.user.enums.UserStatusEnum
;
import
cn.quantgroup.xyqb.controller.middleoffice.common.VerifyStrategyFactory
;
import
cn.quantgroup.xyqb.controller.middleoffice.common.VerifyStrategyFactory
;
import
cn.quantgroup.xyqb.controller.middleoffice.common.VerifyTypeEnum
;
import
cn.quantgroup.xyqb.controller.middleoffice.common.VerifyTypeEnum
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.User
;
...
@@ -45,11 +46,9 @@ public class LoginModule implements ILoginModule {
...
@@ -45,11 +46,9 @@ public class LoginModule implements ILoginModule {
throw
new
DataException
(
"用户名或密码不正确"
);
throw
new
DataException
(
"用户名或密码不正确"
);
}
}
}
}
if
(!
user
.
getEnable
())
{
if
(
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
//用户不存在
log
.
info
(
"用户尝试登录,已冻结或注销:{}"
,
phoneNo
);
log
.
info
(
"用户尝试登录,已注销:{}"
,
phoneNo
);
throw
new
DataException
(
"用户已冻结或销户"
);
//todo 自定义异常
throw
new
DataException
(
"用户名或密码不正确"
);
}
}
//验证
//验证
...
...
src/main/java/cn/quantgroup/xyqb/controller/middleoffice/user/UserController.java
View file @
5e3ec8d1
package
cn
.
quantgroup
.
xyqb
.
controller
.
middleoffice
.
user
;
package
cn
.
quantgroup
.
xyqb
.
controller
.
middleoffice
.
user
;
import
cn.quantgroup.user.enums.UserStatusEnum
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.event.DisableActiveEvent
;
import
cn.quantgroup.xyqb.event.DisableActiveEvent
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.model.JsonResult
;
...
@@ -34,7 +35,10 @@ public class UserController {
...
@@ -34,7 +35,10 @@ public class UserController {
//todo 用户不存在,怎么处理
//todo 用户不存在,怎么处理
return
JsonResult
.
buildSuccessResult
();
return
JsonResult
.
buildSuccessResult
();
}
}
user
.
setEnable
(
true
);
if
(
UserStatusEnum
.
DELETE
.
ordinal
()
==
user
.
getEnable
())
{
JsonResult
.
buildErrorStateResult
(
"用户已销户, 不能启用"
,
null
);
}
user
.
setEnable
(
UserStatusEnum
.
NORMAL
.
ordinal
());
userService
.
saveUser
(
user
);
userService
.
saveUser
(
user
);
//通知消息中心
//通知消息中心
applicationEventPublisher
.
publishEvent
(
new
DisableActiveEvent
(
this
,
user
));
applicationEventPublisher
.
publishEvent
(
new
DisableActiveEvent
(
this
,
user
));
...
@@ -48,7 +52,10 @@ public class UserController {
...
@@ -48,7 +52,10 @@ public class UserController {
//todo 用户不存在,怎么处理
//todo 用户不存在,怎么处理
return
JsonResult
.
buildSuccessResult
();
return
JsonResult
.
buildSuccessResult
();
}
}
user
.
setEnable
(
false
);
if
(
UserStatusEnum
.
DELETE
.
ordinal
()
==
user
.
getEnable
())
{
JsonResult
.
buildErrorStateResult
(
"用户已销户, 不能冻结"
,
null
);
}
user
.
setEnable
(
UserStatusEnum
.
FREEZE
.
ordinal
());
//清理缓存
//清理缓存
userService
.
saveUser
(
user
);
userService
.
saveUser
(
user
);
//通知消息中心
//通知消息中心
...
...
src/main/java/cn/quantgroup/xyqb/entity/User.java
View file @
5e3ec8d1
...
@@ -40,7 +40,7 @@ public class User extends BaseEntity implements Serializable {
...
@@ -40,7 +40,7 @@ public class User extends BaseEntity implements Serializable {
private
String
uuid
;
private
String
uuid
;
@Column
(
name
=
"enable"
)
@Column
(
name
=
"enable"
)
private
Boolean
enable
;
private
Integer
enable
;
/**
/**
* 是否有密码
* 是否有密码
...
...
src/main/java/cn/quantgroup/xyqb/event/DisableActiveEventListner.java
View file @
5e3ec8d1
package
cn
.
quantgroup
.
xyqb
.
event
;
package
cn
.
quantgroup
.
xyqb
.
event
;
import
cn.quantgroup.user.enums.UserStatusEnum
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.service.http.IHttpService
;
import
cn.quantgroup.xyqb.service.http.IHttpService
;
import
com.google.common.collect.ImmutableMap
;
import
com.google.common.collect.ImmutableMap
;
...
@@ -41,7 +42,7 @@ public class DisableActiveEventListner implements ApplicationListener<DisableAct
...
@@ -41,7 +42,7 @@ public class DisableActiveEventListner implements ApplicationListener<DisableAct
String
userId
=
String
.
valueOf
(
user
.
getId
());
String
userId
=
String
.
valueOf
(
user
.
getId
());
String
phoneNo
=
user
.
getPhoneNo
();
String
phoneNo
=
user
.
getPhoneNo
();
Boolean
enable
=
user
.
getEnable
();
boolean
enable
=
!
UserStatusEnum
.
isDisable
(
user
).
getKey
();
String
post
=
httpService
.
postJson
(
msgCenter
.
concat
(
SMS_MARKET_BLACK_LIST
),
String
post
=
httpService
.
postJson
(
msgCenter
.
concat
(
SMS_MARKET_BLACK_LIST
),
ImmutableMap
.
of
(
"userId"
,
userId
,
ImmutableMap
.
of
(
"userId"
,
userId
,
...
...
src/main/java/cn/quantgroup/xyqb/model/Tuple.java
View file @
5e3ec8d1
...
@@ -33,4 +33,7 @@ public final class Tuple<Key, Value> {
...
@@ -33,4 +33,7 @@ public final class Tuple<Key, Value> {
this
.
value
=
value
;
this
.
value
=
value
;
}
}
public
static
<
Key
,
Value
>
Tuple
<
Key
,
Value
>
of
(
Key
key
,
Value
value
)
{
return
new
Tuple
<>(
key
,
value
);
}
}
}
src/main/java/cn/quantgroup/xyqb/model/UserFullInfo.java
View file @
5e3ec8d1
package
cn
.
quantgroup
.
xyqb
.
model
;
package
cn
.
quantgroup
.
xyqb
.
model
;
import
cn.quantgroup.user.enums.UserStatusEnum
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.UserDetail
;
import
cn.quantgroup.xyqb.entity.UserDetail
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -43,7 +44,7 @@ public class UserFullInfo implements Serializable {
...
@@ -43,7 +44,7 @@ public class UserFullInfo implements Serializable {
this
.
registerFrom
=
user
.
getRegisteredFrom
();
this
.
registerFrom
=
user
.
getRegisteredFrom
();
this
.
password
=
user
.
getPassword
();
this
.
password
=
user
.
getPassword
();
this
.
uuid
=
user
.
getUuid
();
this
.
uuid
=
user
.
getUuid
();
this
.
enable
=
user
.
getEnable
();
this
.
enable
=
!
UserStatusEnum
.
isDisable
(
user
).
getKey
();
}
}
if
(
userDetail
!=
null
)
{
if
(
userDetail
!=
null
)
{
this
.
name
=
userDetail
.
getName
();
this
.
name
=
userDetail
.
getName
();
...
...
src/main/java/cn/quantgroup/xyqb/model/UserRegisterMqMessage.java
View file @
5e3ec8d1
package
cn
.
quantgroup
.
xyqb
.
model
;
package
cn
.
quantgroup
.
xyqb
.
model
;
import
cn.quantgroup.user.enums.UserStatusEnum
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.User
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -37,7 +38,7 @@ public class UserRegisterMqMessage implements Serializable {
...
@@ -37,7 +38,7 @@ public class UserRegisterMqMessage implements Serializable {
Long
updateTimeStamp
=
user
.
getUpdatedAt
().
getTime
();
Long
updateTimeStamp
=
user
.
getUpdatedAt
().
getTime
();
this
.
setId
(
user
.
getId
());
this
.
setId
(
user
.
getId
());
this
.
setPhoneNo
(
user
.
getPhoneNo
());
this
.
setPhoneNo
(
user
.
getPhoneNo
());
this
.
setEnable
(
user
.
getEnable
());
this
.
setEnable
(
!
UserStatusEnum
.
isDisable
(
user
).
getKey
());
this
.
setRegisteredFrom
(
user
.
getRegisteredFrom
());
this
.
setRegisteredFrom
(
user
.
getRegisteredFrom
());
this
.
setUuid
(
user
.
getUuid
());
this
.
setUuid
(
user
.
getUuid
());
this
.
setCreatedAt
(
createTimeStamp
);
this
.
setCreatedAt
(
createTimeStamp
);
...
...
src/main/java/cn/quantgroup/xyqb/model/UserRet.java
View file @
5e3ec8d1
...
@@ -3,6 +3,7 @@ package cn.quantgroup.xyqb.model;
...
@@ -3,6 +3,7 @@ package cn.quantgroup.xyqb.model;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.Objects
;
import
java.util.Objects
;
import
cn.quantgroup.user.enums.UserStatusEnum
;
import
lombok.Data
;
import
lombok.Data
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.User
;
...
@@ -51,7 +52,7 @@ public class UserRet implements Serializable {
...
@@ -51,7 +52,7 @@ public class UserRet implements Serializable {
Long
updateTimeStamp
=
user
.
getUpdatedAt
().
getTime
();
Long
updateTimeStamp
=
user
.
getUpdatedAt
().
getTime
();
this
.
setId
(
user
.
getId
());
this
.
setId
(
user
.
getId
());
this
.
setPhoneNo
(
user
.
getPhoneNo
());
this
.
setPhoneNo
(
user
.
getPhoneNo
());
this
.
setEnable
(
user
.
getEnable
());
this
.
setEnable
(
!
UserStatusEnum
.
isDisable
(
user
).
getKey
());
this
.
setPassword
(
null
);
this
.
setPassword
(
null
);
this
.
hasPassword
=
Objects
.
nonNull
(
user
.
getPassword
())
&&
!
Objects
.
equals
(
""
,
user
.
getPassword
());
this
.
hasPassword
=
Objects
.
nonNull
(
user
.
getPassword
())
&&
!
Objects
.
equals
(
""
,
user
.
getPassword
());
this
.
setRegisteredFrom
(
user
.
getRegisteredFrom
());
this
.
setRegisteredFrom
(
user
.
getRegisteredFrom
());
...
...
src/main/java/cn/quantgroup/xyqb/service/register/IUserRegisterService.java
View file @
5e3ec8d1
...
@@ -12,6 +12,14 @@ import java.util.List;
...
@@ -12,6 +12,14 @@ import java.util.List;
*/
*/
public
interface
IUserRegisterService
{
public
interface
IUserRegisterService
{
/**
* 用户销户时间超过可再注册时间后再次注册
*
* @param user 用户信息
* @return User
*/
User
onceAgainRegister
(
User
user
);
User
register
(
Long
registerFrom
,
String
phoneNo
);
User
register
(
Long
registerFrom
,
String
phoneNo
);
User
register
(
Long
registerFrom
,
String
phoneNo
,
Integer
tenantId
);
User
register
(
Long
registerFrom
,
String
phoneNo
,
Integer
tenantId
);
...
...
src/main/java/cn/quantgroup/xyqb/service/register/impl/UserRegisterServiceImpl.java
View file @
5e3ec8d1
package
cn
.
quantgroup
.
xyqb
.
service
.
register
.
impl
;
package
cn
.
quantgroup
.
xyqb
.
service
.
register
.
impl
;
import
cn.quantgroup.user.enums.UserStatusEnum
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.entity.Address
;
import
cn.quantgroup.xyqb.entity.Address
;
import
cn.quantgroup.xyqb.entity.Contact
;
import
cn.quantgroup.xyqb.entity.Contact
;
...
@@ -35,6 +36,14 @@ import java.util.UUID;
...
@@ -35,6 +36,14 @@ import java.util.UUID;
@Resource
@Resource
private
IUserService
userService
;
private
IUserService
userService
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
User
onceAgainRegister
(
User
user
){
user
.
setEnable
(
UserStatusEnum
.
NORMAL
.
ordinal
());
userService
.
saveUser
(
user
);
return
user
;
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
@Override
public
User
register
(
Long
registerFrom
,
String
phoneNo
)
{
public
User
register
(
Long
registerFrom
,
String
phoneNo
)
{
...
@@ -113,7 +122,7 @@ import java.util.UUID;
...
@@ -113,7 +122,7 @@ import java.util.UUID;
String
uuid
=
UUID
.
randomUUID
().
toString
();
String
uuid
=
UUID
.
randomUUID
().
toString
();
User
user
=
new
User
();
User
user
=
new
User
();
user
.
setUuid
(
uuid
);
user
.
setUuid
(
uuid
);
user
.
setEnable
(
true
);
user
.
setEnable
(
UserStatusEnum
.
NORMAL
.
ordinal
()
);
user
.
setPhoneNo
(
userRegisterParam
.
getPhoneNo
());
user
.
setPhoneNo
(
userRegisterParam
.
getPhoneNo
());
Long
registerFrom
=
userRegisterParam
.
getRegisterFrom
();
Long
registerFrom
=
userRegisterParam
.
getRegisterFrom
();
if
(
Objects
.
isNull
(
registerFrom
))
{
if
(
Objects
.
isNull
(
registerFrom
))
{
...
...
src/main/java/cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
View file @
5e3ec8d1
...
@@ -4,6 +4,7 @@ import cn.quantgroup.tech.db.DSType;
...
@@ -4,6 +4,7 @@ import cn.quantgroup.tech.db.DSType;
import
cn.quantgroup.tech.db.TargetDataSource
;
import
cn.quantgroup.tech.db.TargetDataSource
;
import
cn.quantgroup.user.enums.BizType
;
import
cn.quantgroup.user.enums.BizType
;
import
cn.quantgroup.user.enums.IncomeRangeEnum
;
import
cn.quantgroup.user.enums.IncomeRangeEnum
;
import
cn.quantgroup.user.enums.UserStatusEnum
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.aspect.lock.RedisLock
;
import
cn.quantgroup.xyqb.aspect.lock.RedisLock
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
...
@@ -338,8 +339,9 @@ public class UserServiceImpl implements IUserService, IBaseController {
...
@@ -338,8 +339,9 @@ public class UserServiceImpl implements IUserService, IBaseController {
String
dimension
,
String
clickId
,
HttpServletRequest
request
,
Merchant
merchant
,
String
phoneNo
,
Integer
tenantId
)
{
String
dimension
,
String
clickId
,
HttpServletRequest
request
,
Merchant
merchant
,
String
phoneNo
,
Integer
tenantId
)
{
Boolean
register
=
false
;
Boolean
register
=
false
;
User
user
=
findByPhoneWithCache
(
phoneNo
);
User
user
=
findByPhoneWithCache
(
phoneNo
);
if
(
user
!=
null
&&
!
user
.
getEnable
())
{
/* 用户已冻结或销户 */
log
.
info
(
"用户不存在,或者已经注销,phoneNo:{}"
,
phoneNo
);
if
(
user
!=
null
&&
UserStatusEnum
.
isDisable
(
user
).
getKey
())
{
log
.
info
(
"用户已经冻结或销户, 登录失败, phoneNo:{}"
,
phoneNo
);
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
}
}
if
(
user
==
null
)
{
if
(
user
==
null
)
{
...
...
src/main/java/cn/quantgroup/xyqb/util/DateUtils.java
View file @
5e3ec8d1
package
cn
.
quantgroup
.
xyqb
.
util
;
package
cn
.
quantgroup
.
xyqb
.
util
;
import
org.apache.commons.lang3.StringUtils
;
import
org.joda.time.DateTime
;
import
org.joda.time.DateTime
;
import
org.joda.time.Days
;
import
org.joda.time.format.DateTimeFormat
;
import
org.joda.time.format.DateTimeFormat
;
import
org.joda.time.format.DateTimeFormatter
;
import
org.joda.time.format.DateTimeFormatter
;
import
java.sql.Timestamp
;
import
java.util.Calendar
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -49,4 +48,16 @@ public class DateUtils {
...
@@ -49,4 +48,16 @@ public class DateUtils {
long
now
=
System
.
currentTimeMillis
();
long
now
=
System
.
currentTimeMillis
();
return
(
timeStamp
-
now
)
/
1000
;
return
(
timeStamp
-
now
)
/
1000
;
}
}
/**
* 获取距离当前时间的天数
*
* @param timestamp 时间戳
* @return 距离天数
*/
public
static
long
diffDayByTimestamp
(
Timestamp
timestamp
)
{
Date
data
=
new
Date
(
timestamp
.
getTime
());
Date
now
=
new
Date
();
return
(
now
.
getTime
()
-
data
.
getTime
())
/
(
24
*
60
*
60
*
1000
);
}
}
}
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